blog.ojisan.io

僕がお金を払ってでも教わりたいこと 2021

謝礼をお支払いするので、教えて欲しいことがあります。 自習しろと言われそうですが、試行錯誤するには人生が短すぎたり、爆速突破するには能力が足りなかったりで色々辛くなってきたので何卒。

以下、学びたい優先度順です。同時に学べるのは多くて 2 つで、被った場合は優先度順でお願いすることになります。

教えて欲しいこと

OCaml で Parser Combinator を 0 から作る

狙い: 関数型プログラミング言語とそれの使い方を学びたい。また、OCaml のエコシステムに詳しくなりたい。

Monadic Parser をゼロから作ることで、関数型プログラミングのテクニックや考え方を学びたいです。 すでに 教科書的な簡単な Monadic Parser を 0 dependencies で作ることはできますが、現実の様々な言語仕様や RFC から Parser を作ることができません。 エッジケースを想定した設計なども分かりません。 そのため、ゼロから何かしらの言語の Parser や RFC を実装するペアプロをして欲しいです。 お題は Markdown もしくは JSON Schema を想定しています。 特に JSON Schema は実用の観点で作りたいツールがあり、試したいです。 Parser を作りたいのはプログラミング言語そのものにもっと詳しくなりたいという背景もあります。 大学で受けられるような講義内容に詳しい方だとなお嬉しいです。

また、opam や dune といったエコシステムをどう使うのが正解なのかでいつも頭を悩ますので、そのあたりのツーリングの面倒まで見てくれると嬉しいです。 OCaml を選んだのは、すでに知っている関数型プログラミング言語がそれくらいしかないからです。

k8s とシステムアーキテクト

狙い: クラウドネイティブな設計の正解を知る

自分はフロントエンドのアプリケーション開発に特化しているキャリアなので、k8s が何も分かりません。 チュートリアルをこなしたり、本を読むことで知識はありますが、実践の経験がないのでその経験を積みたいです。 正直なところ職場でも積む機会はあるのですが、0 から設計する機会はいまのキャリアの延長線上だと未来永劫なさそうなので、Sock Shop や System Design Primer のようなお題で、システムアーキテクトの経験を積みたいです。 それをレビューしたり議論してくれる人を探しています。

とくにシステムアーキテクト分野は、システムアーキテクトとしての経験がないと経験が積めないと思っているので、なるべく早い段階でこうやって無理やり経験を積んでしまいたいです。

なんらかのシステム設計とその実装を手元は minikube、クラウド上では GKE でやり切るのが目標です。

Rust で Web サーバーそのものを作る

狙い: Web エンジニアとしての地力強化

フロントエンド周りを見ていて、全て wasm になるかもしれない未来を考えたり、ツーリングの実装としてすでに使われているという事実を鑑みることがあり、Rust の注目度をだんだん増やしています。 また Web エンジニアとして、Web サーバーをバイナリだけで動かせたり、メモリに優しいという特性から Rust を使えるようになりたいと思っています。 サーバーの仕組みを理解したいとは常々思っており、2015 年 Web サーバアーキテクチャ序論 に書かれている内容を理解できるようにはなりたいと思っています。

ところで、Rust で実装されているサーバー FW は、様々なサーバアーキテクチャのいいとこ取りをした実装と聞きます。 なので、シリアルに捌くサーバーを作るところから少しずつできることを増やしていくペアプロをしたいなと思っています。 特にソケットなりスレッドなりは全然詳しくないので、そういった話を噛み砕いてくれたり、libuv などのツールを Rust でどう扱えばいいかといった知見がある人を探しています。

拙い実装ではありますが、WebSocket そのものを実装したことはあり、RFC を読んだり気合いで動かすくらいはできるのですが、正直なところ Rust もサーバーの知識も初心者レベルなので、噛み砕きながら上手いやり方を教わりたいです。

FYI: https://blog.ojisan.io/rust-websocket

React の全て

狙い: 内部実装や歴史までは分からず、自分の知らないことを教わりたい

コードリーディングに付き合ってくれたり、Jordan Walke はどうして OCaml に注目していたのかみたいな話を聞けると嬉しいです。 特にコードリーディングは何回か挑戦していますが、「なんでこの処理が必要なの?」みたいな疑問はそれなりに出ているのでそれを解消したいです。 preact を読むくらいの地力はあり、VDOM の仕組みや概念くらいは知っていますが踏み込むと分からないことだらけです。

FYI: https://blog.ojisan.io/preact-reading

これに関しては、自分より React に詳しい人の時間をいただき、根掘り葉掘り聞けたら良いなくらいの温度感で考えています。

謝礼

お金として

1 時間のペアプロと、暇な時にテキストチャットで質問を返してもらうという形式で、週 1 につき 1 万円を想定しています。 初週は 1 週間の契約、その後は 1 ヶ月単位での契約を考えています。

金額については、チャット常駐の技術顧問をしている知人が月 5 万円を貰っていたのでこの金額設定にしています。 交渉次第では値上げも可能です。

そういやお前お金持ってたっけ?

正直なところ稼いでいる側の人ではないです。 とはいえ、Zenn の売り上げ や印税といった臨時収入が定期的にあり、それらから出せる金額に収まる限りでは特に問題はないです。 なので気兼ねなく請求してもらって大丈夫です。

Peer Learning

金銭以外にも、このような取り組みを逆に僕が教える側に立つことで支払うという方法もあります。 いわゆるモダンなフロントエンド FW は一通り経験があり、React, Vue は実務でそれなりに経験があります。 少なくともツールの使い方や設計論という点に関しては、国内ではそれなりの知見を持っている側に立っていると思っています。(追記: 思いあがりな気がしてきた) また、TypeScript, Babel, ESlint, Prettier, Webpack などのフロントエンドのツーリングも使い方や内部の仕組みを大体理解しているので、その辺りも教えることができます。 初学者への教育もそれなりに経験があるので、フロントエンドを全く知らないという状態からある程度書けるような状態になれるといった状態に持っていけるかと思います。

連絡先

Twitter DM や リプを想定していますが、他の連絡先を知っている方はそちらでも大丈夫です。

OGP

https://www.canva.com/design/DAEso_ZiPl8/ADCi9qvj5eWVlGt8LaOQ8g/view?utm_content=DAEso_ZiPl8&utm_campaign=designshare&utm_medium=link&utm_source=sharebutton