三日月宗近

概要

資源評価のプロセス全体をwebアプリケーション化する試み。 計算部だけでなく、業務プロセスの進行: 評価ステータスの遷移などもドメインモデリングされている 。

デモとドキュメントは下記から利用できる:

開発経緯

下記はプロジェクト開始時のモチベーション文:

資源評価事業をwebアプリケーション化する実験をしている。 資源計算だけでなく、計算・執筆・提案・議論・合意形成の流れからなる資源評価「事業」全体の話だ。

この事業の難しさは、科学的・政治的要求にもとづく課題を解決する数値計算方法を開発するところにあるのはもちろんだが、そもそもコミュニケーションの難しさのほうがより重要なのではないか: 立場や知識背景がまったく異なるステークホルダーが、資源評価という関心領域(ドメイン)の下に集まって、漁獲可能量という一つの数値について議論し・意思決定しないといけない。

ソフトウェア設計者たちは、これと同じ問題が(広義の)ビジネスがある場所には必ず潜んでいることに気づいており、その解決のために「ドメイン駆動設計(Domain-Driven Development. DDD)」を2000年代前半に確立した。ドメイン駆動設計では、開発過程における思考資源の投資先を、プログラミングのような技術的詳細ではなく、ビジネスの営みを抽出した「ドメインモデル」をつくることに集中する。ドメインモデルは一度作って終わりではなく、ステークホルダー間で認識の齟齬が見つかるたびに、その新たな知識はモデルに反映される。このようにして磨き上げたドメインモデルを中心としてアプリケーションを開発するこの手法は、資源評価事業においてもヒントになると考えている。

現在の状態

開発停止(検証完了)

資源評価プロセスを型で表現し、コード補完などやコンパイル時チェックで開発を支援できることを確かめられた。

検証の過程でわかったこと

  • Node.jsではパラメータ最適化部分で速度が出ず、科学計算に適した言語を呼び出す必要がある
    • frasyrを入れたRを呼び出すのが自然
      • frasyrモノリスを使ったStrangler Figアプローチの後継プロジェクト義元左文字で検証する
      • 三日月宗近と義元左文字は背反ではなく、必要であれば両者をつなぐこともできる
  • ドキュメントとしてエクスポートする型は、ドメインエキスパートに見せるものに絞るのがよさそう
    • あまり考えず生成したらこうなったが、これを見たドメインエキスパートを圧倒してしまうと思う
  • 評価のステータスを型で表すこと自体はいいが、状態をオブジェクトに持たせる旨味はなかった
    • ユースケースを考慮しても、状態はイベントから導出するほうがよいだろう

利用技術

Cloudflare, Express, Grafana Cloud, Jekyl, Mermaid, Next.js, OpenTelemetry, PostgreSQL, Sentry, Terraform, TypeScript, Vercel