「実践リーダブルコード」講座とは
書籍『リーダブルコード』は、翔泳社の「ITエンジニア本大賞2014」にて技術書部門大賞を受賞、ジュンク堂池袋本店コンピュータ書において3年連続で売上冊数第1位と、エンジニアの間で高い人気を誇っています。読者のみなさんの中にも、読んだことのある方が多いのではないでしょうか。
講座「実践リーダブルコード」では、この書籍『リーダブルコード』の解説を執筆した、須藤功平さん(株式会社クリアコード)が講師を務めます。プログラムを書き始めた当初からオープンソースの開発に関わっていたという須藤さんは、学生の頃から「開発を続けられるコード」を書くことが大事だと感じていたそうです。
例えば、普段開発をしている中で、このようなことはないでしょうか。
- とりあえず動けばいいでコードを書いているけど、本当はもっといい書き方をしたい
- チームで開発をしているときに、お互いのコードの理解に時間がかかってしまう
- チームに新しい方が入ってきたときに、早く現場のコードの書き方になれてもらいたい
こんな時は「リーダブル」を意識してみましょう。須藤さんの言葉を借りるなら「読む人が 読みやすいなら リーダブル」。読みやすいコードを書くのではなく、「読み手にとってリーダブルか?」という意識をもつのです。
今回の講座は「自分の開発チームにリーダブルなコードが当たり前な文化の作り方を持ち帰る」ことを目標とし、課題に取り組みながら、「リーダブルなコードの探し方」や「リーダブルなコードの基準をチームで共有する方法」などを学びます。この講座で行われたワークショップを、チームに持ち帰り、同じように実践できる設計となっています。
須藤さんの「実践リーダブルコード」講座に対する意気込みについては、以前掲載した記事『日々コードに触れる人にこそ体験してほしい ~アジャイルアカデミー「実践リーダブルコード」講座』をご覧ください。
講座の流れ
以下、実際の講座の流れにそってレポートしていきます。
最初はいつもどおりのコードが書けるようにアイスブレイクから
まずは、簡単な作業を通じ、自分がいつもどおり開発できるような状態にしていきます。GitHubにリポジトリをつくって、READMEに自己紹介を書いて、commitやpushをします。受講生の約半分の方が、今回の講座をきっかけにGitHubアカウントをつくったそうです。みなさんすぐに使いこなし「これは便利だ!」と感動していました。
リーダブルコードはなぜ必要?
そして場も温まってきたところで、須藤さんから「なぜリーダブルなコードが必要なのか」ということについて解説していただきました。リーダブルコードが必要な理由は、下記の2点があります。
理由1 ソフトウェアは作って終わりじゃないから
昔は、ソフトウェアは作って終わり、運用で頑張って回避してきました。しかし今は、機能は少なくてもまずは動くものを作り、それを改良・修正しながら開発するスタイルが当たり前になってきていると思います。リーダブルなコードで、既存のコードを理解しやすくすることで、自分たちが楽になる、そしてそれが開発スピードの向上につながります。
理由2 複数人で開発をしていくから
昔は、1つのモジュールを1人の担当者という作り方をしていたのが、今は1つのモジュールに複数担当者というのも多いです。チームで改良するまえに、リーダブルなコードの基準を共有しておくと、チーム開発がしやすくなります。
リーダブルコードをチームで共有するときに必要になるのが、下記の3ステップです。
- コードを読む文化をつくる
- チームのコードの中から、リーダブルなコードを見つける
- リーダブルなコードをチームで共有
次からこの3ステップを、具体的に実践していきます。
個人で開発
課題を、まずは個人で開発していきます。14の仕様を順に実装し、最終的にレシピ管理プログラムのようなものを作っていくイメージです。最初は「Hello World!」のような簡単なコードから、少しずつ難しくなっていきます。ただし、難しいロジックは必要なく、言語の基本的な機能を理解している方なら大丈夫です。
例えば、最初に実装する仕様1はこのようなものです。
仕様1:レシピ情報を出力できること
レシピのタイトルとして「オムライス」と出力するプログラムを新しく作ってください。
レシピのタイトルの出力先は問いません。コンソールに出力しても構いませんし、ファイルに出力しても、ウィンドウを作ってそこに出力しても、Webブラウザーに表示させても構いません。
これを、私が選択したRubyで実装したものは、言わずもがな下記になります。
puts "オムライス"
ここで大事なのは、一つでも多くの機能を実装することではありません(仕様は時間内に作りきれないほど用意されています)。「自分が思う最高のリーダブル」を意識しながらコードを書くことと、「そのコードがリーダブルである理由」を考えて、メモすることです。ここで意識したこと、メモしたことは、午後にリーダブルコードの基準をチームで共有する際に必要になります。
「読み手」の視点を実際に体験することで、読みやすいコードを見極める力が身に付き、効率化や組織の開発力の底上げにも役立ちます。
- 日時:2015年6月24日(水)10:00~18:00(受付開始は9:30)
- 場所:翔泳社(東京/四谷三丁目)
- 参加費:64,800円(税込)【一人あたり3,240円引のペア割有】
▼詳細・申込はこちらから ⇒ 実践リーダブルコード
みんなでお昼ごはん
お昼はお弁当が準備されています。私も講師のみなさん、受講者のみなさんと一緒にいただきました。
私のいたチームでは、「リーダブルなコードを書く必要性をどう上司に説得するか」「ドキュメント作成で本質でないところを突っ込まれる件について」などの話で盛り上がりました。なんと名古屋や新潟から来られた受講者の方もいました。
午後はリーダブルなコードを見つけながら他の受講生とコードを交換
午後からは、受講生同士でコードを交換します。他の方のリポジトリをforkし、他の方のコードの中にリーダブルなコードを探しながら、開発を継続していきます。
他の人のコードを読むと、どうしてもリーダブルじゃないコードに目がいきがちですが、今回はそこを気にしてはいけません。とにかくリーダブルなコードを探すことに集中します。
例えば、実行手順を記したドキュメントについて、私が気をつけたリーダブルな工夫と、コードを交換して見つけたリーダブルな点は下記のようなものがありました。
私が気をつけたリーダブルな工夫
気をつけた点:実行手順を汎用的にし、他の名前のファイルを参照する場合にも分かりやすくなるように気をつけた。
ファイルのあるディレクトリに移動し、コンソールで以下を入力する。
ruby recipi.rb [データファイル名]今回の仕様の例だと下記の通り。
ruby recipi.rb recipi-data.txt
コードを交換して見つけた、他の方のリーダブルな点
リーダブルな理由:自分とは違う環境、パスが通ってない場合にも配慮している。
引数にデータファイルを指定して、Rubyインタープリターでrecipe.rbを実行してください。
以下はコマンドライン(bashやコマンドプロンプトなど)で実行する例です。
$ ruby recipe.rb recipe-data.txtUnixやLinuxなどの環境では、以下のように実行することもできます。
$ ./recipe.rb recipe-data.txtもし環境変数のPATHが通っていない場合、絶対パスで指定してください。
$ /path/to/ruby recipe.rb recipe-data.txt
いいコードの基準をチームで共有する
チームにリーダブルコードを広げるための最後のステップは、リーダブルの基準を共有することです。
まずは、自分たちのグループ内で、自分の見つけたリーダブルなコードを共有し、一つのメモにまとめます。それをさらに、今回の参加者全員に広げられるよう、全体に向けて発表します。
例えば、Javaのチームだと「インデントが揃っている」「インデントが最大3階層で浅い」「一次変数に意味のある名前をつけている」「不要なコメントがなく、コードで意図を伝えられている」……など、数多くのリーダブルな工夫が発表されました。
その後、このようにして作られた「リーダブルなコードの基準」をチームでどのように育てていくか、そのノウハウについて教えていただきました。
詳しくは講座に参加してのお楽しみとして、一つだけご紹介。チームメンバーのリーダブルなコードを継続的に見つけるには、継続的に「コミットを読む」ことが最適とのこと。コミットをわざわざ読みに行くのではなく、コミットのメール通知機能などを使って、流し読みする感覚でやるのが、読むコストが下がってよいそうです。
そして講座終了後は希望者の方で打ち上げへ。須藤さん受講者のみなさんが連れ立って、夜の荒木町へと繰り出して行ったのでした……。
講座終了後も面談でフォローアップ
今回、この講座に参加した方向けの特典として、フォローアップ面談を受けることができます。今回のリーダブルコードのワークショップを持ち帰り、チームで実践してもうまくいかないことが色々と出てくるかと思います。ここで出てきた問題をどう解決するか、直接相談できるいい機会なので、受講の際はぜひご活用ください。
私が思う、この講座のよいところ
1. 課題の難易度が適切
講座中に実装する課題は、新人プログラマーでも分かるようなプログラミングの基礎的な知識のみでできます。したがって「読みやすいコードを書く」「リーダブルなコードを探す」ことに集中できます。
さらに、同じワークショップを現場に持ち帰って実践してみる際にも、新人さんからベテランさんまで一緒になって取り組むことができます。
2. 講師やチューターさんが話しかけやすい
講座のはじめにアイスブレイクを設け、声をかけやすいような雰囲気作りをしているので、私のように引っ込み思案な方でも講師・チューターさんに助けを求めやすいです。さらに、ちょくちょく覗きこんで「どうですか?」と声をかけてくれ、自分でも気づかないような、リーダブルなコードの工夫を教えてくださいました。
3. ワークショップの資料が作りこまれているので、現場で再現できる
ワークショップで何をすればいいかの手順が丁寧なので、現場に持ち帰って、指導者としてワークショップを開催することができます。もちろん、復習にも活用できます。
4. GitHubに慣れていない方もOK。基本的な使い方が分かる
リポジトリの作り方やcommit&push、他人のリポジトリをforkして開発を進めるところまでを、ステップ・バイ・ステップ形式で進めていくので、Gitに初めて触る方も安心です。このワークショップを現場に持ち帰ることで、GitHub初心者さんに慣れてもらうこともできるかと思います。commitの頻度やメッセージなどの手順書あるので、オープンソースの開発に慣れている方の流儀を追体験できるのもいいところ。
参加者の声
最後に、講座のアンケートに書いていただいた参加者の声をご紹介します。
- ワークショップ形式でリーダブルなコード作りを体験できるので、どうしたらリーダブルなコードが書けるようになるか、チーム内でどのように展開するかを考える、良いきっかけになると思います。
- 「リーダブルなコードをうちのチームでも書こう!」と思っても、どういう活動をしたらいいか悩むことも多いと思います。このセミナーではそれを学ぶことができ、明日からあなたひとりでも始めることができます。
- 簡単なコード(Hello World!の出力等)からスタートし、動作するコードではなく、リーダブルなコードについて考えることを主題にされていたため、初心者でもわかりやすかったです。
- 自分のコードを見なおす良いきっかけとなりました。
「実践リーダブルコード」講座、次回は6月24日に開催します。1人あたり3,240円割引になるペア割もあるので、チームでの受講もオススメです。ぜひ受講して、チーム全体のコードの質を高める、いい機会にしませんか。
最後にあらためて、須藤さんの言葉で締めましょう。「読む人が 読みやすいなら リーダブル」。
「読み手」の視点を実際に体験することで、読みやすいコードを見極める力が身に付き、効率化や組織の開発力の底上げにも役立ちます。
- 日時:2015年6月24日(水)10:00~18:00(受付開始は9:30)
- 場所:翔泳社(東京/四谷三丁目)
- 参加費:64,800円(税込)【一人あたり3,240円引のペア割有】
▼詳細・申込はこちらから ⇒ 実践リーダブルコード