はじめに: なぜ作ったか
「このリポジトリ、誰も触り方わからないんだよね」——エンジニアなら一度は聞いたことがある言葉ではないでしょうか。コードは動いている。テストもある。でも、なぜその設計になっているのか、どこから読めばいいのか、どんな前提で作られているのか。何もわからない。
個人開発でSaaSを作っていると、この問題が特に身に染みます。自分で書いたコードでも、半年後に見返すと「なぜこう実装したのか」がわからなくなる。チーム開発なら、メンバーが変わるたびに「コードを読んでください」になる。ドキュメントを書こうとするたびに、機能開発の忙しさに負けて後回しになる。
これはエンジニアの怠慢ではなく、構造的な問題です。書くコストが高すぎるのです。
そこで考えたのが、コードを読んでドキュメントを自動生成するサービスです。pushするたびに、AIがコードの差分を読んでドキュメントを更新し、RepoCarta上でいつでも参照できる。エンジニアはコードを書くだけでいい。そのビジョンを形にしたのが RepoCarta です。
どんなサービスか
RepoCarta はGitHubリポジトリと連携し、コードからMarkdownドキュメントを自動生成・自動更新するSaaSです。主な機能は次の3つです。
- 初回ドキュメント生成: リポジトリを接続すると、コード全体を解析してアーキテクチャ設計書・API仕様書・DB設計書など10種類のドキュメントを生成します
- push連動自動更新: コードがpushされるたびにWebhookで差分を受け取り、変更に関連するドキュメントの更新PRを自動作成します
- Q&Aチャット: 生成されたドキュメントに対して自然言語で質問でき、コードを根拠にした回答が得られます
技術スタック
個人開発のSaaSとして、スケーラビリティとコストのバランスを重視して技術選定しました。
バックエンドはFastAPIをAWS Lambda上で動かすManaged Lambda構成を採用しました。サーバーレスにすることで、ユーザーが少ない初期フェーズでもコストを最小化できます。フロントエンドはReact + Viteで開発し、S3 + CloudFrontで配信しています。
AI部分はAnthropicのClaude APIを使っています。コードの文脈理解とMarkdown生成の品質が他のモデルより優れていると判断したためです。特に、複数ファイルにまたがるアーキテクチャの説明は、Claude 3系のモデルで明らかに品質が向上しました。
アーキテクチャ
アーキテクチャの核心は非同期処理の分離です。APIリクエストを受け取るLambdaと、実際にドキュメントを生成するLambdaを分けています。ドキュメント生成はClaudeへのAPIコールを含むため、数十秒かかることがあります。これをSQSを介して非同期処理することで、APIの応答速度とスケーラビリティを確保しています。
ドキュメント生成パイプラインの詳細
苦労したこと
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に分散させる「ファン・アウト」パターンを採用しています。
現在の機能と料金
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回 |
今後の展望
現在リリース済みの機能に加え、今後追加予定の機能は以下です。
- Team プラン: メンバー共有・複数プロジェクト管理機能
- ドキュメントサイト生成: Markdownから静的サイトを自動生成し、サブドメインで公開する機能
- Confluence連携: 生成したドキュメントをConfluenceページとして自動更新
- GitLabサポート: GitHub以外のGitホスティングサービスへの対応
まとめ
「コードはあるがドキュメントがない」という問題は、個人開発でもチーム開発でも共通の課題です。RepoCarta は、その問題をAIと自動化によって解決しようとしています。
リリースしたばかりで改善すべき点はまだ多いですが、「ドキュメントを書く時間をなくしたい」というエンジニアの課題を正面から解決できるサービスになると信じています。
ドキュメントのない苦しみに心当たりがある方は、ぜひ14日Trialで試してみてください。