2015年7月25日土曜日

コーディング道場でコーディング力UPを目指そう!

コーディング道場でコーディング力UPを目指そう!」が開催されるのでコーディング力UPを目指して参加してみました。

コーディングとはプログラムを書くことです。
弊社はプログラムを書いてお金を頂いている訳ですので、動けばいいって事でではありません。それなりにちゃんとしたコードを書く必要があります。


しかし、そのプログラムを書くことだけなのですが、個人や、属している組織、過去の経験などでコーディングのスタイルは異なっています。

他人にプログラムを見てもらい、いろいろな意見を聞く事でより良いプログラムになると思っているので、このようなイベントはありがたいのです。

今回初めての参加でしたが、この道場の進め方は

  1. プロジェクターを置いて、1台のPCで開発する。
  2. ドライバー(実際にコードを書く人)と、ナビゲーター(実装方法について話しあったり、コードの内容を指摘したりする人)の2人で開発する。
  3. 他の人(聴衆)は、プログラミングしている様子や、コード内容を観察する。できるだけプログラミングしている人たちに対して口を挟まない。
  4. ドライバーは、自分の書いているコードの意図を、ナビゲーターや聴衆にも分かるように話しながらコーディングする。
  5. プロダクトコードよりテストコードを事前に書く。
  6. 5-10分ぐらいで役割をローテーションする。ナビゲーターはドライバーに。聴衆はナビゲーターに。ドライバーは聴衆となる。

このような進め方をします。
みんなで1人がコードを書くのを見ているような感じです。


しかし、私にとって3 の見てるだけの立場に置かれると、非常にきついのです。
すぐに他人のコードに茶々を入れてしまうため、ドライバーさんに余計な対応をさせることとなり、迷惑をかけてしまいました。

今回使用したプログラミング言語はPythonだったのですが、今まで業務では使ったことはありません。
参加者の中でも普段からPythonを使っている人はいなくて、言語仕様の調査で時間が掛かってしまい、なかなか課題に向かいませんでした。


慣れてくると、課題も進み、みんなでワイワイ言いながらコーディングし、なかなか楽しいものでした。Pythonもっと勉強していけばよかったです。

2015年7月6日月曜日

【AED Labo】今さら聞けない!デザイナーのためのGit超入門 に参加

コワーキングスペース「ダイヤモンドクロス」で開催された勉強会
デザイナーのためのGit超入門』に参加しました。
参加といいますか、講師をさせていただきました。


今回は、基本的なバージョン管理(Git)について SourceTree を実際に操作していただきながら、お話しさせていただきました。
※SourceTree とは
・Gitのコマンド操作をボタンなどのGUIで行えるようにしたGitクライアントツール
・add,commit等のコマンドを入力しなくてもバージョン管理が簡単にできる
 (黒い画面を使わなくてもGitが使える)
・Windows、Mac両方使える


最初に、Gitのおおまかな仕組みについて説明していただいた後、
以下の流れで、お話しさせていただきました。

■ SourceTree のインストール
 ・Bitbucket のアカウント作成(事前に作成依頼済)
 ・SourceTree をインストール

■ 1人Gitをやってみる(Gitの基本的な流れを体験)
 ・ローカルリポジトリ、リモートリポジトリの作成
 ・作業ディレクトリのファイルを修正してコミット(ローカル)
 ・コミット前のバージョンに戻す、最新バージョンに戻す
 ・コミットを取り消す
 ・リモートリポジトリにプッシュ
 ・リモートリポジトリが更新されたことを確認

■ 複数人でプロジェクトを共有してみる(別ファイルの更新)
 (2チームに分かれて作業)
 ・リモートリポジトリからクローン
 ・作業ディレクトリのファイルを修正してコミット(Bさん)
 ・リモートリポジトリにプッシュ(Bさん)
 ・作業ディレクトリのファイルを修正してコミット(Aさん)
 ・リモートリポジトリにプッシュ(Aさん)
  ここでエラーが発生することを確認(Bさんが先にプッシュしているため)
 ・リモートからBさんの修正分を取り込むため、プル(Aさん)
 ・再度、リモートリポジトリにプッシュ(Aさん)
 ・リモートからAさんの修正分を取り込むためプル(Bさん)
 ・それぞれのローカルが同じ内容になったか確認(Aさん、Bさん)

■ ブランチを切って作業してみる(同ファイルの更新)
 (2チームに分かれて作業、上からの続き)
 ・ブランチ「A」を切る(Aさん)
 ・ブランチ「B」を切る(Bさん)
 ・作業ディレクトリのファイルを修正してコミット(Aさん)
 ・「A」ブランチをmasterへマージする(Aさん)
 ・リモートリポジトリにプッシュ(Aさん)
 ・作業ディレクトリのファイルを修正してコミット(Bさん)
 ・「B」ブランチをmasterへマージする(Bさん)
 ・リモートリポジトリにプッシュ(Bさん)
  ここでエラーが発生することを確認(Aさんが先にプッシュしているため)
 ・リモートからBさんの修正分を取り込むため、プル(Bさん)
 ・再度、リモートリポジトリにプッシュ(Bさん)
 ・リモートからBさんの修正分を取り込むためプル(Aさん)
 ・それぞれのローカルが同じ内容になったか確認(Aさん、Bさん)
 ・それぞれのブランチを削除(Aさん、Bさん)

競合の発生と解決方法、Git−Flow等についてもお話しできればよかったのですが残念ながら時間の関係でできませんでした。



今回、このような機会を与えていただいたことで、ぼんやりとしか理解できていない箇所を勉強し直せてよかったです。
また、人に教えることの難しさを体験しました。
今後、この経験が何かの役に立てば良いなと思いました。