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

「規約、知識、オペレーション」から考える中規模以上の開発組織のCursorルールの 考え方・育...

「規約、知識、オペレーション」から考える中規模以上の開発組織のCursorルールの 考え方・育て方 / Cursor Rules for Coding Styles, Domain Knowledges and Operations

Avatar for YuitoSato

YuitoSato

June 13, 2025
Tweet

More Decks by YuitoSato

Other Decks in Technology

Transcript

  1. 1. はじめに 2. なぜCursorルールを整備する必要があるのか 3. 良いCursorルールとは 4. 3つのCursorルール 4.1. コーディング規約

    4.2. ドメイン知識 4.3. オペレーション 5. ルールの評価と育て⽅ 6. まとめと未来予想 アジェンダ 9
  2. 12 There’s a lot of chatter in the media that

    software developers will soon lose their jobs to AI. I don’t buy it. It is not the end of programming. It is the end of programming as we know it today. 訳)メディアでは、ソフトウェア開発者がすぐにAIに仕事を奪われるとい う噂が広まっています。私はこれを信じません。 これはプログラミングの終わりではありません。現在知られている形での プログラミングの終わりなのです。 私たちの知る開発の終わり 1. はじめに
  3. 24 オンボーディングが完了しているエンジニアとそうでないエンジニア 2. なぜCursorルールを整備する必要があるのか? オンボーディングが完了しているエンジニア - 抽象的な指示 だけでHowをお任せできる - 自走できる

    。レビューの頻度が少ない オンボーディングが完了していないエンジニア - 具体的な指示 をしないと動けない - 自走できない。 レビュー頻度が多い
  4. 48 4. 3つのCursorルール 3つのCursorルールの全体感 フロントエンド バックエンド プレゼンテーション層 アプリケーション層 ドメイン層 インフラストラクチャ層

    コンポーネント フックス - ドメイン知識→ドメイン、コンテキスト、機能別の情報 タスク管理 ユーザ管理
  5. 50 4. 3つのCursorルール > 4-1. コーディング規約 コーディング規約 - How(実装の詳細)をいちいち指⽰しなくても「そのプロダクトにとっての綺麗なコード」を出⼒できるようにするルール -

    (レイヤー) × (シーン別) × (実装 or テスト)で書いていくのがおすすめ - 例)アプリケーション層の、Write処理時に、テストの書き⽅(write-usecase-integration-test-implementation.mdc) - 例)インフラ層の、リポジトリの、実装の仕⽅(repository-implementation.mdc)
  6. 52 4. 3つのCursorルール > 4-1. コーディング規約 コーディング規約の具体例 - テキスト部分 -

    テキストは実はあまり書いていない - 実装例で表現しづらいことを書く - どの情報をどう書くべきはプロダクトに完全に依存する のであくまで参考程度に
  7. 53 4. 3つのCursorルール > 4-1. コーディング規約 コーディング規約の具体例 - 実装例 -

    実装例は厚めに書くこと(ルールの2/3が実装例) - Few-shotプロンプティング
  8. 54 4. 3つのCursorルール > 4-1. コーディング規約 Few-shot プロンプティング - いわゆる具体例のこと

    - サンプルコードを厚めに書くことで精度を上げる https://www.oreilly.co.jp/books/9784814401130/ 例示による説明は人間同士のコミュニケーションでも効果的ですが、 LLMとのやり取りにお いてはさらに重要な意味を持ちます。これは、 LLMがプロンプト内のパターンを認識し、それ を踏襲 して補完を生成することに長けているためです。 Few-shotプロンプティングを活用 することで、質問の解釈方法を示すだけでなく、期待する補完の具体的な形式まで明示する ことができます。 John Berryman、Albert Ziegler 著、服部 佑樹、佐藤 直生 訳. LLMのプロンフプトエンジ ニアリング (p. 90)
  9. 55 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識 - いわゆるドメインに即した⽂脈、背景、仕様の情報 -

    Howの省略ではなく、Whatの省略をするための情報 - コーディング規約はHowの省略、ドメイン知識はWhatの省略
  10. 56 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識 - いわゆるドメインに即した⽂脈、背景、仕様の情報 -

    「タスク」といきなり⾔われて新⼈エンジニアに通じるか? タスクの複数のコメントを追加できるようにしたい jooqというORMを使ってpostgresqlの tasksというテーブルのデータを保存して。 実装後は./gradlew compileKotlinを実⾏して
  11. 57 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識 - いわゆるドメインに即した⽂脈、背景、仕様の情報 -

    「タスク」といきなり⾔われて新⼈エンジニアに通じるか? - →「やりたいことの」の裏には膨⼤な仕様やコンテキストが隠されている(この例は簡単だけど) HogeTasks SaaSというサービスにはタスクという概念があります。 タスクは必ず⼀つのプロジェクトに属します。 プロジェクトという概念は〜。 タスクはステータス管理できて、未着⼿、進⾏中、完了の3つのステータスがあります。 タスクには複数のユーザーをアサインできます。 アサインされたユーザーのみステータスを完了に変更することができます。 タスクには複数のコメントをつけることができます。 コメントはコメント作成者のみ編集と削除ができます。 ~~~ ~~~ タスクの複数のコメントを追加できるようにしたい jooqというORMを使ってpostgresqlの tasksというテーブルにデータを保存して。 実装後は./gradlew compileKotlinを実⾏して
  12. 58 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識に属するもの - 仕様書 -

    ドメインモデル図(集約はどの範囲やモデルとモデルの関係性、ふるまいなど) - ⽤語集 - ユースケース図など
  13. 61 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識をルールにする必要ない説(急な⼿のひら返し) - そもそもAIはコードを読めばある程度仕様がわかる -

    現実世界の概念とコードがずれなく表現できていれば(DDD)、コードが仕様書になるのでドメイン知識のルールは必要性が減る
  14. 62 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識をルールにする必要ない説 - そもそもAIはコードを読めばある程度仕様がわかる -

    現実世界の概念とコードがずれなく表現できていれば(DDD)、 コードが仕様書になるのでドメイン知識のルールは必要性が減る class Task( val projectId: ProjectId, val title: TaskTitle, val description: TaskDescription, val status: TaskStatus, ) enum class TaskStatus { TODO, IN_PROGRESS, DONE, }
  15. 63 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識をルールにする必要ない説 - そもそもAIはコードを読めばある程度仕様がわかる -

    現実世界の概念とコードがずれなく表現できていれば(DDD)、 コードが仕様書になるのでドメイン知識のルールは必要性が減る class Task( val projectId: ProjectId, val title: TaskTitle, val description: TaskDescription, val status: TaskStatus, ) enum class TaskStatus { TODO, IN_PROGRESS, DONE, } タスクは必ず1つのプロジェクト に属するんだなー 3つのステータスがあるんだなー
  16. 64 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識をルールにする必要ない説 - そもそもAIはコードを読めばある程度仕様がわかる -

    現実世界の概念とコードがずれなく表現できていれば(DDD)、 コードが仕様書になるのでドメイン知識のルールは必要性が減る /** * タスク * ステータスは未着手 →進行中→完了の順に遷移する */ class Task( val projectId: ProjectId, val title: TaskTitle, val descritption: TaskDescription, val status: TaskStatus, val comments: List<Comment>, ) enum class TaskStatus { TODO, IN_PROGRESS, DONE, } そもそもコードに仕様を 書けばいい
  17. 65 4. 3つのCursorルール > 4-2. ドメイン知識 Agent Rules as Domain

    Parser https://speakerdeck.com/yodakeisuke/agent-rules-as-domain-parser-10303fa7-cf85-4df5-a1fa-6f511f88d5a7
  18. 66 4. 3つのCursorルール > 4-2. ドメイン知識 Agent Rules as Domain

    Parser https://speakerdeck.com/yodakeisuke/agent-rules-as-domain-parser-10303fa7-cf85-4df5-a1fa-6f511f88d5a7
  19. 67 4. 3つのCursorルール > 4-2. ドメイン知識 Agent Rules as Domain

    Parser https://speakerdeck.com/yodakeisuke/agent-rules-as-domain-parser-10303fa7-cf85-4df5-a1fa-6f511f88d5a7 【理想】コードから仕様を常に 再計算可能にする。 コードからドメイン知識のルールを作る
  20. 68 4. 3つのCursorルール > 4-2. ドメイン知識 ドメイン知識をルールにする必要ない説 考察 - 「コーディング規約以外の情報」としてドメイン知識という情報は概念上存在する

    - しかし現時点の所要時間の短いタスクをAIに任せる上ではそこまでドメインの情報は必要ない(ことが多い) - AIがコード読んでわからない仕様ならコードや仕様そのものを疑ってもいい - 今後もっとAIが複雑なタスクをするなら整備する必要があるかも - ルールを保守するのではなくコードからルールを常に再計算可能にするという考えもある(Agent Rule as Parser) - サマリ、インデックスとしてのドメイン知識(コードを全て読まなくてもすぐに全体像を理解できる。⼈間にも有⽤)
  21. 70 4. 3つのCursorルール > 4-3. オペレーション オペレーション - プログラミングだけが開発ではない 要求定義

    要件定義 コード レビュー 手動テスト マージ リリース ユーザーからの フィードバック 設計 実装 静的解析・ コンパイル 自動テスト リファクタリ ング
  22. 71 4. 3つのCursorルール > 4-3. オペレーション オペレーション - 各⼯程でルーチンワークがあるはず -

    →ルールによる⾔語化 要求定義 要件定義 コード レビュー 手動テスト マージ リリース ユーザーからの フィードバック 設計 実装 静的解析・ コンパイル 自動テスト リファクタリ ング 似たファイルを読み込 んでから実装して 実装したら必ず コンパイルして 手動テストの ID、パスはこれで Playwright MCPで動作確認 ブランチの命名規則、 プルリクエストの作り方、 レビューコメントへの対応 タスク管理方法
  23. 73 4. 3つのCursorルール > 4-3. オペレーション おすすめのオペレーションルール - git操作 -

    ブランチ名 - プルリクエストに⼊れるべき項⽬ - 差分コードの⾃動分析など
  24. 74 4. 3つのCursorルール > 4-3. オペレーション おすすめのオペレーションルール - ⼿動テスト -

    ログインID、パスは何を使うか? - どのツールでテストを⾏うか? - 実験的にPlaywright MCPを使っています。 - 例)「localhost:~~にアクセスして、〇〇で きるかテストして」 https://github.com/microsoft/playwright-mcp
  25. 75 4. 3つのCursorルール > 4-3. オペレーション 上⼿くいかなかったオペレーションルール - タスク管理 -

    タスク管理をCursorに⾏わせてみたが上⼿くいかな かった - ルール通りに動いてくれたり、くれなかったり - Claude Code Actionsなども出てきているので、 タスク管理は GitHubの Issuesに寄せるのが良さそう
  26. 81 そもそも私たちはコードをどのように評価しているか? - 評価ポイント - 1. やりたいことが実現できているか?(⾮機能要件含む)→What、外部品質 - ⾃動テスト -

    2. そのコードがプロダクト上「綺麗」とされているコードか?→How、内部品質 - ⼈間によるレビュー 5. ルールの評価と育て⽅
  27. 101 Step5. 再度ルールを修正 5. ルールの評価と育て⽅ - 復元できなかった項⽬に対してルール項⽬や具体例を追加 - 指⽰しなくてもわかるルール項⽬を削除 -

    ⽬標達成に対してなるべく最⼩限のルールを作る。書きすぎると何が⼤事かCursor⾃⾝がわからなくなってしまう(体験談) - 明確な⽂章量があるというより、Cursorが実⾏することに対して必要な情報がちゃんと効いて⽣成されたコードが正しいかを 逐⼀確認しながら調整する - 「Kotlinで書いて」とかはわざわざ指⽰をしなくてもわかる
  28. 105 6. まとめと未来予想 まとめ - なぜCursorルールが必要? - CursorをAIエージェントとして使⽤し、マネジメントをするならCursorルールが必要 - 良いCursorルールはCursorに⾃⾛⼒を与える。

    - 良いCursorルールはプロンプトをやりたいことの指⽰だけにできる - 3つのCursorルール 1. コーディング規約→Howを省略するためのルール 2. ドメイン知識→Whatの背景を省略したいが、理想はコードからわかるようにすべき 3. オペレーション→ルーチンワーク⾃動化のためのルール - ルールの評価と育て⽅ - 内部品質を担保するためのルール作りは難しい - お⼿本ファイルをルールとプロンプトで復元させるファイル復元トレーニングでルールを育てていく
  29. 110 6. まとめと未来予想 採⽤の限界とプロダクトと組織の崩壊 - 肌感として組織は1年で2倍以上にならない - これを超えるとマネジメントが回らなくなり組織が崩壊する - しかし事業の成⻑スピードに対してエンジニアが必要

    - →どうする? - →業務委託や外部の開発会社を⼤量に頼る - →背景や⽬的を伝えきれず、品質が下がる(⚠業務委託、開発会社が悪いのではなく、上記同様マネジメントの問題)
  30. 111 6. まとめと未来予想 2年で +15プロダクトの現実性 - プロダクトによるがSaaSの新規開発は1stリリースまで半年〜1,2年ほどかかる(初期の構想フェーズも含む) - Loglassも1年ほど開発をかけている -

    1年で7~8つのプロダクト開発を同時進⾏するのか?(今近しいことを本当にしてます) - リリース後ももちろん改善するのでエンジニアは減らせない - エンジニアを⼤量採⽤したいが、前スライドの通り限界値があるというジレンマ
  31. 114 6. まとめと未来予想 AIエージェントの未来予測 - AIエージェントは⼈間の確認なしで、より⻑く、より正しく動作するようになる - AIエージェントは⼩数の⼈間の管理下において、無限に並列稼働するようになる - 1⼈のエンジニアがメガベンチャーのプロダクト組織を超える⼒を持つようになる

    - アウトプットを出すスピードが天元突破する - 開発に1, 2年かかる競合に対して数週間で新サービスを市場投⼊できるようになる - 今とは⽐較にならないレベルでエンジニアリングが⽐較優位になる時代が来る - ⼿作り開発 vs AI駆動開発
  32. 117