コードの読み方 Ruby on Rails編
今回は、僕がRailsのコードを読む時に工夫していることを書きます。
どのようなエンジニアであれ、かなりの時間をコードを読むことに費やしていると思います。機能を追加するときは、過去のコードを読むことになりますし、ライブラリを使ったりアップデートするときは、ライブラリのコードを読みます。レビュー文化がある場合は、他の人のコードをレビューすることになります。
コードを読む時にやっていることは、人によって様々ですが、なかなか他人の工夫を知ることは少ないと思ったので、noteで共有します✍️
きっかけ
1/9(木)の表参道.rb #54 で、たくさんのRailsエンジニアが、RubyやRailsのコードを読む時に工夫していることを聞きました。抽象化の話だったり、コードをエディタの便利機能だったり、自作のデバッグツールだったり、色々な角度から工夫点を聞きました。(詳しくは、Connpassの資料か、ハッシュタグをみてください)
勉強会の懇親会で話があがったのですが、コードを読む工夫は人によって異なるので、自分の工夫してる点を軽くまとめていこうと思います。
工夫点1: コードを読む前に仕様を読む
1つ目の工夫点は、仕様理解を先に行うということです。
どのような動きをするのか把握していると、分からないコードでも大体の予測がつきます。逆に仕様を理解せずにコードを読み進めると、分からないことだらけで色々なクラスをめぐりにめぐって、詰まってしまうケースもあります😞
仕様を理解する方法は、以下の3つがあります。
1) READMEやリファレンスを読む。
2) テストコードを読む。
3) 実際に動かしてみる。
上から順にやっていって、どうしても分からない時に実際に動かすという流れになります。全体の仕様だけでなく、クラス単位でもテストコードで期待値を理解することで、実際のコードの理解が格段に上がります👍
工夫点2: すぐにコードを読める・動かせる環境を作る
2つ目の工夫点は、GitHub上にあるOSSやプライベートプロジェクトを利用する時短テクです。
普通であれば、何かgemを調べるときは、gem名でググって、GitHubのページに行くと思います。僕は、ghqを使って手元にダウンロードしておいて、必要になった時にコマンドラインからGitHubページに遷移できるようにしています。
詳しくは、クラウドワークスさんのAdvent Calendarに載っているものを使うと、aliasまで含めて説明されているので、やってみると良さそうです💪
https://qiita.com/itkrt2y/items/0671d1f48e66f21241e2
(ただし、ghqはどこかのバージョンから ~/.ghq 配下ではなく、~/ghq 配下にダウンロードされるようになったため、aliasのコマンドは修正する必要があるかもしれません🙏 )
工夫点3: printデバッグするときは絵文字を使う
3つ目の工夫点は、printデバッグする時の工夫です。
pryやbyebugを使っている場合は、なかなか p (puts) を使うことは少ないと思います。printデバッグはすぐに欲しい情報を手に入れられますが、ログの中に埋もれてしまうのが難点です。僕は、絵文字(スタンプ)を出力内容に入れることで、ログの中からすぐに見つけられるようにしています。これは、 @willnet さんに教えてもらったテクです😍
まとめ
他人のコードを読む時の工夫は、なかなか知ることができない内容です。僕がやっている工夫点も、大半は社内でペアプロ・モブプロをする時に、教えてもらいました。
勉強会では、様々な内容をデモ付きで教えてくれた方が多く、実践してみたい内容がたくさんありました。
(エディタも、そろそろAtomから乗り換え時期なんだろうなあ・・・)
最後に、このような機会を提供してくれた表参道.rbとSansanさんに感謝😍
他の言語でも、コードの読み方とかデバッグのやり方とかあると嬉しいですね。