すべてをコードとして:私たちの会社を一つのモノレポで管理する方法
107日前原文(www.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が全実装を自動で整合性チェック
- 1つのbilling-plans.jsonで全プロダクトのプラン・上限を定義
-
クロスプロジェクトなリファクタリング
- 関数リネーム等も全体横断で一括置換・コミット
-
単一ソース・シンプルな依存関係管理
- ツール設定・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ネイティブな開発体制が、プロダクトの進化速度と品質を最大化