TL;DR
- カジュアル面談や面接の日程調整アプリを OCaml と ReScript で作り、実運用している。OCaml だから起きた問題はない。
- AI がどの言語でもコードを書いてくれるので、言語選択の自由度が上がり、好きな言語を選んでもよい時代になっている。
内容
何を作ったか
カジュアル面談や一部の面接の日程調整アプリを、OCaml と ReScript で作っている。
実際どうか
OCaml だから、マイナーだから、という問題は起きていない。ただ、ほかの言語でも起きうる問題はある。Web アプリに必要な土台は揃っており、型、小さい言語仕様、後方互換性が強みである。
一方で、ライブラリやエコシステムは貧弱である。ただ、AI が普通にコードを書いてくれるし、境界が小さければ自作もできる。HTTP、JSON、OAuth、JWT、TLS、ログのライブラリは一通り揃っている。AWS や Google、Slack などのベンダー向けのライブラリは足りないので自作しており、そのうち OSS にする予定である。
開発は一人で行っている。OCaml Meeting や日本語の Discord など、日本のコミュニティは活発で、イベントの 2 か月前に 50 人近く集まるポテンシャルがある。
なぜ OCaml にしたか
一番の理由は OCaml が好きなことである。ただ、それだけでは済まず、課題の要件を満たせるか、継続して運用できるかに答えられる必要がある。それに答えられるよう、普段から使っておく。
どうやって採用したか
小さいところから始めた。普段から OCaml が好きだと発信して自身をブランディングし、周りの理解を得た。
AI の時代になったことも大きい。Spring(Java)や Rails(Ruby)と比べても明確な差はなく、どの技術でも AI は十分に書いてくれるし、それなりに間違える。ハルシネーションの種類は少し違うかもしれない。詰まったときに捨てる判断も簡単になった。その結果、言語選択の自由度が上がり、好きな言語を選んでもよい時代が来ている。
OCaml と ReScript の特徴
OCaml は、マルチコアとエフェクトハンドラ、パターンマッチ、強い後方互換性、強い型推論を持つ。発表者は、Algebraic Effects でコンテキストを分離し、Polymorphic variant でエラーを表現している。Polymorphic variant は PureScript にもある。
ReScript は OCaml から派生した AltJS で、型安全でパターンマッチのある TypeScript のような言語である。ただ、OCaml integration の機能がなくなっており、OCaml から離れようとしているようにも見える。
Algebraic Effects の使いどころ
ユースケース層で Effect を起こし、アダプター層でハンドリングしている。リポジトリパターンのリポジトリを Effect に置き換えたイメージである。
キーワード
- OCaml
- ReScript
- Algebraic Effects
- エフェクトシステム
- Polymorphic variant
- PureScript
- リポジトリパターン
- JWT