はじめに: なぜ作ったか

「このリポジトリ、誰も触り方わからないんだよね」——エンジニアなら一度は聞いたことがある言葉ではないでしょうか。コードは動いている。テストもある。でも、なぜその設計になっているのか、どこから読めばいいのか、どんな前提で作られているのか。何もわからない。

個人開発でSaaSを作っていると、この問題が特に身に染みます。自分で書いたコードでも、半年後に見返すと「なぜこう実装したのか」がわからなくなる。チーム開発なら、メンバーが変わるたびに「コードを読んでください」になる。ドキュメントを書こうとするたびに、機能開発の忙しさに負けて後回しになる。

これはエンジニアの怠慢ではなく、構造的な問題です。書くコストが高すぎるのです。

そこで考えたのが、コードを読んでドキュメントを自動生成するサービスです。pushするたびに、AIがコードの差分を読んでドキュメントを更新し、RepoCarta上でいつでも参照できる。エンジニアはコードを書くだけでいい。そのビジョンを形にしたのが RepoCarta です。

どんなサービスか

RepoCarta はGitHubリポジトリと連携し、コードからMarkdownドキュメントを自動生成・自動更新するSaaSです。主な機能は次の3つです。

GitHub ソースコード push / PR Webhook RepoCarta 差分解析 AI生成処理 Claude API 生成 ドキュメント RepoCarta上に 保存・閲覧可能 チーム 常に最新の ドキュメント
図1: RepoCarta サービスの基本フロー

技術スタック

個人開発のSaaSとして、スケーラビリティとコストのバランスを重視して技術選定しました。

バックエンド
FastAPI + Lambda
フロントエンド
React + Vite
データベース
RDS PostgreSQL
非同期処理
Amazon SQS
AI推論
Claude API (Anthropic)
GitHub連携
GitHub App
CDN / ホスティング
CloudFront + S3
認証
GitHub OAuth + JWT

バックエンドはFastAPIをAWS Lambda上で動かすManaged Lambda構成を採用しました。サーバーレスにすることで、ユーザーが少ない初期フェーズでもコストを最小化できます。フロントエンドはReact + Viteで開発し、S3 + CloudFrontで配信しています。

AI部分はAnthropicのClaude APIを使っています。コードの文脈理解とMarkdown生成の品質が他のモデルより優れていると判断したためです。特に、複数ファイルにまたがるアーキテクチャの説明は、Claude 3系のモデルで明らかに品質が向上しました。

アーキテクチャ

USER CDN / FRONTEND API LAYER DATA / QUEUE AI / OUTPUT ユーザー ブラウザ CloudFront S3 + CDN GitHub Webhook / App API Gateway Lambda / FastAPI RDS PostgreSQL Amazon SQS Job Queue GitHub OAuth + JWT Cookie Doc-Gen Lambda Docs GitHub Repo
図2: RepoCarta システムアーキテクチャ全体図

アーキテクチャの核心は非同期処理の分離です。APIリクエストを受け取るLambdaと、実際にドキュメントを生成するLambdaを分けています。ドキュメント生成はClaudeへのAPIコールを含むため、数十秒かかることがあります。これをSQSを介して非同期処理することで、APIの応答速度とスケーラビリティを確保しています。

ドキュメント生成パイプラインの詳細

コード取得 GitHub API 差分抽出 チャンク化 ファイル分割 優先度付け Claude API プロンプト 生成実行 後処理 Markdown整形 リンク解決 Gitコミット ブランチ作成 PR自動作成 1 2 3 4 5
図3: ドキュメント生成パイプライン(5ステップ)

苦労したこと

1. GitHub App認証の複雑さ

GitHub AppはOAuthとは全く異なる認証フローを持ちます。App自体の認証にはJWT(Private Keyで署名)を使い、リポジトリへのアクセスにはInstallation Access Tokenを都度発行する必要があります。しかもこのトークンは1時間で失効するため、キャッシュ管理も必要です。

さらに、ユーザーがAppをインストールしたときのWebhookと、リポジトリにpushされたときのWebhookを同じエンドポイントで受け取り、イベントタイプで処理を分岐する必要があります。ドキュメントが少なく、GitHubのコミュニティフォーラムを何時間も読む羽目になりました。

2. LambdaのCold Start問題

FastAPIをLambdaで動かす構成では、Cold Startが最大3〜4秒かかることがありました。特にWebhookの受信エンドポイントはGitHubからの再送タイムアウトが10秒のため、Cold Start中に処理を完了できないケースが発生しました。

解決策として、Webhookの受信だけは即座にSQSへ格納してレスポンスを返し、実際の処理は別のLambdaに委譲する設計に変更しました。これでCold Startの影響を最小化できました。

3. 大規模リポジトリの処理

数万ファイルのモノレポを初回処理するケースで、Lambda実行時間の15分制限に引っかかる問題がありました。現在はファイル数に応じてチャンクサイズを動的に調整し、複数のLambda invocationに分散させる「ファン・アウト」パターンを採用しています。

コンテキスト長の制限もチャレンジでした。大きなファイルをそのままClaudeに渡すと、トークン数が上限を超えます。ファイルを意味のある単位(クラス・関数・モジュール)で分割し、それぞれの文脈を要約してから全体のドキュメントを生成する二段階アプローチを採用しています。

現在の機能と料金

2026年5月時点でのプランは以下の通りです。

プラン 価格 プロジェクト数 ドキュメント種別 ドキュメント自動更新 Q&A
Trial ¥0 / 14日 1件 最大3種 月2回 月20回
Solo ¥5,500/月(税込) 5件 全10種 月8回 月200回
Team ¥22,800/月(税込) 10件 全10種 月25回 月1000回

今後の展望

現在リリース済みの機能に加え、今後追加予定の機能は以下です。

まとめ

「コードはあるがドキュメントがない」という問題は、個人開発でもチーム開発でも共通の課題です。RepoCarta は、その問題をAIと自動化によって解決しようとしています。

リリースしたばかりで改善すべき点はまだ多いですが、「ドキュメントを書く時間をなくしたい」というエンジニアの課題を正面から解決できるサービスになると信じています。

ドキュメントのない苦しみに心当たりがある方は、ぜひ14日Trialで試してみてください。

RepoCarta の14日Trialを試す

GitHubアカウントで30秒で始められます。クレジットカード不要。

14日Trialでドキュメントを生成する