ルール駆動開発
ルール駆動開発、という名前は、2019年のRed Hat Forum TOKYOで初めて発表したのだけど、
↓
「ルール駆動開発」知らないなら今すぐ読んでみて= Red Hat Forum 2019 セッション振り返り=
業務アプリ開発を長年やってきた身としては、この開発手法は、ほんと多くの人に知ってほしいと思っている。
ドメイン駆動設計、に興味がある人なら、おそらくすっと馴染めるのではと思う。
個人的には、ドメイン駆動設計にもこの「ルール駆動」の考えをプラスして入れたら、より開発手法が具体的になって、実現可能なわかりやすい手法になるのではと思っています。
2020年2月のデブサミでも話をしました。(今となっては、コロナ禍直前の、貴重なリアルイベント!!)
↓
全アプリ開発者に伝えたい!レガシーコードから脱却するための具体的な手法"ルール駆動開発"
【2021/10 追記】 ルール駆動開発のマンガを作成しました!無料で読めます。(お名前の登録のみお願いします)
ルール駆動開発とは?
ルール=ビジネスルール(=業務ルール、=業務ロジック) のこと。
業務アプリを開発する上で、「ルール」に注目して、ルール部分から設計開発していくことで、高品質なアプリを効率よく開発することができる手法です。
ルール駆動開発の3つの特長
- 業務目線でルールを整理し、そのまま実装
- ルールとデータアクセスを完全分離
- 小さく作ってはテストを繰り返す、イテレーション開発
まとめ
その業務アプリは何を実現したいアプリなのか?
最も重要な「ルール」部分を最初に明確にすることで、それを実現するためには、どのような画面が必要で、どのようなデータベース設計が必要かは後から決まってきます。
ルール部分を一つのサービスとして切り出せるようになることで、ルールは画面設計やデータベース設計変更の影響を受けにくくなります。
ルール・画面・データアクセスは、それぞれがサービスとしてインターフェースを持ち、疎結合な関係性になるからです。
また、画面と、ルールと、データとを別々に扱えることで、それぞれ別のサーバ上で実行することも可能ですし、アプリケーションの拡張性も向上します。
ルール部分は、ルールエンジンを使うのが効率的です。
ルールエンジンについては、このブログの他のポストを是非参照ください。業務ルールをシンプルかつわかりやすく実装し、効率的に動かす仕組みが備わっています。
そして、何よりも、「ロジック(ルール)の実装内容なんて、把握しようもない(開発ベンダーまかせにする以外どうしようもない)」と思っていた業務アプリオーナーにとって、自分たちにも理解可能な形式でルールが実装され、程度によっては、自分たちだけでもメンテナンスが可能になることがもたらすメリットは、非常に大きいと思います。
既存のアプリ開発とはアプローチ方法が大きく異るため、固定観念にとらわれていると、トライしづらいですが、
一度やってみると、その生産性の高さに驚くはずです。