電通総研 テックブログ

電通総研が運営する技術ブログ

【Google Cloud資格】Claude Codeのスキルで勉強効率を上げた話

こんにちは、クロスイノベーション本部リーディングエッジテクノロジーセンターの大岡叡です。
私は、昨年AWS資格を全種類取得しまして、現在Google Cloudの資格勉強をしております。

AWS資格の勉強法をGoogle Cloudの資格勉強にも適用しようと考え、勉強方法の改善検討をしたところ、AIで自動化できる部分があることに気づきました。本記事では、これまでの勉強法の課題、その課題に対するAIを用いた解決策、そして実際に導入してみての所感をお伝えしたいと思います。

これまでの勉強法の課題

これまでのAWS資格勉強は以下のフローで進めていました。

【1問ごとに以下を繰り返す】

1. 問題集を解く
2. 分からなかった知識を公式ドキュメントで調べる
3. Notionに問題形式でまとめる(後から復習に活用)

この中で2と3にかなり時間がかかっていました。

AIを用いた解決策

課題であった「公式ドキュメントの調査」と「Notionへの問題作成」を、Claude Codeのスキル機能を使って自動化しました。

作成したスキル: /mq(Make Question)

作成したスキルはこちら(クリックで表示)

---
name: mq
description: Google Cloud資格試験の勉強用に、問題を1問Notionにtoggle形式で作成する。問題文を指定して呼び出す。
user-invocable: true
argument-hint: "<問題文>"
---

# 試験勉強用 問題作成スキル

ユーザーが指定した問題文に対して、正確な情報に基づいた回答を調査し、Notionページにtoggle形式で1問追加する。

## 対象Notionページ

- **ページURL**: `https://www.notion.so/Page-Title-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
- **ページID**: `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`

## ページ構造

このページには以下の2つのセクションがある:

- `## Google Cloudに関する知識 {color="orange_bg"}` — Google Cloud関連の問題を配置
- `## 一般的な知識 {color="orange_bg"}` — それ以外の一般的な知識の問題を配置

## toggleのフォーマット(Notion-flavored Markdown)

回答作成時・Notion挿入時の両方で使うフォーマット。子要素は必ずタブでインデントすること(インデントしないとtoggle外に出てしまう)。

```
<details>
<summary>**{問題文}**</summary>
    {回答テキスト}
        - {箇条書きポイント1}
        - {箇条書きポイント2}
        - {箇条書きポイント3}
    <empty-block/>
    **参考URL:**
        - [{ページタイトル1}]({URL1})
        - [{ページタイトル2}]({URL2})
</details>
```

## 実行手順

### Step 1: 問題の分類

問題文の内容が以下のどちらに該当するか判断する:

- **Google Cloud関連**: Google Cloudのサービス・機能に関する問題全般。例: Compute Engine、GKE、Cloud Run、Cloud Storage、BigQuery、VPC、IAM、Cloud SQL、Pub/Sub、Vertex AI、Gemini on Google Cloud など。Googleが開発・提供するモデルやツール(Gemma、Gemini、Imagen、NotebookLM、Google AI Studio等)もこちら
- **一般的な知識**: Google固有でない技術知識全般。例: ネットワーキング(TCP/IP、DNS、ロードバランシング)、データベース理論(ACID、CAP定理)、セキュリティ(暗号化、ゼロトラスト)、コンテナ・Kubernetes一般、CI/CD、IaC、機械学習の一般理論、AI倫理、プロンプトエンジニアリング、ソフトウェアアーキテクチャ など

### Step 2: 情報収集 & 挿入位置の特定(並行実行可)

以下の2つは独立しているので、並行して実行してよい。

#### 2a: 情報収集

**Google Cloud関連の場合:**

1. `mcp__google-dev-knowledge__search_documents` で公式ドキュメントを検索
2. 検索結果から最も関連性の高いドキュメントの `parent` を使い、`mcp__google-dev-knowledge__get_documents` で**必ず**フルドキュメントを取得する(検索結果のチャンクだけで回答を作成しない)
3. 取得したドキュメントが問題の回答に不十分な場合は、以下を試みる:
   - 同じ検索結果内の別のドキュメントを `get_documents` で取得する
   - 別のキーワードで `search_documents` から再検索する
4. 取得したドキュメントのURLを参考URLとして記録

**一般的な知識の場合:**

1. `WebFetch` または `WebSearch` で信頼できるソースから情報を収集
2. 参考URLを記録
3. Wikipediaは参考URLとして使用しない。以下のような権威あるソースを優先する:
   - クラウド・インフラ: AWS公式ドキュメント、Microsoft Learn、Red Hat、CNCF
   - ネットワーク・セキュリティ: IETF RFC、OWASP、NIST、Cloudflare Learning
   - データベース・データ: PostgreSQL/MySQL公式ドキュメント、MongoDB University
   - AI/ML: Google for Developers、IBM、NVIDIA Developer Blog、大学サイト(Stanford等)
   - 一般技術: 著名な技術ブログ(Martin Fowler、InfoQ、DataCamp等)

**AWSの知識が必要な場合(カテゴリ問わず):**

問題の回答にAWSサービスの知識が必要な場合:

1. `mcp__aws-documentation-mcp-server__search_documentation` でAWS公式ドキュメントを検索
2. 検索結果から最も関連性の高いページのURLを使い、`mcp__aws-documentation-mcp-server__read_documentation` で**必ず**フルドキュメントを取得する(検索結果のcontextだけで回答を作成しない)
3. 取得したドキュメントが問題の回答に不十分な場合は、以下を試みる:
   - 同じ検索結果内の別のページを `read_documentation` で取得する
   - 別のキーワードで `search_documentation` から再検索する
   - `recommend` で関連コンテンツを探す
4. 必要に応じて `mcp__aws-documentation-mcp-server__recommend` で関連コンテンツも探す

#### 2b: 挿入位置の特定(state.json)

`state.json`(スキルと同じディレクトリ)を `Read` ツールで読み取り、対象セクションの最後の参考URL行を取得する。

- **Google Cloud関連**: `google_cloud_last_ref` の値を使う
- **一般的な知識**: `general_last_ref` の値を使う

`state.json` が存在しない場合のみ、`mcp__notion__notion-fetch` でページ全体を取得し、各セクションの最後の参考URL行を特定する。

### Step 3: 回答の作成

収集した情報に基づき、上記のtoggleフォーマットで1問分の回答を作成する:

- 正確かつ簡潔な回答。箇条書きで要点を整理
- 参考URLは必ず含める
- 作成するのは **1問のみ**

### Step 4: Notionページを更新

`mcp__notion__notion-update-page` を使って、適切なセクションにtoggleブロックを1つ追加する。

#### 挿入方法: replace_content_range

`insert_content_after` は使わない(`</details>` がページ内に多数存在し、`...` で繋ぐと複数マッチしてエラーになるため)。

Step 2bで取得した参考URL行をセレクタの起点に使い、`replace_content_range` で置換する。

**セクション内にtoggleが既にある場合:**

最後のtoggle内の参考URL最終行から、セクション直後のランドマークまでを `selection_with_ellipsis` で指定する。

- **Google Cloudセクションのランドマーク**: `## 一般的な知識 {color="orange_bg"}`
- **一般的な知識セクションのランドマーク**: `<empty-block/>`(ページ末尾のもの。参考URL起点なら一意になる)

`new_str` には、参考URL最終行 + `</details>` + 新しいtoggle + ランドマーク をすべて含める。

実例(Google Cloudセクション):

```
selection_with_ellipsis: "arXiv](https://arxiv.org/abs/2406.11409)...## 一般的な知識 {color=\"orange_bg\"}"

new_str:
  {最後の参考URL}
  </details>
  {新しいtoggle}
  ## 一般的な知識 {color="orange_bg"}
```

実例(一般的な知識セクション):

```
selection_with_ellipsis: "{最後の参考URL}...<empty-block/>"

new_str:
  {最後の参考URL}
  </details>
  {新しいtoggle}
  <empty-block/>
```

**セクション内にtoggleがない(空のセクション)場合:**

セクション見出し+改行+`<empty-block/>` をフルテキストで `selection_with_ellipsis` に指定する(省略 `...` は使わない)。

#### selection_with_ellipsis のルール

1. **セレクタ内で `...` の前後それぞれ最低20文字以上を確保する**(短すぎると一意にならない)
2. **`</details>` をセレクタの終端に使わない**(ページ内に多数存在し、複数マッチする)
3. **セクション見出し単体をセレクタに使わない**(2件マッチする)。ただし、ランドマーク(セレクタ末尾)として使う場合は、開始位置が一意な参考URLなので問題ない
4. **空セクションでは `...` を使わず、フルテキストを指定する**(`<empty-block/>` が複数箇所にあるため `...` を使うと複数マッチする)
5. **`{{}}` を使わない**: `notion-fetch` ではURLが `{{https://...}}` 形式で返されるが、セレクタには `{{}}` なしのURLを使う

#### 挿入失敗時のフォールバック

`replace_content_range` が失敗した場合、`state.json` のキャッシュが古い可能性がある:

1. `mcp__notion__notion-fetch` でページ全体を取得
2. 対象セクションの最後の参考URL行を特定し直す
3. 正しいセレクタで再度 `replace_content_range` を実行
4. 成功後、`state.json` を更新する

### Step 5: state.json の更新

挿入が成功したら、`state.json``Edit` ツールで更新する。今回追加したtoggleの参考URL最終行で、対象セクションのキーを上書きする。

- **Google Cloud関連**: `google_cloud_last_ref` を更新
- **一般的な知識**: `general_last_ref` を更新

これにより、次回のスキル実行時にフルフェッチなしで挿入位置を特定できる。

## 出力例

```
<details>
<summary>**Vertex AI Searchとは何ですか?主な機能と用途を説明してください。**</summary>
    Vertex AI Searchは、Google Cloudが提供するエンタープライズ向けの検索ソリューションです。
        - Webサイト、構造化データ、非構造化データに対して高品質な検索体験を提供
        - LLMを活用した自然言語での検索が可能
        - RAG(Retrieval-Augmented Generation)パターンの実装に活用できる
    <empty-block/>
    **参考URL:**
        - [Vertex AI Search overview](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction)
</details>
```

今回作成したのは、問題文を渡すだけで、公式ドキュメント調査からNotionへの問題・解答作成までを一気通貫で行うスキルです。
公式ドキュメントの調査は、Google Developer Knowledge MCPとAWS Documentation MCPを使用し、Notionへの問題・解答作成はNotion MCPを利用します。

以下がNoteBookLMに作ってもらった、このスキルのイメージです。

スキルを使うための準備

以下の準備が必要です。

  1. 上記スキルのマークダウンをSKILL.mdとして作成し、任意のディレクトリの.claude/skills/mq/配下に配置する。

  2. Google Developer Knowledge MCPをセットアップする。

    • Developer Knowledge MCP公式ドキュメントに従って、APIキーを発行する。

    • 以下のコマンドを.claudeがあるプロジェクトルートで実行する。YOUR_API_KEYの部分には、発行したAPIキーの値を入力する。

      claude mcp add google-dev-knowledge --scope project --transport http https://developerknowledge.googleapis.com/mcp --header "X-Goog-Api-Key: YOUR_API_KEY"
      
  3. AWS Documentation MCPの設定をする。以下のコマンドをプロジェクトルートで実行する。

   claude mcp add aws-documentation-mcp-server -s project -e FASTMCP_LOG_LEVEL=ERROR -e AWS_DOCUMENTATION_PARTITION=aws -- uvx awslabs.aws-documentation-mcp-server@latest
  1. Notionの準備及びNotion MCPの準備
    • 以下のスクショのように、Notionのページに「Google Cloudに関する知識」と「一般的な知識」のセクションを作成する。##2つの文字サイズで、背景色をオレンジに設定する。(ページのタイトルは受験する資格名など何でもよい。)

      Notionページのスクリーンショット
    • Notion MCPの設定をする。以下のコマンドをプロジェクトルートで実行する。
      claude mcp add --transport http notion --scope project https://mcp.notion.com/mcp
  2. Notionの認証&スキル更新
    • プロジェクトルートでClaude Codeを立ち上げ、/mcpコマンドを使用してNotion MCPの認証を通す。
    • 以下のプロンプトをClaude Codeに投げる。<あなたのNotion URL>の部分は、4. で作成したNotionのページのURLに置き換える。
      <あなたのNotion URL>
      .claude\skills\mq\SKILL.mdのページURLとページIDを上記URLに基づいて更新してください。

以上で準備は終わりです。

使い方

【Google Cloudに関する問題を作成(メインの使い方)】

プロジェクトルートでClaude Codeを起動し、以下のように入力するだけです。

/mq Cloud Runとは何ですか?  

するとClaude CodeがGoogle Developer Knowledge MCPを用いて、公式ドキュメントを取得し、正しい情報に基づいて問題・解答を自動でNotion上に作成してくれます。

toggleの中身の一番下に参考URLが書かれ、公式ドキュメントへの導線が張られています。

【AWSサービスとの比較問題を作成】

AWSサービスとGoogle Cloudを比較する問題も作成できます。
その場合は、Claude CodeはGoogle Developer Knowledge MCPだけでなくAWS Documentation MCPを利用して、正しい情報に基づいて問題・解答の作成をしてくれます。

【一般的な知識問題を作成】

クラウドベンダー資格は、問題を解くうえで一般的なIT知識が必要になることも多くあります。
その一般的な知識をまとめるセクションも用意しており、クラウドサービスには関係のない問題も作成することができます。

やり方は同じで、以下のようなプロンプトをClaude Codeに投げます。セクションの分別はClaude Codeがよろしくやってくれるようにスキルで定義しています。

/mq OIDCとOauth2.0の違いは? 

導入してみての所感

このClaude Codeのスキルを使用した勉強をして、先日Google Cloud Generative AI Leaderに無事合格しました。
今まで時間がかかっていた「公式ドキュメントの調査」と「Notionへの問題作成」をClaude Codeに全任せできたので、「問題を解く」・「知識を暗記する」この二つに集中でき、学習効率が飛躍的に向上したように感じました。

まとめ

今回はClaude Codeのスキルを使って勉強効率を上げた話をご紹介しました。
少しでも皆さんが資格勉強をする際の参考になったら嬉しいです。

最後までお読みいただきありがとうございました!

私たちは一緒に働いてくれる仲間を募集しています!

電通総研 キャリア採用サイト 電通総研 新卒採用サイト

執筆:@ooka.toru
レビュー:@miyazawa.hibiki
Shodoで執筆されました