# MaguyvaのJavaScript対応: 混在ランタイムのリポジトリのためのAI検索

Canonical source: https://maguyva.ai/ja/languages/javascript

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

MaguyvaはAST解析とシンボル抽出によりJavaScriptに対応しており、AIエージェントが単純な文字列検索に頼ることなく、Nodeのサービス、ブラウザコード、スクリプト、レガシーモジュールを横断して作業できるようにします。

## 対応状況スナップショット

- 対応レベル: AST・シンボル対応
- プログラミング
- 拡張子: .cjs, .js, .mjs, .spec.js, .stories.js, .test.js
- 構文を考慮した検索と構造コンテキストのための実際のAST解析。
- 名前付きシンボルはセマンティック検索と相互参照に利用されます。関係抽出が有効な場合は、グラフナビゲーションも利用できます。
- この言語は、グラフを考慮した検索にシンボルと関係情報を提供します。対応するエッジの種類は、その言語固有の構文要素によって異なります。
- AST解析とシンボル抽出の両方に対応しています。

## 最適な用途

- 1つのモジュールシステムや1世代のフレームワークへの統一が、いまだに完了していないNode/ブラウザのリポジトリ。
- レガシーなJavaScriptを保守しながら、TypeScriptや新しいパッケージ境界を段階的に導入しているチーム。
- その場しのぎのリポジトリ検索ではなく、`.js`、`.mjs`、`.cjs`にまたがる構造が必要なエージェントワークフロー。

## エージェントワークフロー

- 編集する前に、古いJavaScriptモジュールを通じてリクエストパスやビルドステップをたどる。
- リポジトリ全体で、同じ挙動のCommonJS実装とESM実装を比較する。
- 新しい抽象化を導入する前に、スクリプト、ユーティリティ、フロントエンドコンポーネントに繰り返し現れるパターンを見つける。

## 混在したJavaScriptリポジトリになお構造を理解した検索が必要な理由

多くのAIコードツールは、JavaScriptを「本物の」TypeScriptに至る前の乱雑な過渡状態として、それとなく扱っています。それは、実際の本番リポジトリがどう見えるかを見落としています。JavaScriptは今も、ビルドステップ、プラグインシステム、ブラウザコード、タスクスクリプト、そして誰もきれいに書き直す予算を確保できていない息の長いサービスパスを担っています。

それゆえ、JavaScript対応の本質はきれいな構文よりも歴史にあります。危険なのはファイルをパースすることではありません。危険なのは、そのモジュールやヘルパーがCommonJSに属するのか、ESMに属するのか、ブラウザコードに属するのか、あるいは何らかの古いローカルパターンに属するのかを理解しないまま編集することです。

## MaguyvaがJavaScriptで実際に抽出するもの

Maguyvaは`.js`、`.mjs`、`.cjs`をカバーし、メンバー修飾された呼び出しを正規化し、フロントエンドとバックエンドの境界があいまいなJavaScriptコードベースにおいてJSXコンポーネントのヒューリスティックをサポートします。また、標準的なブラウザおよびNodeランタイムのノイズを大量にフィルタリングすることで、リポジトリ固有の関係性を見えやすく保ちます。

これは、同じ概念が複数のファイルスタイルにまたがって存在しうる、あるいは正確な命名がしばしば一貫していない、古いリポジトリや混在リポジトリで役立ちます。

## 混在ランタイムのリポジトリに役立つMCPワークフロー

実践的なワークフローは、たいてい次のようになります。

- `text_pattern_search`を使う — `module.exports`のような正確な文字列、イベント名、古い設定マーカーに対して。
- `intelligent_search`を使う — 「レガシーなアップロードフロー」や「ブラウザバンドル内で認証がチェックされている場所」のような、挙動レベルの発見が必要なとき。
- `get_task_context`を使う — 命名が一貫しておらず、エージェントが何かを編集する前に関連情報をまとめた要約が欲しいとき。

## このページが役立つ場面

このページは、移行がすでに完了したふりをしているチームのためではなく、今もJavaScriptが意味のある割合を占めているリポジトリのためのものです。現在のリポジトリが大部分TypeScriptであれば、[TypeScript](/ja/languages/typescript)から始めてください。古いWebスタックがサーバーサイドのテンプレートやPHPにまで今も及んでいる場合は、[PHPガイド](/ja/languages/php)がより関連性の高い併読先です。

## エンジンの詳細

- JavaScriptの対応は `.js`、`.mjs`、`.cjs` をカバーしており、1つのリポジトリ内で複数のモジュール形式が混在している場合に重要です。
- メンバーのプレフィックスと呼び出し引数は正規化されるため、古いファイル同士でも繰り返し使われるヘルパーを比較しやすくなります。
- JSXコンポーネントのヒューリスティックに対応しており、ブラウザやNodeの組み込みグローバルによる大量のノイズは関係性から除外されます。

## 役立つMCPエントリーポイント

- `text_pattern_search`: `module.exports` やイベント名、レガシーな設定マーカーなど、正確な文字列を検索する際に、検索範囲を広げる前にまず使用してください。
- `intelligent_search`: 命名が一貫しておらず、シンボルではなく「ファイルのアップロードフロー」のような振る舞いを見つけたいときに使用してください。
- `get_task_context`: リポジトリが乱雑になっていて、レガシーなパスに触れる前にまとまった要約が必要なときに便利です。
