「n月刊ラムダノート Vol.1」を読んだ

n月間ラムダノート Vol.1, No.1 2019を読みました。 f:id:asmsuechan:20190503224414p:plain n月刊ラムダノート Vol.1, No.1(2019)(紙書籍+PDF版)www.lambdanote.com

こんな人におすすめ

今月号は(1) ネットワーク (2) コルーチン (3) 機械学習の3章で構成されており、コンピューターサイエンスの基礎が身についていてもっと知識を深めたい人や機械学習に携わっている人は読むと楽しいと思います。

私の事前知識

マスタリングTCP/IP入門はだいたい理解していて、コルーチンに関しても概要は分かっています。機械学習も、最近kaggleや研究でボチボチやっているので全くの素人ではありません。

#1 TCPの再送制御機構

読むにあたって前提としてマスタリングTCP/IP入門のトランスポート層辺りの知識が必要だと思います。たぶんトランスポート層の役割」輻輳輻輳制御とは」くらいの質問を聞いてなんとなく分かる人なら読んでて理解できるはずです。

この章はRFCの策定にまつわる歴史的背景に言及してあったりHTTPも意識して書かれていたりするのでとても楽しく読めました。また、タイムアウト値の計測式にマジックナンバーを入れて実測から調整するという話があるなど、結構決め打ちで数値を決めて後から調整するのが多いんかなと感じました。

実は私はここ辺りのネットワーク周りの話が好きなのですがどうやったら活きるんでしょうかね。そういえば動画配信サービスの裏側はこういうところしっかり頑張ってそうなイメージありますね。あとはネットワークハードウェアとかでしょうか。ハードウェア的な処理資源に制約がある分野ってなんか燃えますよね。そういえば知り合いがFPGAでネットワークカード作ってたな。すごい。

トランスポート層って結構分厚いイメージがあるんですよね。OSI参照モデルが役割の違うものを分割して開発しやすくすることがコンセプトだったのにこの層これだけ複雑になって大丈夫なんか更に2層に分かれないのかって感じました。

#2 「コルーチン」とは何だったのか?

コルーチンは、OS入門の参考書でよく出てくるやつです。この辺りの知識は実装ありきで書籍のみに頼った理解が結構難しい部分だと思ったのですが、さすがRubyコミッターとだけあって具体的な実装を交えて分かりやすく説明されています。更にJavaScriptPythonでの実装への言及もあり、今まで読んだどのコルーチンの説明より分かりやすかったです。

#3 MLOpsの歩き方

この章では機械学習プロダクトの開発と運用に存在しうる問題点とその解決の糸口が紹介されています。

また、この章で「データサイエンティスト vs ソフトウェアエンジニア」としてデータサイエンティストとソフトウェアエンジニアのマインドセットの違いに関して言及されています。データサイエンティストは素早く目的の数値を得るためにクオリティの低いコードを書くことがままあって、ソフトウェアエンジニアはそれを許さず保守性が高いコードを好む人が多い、という違いですね。この溝を埋めるためにGoogleは同じチームにデータサイエンティストとソフトウェアエンジニアを配置しているそうです。

まとめ

とても楽しく読ませていただきました。

1章と2章は普段の開発ではきっと意識することのない部分だと思いますが、知的好奇心が大いに満たされたのでとても良かったです。3章は実際に機械学習プロジェクトを始めるにあたって大いに役立つと思います。ここは今の研究にうまく乗せると面白そうなので検討してみようと思ってます。