走れ Haskell(ブラウザとCloudflare Workersで):GHC の WASM バックエンドと JS FFI の現在 by konn

関数型まつり2025
公募セッション50分
公募セッション

走れ Haskell(ブラウザとCloudflare Workersで):GHC の WASM バックエンドと JS FFI の現在

mr_konn konn mr_konn

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 事例
  • ライブラリやフレームワーク
  • Tips
  • FFI

セッションの概要

Haskell では、GHC 9.10 から WASM Backend で JavaScript FFI が使えるようになりました。これにより、WASM にコンパイルされた Haskell プログラムをブラウザで動かして DOM を弄ったり、あるいはサーバサイドのランタイムで JavaScript の API を呼び出せるようになりました。

本講演では、実際に Cloudflare Workers 上で動作するブログシステムを、バックエンドからフロントエンドまで全て Haskell を使って開発した経験を通し、GHC の WASM クロスコンパイラを使った開発の現在について概観します。

当該ブログシステムのフロントエンドは Miso、サーバレスバックエンドは自前の Cloudflare Workers バインディングライブラリによって記述されていますが、ここで Servant を用いることで如何に両者の間でシームレスにデータをやり取りできるかについて紹介します。

また、この開発の過程でJavaScript のオブジェクトシステムとある程度両立する高水準 FFI ラッパーライブラリを開発しました。こちらでは GADTs や Linear Types などを使ってある程度の型安全性と効率を実現しており、こうした FFI 用ライブラリのデザイン手法についてもご紹介します。

Keywords

Haskell、WASM、Servant、API、Cloudflare Workers、サーバレス、GADTs、Linear Haskell