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 にアノテーション(注釈)を付けることもできます。