ソースを読むこと
「上達するにはソース読むのが大事ってよく言われてますよね。
— makicamel (@makicamel) January 5, 2020
読むコツも本になったりしていて、その中の一つに「目的を持ってソース読むこと」っていうことがよく言われてるんですよ。 どうやれば目的を持って読めるかなっていうのを考え付いたんですよ。」
という前段に続くお話。 https://t.co/vl1bfYfwvo
もとネタの https://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview39.html この記事とても良いので読むと良いですね。
ドキュメントを読まないでというのは極端だと思いますが、ドキュメントを読んでもよくわからないとかドキュメントが(充分で)ないということは良くあることなので、そういう時にはソースコードを読みます。
私はキャリアとしてはJavaからはじめて現在はRubyを主に書いているという感じです。ライブラリのソースコードを読むというのはRubyを使うようになって特にやりやすくなったなと感じています。
Javaのようなコンパイルする言語では、ライブラリはコンパイル済みのオブジェクトコードになっているものが提供されていてソースコードについては別で扱われるということがよくあります。
オープンソースであればソースコードにすぐにアクセスできるのですが、そうでない場合もあります。時には(ライセンスで許されていれば)逆アセンブルして解析するなんてこともあります。いずれにせよ手間であったり、ソースコードを見られなかったりします。
Rubyではソースコードを直接読みこむためライブラリもソースコードで提供されます。GitHubのおかげでブラウザからのソースコードへのアクセスも楽になりました。(逆に言うと、ソースコードを公開したくないベンダーにとってはデメリットではあります。)
Ruby(だけの話ではないのでJavaとの対比でいうと)は言語のしくみ上でもソースコードを公開するという文化が根づいているなということを良く感じます。
GitHubがRubyで作られていることもうなづけます。
Rubyが初心者におすすめできる言語というのはこういう側面からも言えますね!
最後にRubyでライブラリ(gem)のソースコードを読むためのTipsをひとつ
gem-srcというツールを使いましょう。
gem-srcを使うとgem installすると同時にgemのソースコードのクローンをgitリポジトリから取ってきてくれます。
gem自体ソースコードなのになぜこのようなことをするのかというと、元のgemに影響を与えずにソースコードを修正することが出来るからです。
また、修正したコードをそのままPull Requestすることも出来ます。
明日はgem-srcの使いかたをもうすこし具体的に書こうかと思います。(明日はasakusa.rbの新年会なので松田さんからtipsが聞けるかもしれません)