Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CursorでAI活用のナレッジベースを構築する

Avatar for 神崎 神崎
July 24, 2025

 CursorでAI活用のナレッジベースを構築する

IDEのAgentを使って以下のことを行うナレッジベースを構築する
・RDRA定義を行う
・要件を検証する
・仕様を定義する
・仕様を検証する

Avatar for 神崎

神崎

July 24, 2025
Tweet

More Decks by 神崎

Other Decks in Design

Transcript

  1. • ㈱バリューソース • 神崎 善司 • twitter:@zenzengood • RDRA:https://www.rdra.jp/ •

    著作 • モデルベース要件定義テクニック • RDRA2.0ハンドブック • RDRA3.0ハンドブック • 仕事 • RDRA導入支援 • 要件定義支援 • 既存システムの可視化支援 • 好きな事 • システムの可視化 • モデリング • 表形式でのモデリング • LLMの活用 2 https://www.rdra.jp/
  2. 多段に人とLLMがキャッチボール Prompt knowledge Prompt knowledge Prompt knowledge LLM 出力 出力

    出力 初期入力 見直し 見直し 見直し Prompt knowledge 出力 4つのフェーズでコンテキストを膨らませ軌道修正する フェーズ1 フェーズ2 フェーズ3 フェーズ4 4 RDRA 入力に使う LLMの出力を見直し、次 のフェーズの入力とする Prompt入力 に悩ませな い
  3. LLMと人がキャッチボールを行い要件を組立てる 5 文脈理解 システム名 最重要要求 ビジネスの 背景を記述 概要 ビジネスアイディア アクター

    外部システム ビジネス ポリシー ビジネス パラメータ 業務 ビジネスデザイン 情報 状態 業務・仕事 システムデザイン 条件 バリエーション 情報 状態 業務・仕事・UC LLM Run LLM Run LLM Run ビジネスの概要を入力 LLMの実行 何度も壁打ちし対象の 解像度を上げていく LLM の 出 力 を 見 直 し 軌 道 修 正 す る Diagram化 RDRA定義を俯瞰して 理解しやすくする 段 階 的 に コ ン テ キ ス ト を 用 意 •どうやって適切なコンテキストを用意するか •LLMの出力をどのように軌道修正するか •LLMの出力をいかに理解するか
  4. 見えてきた新たな課題 文脈理解 システム名 最重要要求 ビジネスの 背景を記述 概要 ビジネスアイディア アクター 外部システム

    ビジネス ポリシー ビジネス パラメータ 業務 ビジネスデザイン 情報 状態 業務・仕事 システムデザイン 条件 バリエーション 情報 状態 業務・仕事・UC LLM Run LLM Run LLM Run RDRAZeroOne Prompt LLM JSON Table 必要な要素は全て IDEの中にある • Promptを実行 Tableで修正 • 繰り返す Cursor Prompt Text Table tsv/addin Agent 7 プログラムで作りこむと、 柔軟性が失われる LLM・Cursorの性能は日 進月歩で進化する そうだ! Agentに要件定義させればいい 出力したものをどのよう に見直す? 何に着目すればいいの か?
  5. 今回の環境 0_RDRAZeroOne 1_RDRA 2_RDRASpec Phase1 Phase2 Phase3 Phase4 RDRA 論理データ

    Prototype ZeroOne指示 Spec指示 ナレッジ 0からRDRAを 組立てる手順 RDRAとは何か 仕様のたたき台 を作る手順 要件の妥当 性検証 成果物 仕様の妥当 性検証 Validation Validation ナレッジ RDRAアドバイス 妥当性検証環境.csv 初期要望 要件組立て指示 Chatインター フェース 仕様組立手順 9 要件の妥当性検証 仕様の妥当性検証 CursorにKnowledgeを構築する Agentで成果物を生成 V字モデルの右側か ら精度を上げる 要件 仕様 KnowledgeをPromptとして利用 V字モデルを左と右から同時に進める
  6. どうのような環境にしたか • 課題 • AIモデルが日々進化する • Cursorが毎週アップデートする • Agent •

    要件(RDRA)を組立てる • 状況を確認する:疑似言語を使う • RDRAGraphを表示する • 要件の妥当性を検証する • 仕様のたたき台を作成する • 仕様の妥当性を検証する • Toolを使う • プロジェクト環境 • 環境依存させない(一部環境依存) • テキストとJavaScriptだけで実現する Cursor Knowledge (File) Agent 10 Knowledge Tool 起動 RDRA(要件) Spec(仕様) RDRAGraph 起動 生成 検証 状況 状況確認 Agent 生成・組立 検証
  7. プロジェクトの構成 • 0_RDRAZeroOne • 初期要望からRDRA定義を生成する • 1_RDRA • 生成したRDRA定義 •

    RDRA定義の妥当性を検証する • 2_RDRASpec • 仕様を生成する • 仕様の妥当性を検証する • helper_tools • 単機能のツール ファイルコピー~ • 状況把握と指示ファイル • 1_ZeroOne指示.md • 2_Spec指示.md • RDRAアドバイス.md 0_RDRAZeroOne 1_RDRA 2_RDRASpec Knowledge RDRA Knowledge RDRA Knowledge Spec • RDRAZeroOne.md • WhatIsZeroOne.md Phase1 Phase4 4フェーズでRDRAを 組立てる • RDRA.md • RDRAGraph.md • RDRASheet.md • Validation.md RDRASheetによるRDRA定義 • 21_data.md • 22_prototype.md • Validation.md 論理データモデルとPrototype Root • 1_ZeroOne指示.md • 2_Spec指示.md • RDRAアドバイス.md:疑似言語 • 妥当性検証環境.csv 関連データ.txt 11 Validation 要件の妥当性を検証する Validation 仕様の妥当性を検証する helper_tools ファイル削除・コピー クリップボード Command Agentが生成するファイル
  8. メニューで指示する • メニューの表示 • 「…」/Clear All Chats • ⇒「?」 「?」functionを呼出す

    副作用を避けるために Chat履歴を全て消す 「…」/Clear All Chats function ?(){ 次のメニューを表示する ▪ZeroOne 1.フェーズ単位の要件定義:RDRAZeroOneをフェーズ毎に実行する 2.一括要件定義:RDRAZeroOneの全フェーズを一機に実行する 3.生成した成果物の削除:RDRAZeroOneとRDRAファイルを削除する ▪RDRA 4.生成したファイルをRDRAフォルダーにコピーする 5.RDRAGraphを表示:関連データを作成しRDRAGraphを表示 6.RDRA定義の妥当性検証:RDRA定義の妥当性を検証します ▪RDRASpec:仕様 7.仕様の作成:論理データ構造の作成と画面の作成 8.プロトタイプ画面を表示する 9.仕様の妥当性を検証する 実行した番号を入力してください } RDRAアドバンス.md 疑似言語 12 メニュー 疑似言語でメニューを表示
  9. 初期要望からRDRA定義を組立てる • LLMでRDRAを定義する • 初期要望.txtの内容からRDRA 定義を生成する # システム要求 ## 背景

    介護業界では、介護会員の要望に合わせ、様々な法規の中でサー ビススタッフの多様な働き方でスケジュールを調整する必要があ る ## 要求 ・サービススタッフの柔軟な働き方に対応しかつ介護会員の要望 に合わせたスケジュール調整を行える仕組みを持つ ## ビジネスポリシー ・各サービススタッフの要望に合わせたスケジュール管理を行う ・訪問介護事業で小規模事業社を複数持つので、そこを一元管理 を行う ・サービススタッフの働き方は自由に設定できる ・介護会員の要望に合わせたスケジュール調整を行う ## ビジネスパラメータ ・介護施設が増えた場合にも簡単に対応できる ・サービススタッフの増減に素早く対応できる ## 業務概要 ・介護会員の管理(名前、連絡先などの様々な属性を管理) ・訪問介護の実施記録を管理する ・新しいサービススタッフの教育 ・介護費用の計算と請求及び回収 初期要望.txt 1_ZeroOne指示.md phase1:方向付け phase2:深堀する phase3:グルーピング 0_RDRAZeroOne phase4細かい関係づけ RDRAZeroOne.md 14 RDRA定義 入力 出力 入力 要件をファイル で積み上げる 方向付け 深堀する グルーピング 細かい関係づけ
  10. RDRAを 定義する RDRAZeroOne ・ • Cursor • ⇒「?」 • ⇒「1」

    Phase1に出力される 「1」の入力でPhase 毎に実行する
  11. CursorのAgentで何ができる1:フェーズ実行 実行結果 1.ZeroOne指示.md RDRAZeroOne.md RDRAを組立てる手順 が記述されている ファイルの場所を指示 16 Phase1: 指示に従って各ファイルを生成

    RDRAアドバイス.md メニュー単位の実行 Phase1で出力されたファイルに 対して行うべきことを指示 WhatIsZeroOne.md 実行後に行うべきこ とを表示 Knowledgeを適切な単位に分割する Knowledgeの分割
  12. CursorのAgentで何ができる:一括要件定義 • Cursor • RDRA定義をAgentで行う • 全Phaseを一括で実行する • RDRAアドバンス.md •

    ⇒「?」 メニューの表示 • ⇒「2」 一括要件定義 メニューを表示 「?」「2」 一括要件定義を実行 17 • Claude Codeは動く • その他のモデルでは動かない Demo.zipはClaude Codeで 作成したもの
  13. Knowledgeの種類 • 状況確認 • 生成した成果物の状況を把握し、次に行うことを提案 • フェーズ実行指示 • 実行手順の指示 •

    フォルダーとファイルの位置 • 組立手順 • 要件の組立て方 • 仕様の組立て方 • 定義の宣言 • 要件 • RDRAとは • RDRAの定義方法(表形式のRDRA) • 妥当性検証 • 行うべきことの指示 定義の宣言 組立手順 状況確認 フェーズ実行 指示 Cursor Knowledge Table Agent 初期要望 1.ZeroOne指示.md RDRAアドバイス.md WhatIsZeroOne.md RDRAZeroOne.md
  14. 定義:RDRAとは # RDRA構造の説明 ・「アクター」:システムに関わる人の役割を表す ・「アクター群」:同じような役割を持つ「アクター」をまとめ、組織の役割を 示す場合もある ・「外部システム」:システムと連携する外部のシステムを表す ~ # モデル間のつながりの規則

    ・「業務」は複数の「BUC」を配下にもつ ・「BUC」は複数の「アクティビティ」を配下にもつ ・「アクティビティ」(仕事)を行う「アクター」がつながる ~ # 定義内容は各モデルのオブジェクトとして定義する 以下に例を示す 「会員」:モデルがアクター、オブジェクトが「会員」になる 「受注」:モデルが情報、オブジェクトが「受注」になる 「受注を登録する」:モデルがUC、オブジェクトが「受注を登録する」になる RDRA.md RDRAはメタモデルで 定義されている メタモデルを言語化 RDRAは定義する要素 が決められている
  15. 定義:RDRA定義のフォーマット定義 # 表形式のRDRAモデリング RDRASheetは表形式で要件定義を行うための形式です 要件定義はシステムの可視化と同じです ファイル内では階層構造を表すために空白セルは上位のセ ルの値を引き継ぐことで階層構造を表現する ## 定義ファイルの特徴とメリット ###

    1. 表形式のメリットと表現方法 - **表形式によるシステム可視化** 表形式では、同じ行に並ぶ項目同士が関連しているとみ なすため、ダイアグラムでの配置や線による関係性の明示 よりも、要件の定義に集中できるというメリットがありま す。これにより、最初は大まかなアイディアを素早く全 ファイルに記入し、後から関連性を洗練させていくことが 容易になります。 ~~ ## 各ファイルの構造 表形式のRDRA定義は以下の5つのファイルで定義を行う。 ・「アクター」ファイル ・「外部システム」ファイル ・「BUC」ファイル ~~ RDRASheet.md RDRAのメタモデル構造 を表形式で表現 表形式はLLMの入力と 出力にそのまま使える 表形式を言語化する 表形式をタブ区切りのTSVファイル として処理する
  16. 組立手順:4フェーズでRDRAを組立てる # RDRAで要件定義を行うためのフェーズ ## **RDRAZeroOneは段階的に要件を定義するために4つ のフェーズですすめる** 各フェーズでモデルを洗い出すときは「RDRA構造の説明」 を十分に理解し洗い出す ## フェーズ1

    ### フェーズ1の目的 ### 目的を達成するために次のことを行ってください ## フェーズ2 ### フェーズ2の目的 ### 目的を達成するためフェーズ1の結果を元に以下の~ ~~ ## フェーズ3 ### フェーズ3の目的 ### 目的を達成するためフェーズ2の結果を元に以下の Stepを実行してください #### Ste1:フェーズ2の「情報.tsv」「状態.tsv」「条 件.tsv」「バリエーション.tsv」を元に以下の指示に従って ください ~~ ## フェーズ4: ### フェーズ3の目的 ### 目的を達成するためフェーズ3の結果を元に以下の ~~ RDRAZeroOne.md フェーズ毎にコンテキストを積み上げていく 4フェーズの組立を言語化する RDRAを4フェーズで要件を組立てる 方向付け 深堀する グルーピング 細かい関係づけ
  17. 定義:WhatIsZeroOne # RDRAZeroOneは以下の理由で4つのフェーズですすめている ## 4フェーズで進める意味 ## フェーズ1の位置づけ ### 初期要望.txtの位置づけ ~

    ### 業務の位置づけ ## フェーズ2の位置づけ ### 業務の位置づけ ~ ### バリエーションの位置づけ ## フェーズ3の位置づけ ### 業務の位置づけ ~ ### 外部システムの位置づけ ## フェーズ4の位置づけ フェーズ4の目的はフェーズ3で要件の組立が終わったので、より詳細な要件間の関係づけを行います ### 情報の位置づけ 情報に関係する他モデルである、状態モデルとバリエーションを関連づけ、情報と他のモデルの関係を 明らかにし、 相互のオブジェクトの必要性を明確にする ### 状態の位置づけ 状態モデル内の状態を明確にする 最初の状態と最後の状態を明確にし、状態の遷移にユースケースを結び付け、業務との関係を明らかに し、 相互のオブジェクトの必要性を明確にする ### 条件の位置づけ ビジネスルールとなる条件について他のモデルであるバリエーション、状態モデルとの関係を明確にし、 相互のオブジェクトの必要性を明確にする 各フェーズ毎の出力に対 して行うべきことを示す LLMの出力に対して何に着 目し、どのように直すのか
  18. 番外編 LLMが賢くなっている 私:なぜ空のファイルを作ったのか 問題:LLMが空のファイルを作り出した AI:ひな型を作成する設定になっている 私:何処に「ひな型を作成する」設定があるのか AI:明確なひな型を作成する指示はありません ~連続的に実行する phase1 =

    「0_RDRAZeroOne/RDRA/phase1」 if phase1 not exist "アクター.tsv" { return "アクターが定義されていないので「1_ZeroOne指示.md」Phase1を実行します“ }else if phase1 not exist "外部システム.tsv" { return "外部システムが定義されていないので「1_ZeroOne指示.md」Phase1を実行します“ }else if phase1 not exist "ビジネスポリシー.tsv" { ~~ RDRAアドバイス.md ファイルが無ければ生成するようにしている LLMが最適化しようとしている? 実行を強要する LLMが賢くなって思いもしない挙動が増えている
  19. ツール起動:定義情報をグラフィカルに表示する • 行っていること • 関連データの作成 • RDRA定義からRDRAGraphのデータとなる、関連デー タを作成する • 関連データの内容をクリップボードにコピーする

    • RDRAGraphを表示 RDRA定義から関連データ を作成する(プログラム) 関連データの内容をクリッ プボードにコピーする クリップボードから データを取り込む RDRA定義 • BUCシート • アクターシート • 外部システムシート • 情報シート • 状態シート • 条件シート • バリエーションシート 関連データ クリップボード
  20. 要件の妥当性検証 妥当性検証環境.csv 拠点ごとのアクターの制約から要件の検証を行う 拠点 アクター 人数 制約 説明 RDRA定義 •

    BUCシート • アクターシート • 外部システムシート • 情報シート • 状態シート • 条件シート • バリエーションシート 要件妥当性検証結果.md LLM 入力 入力 出力 妥当性検証環境.csv Validation.md 要件の検証方法を記述 入力 妥当性を検証するためにシス テム化対象の環境を入力する RDRA 妥当性検証環境 システムの導入環境に対して、有効な 要件となっているかを検証する
  21. 業務・BUCからアクター別の画面に構造変換する 業務 BUC アクター 画面 項目 コンテキスト 状態モデル 条件 バリエーション

    状態 情報 外部システム群 外部システム アクター群 アクター イベント 画面 タイマー 業務 BUC アクティビティ * * * * * * * * * UC メールなどの通知 外部システムが 提供する画面 外部システム との連携 人が画面を使 う ビジネス上 の区切りを 表す UCが状態を変える ある状態の時に UCが実行できる システムを使う仕事 はUCとつながる 外部システムが提供する画面を使 う UCが提供する画 面 UCが情報 を操作する UCが条件に従う 情報に従属する バリエーションがある Agentで構造を変換する
  22. プロトタイプの画面項目エディター prototype_server.js prototype.html Http-serverとして起動し prototype.htmlを起動 prototype.jsonにアクセス ターミナルで以下のコマンドでも実行できる node .¥helper_tools¥web_tool¥prototype_server.js {

    "businesses": [ { "business": "介護会員管理", "BUCs": [ { "BUC": "会員登録", "actors": [ { "actor_name": "管理者", "screens": [ { "screen_name": "会員登録画面", "fields": [ ~~ prototaype.json
  23. 仕様の妥当性 検証結果 画面に関係のある論理データで 項目満たせるかを検証する 画面 画面 画面 画面 画面 画面

    論理データの項目の 不足wを指摘 画面項目から論 理データの項目 を充実させる
  24. まとめ:CursorRDRAの構成 0_RDRAZeroOne 1_RDRA Knowledge • RDRAZeroOne.txt • WhatIsZeroOne.txt Knowledge •

    HowToUseRDRA.txt • RDRA.txt • RDRAGraph.txt • RDRASheet.txt • Validation.md Validation • 妥当性検証入力.tsv • 妥当性検証結果.tsv RDRA • Phase1: • Phase2: • Phase3: • Phase4: RDRA • BUC.tsv • アクター.tsv • バリエーション.tsv • 外部システム.tsv • 情報.tsv • 条件.tsv • 状態.tsv 2_RDRASpec Knowledge • 21_data.md • 22_prototype.md • Validation.md Spec • data.md • prototype.json 段階的RDRA定義 拠点 アクター 人数 制約 説明 妥当性検証環境.tsv RDRAアドバイス.md 1.ZeroOne指示.md 1.Spec指示.md Marmaid Validation • 妥当性検証ケース一覧.md • 妥当性検証データ.md RDRAZeroOneの生成物を RDRAフォルダーにコピー 妥当性検証環境.tsvを 作成しRDRA定義の妥 当性を検証する 0からRDRAの定義 RDRA定義の妥当性検証 仕様のたたき台作成・妥当性検証
  25. まとめ:テストの文脈での応用 テストシナリオ テストケース テストシナリオ テストケース ナレッジ LLM LLM • 前処理ナレッジ

    • 標準化された フォーマット • 前処理ナレッジ • 標準化された フォーマット 標準化された 要件定義 標準化された 仕様 LLM LLM 40