リーダブルコード勉強会に参加してきました
事の発端
前のがっこの先生が,こちら勉強会のことをツイートしてたのが始まりです.
SEゼミ | プロフェッショナルを目指す学生のためのインターン | プログラミングが好きな学生のためのリーダブルコード勉強会
リーダブルコードは,前のがっこにいた時に,指導教員のせんせにおすすめされて読んだことがあります. その時も結構感銘を受けて,コードの書き方滅茶苦茶変わったりしました.
それまでにも,チーム開発の機会は結構あったし,これからもたくさん増えてきそう(実際ものすごく増えてる)なので,リーダブルなコードについてお勉強しようと応募しました.
無事,参加が決まって実際に行ってきた(7/6)のでその時のお話を書きます.
勉強会の内容
勉強会の内容については,こちらのリポジトリに詳しく書いてあるので参照していただいたほうがいいと思います.
clear-code/sezemi-2014-readable-code · GitHub
簡単に説明すると,午前中に課題にそって自分が思うリーダブルなコードを書いて,午後には同じ言語で書いていた人と交換,課題を進めながらリーダブルなコードを見つけていく.という感じ.
主題としては,リーダブルなコードを野生のコードから見つけ出すこと.たくさんコードを読んで,良いコードを見つけて真似をする癖をつけるという感じかなと思います.
あと,会場はクックパッドさんのオフィスだったのですが,オフィスめっちゃきれいでおしゃれでした.どどーんとキッチンがある感じ,さすがクックパッド.
午前の部
思い思いにコードを書くという感じでした.僕が進められたのは仕様5まで.ちなみにCで書きました.
ランチ休憩
お昼はクックパッドさん提供のランチ.腹減りすぎて写真撮るの忘れてました.
午後の部
コードを交換して,実装再開.そこで,お相手のコード見てめっちゃビビる.めっちゃビビるっていうと,ちょっと語弊があるかもしれません.自分の書いたコードめっちゃ恥ずかしくなりました.
午前中,僕なりに一生懸命書いてたつもりだったんですけど,気にしてたのは体裁だけでした.プログラムの構造としてどうあるべきかみたいなことを全く考えていなくて,あまりにもヒドかった…….コード的には読みやすいとは思うんですけどね.
午前中までに書いたコードはこちら.
あーこう書くべきだったよね.とか,何だこの記法は……とか,後悔8割驚き2割ぐらいのテンションで実装を進めてました.
というか昔,こういうOOPっぽい実装やってたじゃん!(RobuCupのとき)
懇親会
なんかシャレオツなお店で懇親会しました.
企業の方々と雑談したり,恐れ多くも前述のイマイチなコードを,エンジニアの方にレビューしてもらったり…….
勉強会後,変わったことor変わりそうなこと
OSSのコードを読み始めた
これは,勉強会の中で言われいたことなんですが,リーダブルなコードを書けるようになるには,小手先のテクニックを覚えるだけではダメなんだそうです.
とにかく,たくさんのコードを読んで,書いて,読んで……を繰り返していく.そうすると,読みやすいコードが自然と書けるようになっていくと.
そのための一つの取っ掛かりとして,OSSのコミットとかコードを毎日読んでみましょうというお話があったので,早速実践しています.
具体的には,現在PBLで使っているRubyとRailsのコミットとかコードを少しずつ読んでいます.
なるべくたくさんコードを書く
上の項目にもちょっと関連することですが,やっぱりコードはたくさん書こうと.少なくとも最近は,課題やらPBLやらその他趣味とかで,前のがっこに居る時よりもコードを書く量はぐっと増えたと思います.
ただし,現状はただ書いているだけなので,いろんな人に見られるとか自分が後で見返すとかそういうことをもうちょっと意識して書きたいなと.もう一歩踏み出して,積極的にGitHubでコード公開していきたいなと思います.
おわりに
総合的に見て,参加してよかったと思います.具体的にこれを覚えて帰ってきた!っていうことはあんまりなかったんですけれども,コード書くことに対するスタンスとか,読むことに対するスタンスとか結構変わったと感じてます.少なくとも,これに参加してなかったらOSSのコードを読むことなんてもっと先だったと思います.
あと,今日の午前中色々リベンジとか復習かねて課題をやりなおしてみました.交換相手さんのコードにかなり影響受けてると思います.あと,RoboCupで書いたコードにもめっちゃ似てます.
BLThunder1991/BLThunder1991-sezemi-2014-readable-code-2 · GitHub
構造的にはやっぱり,こういう書き方のほうがいいんだろうなあと思います.リーダブルかどうかは,あしたもう一回読んでみてどんどん改善してこうと思います.
とりあえず,課題の仕様は全て満たしたいなー.