# GEMINI.mdは、Geminiにあなたのルールを教える。あなたのコードは教えない。

Canonical source: https://maguyva.ai/ja/for-gemini

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).

GEMINI.mdは、作業のコンテキストを定めます。MCPは、Geminiがツールに手を伸ばせるようにします。Maguyvaは、あなたのリポジトリの問い合わせ可能な地図をGeminiに与えるMCPサーバーです。だから、最初の編集がファイル構造の当てずっぽうにならずに済みます。

> GEMINI.mdはコンテキスト。MCPはチャネル。Maguyvaは地図。

## レイヤー構造

4つの考え方。それぞれがひとつの役割を果たします。

### GEMINI.md

このリポジトリで、Geminiがどう振る舞うべきか。

### MCP

Geminiが、外部ツールやコンテキストにどう手を伸ばすか。

### Maguyva

根拠のあるリポジトリの事実を返す、MCPサーバー。

### 課金対象はワークスペース、シートではありません

エージェントはシート料金を払いません。[料金を見る](https://maguyva.ai/ja/pricing)

## GEMINI.mdは作業上のコンテキストです。使いましょう。

永続的な指示は、`GEMINI.md`に置くべきものです。以下のことを書くのに適した場所です:

- Geminiが実行すべき、ビルド、テスト、lintコマンド。
- ディレクトリ単位でスコープされた「常にXをする / 決してYをしない」というガードレール。
- 命名規則とリファクタリングの好み。
- 正式な意思決定ログやアーキテクチャノートへのポインタ。

簡潔にまとめてください。スコープを絞ってください。コミットしてください。

しかし、`GEMINI.md`は、リポジトリ内のすべてのシンボル、ファイル、呼び出し箇所を問い合わせ可能にするインデックスとして設計されたことは一度もありません。

## GEMINI.mdだけでは足りなくなる場所

4つの失敗モード、カードひとつにつきひとつ。

### // コンテキストはインデックスではない

Geminiに*どう作業するか*を教えても、*何が存在するか*は教えられません。見慣れないパッケージでの最初の編集は、ファイルパスや関数名についての当てずっぽうになります。GEMINI.mdは、すべてのシンボルを列挙することはできませんし、そうすべきでもありません。

### // ドキュメントはコードから乖離する

キューのトポロジーを説明するGEMINI.mdの記述は、誰かが新しいコンシューマーを導入するまでは正しい。今や信頼できる情報源はコードであり、ドキュメントは自信満々に古くなっています。Geminiは、間違った方を読んでしまいます。

### // リネームはグラフの問題

「このクラスを参照しているのは何か?」は、マークダウンファイルからは答えられません。Geminiは、モノレポ全体をgrepして祈るか、呼び出し箇所をチャットに貼り付けるようあなたに頼むしかありません。

### // コンテキストウィンドウはタダではない

大きなウィンドウは、問い合わせ可能なインデックスと同じではありません。Geminiが「十分に知っている」と思えるまでGEMINI.mdを読み込ませても、推論の予算を静的なコンテキストの量と引き換えにするだけです。

## 3つのレイヤーがどう組み合わさるか

Geminiユーザーは、すでにこの形で考えています。このページは、それを明確にするべきです。

- **GEMINI.md**: コンテキスト (Geminiがどう振る舞うか)
- **MCP**: チャネル (どう手を伸ばすか)
- **Maguyva**: コードベースの事実 (何を見るか)

- **GEMINI.md**: このリポジトリで、Geminiがどう振る舞うか。
- **MCP**: Geminiが、ツールやコンテキストにどう手を伸ばすか。[(仕様)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: Geminiがコードベースに質問したときに何を見るか。Semantic、AST、グラフ、テキスト検索の結果が、ファイルパスと行番号付きで返ってきます。

> GEMINI.mdは、Geminiに*どう作業するか*を教える。
> Maguyvaは、Geminiに*作業の拠り所*を与える。

## 3つのワークフロー

Gemini特有。Geminiのgrepではなく、実際のコールグラフに根ざしています。

### 01. 共有クラスをリネームする前に、すべての依存元を見つける

```text
gemini> PaymentClient → BillingClientにリネーム

graph::callers(PaymentClient)            7つのパッケージにまたがる12件の参照
graph::importers(src/payments/client.ts)  インポートしている箇所9件
graph::extends(PaymentClient)             サブクラス2つ (RetryClient, MockClient)

→ Geminiは、ファイル一覧を添えた21件の編集からなる移行を提案します。
[exit 0]
```

Geminiは、編集を始める*前に*、Maguyvaに依存元を尋ねます。移行リストは、Geminiの記憶ではなく、実際のグラフに根ざした形で返ってきます。

### 02. テストスタブではなく、実際の実装を見つける

```text
gemini> normalizePhoneNumberはE.164をどのように処理していますか?

semantic::query("normalize phone E.164")
  src/util/phone.ts:88   normalizePhoneNumber()   ← 実装本体
  test/util/phone.spec.ts:14  jest.mock(...)      ← スタブ
[exit 0]
```

名前は嘘をつきます。モックは実際のコードを覆い隠します。Maguyvaは、実際の実装をテストモックより上位にランク付けします。

### 03. リファクタリングの前に、影響範囲を確認する

```text
gemini> QueueDispatcher.publishを呼び出しているのは?

graph::callers(QueueDispatcher.publish)
  src/billing/* に3件    src/audit/* に1件    src/notifications/* に1件
[exit 0]
```

パッケージ横断の呼び出し箇所がインラインで表示されます。差分は、Geminiのgrepではなく、実際にインポートしている箇所に根ざしています。

## Gemini CLIでのセットアップ

3ステップ。Freeプラン: リポジトリ3個, インデックス済みリポジトリ行数、最大5万行、カード不要。

### 01. maguyva.aiでリポジトリをインデックス化

回答を検証できるよう、よく知っているものを選びましょう。

### 02. Gemini CLIの設定にMCPサーバーとしてMaguyvaを追加

`~/.gemini/settings.json`

```json
{
  "mcpServers": {
    "maguyva": {
      "httpUrl": "https://maguyva.tools/mcp",
      "headers": {
        "Authorization": "Bearer ${MAGUYVA_API_KEY}"
      }
    }
  }
}
```

### 03. 答えをすでに知っている質問をひとつ投げてみる

会社全体から始めないでください。1つのリポジトリと、検証可能な質問1つから始めましょう。

## すでに知っているリポジトリを1つインデックス化。

MCP経由でGeminiを接続。検証できる質問を1つ、試してみましょう。
