チームにとってのリーダブルコード
株式会社クリアコードさんにご協力いただき「リーダブルコードワークショップ」が行われました。 ピクシブ株式会社からは7名、永和システムマネジメントさんからは1名が参加した合同ワークショップです。
このワークショップを通して、
- 通常のレビューでは良くない部分ばかり見てるけど、良い部分も共有しよう。
- コミットメールを受信して、push式でコードを読む習慣をつけよう。
といった、チームにとって読みやすいコードを書くための方法を実践形式で学びました。 その詳細についてご紹介します。
ワークショップ開催までの経緯
SEゼミにてクリアコード須藤さんから弊社リードエンジニアedvakfにワークショップについてのお話をいただき、人数や構成などが対象として適しているチームが弊社にあったため話が進んでいきました。
そのチーム(BOOTH&pixivFACTORYチーム)では 開発メンバーの入れ替わりによってベテランレビュアーの人数が減ったり、 新規メンバーが複数人参加してどのようなコードを書けば良いかを意識する事が多くなっていたという背景があります。
2015年8月11日、ワークショップの講師として須藤さんを招き、以前より合同勉強会や会社突撃で交流のある永和システムマネジメントさんから1名(エンジニアtkm-kjさん)を加えての開催となりました。
「チームにとって読みやすいコードは何か」を探る
このワークショップにとって、リーダブルコードのための汎用的なノウハウを学ぶ事は主な目的ではありません。 「チームにとって読みやすいコードは何か」を探るためのきっかけづくりが主な目的です。
読む人(=チームメンバー)が読みやすいコードを書けるようになると、既存のコード変更にかかるコストが下がり、ミスが減らせます。 そうして開発速度の低下をふせぐ事が最終的な目的です。
ワークショップの流れ
単にノウハウの書かれた書籍を読むだけでは「チームにとって読みやすいコードは何か」を探る事はできません。 そのため、全員が以下のような同じ課題をこなし、お互いのコードを読んで読みやすいと感じた点を共有するという方法が取られました。 これにより、日々の開発に近い流れの中で、読みやすいコードを見つける方法が体験できます。
ワークショップで実際に利用・閲覧された資料がclear-code/readable-code-workshopにて公開されていますのでそちらも参照してください。
- シナリオ scenario.md
- 課題内容 task.md
具体的な課題内容は「レシピ管理プログラム」を作るというもので、 組むべきプログラムとしては、任意の形式で管理されたレシピ情報を取り込み、所定の形式で出力するというものでした。
開発の手順は以下のように3つの段階に分けられていました。
1.個人で開発
- リーダブルなコードを意識しつつ、まずは1人で書く
- リーダブルになるよう意識した点をメモしておく
2.ペアとして開発
- 相手のコードをforkして読み書きしながら残りの課題を進める
- リーダブルな点を見つけてメモしておく
3.チームとして開発
- 受信したコミットメールを読みながら、リーダブルな点を見つけてメモしておく
こうしてお互いのコードを読む中で見つけたリーダブルな点を共有し「チームにとって読みやすいコードは何か」に対する共通認識を深めていきます。
感想
参加した8人の感想を以下にご紹介します。
普段はレビューを通して、良くない部分や直すべき部分を指摘する・される事が多いのですが、今回の「良い部分を共有する」という体験は新しく、それを意識づけるきっかけができて良かったです。
個人的に慣れない言語で参加したのですが、課題の仕様自体はシンプルだったためにそこまでコードに変化が現れないように感じました。もう少し難易度が上がるとどうなのかな?
コミットメールを通して読む習慣(push式のコードリーディング)に関しては慣れが必要そうですね。
その言語における汎用的なリーダブルコードだけではなく、各自が思うリーダブルコードを共有する経験が得られたのが良かったです。
「同じ問題を解決するために複数人が同時にコードを書く」という体験そのものが珍しく、そのような体験をできた事が良かったです。
同じ課題に挑んでいるという前提のせいか「コードを交換してもわりと読みやすい」部分があったので、もし各自が違う課題に挑んだ場合にどうなるのかも興味があります。
もう少し時間があれば、普段の自分が考える「よりリーダブルなコード」を書けたかも...!
レビューする側もされる側も人間なので、指摘を通してある種のすまない気持ちや否定された気持ちを持ってしまう事があるのですが、良い部分を共有するという行為を習慣化する事で、コードのためだけではなくチームメンバーの感情のためにも良い影響がありそう。
まとめ
今回のワークショップを通して、チームにとってのリーダブルコードを探る方法を体験しました。 コードを読むコストだったり、習慣化されるまでにはある程度日数がかかりそう…という心配はありますが、まずは「良いコードを見つけたら共有しようぜ」ぐらいのノリで始めてみると良さそうです。
リーダブルコードワークショップでは、コミットメールを効率よくチェックする方法などもあわせて学べます。ワークショップに興味を持たれた方はクリアコードさんへお問い合わせください。
この記事を書いた人
以前ここで鼻手術に関する記事を書いた事で、エンジニアでは無い説もささやかれるようになったmoyashipanです。 鼻が詰まりやすい方はそちらもあわせてご覧ください。