コードリーディングのすすめ

こんにちは、CTOの山岡(@hiro_y)です。

先日開催したInnoCAFE #37で、詩を書いていたことがあるという話をしたらいろいろなリアクションをいただきました。何を隠そう(別に隠してないけど)大学は文学部卒で、当時はフリーペーパーを作ったり、詩誌に寄稿したりしていたのでした。

よくよく考えると、詩とか小説って世界を言葉(あるいは文字)で表現しようとすることで、プログラミングと思想としては近いんですよね。ただ言語が違うだけで(自然言語とプログラミング言語)。なので自分としては全然違和感はないし、連続している世界だったりします。

さて、皆さんがプログラミングをしていて行き詰まったとき、何をしますか。例えばフレームワークを利用した開発をしていて、実装の仕方がわからなかったり、どうしてそういうふうに動くのかわからなかったり。

他の人が書いたコードを見たり、インターネットで検索して出てきたコードを見たりしますよね。あるいはフレームワークだったらオンラインマニュアルがあるかもしれません。でもそれでもわからなかったり、腑に落ちなかったらどうしますか?

簡単な話で、仕組みとして使っているフレームワークのソースコードを読めばいいと思うのです。最近だとオープンソースのフレームワークを使うことがほとんどだと思いますし、個別のライブラリーに関しても挙動が気になったらいくらでも読める環境があります。言葉でシステムという世界を構築していく仕事をしているのに、その土台の組成からは目を背けるのは、基礎ができていないと言われても仕方がありません。最初から全部読む必要はありませんが、必要な部分は挙動として理解する上でもこわがらずに読む癖をつけていくのがオススメです。

PHPだと例えばLaravelのソースコードだったり、Laravelでも使われているSymfonyのHttpFoundationのコンポーネントあたりとか、読みやすいと思います。気になる部分はどんどん読みましょう。composerを使っていれば、vendorディレクトリーの中にソースコードはあるはずです。

その先にさらに進むと、そもそものプログラミング言語自体のソースコード(PHPのソースコードとか)を読まないとわからない、みたいな世界もありますが一足飛びにそこまでやる必要はたいていの場合ないはずです。

まずは身近なコードを読むことを恐れないこと、ですね。そうしてある意味お手本となるソースコードと出会うことで、プログラミングのスキルも上がっていきます。

自分もずっと以前に自作のフレームワークを作って公開していたころ、当時流行っていたフレームワークのコードを片っ端から読んだりしていました。読んでいると作った人の考え方とかわかってきたりして、面白いですよ。フレームワークは世界観(どう書くことでシステムを成立させていきたいか)の塊なので、そういう部分も感じ取れると楽しくなるかもしれません。

今回はちょっとプログラミング初心者向けのお話でした。普通にプログラミングしていると、フレームワークやライブラリーのソースコードを読むしかないということは案外あるものなので、苦手意識を持たずにぜひ読んでみてください。