Fallow: Claudeユーザー必見のコード・インテリジェンス・ツール

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00これは Fallo です。TypeScript と JavaScript 用のコードベース インテリジェンス ツールで、
00:00:10未使用コード、重複、不要な複雑さなどをコードベース全体で分析します。
00:00:17つまり、エージェントが質の低いコードを出荷するのを防ぐために、
00:00:23KNIP、JSCPD、ESLint を組み合わせて使う必要はありません。
00:00:29Rust で構築されており、90 以上のプラグインをサポートしているため、
00:00:30ほとんどのフレームワークや人気パッケージで、すぐに使い始めることができます。
00:00:39ただ、JavaScript と TypeScript しかサポートしていない点は、
00:00:43AI アシストを利用する開発者にとって、少し物足りないかもしれません。
00:00:51チャンネル登録をして、詳細を確かめていきましょう。
00:00:56さて、ここに私が取り組んでいる、動画や画像に映画のような質感を加えるプロジェクトがあります。
00:01:02大部分を Claude Code で構築したため、ある程度の「AI 特有の癖」があるはずです。
00:01:07このプロジェクトの新機能に関する PR もありますが、これについては後ほど説明します。
00:01:12GitHub が誤って消してしまわなければの話ですが。
00:01:16まずは、BunX を使って summary フラグ付きで Fallo を実行してみます。
00:01:17インストール不要で実行でき、プロジェクトの現状を把握できます。
00:01:24未使用コードの概要、重複状況、そして複雑さの健全性サマリーが表示されました。
00:01:27git の状態を確認すると、キャッシュを含む新しい .fallo ディレクトリが追加されています。
00:01:33これにより、次回以降のコマンド実行が高速化され、スナップショットやプラグイン情報が保持されます。
00:01:38ここで、健全性スコアがしきい値を 41 上回っていることに気づいたかもしれません。
00:01:43これが何を意味するのか説明しましょう。
00:01:46Fallo の健全性スコアは、循環的複雑度と認知的複雑度を算出することで計算されます。
00:01:49そして、特定の数式を用いて複雑度の密度を導き出します。
00:01:55これらすべてを使用して、保守性指数を算出します。これが画面に表示されているスコアです。
00:01:57このスコアに基づき、41 個のファイルでリファクタリングが必要だと検出されました。
00:02:00ここから、特定の領域についての詳細なレポートを得るために、各種コマンドを実行できます。
00:02:06例えば、健全性に焦点を当てたい場合は、このコマンドを実行します。
00:02:07しばらくすると、健全性に問題のあるファイルがすべてリストアップされます。
00:02:14ちなみに「CRAP」とは、Change Risk Anti-Patterns(変更リスク・アンチパターン)の略称です。
00:02:18詳細についてはドキュメントで確認できます。
00:02:23このレベルの詳細情報があれば、AI エージェントも何を修正すべきか容易に理解できます。
00:02:27実際、重複のレポートはさらに分かりやすいです。正確なファイル名と行番号が表示されるからです。
00:02:32今は、その重複の修正を進めてみましょう。
00:02:35必要であれば、fallo 設定ファイルを追加して、特定のパターンや依存関係を無視するように設定したり、
00:02:38重複や健全性のカスタム設定、さらには「バウンダリ(境界)」を設定することも可能です。
00:02:43これは、どのディレクトリが他のどのディレクトリからインポート可能かを宣言できる非常に便利な機能です。
00:02:46しかし、今回はそこまで複雑な設定は不要なので、デフォルト設定のまま進めます。
00:02:49次に、fallo fix コマンドを実行するか、dry run フラグを付けて実行内容を確認します。
00:02:55これは修正可能なすべての問題に対処しようとするものです。
00:03:03ご覧の通り、不要なエクスポートが多数削除される予定です。
00:03:10ですが、私は Fallo の自動修正を完全には信頼していません。コードの文脈や、
00:03:16各関数の役割、全体的な連携についてまでは把握していないからです。
00:03:22そこで、fix フラグを使う代わりに、Fallo を AI エージェントに連携させます。
00:03:24MCP サーバー経由、あるいは VS Code プラグイン(Cursor でも動作するはずです)で行えます。
00:03:29今回はシンプルに「fallo skill」をインストールします。これにはガードレールや
00:03:34エージェント用のルール、よくある落とし穴などの情報が含まれています。
00:03:39スキルをインストールしたら、Claude Code を起動し、次のようなプロンプトを入力します。
00:03:46「プロジェクトを読み込んで構造を理解し、Fallo を実行して重複コードを処理して。
00:03:54ただし、削除によって基幹機能が壊れないように注意すること。」
00:04:00「完了したら、変更を機能ブランチにプッシュし、テストを実行して動作を確認して。」
00:04:02見ての通り、Fallo スキルが読み込まれました。
00:04:12その後、fallo dupes コマンドが実行され、マシンフレンドリーな JSON 形式で出力されます。
00:04:16約 4 分後、Claude は Fallo が提案したすべてのファイルではなく、3 つのファイルを修正しました。
00:04:24他のファイルはテスト用で、意図的にコードが重複している場合があるためです。
00:04:28PR の作成も依頼しました。内容を確認すると、54 行が追加され、43 行が削除されています。
00:04:30これは、今後のレポートでテストファイルを無視するために、
00:04:35約 20 行の fallo 設定ファイルを追加するように指示したためです。
00:04:41もちろん、Claude Code や他のエージェントを使い続け、複雑度の問題や未使用コードの修正も進めるべきです。
00:04:49さらに、Fallo は PR のレビューも可能です。
00:04:59先ほどの PR を見てみましょう。fallo audit コマンドを実行すると、
00:05:08メインブランチとの差分を確認し、そのブランチ固有の問題のみを修正できます。
00:05:11別のブランチを基準にしたい場合は、base フラグを使用するだけです。
00:05:19また、毎回 Claude に Fallo を使うよう指示するのが面倒なら、setup hooks コマンドを実行すれば、
00:05:36Fallo 用の Claude Code フックを自動生成できます。
00:05:46Fallo は GitHub Actions としても動作し、PR にアノテーション(注釈)を付けることもできます。

Key Takeaway

FalloはRust製の高速な解析とAIエージェントへの最適化により、未使用コードや重複、複雑度の問題を自動修正・監査可能な開発環境を構築する。

Highlights

  • FalloはTypeScriptとJavaScriptに特化したRust製のコードベースインテリジェンスツールであり、90以上のプラグインをサポートしている。

  • KNIP、JSCPD、ESLintの機能を統合し、未使用コードの検出、コードの重複分析、複雑度の算出を一括で実行できる。

  • 循環的複雑度と認知的複雑度を数式に当てはめて保守性指数(Maintainability Index)を算出し、リファクタリングが必要な箇所を特定する。

  • GitHub Actionsと連携してプルリクエストに直接注釈を付ける機能や、Claude Code用のフックを自動生成するセットアップ機能を備えている。

  • fallo auditコマンドによりメインブランチとの差分のみを分析対象にでき、現在のブランチで発生した新しい問題のみを抽出できる。

Timeline

Falloの概要とコア機能

  • TypeScriptとJavaScriptのプロジェクト全体で未使用コード、重複、複雑さを分析する。
  • Rustで構築されており、高速な動作と90種類以上のプラグインサポートを実現している。
  • KNIPやESLintなどの複数のツールを個別に管理する手間を省き、コードの質を一元管理できる。

コードベースの品質を維持するためのインテリジェンスツールであり、特にAIエージェントが生成するコードの「癖」や質の低下を防ぐ役割を果たす。現時点では対応言語がJavaScript系に限定されているものの、主要なフレームワークやパッケージの多くですぐに導入可能である。

プロジェクトの健全性分析とスコアリング

  • BunX経由でインストール不要のままsummaryフラグを実行し、現状のサマリーを即座に把握できる。
  • 保守性指数は循環的複雑度と認知的複雑度から算出される複雑度の密度に基づいている。
  • CRAP(Change Risk Anti-Patterns)指標を用いて変更リスクの高い領域を特定する。

実行時に生成される.falloディレクトリにはキャッシュやスナップショットが保存され、2回目以降の解析が高速化される。詳細なレポートには正確なファイル名と行番号が含まれるため、開発者やAIが修正箇所を迷うことはない。バウンダリ機能を使えば、ディレクトリ間のインポート制限を宣言してアーキテクチャを制御することも可能である。

AIエージェントとの連携による自動修正

  • fallo skillを導入することでClaude CodeなどのAIエージェントにガードレールや修正ルールを付与できる。
  • AIはFalloが出力するマシンフレンドリーなJSON形式を読み取り、文脈に合わせた最適な修正を行う。
  • テストファイル等の意図的な重複を無視するように設定ファイルを自動生成させ、ノイズを削減する。

単なる自動修正コマンド(fallo fix)ではコードの意図まで把握できないが、AIエージェントと組み合わせることで基幹機能を壊さない高度なリファクタリングが可能になる。実際にClaude Codeを使用して重複を削除し、同時に今後の解析で無視すべきファイルを指定する設定ファイルを追加する一連の流れが実証されている。

PRレビューとワークフローの自動化

  • fallo auditコマンドはベースブランチとの比較を行い、新規追加された問題のみを報告する。
  • setup hooksコマンドを実行すると、Claude Codeで常にFalloを使用するためのフックが自動で作成される。
  • GitHub Actionsとの統合により、プルリクエストに対して自動的にアノテーション(注釈)を追加できる。

開発フローの各段階にFalloを組み込むことで、手動での確認作業を最小限に抑えられる。特にCI/CDパイプラインやAIチャットボットとの連携機能が充実しており、プロジェクトの保守性を継続的に監視する体制を容易に構築できる。

Community Posts

View all posts