リーダブルコード勉強会(2回目)を開催2014-07-072014/07/06にプログラミングが好きな学生のためのリーダブルコード勉強会の2回目を開催しました。内容を知りたい方は資料やこれまでの記事を読んでください。今回も9割以上の参加者が満足してくれたようです1。今後の予定これで今年のSEゼミでのリーダブルコード勉強会は終了です。今後もあるかどうかはわかりません2。4.03のライセンスで自由に利用できる4ので、内容に興味がある人は自由に資料を使って自分たちで開催してみてください。自分たちで開催するときのヒントになるように、実際に開催してわかったことや工夫したことを説明します。わかったことわかったことは次の通りです。工夫したこと工夫したことは次の通りです。ランチの時間はメンター・スポンサーと学生さんがゆっくり話せるようにするせっかく現役のエンジニア・人事の人と話せる機会なので活用して欲しかったグループでよいコードをまとめる方法はやり方を提示するグループ・ディスカッションで必要になるようなスキルは今回の勉強会では重要ではないので手順からグループで考えてもらうことはやめた課題の技術的な難易度を下げる課題について補足します。課題は徐々に改良していく課題になることを重視しました。リーダブルコードの必要性を感じることが多いのは既存のコードを改良していくフェーズだからです。既存のコードを改良していくためには既存のコードを読まなければいけません。このときにリーダブルコードかどうかが効いてきます。そのため、技術的な難易度は下げました。具体的にいうと、言語の基本的な機能だけを使えば十分な課題にしました。データは文字列だけにして、さらに文字列操作はなるべくしなくても済むようにしました。C言語で動的にメモリーを割り当てないで済むように、文字列長の最大サイズなども決めました。引数がとても多い実行例になっているのも同じ理由からです6。技術的な難易度は下げたのですが、「プログラムの抽象度」を上げていかないと読みにくいプログラムになるような内容になっています。言うと、「1個だけ扱っていたものをn個扱うようになる」というのを繰り返すようになっています。レシピ名を1つだけ扱えばよかったものがレシピ名を3つ扱わなければいけなくなる。レシピの属性は名前だけだったのが、IDとURLも必要になる。1ユーザーだけ扱えばよかったものが4ユーザー扱わなければいけなくなる。プログラムの抽象度を上げていくには既存のコードを改良しないといけません。するとコードを読む必要がでてきて、リーダブルコードを意識せざるを得ない、ということを狙っています。課題の技術的な難易度は低めにした課題は、既存のコードを読まないとリーダブルなコードを書くのが難しくなるようにした主催のSEプラスさん、スポンサーの楽天さん、クックパッドさん、DeNAさん、メンターの川原さん、たなべさん、参加した学生のみなさん、ありがとうございました。いい経験になりました。参加者のみなさんがこれからリーダブルコード力を上げる助けになれたならやった甲斐があるというものです。勉強会の内容を考え、実際にやってみた側としては、メンターの川原さんとたなべさんが「楽しかった」と言ってくれて非常にうれしかったです。勉強会中で出てきた話題に関連するURLを紹介します。schema.org:プログラム中で使う英単語を選ぶ時に参考にできるサイト。縦長・横長なメソッドを短くする:変数名の長さについての話のときに思い出して紹介したページ。見なおしてみると、変数名というより1行の長さの話でした。例外設計の話:例外の使い方に関してたなべさんが数年前にまとめていたもの。Javaのコードの話をしているときに例外をどう扱うかみたいな話がでていた。Project:ハンガリアン記法について。sunaot/sunaot-sezemi-2014-readable-code:たなべさんによる課題の実装。テストを書いている実装はこれだけかもしれません。Kajaの1人、横山さんによる実装7。最後まで実装しています。「大変不満だった」「不満だった」「ふつう」「満足した」「大変満足した」の5段階評価で回答してもらいました。前回は「満足した」の人数が一番多かったのが、今回は「大変満足した」の人数が一番多かったことに驚きました。企業研修などでやってみたいという方はお問い合わせください。著作者は「株式会社クリアコード」。著作者を表示すればコピーしたり再配布したりできる。変更後も同じライセンスにするなら変更してもよい。↩たとえば、参加者数が少なくてチェンジできる選択肢が少ない時。「例」なので、実行例通りに実装しなくてもよいのですが、多くの人は実行例通り実装していたようです。横山さんはメンターでも参加者でもありません。Web上に公開されている情報を見て趣味で実装したものです。フリーソフトウェア開発での開発の仕方をベースに、成果や知識を公開し共有しながら業務に携われます。クリアコードのYouTubeチャンネルです。メンバーの登壇動画や、開発プロダクトに関する動画を公開しています。4.0とGFDLのデュアルライセンスで自由に利用できます。クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。クリアコードは「クリアコードをいい感じにする人」を1名募集しています。クリアコードはフリーソフトウェア開発で培った技術力を提供しています。Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。株式会社クリアコード。