Python / FastAPI → TypeScript / Remix
・独自AIのモデルを回すのにPythonが必要になるだろう、という2023年初頭の読みは外れ、外部サービスを組み合わせるだけで必要なパーツは揃う状況になった
・この期間、両方の言語を書きながら理解を深めていったわけだが、TypeScriptの方が言語・エコシステムともに優れている、という結論になった
・何より、UIを書ける言語はJS / Swift / Kotlinなど選択肢が限られており、そちらに近いもので統一するというのは合理的
・ずっと懸案事項だったORMも、Prisma → Drizzleに移行完了してからはとてもポータブルなコードで安心感が持てるようになった(SQLAlchemyでokと思える感覚は理解できない)
・スクリプト手動実行ではJupyter Notebook便利だったけど、NodeでもREPLをちゃんと実装すれば同等以上のことはできる(アドホックなチャート生成とかは向かないけど)
・メール送信などの完了を待たなくて良い外部API呼び出しはsetImmediate(async () => { await myJob() })でfire-and-forgetできるので、Sidekiqみたいなジョブキューが不要になり、さらにシンプルになった
・結果としてコードが劇的にシンプルになり、ブラックボックス感がほとんどなくなり、全体を把握できている、という実感が持てるようになった
・そのおかげで全体の品質も向上し、Sentryのエラー通知もめったになく、来たらすぐに潰して基本ゼロ状態をキープできるようになった
結構大変だったが、ここから加速していけそうだ
kenn サーバーとクライアントで同じ言語が使えるというJS/TSのメリットは、長年言われてた割には別にAPIは何でもいいやん?だったわけだが、同一ファイルにサーバーとクライアントのコードを混在させるRemix / RSCの登場によっていよいよJSエコシステムへのロックインが完成した感。これでGET→描画→POST https://pbs.twimg.com/media/GJuYPziaEAAvs0A?format=png&name=medium#.png
kenn しかし今の時代、RenderやVercelのようなgitコミット一発でデプロイできるサーバー環境、LLMによる開発支援、Remixのように超軽量なフルスタック・フレームワークで、Webアプリ開発の敷居がめちゃ下がったので作りたいものがある人には天国よね。 逆に作りたいものがなくて技術だけの人はつらい。