koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

Sendagaya.rb(#299)に参加しました ~初めてのソースコードリーディング~

はじめに

2020年一発目のSendagaya.rbに参加しました。

「勉強会に参加しただけでは、自分の実力は伸びない🔥学んだことを少しでもアウトプットしなければ、力はついていかない‼️」と思ったので、少し時間が空いてしまいましたが、簡単にではありますが、学んだことを書いていきたいと思います。

sendagayarb.doorkeeper.jp

今回のテーマ

今回のテーマは、ActiveSupportのRails6の変更点をみんなで読んでいくというものでした。

昨年参加した色々な勉強会で「Ruby力を上げるためにはソースコードを読むことが大事」ということを散々教えていただいたのですが、いざ一人になると中々手が出ませんでした💦

そのため、今回のテーマはとても有り難かったです。

github.com

railsguides.jp

どんなコードを読んでいったら良いのか?

私なんかは、まず初めにどんなコードを読んだら良いのかということに悩みますが、これについて良いのが「自分が動かしたことがあるコード」を読んでいくと良いそうです。

「自分が動かしたことがなく、概要しか知らないコード」は「こういう風に実装されているだろうな」という予測がつかないため、非常に読むのが難しいということでした。

どのようにコードを読んでいったら良いのか?

コードリーディングは検索するところから始まるということでした。

Railsのコードであれば、まずは https://api.rubyonrails.org の該当する部分のちょこっとソースコードが載っている部分を読み、イメージを掴み、その後、github上なり、手元にコードを持ってきて読むなりをする、ということでした。

ソースコードをまだまだ理解することができない・・・

勉強会の時間で、CHANGELOGから何個かコードを読んでいきましたが、理解するのにすごい時間がかかりました。

皆さんが議論されている中で、私はずっと以下のコードを読んでいましたが、時間内で理解することができませんでした💦

github.com

ただ、truncate_bytesを使うことで、‍"👩‍👩‍👧‍👦"の4人家族が、"👩‍"一人になってしまうのは、世知辛なーと思いました😅

最後に

初めてのソースコードリーディングだったので、中々理解できないのは当然だとも思いますが、自分なりに要因を分析してみました。

一つ目の要因が、知らないメソッドが多すぎるため、そこで時間がかかってしまうというものです。これは、ソースコードを読んでいくうちに何度もリファレンスを参照することで、少しずつ自分の引き出しが増えていくのかなーと思っています。

二つ目の要因が、頭の中だけで理解しようとしていることなのかなと思いました。これの対応策として、『ふりがなプログラミング』のようにコードにふりがなを振っていくことで、読みやすく理解しやすくなるのかなーとも思いました。

これはどんどん試していきたいです。

ソースコードの読み方は人それぞれなところだと思いますが、今回の勉強会では強いエンジニアの方々の実際の読み方を知ることができて、とても勉強になりました💪