カジュアルにソースコードを読もう
みなさん、ソースコードは読んでますか?
読んでない人、それなりにいると思いますが、今日はオープンソースのライブラリやフレームワークを触る場合、もっと積極的にソースコードを読みましょうという話をします。
なぜコードを読むの?
ソースコードを何故読むのか。それはドキュメントだけでは得られないお得な情報がたくさんあるからです。
例えば
そもそもドキュメントが充実してない場合。「なんとなくこうかな?」で進めたり、stackoverflowを見るのよりもコードを見たほうが圧倒的に速く問題解決に繋がります。
他にも設計のお手本としても活用できます。フレームワークの場合、そのフレームワークの設計手法や考え方に沿った設計や実装を行うことで、より良い実装ができます。そしてフレームワーク自体を構成するコードは、その設計手法や概念に則っているので、一番のお手本です。
最後に、実装の参考としも活用できます。ドキュメントを俯瞰するだけでは気が付かない便利な機能を見つけられるし、自分が知らなかった機能を知ることができます。
何を使う?
じゃあコードを読んでみるか〜、って気分になった時はソースコードをダウンロードするのもいいですが、Githubやgrepcodeを活用するのもよいでしょう。
githubは言わずもがな。ありとあらゆるオープンソースのリポジトリが公開されています。 grepcodeはjavaによるプロダクトに特化したサービス。androidやapache commonsなども含まれています。
またgrepcodeは変数やクラスなどの宣言元へのジャンプがあって便利。いずれのサービスも行のハイライトをしてくれて、URLにしてくれるので、ある行について他の人と共有することもできます。
どこから読もうか
さて、grepcodeやgithubを開いたのは良いけどどこから手をつければ良いのかわからない時。まずは自分の触っているAPIを追いかけてみましょう。 また、コードを読むときは「コードを読むぞ」と意気込むよりは、例えばアプリケーションがクラッシュしたり、想定通りの動きをしない時に、ググるより先にコードを見るようにしてみましょう。それを何度も繰り返して、コードを読む癖をつけるのが先です。
もしも、ものすごいやる気に満ちあふれて、フレームワークとか全容を理解するためのコードリーディングをする時はコミットログの古い物から追いかけると良いです。コードがまだ少なく、主要な機能の実装しか行われていないタイミングであればそんなに苦しくはないです。
とは言ってもハードルがある
確かにソースコードを読むにはハードルもあります。今まで以上に言語への理解やデザインパターンの知識も必要になりますし、何より時間がかかります。
だから、今までコードを読んでなかった人は「今日からやるぞ」と意気込むよりは、「まぁ、やってみるかな」と軽い気持ちで初めてるのが良いです。今使ってるライブラリやフレームワークがgithubにあるならとりあえずブックマークをして、アプリでバグが出たら、ちょっとコードを見てみる感覚。
最後に 俺がよく見に行くコード達