世界を動かす技術を、日本語で。

すべてをコードとして:私たちの会社を一つのモノレポで管理する方法

2025年12月31日原文(kasava.dev)

概要

  • Kasava では、全てのプロダクト・ドキュメント・マーケティングを 単一リポジトリ(モノレポ) で管理
  • AIネイティブ開発 により、AIが全ソースに即時アクセスし、ドキュメントやマーケティングも自動整合
  • コード・ドキュメント・Webサイト・ブログなど、全て git push 一発でデプロイ可能
  • 一元管理 でバージョン不一致や部門間の連携コストを排除
  • CI/CDやレビュー も統一化し、誰でも即座に全体をアップデート可能

Kasavaのモノレポ戦略とAIネイティブ開発

  • 全社的なモノレポ管理 により、コード・ドキュメント・マーケ・ブログ等、5,470+ファイルを一元化

    • frontend/: Next.js 16+React 19アプリ
    • backend/: Cloudflare Workers API
    • website/: マーケティングサイト
    • docs/: 公開ドキュメント
    • marketing/: ブログ・投資家資料・メールテンプレート
    • external/: Chrome拡張・Google Docsアドオン・GCP Functions
    • scripts/, infra-tester/, github-simulator/: 開発・テスト補助
  • AIネイティブ開発 の実現

    • AIが全てのソース・ドキュメント・Webを横断的に参照・検証
    • ドキュメントやマーケの記述が実装と即時で同期
    • ブログやサイトの数値・仕様もAIがコードから自動検証
  • 全てが「git push」でデプロイ可能

    • コード・ドキュメント・Web・ブログ・メール・投資家資料まで、全て同じGitワークフロー
    • 部門横断のデプロイ調整不要、即時反映

モノレポのメリット

  • 原子性のある変更とAIによる一元検証

    • バックエンドAPI変更時、フロント型定義・ドキュメント・マーケも同時更新
    • 例: Asana統合追加時、全サービス・画面・ドキュメントを1PRで一括更新
  • 一元的な料金プラン管理

    • 1つのbilling-plans.jsonで全プロダクトのプラン・上限を定義
      • バックエンド=上限 enforce
      • フロント=設定画面で表示
      • マーケサイト=料金ページ表示
    • 変更時、AIが全実装を自動で整合性チェック
  • クロスプロジェクトなリファクタリング

    • 関数リネーム等も全体横断で一括置換・コミット
  • 単一ソース・シンプルな依存関係管理

    • ツール設定・CI/CD・全文検索も一か所で完結

各ディレクトリ構成の詳細

  • frontend/

    • Next.js 15 App Router、AIチャット、バグレポート、ダッシュボード等
    • 45+コンポーネント、AI関連UI、Google Docs連携など
  • backend/

    • Hono APIエンドポイント、55+ビジネスロジックサービス、AIワークフロー
    • Drizzle ORMスキーマ、Durable Objects、AIエージェント
  • website/ & marketing/

    • マーケティングサイト、ブログ、投資家向けNext.jsデッキ、メールキャンペーン
    • ブログはMarkdownでPRレビュー、メールはMJMLでバージョン管理
  • docs/ & docs-internal/

    • 公開ドキュメント(Mintlify)、社内アーキテクチャ・仕様・研究ノート
    • プッシュで自動デプロイ、コードと一緒に全文検索可能
  • external/

    • Chrome拡張(WXT+React)、Google Docsアドオン(Apps Script)、GCP Functions
  • 開発インフラ

    • github-simulator/(モックAPI)、infra-tester/(統合テスト)、scripts/(デプロイスクリプト)

デプロイ先と技術スタック

  • Frontend: Next.js+React+Tailwind → Vercel
  • Backend: Cloudflare Workers+Hono+Mastra → Cloudflare
  • Website/Investor Deck: Next.js → Vercel
  • Docs: Mintlify MDX → Mintlify
  • Chrome Extension: WXT+React → Chrome Web Store
  • Google Docs Add-on: Apps Script → Google Workspace Marketplace
  • Tree-sitter Service: Node.js → GCP Functions
  • Email Templates: MJML → Loops.so

運用の工夫

  • npm/yarnワークスペース非採用

    • 各ディレクトリは独立npmプロジェクト
    • 依存関係の混乱やバージョン不一致を排除
  • 選択的CI/CD

    • 5つのGitHub Actionsワークフローで、パスごとにテスト・デプロイを分離

まとめ:AI時代の一元開発体制

  • AIが全体を俯瞰し、全ての変更を一括整合・検証
  • 全員が同じワークフローで、どの領域も即時にアップデート可能
  • 分散管理の煩雑さを排除し、「すべてがコード」として管理・デプロイ
  • AIネイティブな開発体制が、プロダクトの進化速度と品質を最大化

Hackerたちの意見

以前はモノレポに反対だったんだけど、最近Claude Codeにハマって、初めてモノレポの良さが分かった。特にClaudeみたいなツールのおかげでね。技術的には親ディレクトリからいろんなリポジトリを開けるけど、やっぱり一箇所にまとめておく方が楽だよね。フロントエンドとバックエンドの変更も常に同期してるし。今はどっちのオプションでも作業できると思う。

親ディレクトリからClaudeを開くのが俺のやり方なんだけど、結構うまくいってるよ。でも、フロントエンドとバックエンドを一緒に変更できる単一のコミットができるモノレポのアイデアは好きだな。これって結構一般的な使い方だし。

Claudeのコンテキスト制限について何か懸念や問題はある?

backend-repo $ claude --add-dir ../frontend-repo モノレポを選ぶのは、フラグのエイリアスを使いたくないからっていうのも…まあ、できることだと思うけど。

同じ理由で、最大のプロジェクトをモノレポに変更したよ。最先端のLLMツールをたくさんいじってて、それらを正しく接続するのが本当に大変だったから、一つにまとめてコンピュータのために楽にしたんだ。

Claude Codeは実際に複数のディレクトリで作業できるから、これが絶対必要ってわけじゃないよ!依存関係のリファクタリングが必要なプロジェクトに取り組んでるときは、こういうことをするんだ。

モノレポにはずっとファンなんだけど、著者と同じでyarn workspacesはあんまり好きじゃないんだ。React Nativeはホイストで結構イライラするし。最近、実装計画やPRDをリポジトリに入れ始めたんだけど、今のところすごく気に入ってる。AIに良い選択をするための文脈を与えるのに役立ってるよ。

これはツール(Claude)によって導入された制限/仮定のように見えるね。複数のリポジトリでも同じようにうまく動作するようにツールを改善できるはず。

人間にとってどうなるかも考えてみてよ——複数のリポジトリにまたがって機能を分けてPRを出すと、レビュー過程が茶番になっちゃう(PRを一つのリポジトリにマージしないと一緒にテストできないから)か、コードレビューの認知的負担が大幅に増えるよね。

モノレポの大ファンで、「開発ブランチなし」も支持してるけど、開発とリリースには大きな違いがあるよね。安定したリリースを切ることができて、例えばチェリーピックができるのは重要だし、特にモノレポではそうだと思う。クロスAPI機能、つまりフロントエンドがバックエンドとやり取りする時に、原子的な変更はほとんど嘘みたいなもんだ。常に何らかの安定したAPIを定義するべきだよ。

古いブランチを残しておくのが好きだけど、たくさんのところはそれを捨てちゃうんだよね。なんでか理解できない。あと、git squashも嫌い。次のPRのために新しいブランチを作らなきゃいけないのが時間の無駄だと思う。マスターやデブ、メインを引き下ろして、作業中のブランチにマージできるはずなのに。これもGitHubのフォーク方式を好む理由の一つかな。開発者が自分のサンドボックスやブランチを持てるようにして、仕事を進められるようにすれば、準備ができたらPRしてくれると思う。

とても興味深いポイントですね。チェリーピッキングが必要な例と、なぜアトミック変更が嘘なのか、いくつか教えてもらえますか? 私は3つ以上のプロダクトでモノレポを使っていて、今のところ安定したリリースから安定したリリースにデプロイしても問題は起きていません。

Hacker Newsで議論の続きを見る