株式会社クリアコード > ククログ

ククログ

«2015-07-17 最新 RedPenのValidatorをJavaScript で書くには»
タグ:

「チームメンバーのリーダブルコードを見つけて共有」を体験 - ピクシブさんでリーダブルコードワークショップを開催

2015年8月11日にピクシブさん会場提供でピクシブの開発者(7名)と永和システムマネジメントの開発者(1名)に参加していただき、「リーダブルコードワークショップ」を開催しました。

このワークショップは「チームメンバーのリーダブルコードを見つけて共有」することを体験する内容になっています。体験した内容が有益だと思ったらチームに取り入れていって欲しい、という趣旨です。

この内容は「メンバーのリーダブルコードを見つけて共有することが習慣になっているチームはリーダブルコードが当たり前になっていく」という仮説をベースとしています。図にすると次の通りです。

フィードバックループ

メンバーのリーダブルコードを見つけるためにはメンバーのコードを読まないといけません。書く側は「メンバーに読まれている」とわかっていればリーダブルコードを書こうという気持ちが強くなり、リーダブルコードが増えていきます。リーダブルコードが増えると見つかるリーダブルコードも増えていきます。

自分が見つけたリーダブルコードは、次に自分が書くコードに取り入れます。チームの誰かがリーダブルコードを書くことにより、リーダブルコードが徐々に他のメンバーにも共有されていきます。新しいリーダブルコードの書き方を見つけた・編み出したらそれを使ってコードを書く。リーダブルコードを書くことによりチームでリーダブルコードを共有できる。そんなフィードバックループです。

さらに進んだフィードバックループ

このフィードバックループが回り始めると「リーダブルコードが当たり前のチーム」になっていくのではないかということです。

5時間程度でこのフィードバックループを1周体験するのがこのワークショップです。今後、このワークショップをいろんなチームに提供していくべきかどうか、有用性を確認するためにピクシブさんと永和システムマネジメントさんに協力してもらいました。後述する通り、貴重なフィードバックをもらいました。ありがとうございます。

参加者視点でどうだったかについては、ピクシブさんがまとめてくれています。興味のある方はチームにとってのリーダブルコード - pixiv insideもあわせてご覧ください。

背景

どうしてこの内容のワークショップを提供しようと検討しているかについて、簡単に背景を説明します。

リーダブルコードの解説を書いてからは「リーダブルコード(=読む人が読みやすいコード)」というテーマでコードについて他の人に伝える機会が増えました。

クリアコードは社名の通り「クリアなコード(=書いた人の意図が明確なコード)」を大事にしています。「クリアなコード」と「リーダブルコード」はどちらも大事にしていることは同じです。読んで理解できるコードです。

「クリアなコード」を大事にするというのは、元々は「自分たちが書くコードはクリアなコードにしよう!」という気持ちでした。しかし、「リーダブルコード」というテーマでコードについて他の人に伝える機会が増えるうちに「他の人たちがクリアなコード・リーダブルコードを書くことも手伝いたい!」という気持ちになってきました。

開発は実際に手を動かす作業がたくさんあります。説明を聞いて頭で理解するだけよりも、実際に体験して体でも感じられた方が、より多くのことを伝えることができそうです。そのため、ワークショップの提供を検討しています。

対象者

ワークショップ開催前にピクシブさんからヒアリングをしました。こちらが想定している内容が参加予定の開発者にとって有用そうかを検討するためです。

ヒアリングの結果、想定していた内容を変えて、もっと突っ込んだ内容にした方がよいことがわかりました。想定よりも対象者のレベルが高かったのです。(ヒアリングしてよかったです。)

最終的にワークショップの対象者は次のような開発者にしました。

  • 世の中で言われているベストプラクティスが自分にあったものかどうかを取捨選択できる人
  • 書籍「リーダブルコード」を読んで日々リーダブルコード(=読む人が読みやすいコード)を書いている人、または、書籍を読んでいないが日々リーダブルコードを書いている人。(本人が「リーダブルコードを書いている」と考えていれば書いているとする。)
  • 自分だけでなくチーム全体でもリーダブルコードを書きたい人

ざっくりとまとめると、自分はリーダブルコードを書ける自立した開発者で、チーム全体でも同様のことを実現したい人です。

内容

ワークショップは次のような内容にしました。

  • 概要説明
  • 個人で開発を体験
  • ペアで開発を体験
  • チームで開発を体験

体験が3つにわかれているのは、1人→2人→3人以上というように段階的に体験するためです。

「個人で開発を体験」するフェーズでは「後で他のメンバーがリーダブルコードを探すために読む」という前提で開発します。それを意識して「リーダブルコード」を書きます。これは、フィードバックループでいう「読まれるしリーダブルコードを書こう!」という部分の体験になります。

読まれることが前提でリーダブルコードを書こう!

「ペアで開発を体験」するフェーズでは「個人で開発を体験」するフェーズで開発したコードの中からリーダブルコードを見つけて共有します。これは、フィードバックループでいう「リーダブルコードはないかな?」と「お、リーダブルコードだなぁ。自分が書く時に取り入れよう!」の部分の体験になります。

リーダブルコードはないかな?お、リーダブルコードだなぁ。自分が書く時に取り入れよう!

「チームで開発を体験」するフェーズでは参加者全員(今回は8人)のコードの中からリーダブルなコードを見つけて共有します。これは、これまで個人(1人)・ペア(2人)でやったことをチーム(3人以上)にスケールさせる体験です。

チームでフィードバックループ

これらの内容を通じてフィードバックループを1周体験し、「メンバーのリーダブルコードを見つけて共有」が自分たちのチームにとって割にあうか(コストよりメリットが大きいか)を判断してもらおうという狙いです。

なお、内容の詳細はGitHub上で公開しており、CC BY-SA 4.0のライセンスで自由に利用できます。

フィードバック

チームにとってのリーダブルコード - pixiv insideの「感想」のところにもある通り、参加者のみなさんから貴重なフィードバックをもらいました。ありがとうございます。

開催側からの視点として整理します。

普段はレビューを通して、良くない部分や直すべき部分を指摘する・される事が多いのですが、今回の「良い部分を共有する」という体験は新しく、それを意識づけるきっかけができて良かったです。

この感想をもらえたことは、このワークショップの内容が開催側の狙いを実現するための内容として適切だったということと捉えました。

最近は、コードを読むというと「コードレビュー」としてコードを読むという場面を思い浮かべることが多そうです。Webの記事や雑誌の記事でコードレビューについて書かれていることが多いからです。コードレビューは「コードに問題がないことを確認する」ことが1番の目的です。コードを共有する側面もありますが、それは副次的な目的です。

一方、このワークショップでの読み方の1番の目的は「リーダブルコードを見つけて共有する」ことです。問題が見つかることもありますが、それは副次的な効果です。

目的が違えば読み方も変わります。

「問題がないことを探す」ときは漏れがないか、特殊なケースでも大丈夫か、などといった観点で読むことでしょう。言い方はアレですが、少しイジワルな視点で読むということです。

「リーダブルコードを探す」ときは「自分がすぐに理解できたか」を意識して読まないといけません。意識しないと見つけられないからです。(意識しなくてもすぐに理解できるようなコードがリーダブルコードです。)「いいこと探し」視点で読むということです。

この違いを体験できたという感想をもらえたので、ワークショップの内容として方向性は間違っていなそうです。

レビューする側もされる側も人間なので、指摘を通してある種のすまない気持ちや否定された気持ちを持ってしまう事があるのですが、良い部分を共有するという行為を習慣化する事で、コードのためだけではなくチームメンバーの感情のためにも良い影響がありそう

今回のワークショップは技術的な理由だけから「チームメンバーのリーダブルコードを見つけて共有」を体験する内容にしたので、感情的な側面については考えていませんでした。たしかに感情的な側面でもよい効果がありそうなので、新しい視点を得られた貴重なフィードバックでした。

なにかしら仕組みを作ることで感情的な側面の効果をより活かすことができそうです。GitHubベースで考えるなら、GitHubではコミットやコードに対してコメントをつけることができるので、よい部分を見つけたらコメントしておき、別途用意した「よい部分を見つけた!」コメントを収集して一覧表示するツールを使ってチームで共有するという仕組みを思いつきました。

他にも、すでにコードレビューでうまく回っているチームならこのワークショップは必要ないかもという知見も得られました。

まとめ

クリアコードは「チームメンバーのリーダブルコードを見つけて共有」を体験する「リーダブルコードワークショップ」の提供を検討しています。

ピクシブさんと永和システムマネジメントさん協力のもとこのワークショップの有用性を検証してみました。それぞれの開発者が自立してリーダブルコードを書いているが、チーム全体の取り組みにはまだ届いていないというチームには有用そうです。

「チームメンバーのリーダブルコードを見つけて共有」するという取り組みは技術面だけでなく、チームの感情的な側面で有効かもしれないという仮説が得られました。

ピクシブさん・永和システムマネジメントさんご協力ありがとうございました。

自分たちのチームでも「チームメンバーのリーダブルコードを見つけて共有」を体験して、チームでリーダブルコードのフィードバックループを回すか検討する材料にしたい、という方はお問い合わせください。1回10万円(最大8名)で「リーダブルコードワークショップ」を提供します。

チームでフィードバックループ

2015-08-13

«2015-07-17 最新 RedPenのValidatorをJavaScript で書くには»
2008|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|
タグ: