HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Arcaide – マルチレベルコールグラフでコードを探索

Show HN: Arcaide – Explore code with multi-level call graphs (arcaide.foo)

7 pointsby aqula2 コメント

要約

Arcaideは、関数レベルだけでなくクラスやパッケージといった高レベルの単位までコードの構造を可視化する「マルチレベルコールグラフ」を提案するツールです。LLMによる意味解析を取り入れ、構造と振る舞いの両方を統合した単一のグラフを生成することで、大規模なコードベースの理解を支援します。このツールは、コードの全体像を把握し、複雑なソフトウェア開発におけるナビゲーションを容易にすることを目指しています。

全文翻訳

新しいコードベースに取り組む際に私がよく行うことの一つは、エントリーポイントを見つけ、コールパスをたどって探索することです。これにより、コード内のさまざまなコンポーネントとその接続方法の全体像を把握できます。これを視覚的な体験に落とし込みたいと考えましたが、従来のコールグラフにはいくつかの問題があります。第一に、コールグラフは関数レベルでのフローを表すため、アーキテクチャのコンテキストが失われます。そして、コールグラフは非常に大きくなりやすく、プログラムのサイズとともに指数関数的に増加する可能性があります。 私が探求しているアプローチは、「マルチレベル」コールグラフを構築することです。これらは、関数レベルだけでなく、クラスやパッケージといったより高レベルの単位にロールアップされたプログラム構造の形式で表現されたコールグラフです。これにより、C4ダイアグラムのように、ズームイン・ズームアウトしてさまざまな抽象度でコードを表示し、関心のある領域を展開し、残りを折りたたむことで大きなグラフをナビゲートできます。 次に、グラフはLLMに渡され、意味解析が行われます。これにより、テレメトリ(診断情報)が検出され、グラフをさらに凝縮するためにそれらをグラフからストリッピングし、外部インターフェースと依存関係を特定してグラフをリッチ化するという2つのことが行われます。結果として、構造的側面と行動的側面の Сboth を組み込んだ単一のグラフが得られます。パッケージレベルの依存関係、クラスの構成と関係、さらには外部サービス、データベース、ユーザーインタラクションを見ることができます。これは、パッケージダイアグラム + クラスダイアグラム + ユースケースダイアグラムが単一の複合ダイアグラムに組み合わされたものと考えてください。 もちろん、最終的にはソースコードが王様です。コードの詳細を理解するためにコードを読むことに代わるものはありません。しかし、地図は地形の代わりにはなりませんが、どこを歩けばよいかを示してくれます。手作業で一行ずつコーディングする時代から、すべてのコードを生成するエージェントをオーケストレーションする時代へと移行するにつれて、「全体像」を維持することの重要性はますます高まっています。私たちは、地形をナビゲートするのに役立つ、より良い地図を必要としています。 ぜひ皆さんの意見を聞かせてください。リンク[1]にあるサンプルダイアグラムをいくつかチェックして、フィードバックを共有してください。プログラム理解に関する皆さんの一般的な考えにも興味があります。 [1] リンク: https://arcaide.foo