Dark という「専用プログラミング言語で書く必要があるが秒でデプロイできる Heroku」みたいなプラットフォーム*1のバックエンドを Ocaml から F# で全部書き直した話。
リライトの主たる理由は「Ocaml ライブラリ少なすぎて自分たちで書くのに疲れた」的なあれっぽいが、では F# はライブラリいっぱいあるのか?(.NET ファミリーだからいっぱいあるのかも?)など動機はピンとこなかった。Rust ならまだわかるが。
2020年の8月から2022年の6月まで2年弱を要した。記事には月単位の進捗が記録されていて、途中「投資家にメールした」とか「新バージョンのロールアウトが失敗して切り戻した」とか内容が生々しい。
開発者の Paul Biggar は CircleCI の創業者で、Dark をローンチしたとき面白いことをやってるなと思って少し触ってみたが、オールドタイプな脳ではうまく使いこなせなかった。用途も特に思いつかなかった。
これはこれとして、Dark のコンセプトが面白いと思うのは、DevOps エンタープライズ市場のプレイヤーをラディカルな方法でディスラプトしようとしているように感じられるからだ。
What is Dark?
Dark is a new way of building serverless backends. Just code your backend, with no infra, framework or deployment nightmares.
クラウド時代になって自らハードウェアを管理する必要はなくなり、DevOps ツールによって仮想化されたサーバーインフラの管理も容易になってきたが、アプリケーションのデプロイはまだバックエンドの難しさの大きな部分を占めている。モダンな DevOps ツールは高度すぎてむしろある面では昔のやり方よりも扱いが難しくなっているとも思う*2。
もちろんベンダー各社そこの難しさはわかっていて色々やっているが、「デプロイそのものを無くそう」という発想まで進歩したものはあまりないように思う。FaaS にせよ Edge Functions みたいなのにせよ、なんだかんだ「コードをプロダクションにデプロイ(配置)する」というステップは明確にある。Dark はそれを無くそうとしている、ように見える。見えた。
Dark の Web IDE 的なものを2年前に少し触ってみた感想としては、テキストエディタや IDE でコードを書くプログラミングよりも Scratch (プログラミング言語) - Wikipedia とかに似ている、という印象だった。キャンバス上にプログラムの部品となるブロック・コンポーネントを配置していって、コンポーネントに対して処理内容をちょろちょろっと書いて線でつなげたりしてアプリケーションを「組み立てて」いく感じ。
あの手のユーザーインターフェースはプログラミングっぽいことをやるコンソールゲーム(カルネージハート)でも踏襲されていて、あのゲームはプログラミング(コーディング)をしたことがない大勢のゲーマーに実質すごいプログラムをたくさん作らせたと思う。ニンテンドースイッチのプログラミングのゲームソフトの方がなおそうかもしれない。
などと考えると、HTML タグを「手打ち」していたインターネット老人会な人々は眉をひそめそうだけど、案外ああいうインターフェースの方が大勢の人々にとってはとっつきやすくて使いやすいのかもしれず、となると Dark にも明るい未来が待っている・・・かどうかは知らないが頑張ってほしい。