matobaの学んだこと

とあるPythonエンジニアのブログ

あるサービスの中が見たいという話

この話好きだな、と思ったことを見つけたので、とりあえず文章を書いた。 まとまりはない。

この話とは

この話は以下の話です。

Sider 特別インタビュー GitHub アーロン・パターソン氏  コードレビューにとって大切ことは - Sider Blog

“入社を決めたもう一つの理由に、「GitHub.comのコードを見たかったから」というのもありました。”

2018/07/27 00:27

このインタビューを受けているのは、Aaron Patterson氏。 Rubyのコミッター。Railsを作ってる人。

この氏がGitHub社に入社を決めた理由が、GitHubのコードが見たいから。という話。

この話好きだなあと思った。

どの辺が好きか

自分が使っているものの中がどうやって動いてるんだろう、というを知りたいという気持ちはわかるなあと思った。

僕も自分が使っているものの中身を開けてみて、どうなっているのかを見たいと思う。

それは、中を見てどうしたいとかじゃなくて、「なるほどー。こうやって動いてるのかー。」と思うだけなんだけど。

そういう風に仕組みを知って「ふむふむ。なるほど」とやるのを僕は結構好きだと思う。

歴史のあるものは趣がある

コードにしても会社にしてもコミュニティにしても、歴史があると趣があると思ってる。

どういう経緯があるにしてもやっぱり経年変化というのがあって、少しずつ最適化されていく。

なんでこんな形になってるんだろうなーと思いながら、いろいろ眺めるのは結構面白い。

そして、それがどういう仕組みでそういう風になったのか、というのがわかると楽しい。

仕組みを知りたいと思う

そもそもだけど、僕は、暗記が嫌いで仕組みを知るのが好き。

その理由は、仕組みの方が応用範囲が広いから。

暗記でなんとかしようとすると、たくさんのパターンを覚えないといけない。それが辛い。

覚えることは、応用範囲の広い知識にしないと僕は厳しいなと思ってる。

そんなたくさんのことは覚えられない

そもそもの話として、僕の頭の中に入る情報はかなり限られてるなーと思っている。

人類を頭の中に入る情報の多さでランキングを作って、ソートしたら僕はかなり下の方に位置すると思う。 それは、小学校や中学校くらいの時に、「ヨーイドン!」で暗記をした時の自分の暗記の遅さと定着の悪さから感じた。

頭がハードディスクだとしたら、回転速度は遅いし、円盤の数も少ない。ランダムアクセスは苦手。全体的に頭の中は、連想配列みたいなシーケンシャルなアクセスになってる。覚えることが多くなるほど、辛くなる。

ちなみに、一般論にするつもりはなくて、他の人がどうなのか、という部分は知らない。

よくわからないけど、めちゃめちゃ暗記が早い人もいるし、そういう人は、全部覚えた方が早いと思うのかもしれないし。

プログラミングをする理由

そういえば、今日は、「自分がプログラミングをしている理由」みたいな話を他の人とした。

その人は、「作りたいからプログラミングしてるし、新しい技術を勉強してる」と言ってた。

それを聞いて、僕違うなと思った。

僕の場合は、「やろうとしたこと、知りたかったこと、にコンピュータが関わってて、よくわからない動きをした時、不快だったから勉強してる」みたいな感じ。

僕がコンピュータを勉強したのは仕組みが知りたかったから

一番最初に、コンピュータを勉強したいと思ったのは、高校生の時にDTMをしてた時だった。

DTMをしていたらDAWがクソだった。

僕の数時間の作業がフリーズして吹き飛ぶことはよくあったし、微妙にレイテンシが発生したりするし。

それが嫌だったし、不快だったから中がどうなってんねんと思ってた。

コンピュータを勉強すれば、なんでそんな動きをするのか理解できると思った。

Pythonは、コードがオープンで読みやすいから良い。

そういえば、はじめてPythonを触った時、JavaやCに比べて、やりたいことが端的に表せると思ってた。 それを魅力に感じていたけど、それ以外にもコードがオープンというのもすごく魅力的だったのを思い出した。

JavaやCはコンパイルされて見れないコードがあるのがすごく嫌だった。 この中は何が起きてるんだろうとおもったことはあった。(ちなみに、隠蔽されるのは全体的に好きじゃない)

でもPythonは、コードがオープンだから読める。 それに、コードが綺麗だから読みやすい。

Pythonは、高品質なコードに触れやすい

当時、JavaやCの教科書に出てきたコードに比べて、Pythonオープンソースライブラリのコードはすごく綺麗だった。

Javaだと見たことあるコードが、めちゃめちゃネストが深かったり、インデントが微妙とか、なんかもう混乱を誘発するようなコードをよく見た。

読むのめんどくさいなあと思ってたし、読むのが嫌だと思ってた。 でもPythonのコードは、ネストが浅いことが多いし、インデントは揃ってるし、変数名もわかりやすかった。

終わり

特に結論はないんだけど、記事を読んでいて思い出したことを書いて見た。