御成門プログラマーの日記

Microsoft AzureやAngularなどの技術情報を発信します

Developers Summit 2020 セッション参加メモ「全アプリ開発者に伝えたい、レガシーコードから脱却するための具体的な手法、“ルール駆動開発” 」

今年もDevelopers Summit 2020に参加してきたので参加したセッションのメモを備忘録的に残しておこうと思います。 event.shoeisha.jp

講演資料など全体的な情報はここでまとめてくれています。 codezine.jp

業務アプリケーションの設計・開発手法

  • クラウドネイティブアーキテクチャ
  • 初めから改修を前提においた開発
  • レガシーアプリの移行時にも有効な手法

この手法を「ルール駆動開発」と名付けた

ルール駆動開発の三つの特徴

  • ルールとデータアクセス部分を完全分離
  • 業務目線でルールを整理し、そのまま実装
  • 小さく作ってはテストをするを繰り返す

現行プログラムコードの解析から始めるのをやめよう

  • 現行コードはその場しのぎ改修やリファクタリングされていない冗長なコードであること

  • 不要なゴミコードの山であることが多い

    • 取り敢えず動けばいいやで放っとかれる
    • つかわれていないロジックも山ほどある

コード解析をしないで業務を知っているひとに危機に行く

  • まず業務要件を聞きにいこう
    • 現行と同じでいいよっていう人もいるけど、頭下げてでも聞かせてもらおう
    • ヒアリング内容をDMNで整理する
      • 業務ルールを書くための記法
      • 業務用語で直接書くことが大事
  • 一連の業務ルールを"サービス"として切り出す
  • ルールとデータベースアクセスを完全分離
    • ルールのテストがしやすく、DB構成変更の影響を受けづらい。影響分析範囲は狭まる

小さく作ってテストを繰り返しながらルールを育てていく

  • まずは本当に必要なルールから拾って作っていく
  • 初めから数年に一度しか使わないルールを作る必要がない
  • はじめから大きく作ろうとすると必要ないものまで作ってしまう

正しいルール駆動開発

  • システム担当と業務担当が共同で行う

  • 現行コードは見ない

  • 業務担当者が理解できる形式で実装
  • 幹となるルールから抽出
  • テストおよびユーザーレビューを繰り返しながら品質向上する