Slide 1

Slide 1 text

バクラクのモノレポにおける AI Coding のための環境整備と {Roo,Claude} Code活用事例 2025/06/12 AI Coding Meetup #2 @upamune

Slide 2

Slide 2 text

id: upamune (うぱ) $ whoami LayerX バクラク事業部 (2022-04 -) Software Engineer バクラク勤怠 テックリード Mercari, Inc. / Merpay, Inc.(2018-04 - 2022-03) Roo Codeが好きで、 .roorules を読むようにしたり、 .roo ディレ クトリの導入をRoo Code本体に入れたりしました 契約しているAI Coding周りのプロダクト: Cursor, Windsurf, Augment Code, Claude Max (Claude Code) 5月末までRoo Codeをよく利用していましたが... © LayerX Inc.

Slide 3

Slide 3 text

今日話すこと AI Coding Agent を使うにあたっての泥臭いあれこれ、上手くいってないこと、 最後に活用事例を紹介します © LayerX Inc. Intro AI Coding のための環境整備 AI Coding Agentに依存しないコンテキスト整備 Roo Code / Claude Codeでの活用事例 3

Slide 4

Slide 4 text

1. AI Coding のための環境整備

Slide 5

Slide 5 text

前提: バクラクはモノレポで開発 ざっくりbackendとwebappでそれぞれモノレポになっています。 © LayerX Inc. bakuraku-backend バクラク申請・経費精算のバックエンド バクラク請求書発行のバックエンド バクラク勤怠のバックエンド ... bakuraku-webapps バクラク申請・経費精算のウェブアプリ バクラク請求書発行のウェブアプリ バクラク勤怠のウェブアプリ ... 5

Slide 6

Slide 6 text

AI Coding活用を始めてみて、現れた具体的な課題 © LayerX Inc. モノレポでは特に開発者が違うと採用したいAI Coding Agentへのルールが異なる 開発者のチームが異なる 触るサービスも異なる 常にリポジトリのルートディレクトリから開かれるとは限らない 触るサービスのディレクトリから開くことも AIに与えるコンテキストが大きくなりがち 6

Slide 7

Slide 7 text

課題1: 開発者が違うと採用したいルールが異なる

Slide 8

Slide 8 text

課題1: 開発者が違うと採用したいルールが異なる © LayerX Inc. モノレポなので同じリポジトリでも開発者が違えばチームも違うし、技術スタックも異 なるディレクトリを触ることになる チームごとに開発の規約や技術スタックは多少変わったりする そのため、良かれと思ったルールが他のチームでは邪魔になることも... 使わない・必要ないルールを有効にしておくと、コンテキストウィンドウを圧迫し、ノ イズになる 8

Slide 9

Slide 9 text

課題1: 開発者が違うと採用したいルールが異なる 実際に使われているルールの一例 © LayerX Inc. 9

Slide 10

Slide 10 text

課題1: 開発者が違うと採用したいルールが異なる © LayerX Inc. .clinerules/ と .roo/rules/ は .gitignore に追加して、git管理しないように それぞれに .gitkeep を置いてディレクトリだけは残しておく ルール自体は別ディレクトリで管理して、そこはgit管理下に置く 10

Slide 11

Slide 11 text

課題1: 開発者が違うと採用したいルールが異なる Cline が Rules Bank と呼んでいる手法 © LayerX Inc. 11

Slide 12

Slide 12 text

課題1: 開発者が違うと採用したいルールが異なる © LayerX Inc. 採用したいルールをRules Bankから .clinerules/ や .roo/rules に持ってくるの大変 github.com/upamune/airule を作って、好きなルールをプレビュー付きのfuzzy finder でピックアップできるように airule --from /path/to/source --to /path/to/destination で指定するので、Cline でも Roo Codeでも使える Cline: airule --from /path/to/rules-bank --to .clinerules Roo Code : airule --from /path/to/rules-bank --to .roo/rules 毎回 from, to 指定する、毎回選ぶルール選択するのが面倒な人向けに環境変数にも対応 しているので、 airule を実行するだけで良いようにもしている 12

Slide 13

Slide 13 text

課題1: 開発者が違うと採用したいルールが異なる © LayerX Inc. 13

Slide 14

Slide 14 text

課題2: 常にリポジトリルートから 開かれるとは限らない

Slide 15

Slide 15 text

課題2: 常にリポジトリルートから開かれるとは限らない © LayerX Inc. モノレポの場合、自分が開発するサービスのディレクトリでワークスペース開くことは よくある そうすると、ClineやRoo Codeはルールを認識してくれなくなる 開いたディレクトリに .clinerules/ や .roo/ ディレクトリがないのでルールが読み込ま れない問題 15

Slide 16

Slide 16 text

課題2: 常にリポジトリルートから開かれるとは限らない © LayerX Inc. 解決方法として、ルールを書くディレクトリに配るツールを作成 github.com/upamune/airulesync 以下のような設定ファイルを用意するとsyncされる 16

Slide 17

Slide 17 text

ここまでの解決方法 © LayerX Inc. 今紹介したツールを使ってね!ということではなく... AI Coding Agent の導入の障壁もAI Coding Agentで解決することができる 簡単に組織特有の課題に合わせたツールを即座に開発することができ、それが汎用的な ものであればOSS化も可能 Off Topic: ツールをどんどん増やしていくと、インストールの時間が増えていく... とい う問題にエレガントに対応できるaquaという素晴らしいツールがありますが、この話 は時間が余れば懇親会で... 全員開発時代のaquaで実現するローカル環境爆速セットアップ - LayerX Engineer Blog 17

Slide 18

Slide 18 text

課題3: AIに与えるコンテキストが大きくなりがち

Slide 19

Slide 19 text

課題3: AIに与えるコンテキストが大きくなりがち bakuraku-backend の行数カウント (2025年6月時点) by boyster/scc © LayerX Inc. 19

Slide 20

Slide 20 text

課題3: AIに与えるコンテキストが大きくなりがち bakuraku-backend の行数カウント (2025年6月時点) 自動生成ファイルも含みます 420万行 (゚A゚;) ゴクリ © LayerX Inc. ファイル数: 19,959ファイル コード行数: 4,217,551行 20

Slide 21

Slide 21 text

課題3: AIに与えるコンテキストが大きくなりがち © LayerX Inc. 色んなファイルを参照してすぐにコンテキストウィンドウが埋まりがち 見るファイルが多すぎて、適切なファイルに辿り着けない 21

Slide 22

Slide 22 text

課題3: AIに与えるコンテキストが大きくなりがち 正直、まだ良い解を見出せてない © LayerX Inc. 22

Slide 23

Slide 23 text

課題3: AIに与えるコンテキストが大きくなりがち © LayerX Inc. 色んなファイルを参照してすぐにコンテキストウィンドウが埋まりがち コンテキストウィンドウが大きいGemini 2.5 Proを使うとコンテキストウィンドウ問題は解決するが、コンテキ ストが太ると急速に残念な動きをするようになる Roo Codeには最近 Intelligent Context Condensing が入って、コンテキストがコンテキストウィンドウいっぱい になったら最初の方を要約してくれる仕組みが入ったので、マシにはなっているはずだがそんなに実感はない 見るファイルが多すぎて、適切なファイルに辿り着けない Roo Codeは最近Codebase Indexingが入ったので、試せる環境は作ったが... OpenAIかOllama(Local)でEmbeddingモデルを選択してEmbeddingを作成し、QdrantというVector Databaseを利用する手法 Codebase Indexing - Roo Code Cline はCodebase Indexingをしない ref. Why Cline Doesn't Index Your Codebase (And Why That's a Good Thing) 23

Slide 24

Slide 24 text

課題3: AIに与えるコンテキストが大きくなりがち だが、最近... © LayerX Inc. 24

Slide 25

Slide 25 text

課題3: AIに与えるコンテキストが大きくなりがち まだまだここは良くできると思うので、色んな手法を知りたい © LayerX Inc. Claude Codeが恐ろしいくらい上手く動いている Claude Codeは ripgrep (高速grepツール/Rust実装) を内蔵して、RAGを利用せず ripgrep で勝負してる 粘り強く色んなパターンで ripgrep で検索して、適切な実装、ファイルにたどり着いて いる 25

Slide 26

Slide 26 text

2. AI Coding Agent に依存しないコンテキスト整備

Slide 27

Slide 27 text

なぜコンテキスト整備が重要なのか? コンテキストが不足していると... コンテキスト整備はAI Coding Agentが移り変わっても有用な資産になる © LayerX Inc. 一般的なベストプラクティスに基づいた提案しかできない プロジェクト固有の規約を無視したコードを生成 既存コードとの一貫性が保てない AI Coding Agent が 正解 に辿り着くための手がかりが少ない状態 27

Slide 28

Slide 28 text

コンテキストの具体例 ① © LayerX Inc. ADR (Architecture Decision Records) / Design Doc / Spec Notionから自動で取得してMarkdownに変換するツールを社内で開発 技術的な意思決定の記録文書・仕様 「なぜこの設計にしたか」をAIが理解できる形式で提供 DBスキーマ情報 k1low/tbls を利用 DBスキーマからドキュメントを自動生成するツール ER図、テーブル定義、リレーション情報をMarkdown形式で生成 生成してリポジトリにコミット CREATE TABLE での SQLのテーブル定義より精度が良かった 28

Slide 29

Slide 29 text

コンテキストの具体例 ② 社内ライブラリやフレームワークの使い方 © LayerX Inc. docs/libraries 配下に社内ベストプラクティスをMarkdown形式で残す 1から書くのは面倒くさいので、MCPサーバーを利用して下書きを作成しつつ、 ライブラリの使い方やライブラリをこう使って欲しいというのを書く Context7:最新ドキュメントを参照できる Deep Wiki:GitHubリポジトリを解析したWikiを提供 29

Slide 30

Slide 30 text

3. Roo Code / Claude Codeでの活用事例

Slide 31

Slide 31 text

まずは一般的な、 AI Coding Agentによらないtipsから

Slide 32

Slide 32 text

tips: AIが自由に遊べるディレクトリ © LayerX Inc. AIにファイル生成や修正案を出力させるための一時的な作業場所 実装計画を書く plan.md とかの置き場所 ここは .gitignore に追加しておく このディレクトリの名前を何にするかは、人や組織によって宗派が分かれそうw 32

Slide 33

Slide 33 text

tips: まず、実装計画を立てる © LayerX Inc. 何度も言われている話ではあるが、複雑な実装をやる場合はまず計画を立てるのが良い ClineだとPlanモード、Roo CodeだとArchitectモード、Claude Codeには今日(?)Planモ ードが入った z/plan.md とかに出力してもらって、レビューする 内容が良ければ、それを元に実装を開始してもらう しかし、上手くいかないこともある... タスク分解が必要 Roo CodeのOrchestratorモード、Claude Codeは plan.md を投げ込むと、良いところまで行ってくれる 33

Slide 34

Slide 34 text

tips: 定型実装のプレイブック化 © LayerX Inc. 機能実装には、よくある定型的な手順があります。これを「実装プレイブック」として ドキュメント化しておくのがおすすめ 例えば、「ユーザーに プロダクトの利用フラグを追加する」といった、決まった一 連の流れのこと AIに実装計画を立てさせても、触るファイルが多いと実装計画で漏れるし、人間も触る 必要があることを覚えてないから、実装してもらってからなんか動かないになりがち このドキュメントを作っておくと、人間に対しても有用なドキュメントになる 34

Slide 35

Slide 35 text

tips: 定型実装のプレイブック化 例: ユーザーにあるプロダクトの利用フラグを追加 © LayerX Inc. 人間が1から書くのは面倒なので、一度実装したPull Requestのdiffから文書化してもら うのがおすすめ 35

Slide 36

Slide 36 text

tips: git worktree の活用 改めて git worktree とは 1つのリポジトリで複数のブランチを同時に、別々のディレクトリとしてチェックアウトして作業できるGitの 機能 CLI型のClaude Codeで価値が爆増: © LayerX Inc. CLIだとより簡単に並列で動かせるようになり、worktreeの価値がさらに上がった 異なるブランチごとに、複数のClaude Codeのセッションを並行実行する 36

Slide 37

Slide 37 text

tips: git worktree の活用 git worktree を少しラップしたスクリプトを書いてリポジトリにコミットして共有 © LayerX Inc. MySQLやLocalStackなどのミドルウェアを使っていると、worktreeを追加したらその データも分離したい dockerでMySQLやLocalStackを実行しているので、実行時に docker volume をclone して、そのworktree作成先に docker-compose.override.yml を配置してcloneしたvolumeを 利用することでデータを分離 もちろんこのスクリプトもAI Coding Agentに実装してもらった 37

Slide 38

Slide 38 text

Roo Code の話

Slide 39

Slide 39 text

Roo Code とは? アメリカの獣医の人材派遣の会社が開発しているClineのフォーク 大きな特徴: もう、Clineのフォークということは忘れて良い (Clineに入った機能がRoo Codeに入るわけではない) © LayerX Inc. カスタムモード: ClineではPlan/Actの2つだが、好きなモードをユーザーが定義できる Orchestrator: モードの1つとしてビルトインで提供されているモード。他のモードに切 り替えてサブタスクに切り替えて実行してくれる。 異様な開発スピード: 開発スピードが異様に速く、実験的機能を多く取り入れる 39

Slide 40

Slide 40 text

なぜRoo Code? © LayerX Inc. Orchestratorが便利 大きなタスクをサブタスクに分解して、適切なモードに切り替えつつ実行してくれる 実験的な機能が多く入るので楽しい Codebase Indexing Intelligent Context Condensing Concurrent File Reads 開発がオープンで、困ったら貢献して自分で実装すれば良い feat: Add support for .roorules configuration files by upamune #2309 feat: enhance rule file loading with .roo/rules directory support by upamune #2354 40

Slide 41

Slide 41 text

Roo Codeのカスタムモード活用 © LayerX Inc. Clineで言うところのPlan/Act以外の役割に応じた専用モードを作成できる 最近YAMLで定義できるようになった (今まではJSON) 41

Slide 42

Slide 42 text

Roo Codeのカスタムモード活用 カスタムモードでは以下を指定できる © LayerX Inc. roleDefinition: カスタムモードの役割のメイン定義。システムプロンプトの最初に配置 される groups: 利用できるツールを指定 (read, edit, browser, command) edit は実は触っていいファイルを正規表現で指定できる customInstruction: モード特有のルールを書く。システムプロンプトの後ろの方に配 置される whenToUse: いつこのモードを使うのかと言うのを書く。特に Orchestrator モード でどのモードにswitchするかで参照される 42

Slide 43

Slide 43 text

社内で定義しているカスタムモードの実例 ADR / Design Doc Writer Figma UI/Playwright UX Reviewer : Devin Instructor : © LayerX Inc. 社内のADR や Design Docの書式や、書くべき観点を指示 ペルソナを定義してのFigmaのUIレビュー Playwrightを利用してのアクセシビリティや使い勝手のレビュー Devinへ出すためのプロンプトの生成 (Devin渡すプロンプトを書くのが面倒だったので いい感じに生成してもらう) 43

Slide 44

Slide 44 text

Claude Code (w/ Opus 4) の登場

Slide 45

Slide 45 text

Claude Code の登場 © LayerX Inc. Claude Sonnet 4 / Claude Opus 4 が登場してから触り始めた 大体1日 $300 ~ $400 くらい使っている こちらがルールを整備していなくても、うまくやってくれる 先に話した通り、モノレポでもかなり上手く行く 「こんな曖昧な指示じゃ無理だろうな...」というプロンプトで思っていた90%くらいの ことが実現できてしまった 今の所は強烈な失敗をしてなくて、ガッカリ体験できてないので、ぜひガッカリ体験を 知りたい 45

Slide 46

Slide 46 text

今の新たな課題

Slide 47

Slide 47 text

今の新たな課題 © LayerX Inc. Claude Codeの登場により、ルール・プロンプトを頑張らなくてもだいぶいい感じに動 くようになってきた 実際、弊社のソフトウェアエンジニアたちのClaude Codeへの盛り上がりは今までのAI Coding Agentより大きい コードレビューがとにかく多くなった 自分がAI Coding Agent使っている時も実質コードレビューだし、他の人もAI Coding Agentで開発が加速してPull Requestを作るまでのスピードが加速 良い方法を模索中... Copilot Review, AI Coding Agentによるレビュー, CodeRabbit, Greptileなどなど... 47

Slide 48

Slide 48 text

まとめ © LayerX Inc. AI Coding Agent の導入の障壁もAI Coding Agentで解決することができる 整備されたコンテキストはツールを超えて活きる資産 ルールやワークフローの整備もAIにやってもらう Roo Codeはカスタムモードを設定できることが魅力(特にOrchestratorモードは強力) Claude Codeの登場により、ルール整備を頑張りすぎなくてもまともなアウトプットが 出てくるようになった AI Coding Agent触ったことない人はとりあえずProプラン($20/月)を契約して、ぜひ体験して見てください! 本格的に始めるときは、公式ドキュメントを穴が空くくらい読むことを強く推奨します Claude Code 概要 48

Slide 49

Slide 49 text

ぜひ、みなさんの工夫も教えてください!

Slide 50

Slide 50 text

おしまい