category

  • 社員ブログ

AI時代にこそ、いにしえの技術? DFDの本を読んで考えたこと!

どうも、ボンレスハムです。

今回は、弊社の福利厚生の一つである「書籍購入制度」を利用して購入した本をご紹介します!

書籍はこちら!!

『データフローダイアグラム いにしえの技術がもたらすシステム設計の可能性』

「いにしえの技術」というワードに惹かれて手にとってみたのですが、読んで真っ先に思ったのは「AIを使う時代こそ、これぐらいシンプルな整理の方法がマッチしているのでは?」ということでした。

データフローダイアグラムって、何を表現するもの?

データフローダイアグラム(略してDFD)。私が本書を読む前の状態をお伝えしておくと、あまり詳しくなくて、IPAの試験のときに「ちょこっと出てきたかな?」くらいの記憶しかありませんでした。

DFDをざっくり言うと、「どんなデータが、どこから来て、どんな処理を受けて、どこへ渡るのか」を図で表現するものです。

  • データの保存先である「データストア」
  • 処理を表す「プロセス」
  • 利用者や外部システムなどの「外部エンティティ」
  • それらの間を流れる「データフロー」

この4つを基本にして表現します。例えば予約システムなら、「予約希望」「空き状況」「保存するデータ」「受付結果」といった関係性を整理するイメージです。書籍では、より詳細な基本や、書き進め方、実践的な使い方などなどが紹介されています。

ここからは、本の内容をきっかけに感じたこと、考えたことについて順不同で書いていきます。

①「いい感じに作って」を、もう一段具体的に

まずは「AIを使った開発」について考えてみた話です。

例えば、AIに「予約機能をいい感じに作って!」とお願いしたとします。
それっぽい画面ができあがったとしても、本当に必要な機能になっているかは別問題です。

  • 空き状況はどこから取得するのか?

  • 予約情報はどこに保存するのか?

  • 受付結果は誰に伝える必要があるのか?

自分の中でも曖昧なことを「いい感じに察して!」と頼むのは、相手がAIでもかなりの無茶ぶりですよね……笑
(最近はそれでも素晴らしい結果が返ってくるので、自分の曖昧だった部分がはっきりわかったりもしますが💦)

そこで、まずはDFDで全体のデータの流れを整理し、具体的な条件を補った上で実装をお願いする。
「やりたいこと」や「今の仕組み」をシンプルに捉え、具体的なコード化はAIに頼る。
このようなステップを踏むと、自分の理解もこぼさず、要件もクリアな状態で情報を伝えられそうです。
伝える内容を整理する力は、相手が人でもAIでも、絶対に役立つので一石二鳥ですね!笑

②目的に合わせて使い分け、全部をDFD任せにしない

実際に使う場面では、「何のためにDFDで表現するのか」を意識することが大切そうです。

誰かに説明するなら相手に合わせた用語、詳細レベルを選びたいですし、
自分の理解を深めるためなら最初はラフに書き出して頭を整理しちゃえます。

また、理解しておきたいのが「DFDでの表現に向くこと、表現に向かないこと」の切り分けです。
DFDの矢印が表すのはあくまで「データの流れ」であり、処理の順序や条件分岐のルールまでは表せません。

本書では、不足する情報を別のツールで補う方法が紹介されています。

  • 処理の順序や分岐を確認したい場合: フローチャート

  • 条件の組み合わせと結果を整理したい場合: デシジョンテーブル

「DFDはシンプルだから、この資料一式をDFD だけで作る!」と決めるのではなく、目的に合った表現を選べるようになりたいですね。

③仕様を確かめ、テストに残していく

DFDでデータの流れを整理する中で、もう一つ大事だと気づいたのが「そもそも自分たちは、どこまで仕様を分かっているのか?」という視点です。

予約画面の変更だけで「ちゃんと動いた!」と思っても、実は夜間集計処理に影響が出ているかもしれません。
既存コードの調査はAIに手伝ってもらえますが、「AIが調べたから」「自分は知っているから」と過信せず、「まだ把握できていない仕様があるかも」という前提で整理していくのが大事だなと感じます。不具合に追われる原因の一つが、こういう考慮漏れですよね……。

そして確認できた仕様は、ちゃんとテストに、できれば自動テストに残しておきたいところです。

「キャンセル済みの予約は集計対象外」といった条件をテストコードにしておけば、「この条件ではこう動いてほしい」という仕様のドキュメントになります。未来の自分の記憶力に期待しすぎず、合意できた重要な仕様は確かめられる形で残す。

AIに実装を任せる範囲が広がるからこそ、「何を作ってほしいか」だけでなく「何をもって完成とするか(どうテストするか)」まで伝えられるようになる必要が出てくるのかなと。

すでにAIが生成するコードが増え、人間の目や頭では到底処理しきれない量になりつつあります。そんな中で、システムの動作をどう保証していくか。これはセキュリティと並ぶ大きな課題だなーと日々実感しています。

まとめ

今回は『データフローダイアグラム』の内容を紹介しつつ、主にAI時代の開発について考えてみました。

「DFDさえあればすべて解決!」という魔法のツールではありませんが、「何を作るのか」と「どう確かめるのか」を整理するための出発点にちょうど良い道具なのでは?と思っているところです。私もまだまだ使いこなせないので、手探りですが……!

まずは身近な機能を一つ選んで、頭の中を整理するためにDFDを描いてみることから始めたいと思います!

のんびりって言葉が好きです

pick up

category