Zerobase Dev Blog

コードネームYentry

会計システムを抽象度の高いDSLで表現するためにScalaを使う

Play (Scala) + Redisで作ろうかと決めましたので、いろいろと本を買いました。

「会計システムを抽象度の高いDSLで表現する。そのためにScala/Playを使う」というシナリオです。

Scala

オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門

オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

DSL

実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ (Programmer’s SELECTION)

実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ (Programmer’s SELECTION)

ビジネスパターンによるモデル駆動設計

ビジネスパターンによるモデル駆動設計

『ビジネスパターンによるモデル駆動設計』は書店でたまたま見つけた掘り出し物。

新しいモデリング手法「REAモデル」によるビジネスパターンの国内初の解説書。R(リソース)、E(イベント)、A(エージェント)を使った25の新しいパターンによって、ビジネスをモデリングする方法を紹介します。

"契約パターン"、"分類パターン"など新しい25種類のパターンを使うことによって、販売活動や生産活動におけるリソースの価値を明確に表すことができ、一定の品質と精度を持ったモデルを作成できます。

REAの概略は『要求開発アライアンスのビジネス・モデリング道場 - REAとビジネスパターン入門』で。

こういう抽象度の高い会計ドメインのパターン・ランゲージをそのままDSLとして表現できれば、すごくリーダブルなコードになるのではないか、と考えています。

そもそも、書店で『実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ』を立ち読みするまでDSLにピンときてませんでした。しかし「内部DSL」と、そのScalaによる実装コードを見て、「これはすごい」と思ったのでした。

その直後に『ビジネスパターンによるモデル駆動設計』を見つけた瞬間にScala-DSL-REAのラインがつながったわけです。

まとめると、「会計システムを抽象度の高いDSLで表現する。そのためにScala/Playを使う」というシナリオです。