小さくプロトタイピングする

2016-07-21 / [haskell]

Haskellでアプリケーションを作る時にどんな順番で部品を組んでいくかについての雑感。

進め方の整理

前提となるイメージ

オニオンアーキテクチャのようなものをいつも頭に描くようにしている。 中心から順番に

  • Core: 純粋なドメインモデル
  • Infrastructure: ミドルウェアや外部APIへの操作的意味論
  • Application: ユーザに提供するインタフェース

となる。

駄目っぽいやりかた

ドメインモデルを実装しきる。

ドメイン上の命令を組み合わせて抽象構文木を作るために必要。 抽象構文木の正しさを確認しながらドメインモデルに矛盾がないことを確認していく。

しかし、ドメインを充実させるのには結構時間がかかる。 結構モチベーションんを維持するのが大変で、ユーザからみて動くものができないことに対するフラストレーションが溜まりがち。

割とウォーターフォール的な考え方だと思う。 やってみようとしたけど途中で結構飽きる。

トライしたいやりかた

とりあえず最小限のドメインのみでレイヤを結合して動作するアプリケーションを得る。 新しいドメインは適宜追加してまたレイヤを結合していく。

短期間にドメインの知識、ミドルウェアの知識、ユーザインタフェースの知識などを使うので、 職能横断的なスキルで立ち向かわないと進まない。 (逆説的にウォーターフォールは分業制に最適化した人材調達のしやすいモデルなんだな、とか脱線する)

こうして反復的なドメインの増築をすることで、 変更しにくいアーキテクチャかどうかに早く気づけるメリットはある。

とか思った。