AIによるディスカバリー - Archyl Docs

Archylがコードベースからアーキテクチャを自動的に発見・ドキュメント化するAI機能について

AIによるディスカバリー

ArchylのAIディスカバリー機能は、コードベースを分析してソフトウェアアーキテクチャを自動的に発見・ドキュメント化します。手動でのドキュメント作成にかかる時間を大幅に節約し、アーキテクチャドキュメントが実際のコードと同期した状態を維持できます。

仕組み

1. リポジトリの接続

まず、GitリポジトリをArchylに接続します:

  1. プロジェクト設定に移動
  2. 「リポジトリを接続」をクリック
  3. Gitプロバイダーを選択(GitHub、GitLab、Bitbucketなど)
  4. Archylにリポジトリへのアクセスを許可

2. ディスカバリーの開始

接続後、AIディスカバリーを開始:

  1. プロジェクトで「ディスカバリーを開始」をクリック
  2. 分析するブランチまたはパスを選択
  3. ディスカバリー設定を構成(オプション)
  4. 「ディスカバリーを実行」をクリック

3. AI分析

AIがコードベースを分析して以下を特定:

  • プロジェクト構造: フレームワーク、言語、ビルドシステム
  • サービス: マイクロサービス、API、バックグラウンドワーカー
  • データストア: データベース、キャッシュ、ファイルストレージ
  • 外部連携: サードパーティAPI、SaaSサービス
  • コンポーネント: モジュール、パッケージ、主要クラス
  • リレーションシップ: コンポーネント間の通信方法

4. レビューと承認

ディスカバリーは「保留中」状態でレビューに配置されます:

  1. 発見された各要素をレビュー
  2. 名前、説明、リレーションシップを編集
  3. 正確なディスカバリーを承認
  4. 不正確なものを拒否または修正

対応技術

AIディスカバリーは以下で最適に動作します:

言語

  • JavaScript/TypeScript
  • Python
  • Go
  • Java
  • C#
  • Ruby
  • PHP
  • Rust

フレームワーク

  • React、Next.js、Vue、Angular
  • Express、Fastify、NestJS
  • Django、Flask、FastAPI
  • Spring Boot
  • ASP.NET Core
  • Ruby on Rails

インフラストラクチャ

  • Docker/Kubernetes
  • Terraform
  • AWS CDK
  • クラウド設定ファイル

インクリメンタルディスカバリー

インクリメンタルディスカバリーは、リポジトリ全体ではなく変更されたファイルのみを分析して C4 モデルを最新に保ちます。より高速で、コストが低く、プッシュごとに自動的に実行できます。

動作の仕組み

  1. デフォルトブランチにコードがプッシュされる
  2. Archyl がプッシュイベントを受信(Webhook または GitHub Action 経由)
  3. コミットから変更ファイルが抽出される
  4. ソースファイルのみが分析される(削除ファイルはスキップ)
  5. AI がより小さなファイルセットで実行される
  6. 新しい要素が保留中のディスカバリーとして作成される
  7. 既存の要素は自動的に重複排除される

インクリメンタルディスカバリーの有効化

インクリメンタルディスカバリーを有効にする方法は2つあります:

  • GitHub Webhook — プロジェクトの Webhook 設定で Discovery on Push を有効化
  • GitHub Action (CI/CD) — ワークフローに Archyl Incremental Discovery Action を追加。詳細は GitHub Actions 統合 を参照。
name: Architecture Sync
on:
  push:
    branches: [main]

jobs:
  discovery:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 2
      - uses: archyl/archyl/.github/actions/incremental-discovery@main
        with:
          api-key: ${{ secrets.ARCHYL_API_KEY }}
          project-id: ${{ vars.ARCHYL_PROJECT_ID }}

フルディスカバリー vs インクリメンタルディスカバリー

フルディスカバリー インクリメンタルディスカバリー
スコープ リポジトリ全体 変更ファイルのみ
トリガー 手動(UI/API) 自動(Webhook または GitHub Action)
速度 分単位(リポジトリサイズによる) 秒〜分
AI コスト 高い(全ファイルを分析) 低い(diff のみを分析)
ユースケース 初期セットアップ、大規模リファクタリング 日常のコード変更

ベストプラクティス

小さく始める

大規模なコードベースの場合:

  1. 単一のサービスまたはモジュールから開始
  2. 結果をレビューし改善
  3. 他の領域に段階的に拡張

定期的な更新

ドキュメントを最新に保つ:

  1. 大きな変更後にディスカバリーを実行
  2. 保留中の新しいディスカバリーをレビュー
  3. 必要に応じて既存の要素を更新

手動との組み合わせ

AIディスカバリーは出発点:

  1. 重い作業にはAIを使用
  2. ビジネスコンテキストは手動で追加
  3. リレーションシップと説明を改善

トラブルシューティング

ディスカバリーに時間がかかる

  • 並行処理の設定を下げる
  • 大きなディレクトリ(node_modules、vendorなど)を除外
  • 特定のパスに集中

不正確な結果

  • 随時レビューして修正
  • AIは修正から学習
  • コードコメントにより多くのコンテキストがあると改善