ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja nb ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja en ja ja vi ja sv eu ja en en hu ja ja en en pl ja ja jbo hbs_lat en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja
午後: 午前中に作った課題を交換し、他の人の実装を元に課題の実装を継続する
他の人の実装を元に課題の実装を継続するので、他の人がどのように実装していたかを読んで理解する必要があります。これが「強制的に読む機会」です。
この読む機会を通じて「既存のコードからリーダブルなコードを発見すること」を体験してもらいました。
既存のコードからリーダブルなコードを発見する
既存のコードからリーダブルなコードを発見することは難しいことです。リーダブルじゃないコードを発見する方がよっぽど簡単です。なぜなら、リーダブルじゃないコードはいびつなので目立つからです。目立っているのですぐにはっけんできます。
一方、リーダブルなコードはわかりやすく書かれているので簡単に理解できて読んでいてつまづきません。そのため、気づかずにスルーしてしまいます。コードを読み慣れていない人は、よっぽど意識していないと発見できません。
この勉強会ではリーダブルなコードを発表する時間を設けることにより、「意識してリーダブルコードを発見すること」を体験するようにしました。
学生のみなさんが発見できるのか不安だったのですが、実際にやってもらったところ、みなさん1つ以上発見していて驚きました。意識してやってもらうとできるようです。勉強会の実施側としてこれは有用な発見でした。
当日、参加した学生のみなさんに伝え忘れたことがあったのでここに書いておきます。見つけたら、他の参加した学生のみなさんにも教えてあげてください。
今回の勉強会では、自分の実装がその後どうなったのかを確認する時間をとりませんでした。今回は「書く、読む、書く」のサイクルを1回だけ実行する時間しかなかったからです。2回目以降はこれからそれぞれが実行していくことを期待しています4。
次のサイクルとして以下のことを実行してみるのはどうでしょうか。
forkされた自分の実装からさらに開発を継続
グループのさらに違う人の実装をforkして開発を継続
グループの他の人のコードを読んで、よいところを自分のコードに取り込む
他に、「グループの他の人のコードを見て悪いところを見つけたら改良してpull requestを送る」というのも思いつくかもしれませんが、あまりオススメできません。「よいコードを探す」という方向ではなく「悪いところを探す」という意識でコードを読む傾向になってしまうかもしれないからです。
コードレビューのときなどは、「悪いところを探す(問題がないか探す)」読み方は必要な読み方です。しかし、この勉強会の目的にしていたこととは違う方向性のことです。注意してください。
なお、他の人のリポジトリーを探すときはGitHubで「sezemi」で検索してください。
当日の資料はGitHubのclear-code/sezemi-2014-readable-codeにあるので復習したいときは活用してください。
(参加した学生の方は、アンケートには書ききれなかった勉強会で思ったことや、その後こういったことを始めた、継続しているといったことを自分のブログに書いてくれると嬉しいです。その場限りで終わってしまったのかその後のアクションに影響はあったのかが気になるのです。)
プログラミングが好きな学生のためのリーダブルコード勉強会を開催しました。リーダブルコード力を継続的にレベルアップできるようになることを目指しました。アンケート結果や懇親会で聞いた話5などからうまくいったと言えそうです。ただ、改善しないといけないところも見えているので、7/6の開催分ではさらに改良する予定です。7/6の分はまだ参加登録できるので、まわりの学生の方に勉強会のサイトを教えてあげてください。
勉強会の中でも何度か話した大事なことをここにも書いておきます。
今回はプログラミングが好きな学生のみなさんが集まりました。「プログラミングが好きなこと」はかけがえのない素晴らしいことなので大事にしてください。「好きなこと」は誰かから強制されて持てる気持ちではありません。自分の中からでてきた気持ちのはずです。プログラミングが好きなら、コードを読んでそこから学んでいくことを続けるのはツライことではなく、楽しいことになるはずです。好きなことをして楽しくレベルアップしていけるならさらに楽しくプログラミングできるでしょう。これからも「プログラミングが好きなこと」を大事にしていってください。
それでは、「読む人」の視点を持ってこれからもがんばってください!
今回はメンターのみなさんがいなかったらうまく進みませんでした。本当に助かりました。ありがとうございました!
そんな頼もしいメンターのみなさんを紹介します。(参加した学生のみなさん向け。)
まきもとさん(クックパッドさん)
たなべさん(DeNAさん)
結城さん(クリアコード)
沖元さん(クリアコード)
勉強会で紹介があったイベントなどのURLを覚えている分だけ以下に示します6。参加した学生のみなさんは参考にしてください。
クックパッドさんはクックパッド&リクルート対談イベントがあったり、アルバイトも募集したりしているそうです。
楽天さんはインターンシップと温泉Hackathonがあるそうです。
DeNAさんもインターンシップがあるそうです。
SEゼミは7月/8月にも勉強会を開催予定だそうです。7月1日に応募受付開始するそうです。
(実は、クリアコードもインターンシップをやっていたりします。)
この勉強会のような内容を自社の新人研修や社内研修でも実施して、リーダブルコード力を継続的にレベルアップしていく開発チームにしたい、という方はコードリーダー育成支援というサービスがあるのでお問い合わせください。
アンケート結果より。 ↩
アンケート結果より。 ↩
この新しく自分でリーダブルなコードの書き方を開発する方法は今回は対象外としました。 ↩
アンケートでは半数以上が実行しようという思いを持ったようなのは前述のとおりです。 ↩
懇親会ではみなさんたくさん話をしてくれました。考えるきっかけになる勉強会だったようでよかったです。 ↩
間違っていたらごめんなさい。 ↩
現在クリアコードではソフトウェア開発者を募集しています! フリーソフトウェア開発での開発の仕方をベースに、成果や知識を公開し共有しながら業務に携われます。
Groongaの管理画面の改良案
Debianでパッケージをリリースできるようにしたい - mentors.debian.netの使いかた
Apache Arrow
milter manager
ククログの記事はCC BY-SA 4.0とGFDLのデュアルライセンスで自由に利用できます。
クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。
クリアコードは「クリアコードをいい感じにする人」を1名募集しています。
クリアコードはフリーソフトウェア開発で培った技術力を提供しています。特にMozilla製品(Mozilla FirefoxとMozilla Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。