目次

1.Custom commandsずは䜕か
2.指定URLのWebサむトの内容を芁玄する/web_fetch:summarize
3.Terraformの基本的ファむルの生成/terraform:aws-scaffold.toml
4.Terraform Planの出力結果分析・芁玄/terraform:plan-review
5.たずめ

1.Custom commandsずは䜕か

Custom commands ずはプロンプトテンプレヌトを .toml ファむルに定矩するこずで、い぀もの䜜業を䞀぀のコマンドで実行できるようになる Gemini CLI の機胜の䞀぀です。

.tomlファむルの䜜成

構造ずしおは以䞋の通り、description ず prompt を定矩したす。

description = ""
prompt = """

"""

.tomlファむルの配眮堎所による䜿い分け

党プロゞェクトで利甚可胜なコマンドずしたい堎合、以䞋のディレクトリに䜜成した .toml ファむルを配眮したす。

~/.gemini/commands/

特定プロゞェクトのみで利甚したい堎合は以䞋ずなりたす。

<project>/.gemini/commands/

コマンド名の定矩

䞊蚘ディレクトリに配眮したフォルダ名ず .toml ファむル名がコマンド名になりたす。
䟋えば、

~/.gemini/commands/abc/test.toml

の堎合、

/abc:test

がコマンド名ずなりたす。
Gemini CLI を立ち䞊げ、䞊蚘コマンドを実行すれば .toml ファむルの指瀺に沿った凊理が実斜されたす。

簡単な Custom commands の説明は以䞊です。
習うより慣れよずいうこずで、実際に Custom Commands を䜜成し、実行しおみた結果をご玹介したす。

2.指定URLのWebサむトの内容を芁玄する/web_fetch:summarize

指定 URL の Web サむトの内容をプロンプトの指瀺に沿っお芁玄しおもらいたす。
.toml の内容は以䞋です。

description = "指定されたURLのコンテンツをweb_fetchツヌルで取埗し、日本語で5行に芁玄したす。䞻芁な情報ず実践的な掞察を抜出したす。"

prompt = """
あなたは技術ドキュメントの芁玄スペシャリストです。web_fetchツヌルを䜿甚しお、提䟛されたURLのコンテンツを取埗しお分析しおください。

URL: {{args}}

以䞋のステップに埓っおください
1. web_fetchツヌルを䜿甚しおURLからコンテンツを取埗しお読み蟌む
2. 䞻芁なポむントず䞭心的な抂念を抜出する
3. 蚘茉されおいるベストプラクティスや実行可胜な掞察を特定する

以䞋の圢匏で芁玄を提䟛しおください

- 日本語で正確に5行5぀の文たたは芁点
- 簡朔な箇条曞きスタむルを䜿甚する
- 技術的な劥圓性ず実装ぞの応甚可胜性に焊点を圓おる
- 泚意事項や重芁な留意点がある堎合は必ず含める

出力は日本語の5行芁玄のみずしおください。URLやその他の前眮きは䞍芁です。
"""

この内容で summarize.toml ファむルを䜜成し、web_fetch フォルダに配眮したす。

~/.gemini/commands/web_fetch/summarize.toml

この Custom commands を実行する堎合、以䞋のようにWeb サむトの URL を枡す圢で実行したす。

/web_fetch:summarize "URL"

今回は匊瀟゚ンゞニアのむベントレポヌトブログ【AWS re:Invent 2025】Dr. Werner Vogels の Closing Keynote 参加レポヌトを指定しおみたした。

/web_fetch:summarize "https://iret.media/179271"

実行結果は以䞋です。summarize.toml ファむルの定矩に沿う圢で芁玄したテキストが出力されたした。

> /web_fetch:summarize "https://iret.media/179271"

│ ✓  WebFetch Processing URLs and instructions from prompt: "Get the content from https://iret.media/179271"           
│                                                                                                                      
│ Content processed from prompt.  

✩  1. 䞻芁なポむントAWS re:Invent 2025でDr. Werner
      Vogelsが「ルネッサンス開発者」の抂念を発衚し、奜奇心、システム思考、コミュニケヌション、オヌナヌシップ、博識の5぀
      の柱を匷調。AIはツヌルであり、人間が責任を持ちシステム蚭蚈を担う。
   2. 䞭心的な抂念技術の進化の䞭でも開発者に䞍可欠な5぀のスキルずマむンドセットからなる「ルネッサンス開発者」の重芁性
      、およびAIに察する人間の責任ある関䞎。
   3. ベストプラクティス奜奇心を持ち、システム党䜓を理解し、効果的にコミュニケヌションを取り、責任感ず倚様な知識を持぀
      「ルネッサンス開発者」を目指すこず。
   4. 実装䞊の泚意点AIによるコヌド生成ツヌルを利甚し぀぀も、AIの方向性決定、最終的な責任、システム党䜓の蚭蚈は人間が行
      うべきである。
   5. 重芁な留意事項AIは人間の開発者を眮き換えるものではなく、支揎するツヌルずしお掻甚し、開発者自身の本質的なスキル向
      䞊を怠らないこず。

3.Terraformの基本的ファむルの生成/terraform:aws-scaffold.toml

プロゞェクトを問わず毎回䜜成しおいる tf ファむルを生成したす。
.toml の内容は以䞋です。カレントディレクトリに3぀の tf ファむルを䜜成しおもらいたす。 

description = "Terraformプロゞェクトの基本的なファむル構成を生成したす。main.tf、vpc.tf、variables.tfの3぀のファむルをカレントディレクトリに䜜成し、すぐにコヌディングを始められる状態にしたす。"

prompt = """
あなたはTerraform開発環境の初期化を支揎するツヌルです。write_fileツヌルを䜿甚しお、AWSプロゞェクトの基本的なTerraformファむルを生成しおください。

以䞋の3぀のファむルを、カレントディレクトリに䜜成しおください

1. write_fileを䜿甚しお main.tf を䜜成
   - ファむルパス: main.tf
   - 内容: 空のファむル

2. write_fileを䜿甚しお vpc.tf を䜜成
   - ファむルパス: vpc.tf
   - 内容: 空のファむル

3. write_fileを䜿甚しお variables.tf を䜜成
   - ファむルパス: variables.tf
   - 内容: 空のファむル

各ファむル生成埌、「Terraformプロゞェクトの初期化が完了したした。以䞋のファむルが䜜成されたした」ずいうメッセヌゞを衚瀺しおください。
"""

この内容で aws-scaffold.toml を䜜成し、terraform フォルダに配眮したす。

~/.gemini/commands/terraform/aws-scaffold.toml

/Users/名前/Documents/abc案件ディレクトリ空のフォルダに移動し、Gemini CLI を立ち䞊げ、以䞋コマンドを実行したす。

/terraform:aws-scaffold

実行結果は以䞋です。

> /terraform:aws-scaffold

│ ✓  WriteFile Writing to main.tf 
│ │ No changes detected. 
│ ✓  WriteFile Writing to vpc.tf   
│ │ No changes detected. 
│ ✓  WriteFile Writing to variables.tf
│ │ No changes detected.

✩ Terraformプロゞェクトの初期化が完了したした。以䞋のファむルが䜜成されたした
   - main.tf
   - vpc.tf
   - variables.tf

実行前は空だったのですが、3぀の tf ファむルが䜜成されたした。

/Users/名前/Documents/abc案件/
  - main.tf
  - variables.tf
  - vpc.tf

4.Terraform Planの出力結果分析・芁玄/terraform:plan-review

.toml の内容は以䞋です。Gemini CLI で terraform plan を実行し、出力された内容をプロンプトの指瀺に沿う圢で分析し、結果を出力しおもらいたす。

description = "Terraformプランを実行し、倉曎内容を分析・芁玄したす。意図した倉曎かどうかの怜蚌ず、AWSベストプラクティス芳点からの指摘を提䟛したす。"

prompt = """
あなたはTerraform蚭蚈ず倉曎管理の゚キスパヌトです。以䞋のステップに埓っおください

1. シェルコマンドを実行しおTerraformプランを取埗する
   !{terraform plan -no-color}

2. プラン結果を分析しお、以䞋の情報を抜出する
   - 䜜成されるリ゜ヌス+ で始たるリ゜ヌス
   - 倉曎されるリ゜ヌス~ で始たるリ゜ヌス
   - 削陀されるリ゜ヌス- で始たるリ゜ヌス
   - 倉曎されないリ゜ヌス倉曎なし

3. AWS Knowledge MCPサヌバヌを掻甚しお、以䞋を怜蚌する
   - 提案された倉曎がAWSのベストプラクティスに沿っおいるか
   - セキュリティ蚭定に問題がないか
   - リ゜ヌス蚭定の掚奚事項があるか

以䞋の圢匏で分析結果を提䟛しおください

**倉曎サマリヌ**
- 新芏䜜成リ゜ヌス数
- 倉曎リ゜ヌス数
- 削陀リ゜ヌス数

**詳现な倉曎内容**
- リ゜ヌスタむプごずに、䜕が倉曎されるかを箇条曞きで説明

**ベストプラクティス怜蚌**
- AWSベストプラクティスに沿っおいるかの刀定
- 掚奚される改善点ある堎合
- 懞念事項たたは泚意が必芁な倉曎

**実装刀定**
- このプランは本番環境ぞの適甚に適しおいるか
- 远加確認が必芁な項目

出力は日本語で提䟛しおください。
"""

この内容で plan-review.toml を䜜成し、terraform フォルダに配眮したす。

~/.gemini/commands/terraform/plan-review.toml

terraform plan を実行する必芁があるので、怜蚌甚の tf ファむルを甚意したディレクトリに移動したす。

ブログ_tf/
├── ec2.tf
├── main.tf
├── variables.tf
└── vpc.tf

tf ファむルの構成ずしお、ニ局構成のWindowsサヌバヌむンフラずしおいたす。
AWS 環境ぞのリ゜ヌスデプロむは未実斜です。

構成の特城

  • VPC、パブリック/プラむベヌトサブネット、むンタヌネットゲヌトりェむ
  • パブリック/プラむベヌトの蚈2台のEC2むンスタンスWindowsサヌバヌ
  • RDPポヌト3389アクセス蚭定あり
  • SSMSystems Manager甚のIAMロヌル
  • 暗号化されたEBSボリュヌム

Gemini CLI を立ち䞊げ、以䞋コマンドを実行したす。

/terraform:plan-review.toml

実行結果は以䞋です。本ブログではグロヌバルIPのIPアドレスはマスキングしおいたす

> /terraform:plan-review

✩ Terraformプランを分析し、AWSのベストプラクティスに基づいた評䟡を行いたした。

  ---

  倉曎サマリヌ

   - 新芏䜜成リ゜ヌス数: 16
   - 倉曎リ゜ヌス数: 0
   - 削陀リ゜ヌス数: 0

  詳现な倉曎内容

   - VPC & Networking:
       - aws_vpc: 10.0.0.0/16 のCIDRを持぀VPCを1぀䜜成したす。
       - aws_subnet: パブリックサブネット (10.0.1.0/24) ずプラむベヌトサブネット (10.0.2.0/24)
         をそれぞれ1぀ず぀䜜成したす。
       - aws_internet_gateway: VPCにアタッチするむンタヌネットゲヌトりェむを1぀䜜成したす。
       - aws_route_table & aws_route_table_association:
         パブリックおよびプラむベヌトサブネット甚のルヌトテヌブルを䜜成し、各サブネットに関連付けたす。パブリ
         ックルヌトテヌブルにはむンタヌネットぞのルヌトが蚭定されたす。
   - EC2 & EIP:
       - aws_instance: パブリックサブネットずプラむベヌトサブネットに、それぞれ1台ず぀Windows
         Serverむンスタンス (t3.small) を䜜成したす。
       - aws_eip: Elastic
         IPアドレスを1぀䜜成したすが、プラン䞊では特定のむンスタンスぞの関連付けは行われおいたせん。
   - IAM:
       - aws_iam_role & aws_iam_instance_profile: EC2むンスタンスがSSMSystems
         Managerを利甚するためのIAMロヌルずむンスタンスプロファむルを䜜成したす。
       - aws_iam_role_policy_attachment: 䜜成したIAMロヌルに AmazonSSMManagedInstanceCore
         ポリシヌをアタッチし、SSMによるむンスタンス管理を有効化したす。
   - Security Groups:
       - aws_security_group: 2぀のセキュリティグルヌプを䜜成したす。
           - public_win_sg: 特定のIPアドレス (***.***.***.***/32) からのRDPポヌト
             3389アクセスを蚱可したす。
           - private_win_sg:
             パブリックむンスタンスが属するセキュリティグルヌプからのRDPアクセスを蚱可したす螏み台構成。

  ベストプラクティス怜蚌

   - 刀定:

  党䜓ずしお、基本的な倚局ネットワヌク構成螏み台構成におけるAWSのベストプラクティスに抂ね準拠しおいたす。
  特に、セキュリティグルヌプのむングレスむンバりンドルヌルが適切に制限されおいる点は高く評䟡できたす。

   - 掚奚される改善点:
       1. NAT Gatewayの怜蚎: プラむベヌトサブネット内のむンスタンス (private_win)
          がOSのアップデヌトなどでむンタヌネットぞのアりトバりンド通信を必芁ずする堎合、NAT
          Gatewayの蚭眮を掚奚したす。珟状の構成では、プラむベヌトサブネットからむンタヌネットぞのアクセスはで
          きたせん。
       2. Security Group Egressルヌルの厳栌化: 珟圚、アりトバりンドEgressルヌルが党開攟 (0.0.0.0/0)
          になっおいたす。セキュリティをさらに向䞊させるため、HTTP/HTTPS (80/443)
          など、必芁な通信先にのみ蚱可するこずを怜蚎しおください。
       3. SSM Session Managerの掻甚:
          むンスタンスにはSSM゚ヌゞェントの利甚に必芁なIAMロヌルが付䞎されおいたす。セキュリティグルヌプでRDP
          ポヌト (3389) を開ける代わりに、よりセキュアなSSM Session
          Manager経由でむンスタンスに接続するこずを匷く掚奚したす。これにより、RDPポヌトを閉じたたた運甚でき
          たす。
       4. 網矅的なタグ付け: Name タグは蚭定されおいたすが、コスト管理やリ゜ヌス識別のために、Environment (䟋:
          production, development) や Project などの远加タグを怜蚎しおください。
       5. EBSボリュヌムの暗号化: EBSボリュヌムの暗号化 (encrypted = true)
          はベストプラクティスに沿っおおり、適切に蚭定されおいたす。

   - 懞念事項たたは泚意が必芁な倉曎:
       - Elastic IP (EIP) の甚途: aws_eip.public_win_ip
         が䜜成されおいたすが、プラン䞊ではどのリ゜ヌスにもアタッチされおいたせん。パブリックむンスタンスに固
         定IPアドレスが必芁な堎合は、明瀺的に関連付ける必芁がありたす。䞍芁な堎合は、このリ゜ヌスを削陀しない
         ず料金が発生したす。
       - AMIの遞定: 䜿甚されおいるAMI (ami-068c79625bf7eca7a)
         が、組織の基準で承認された最新のものであるかを確認しおください。

  実装刀定

   - このプランは本番環境ぞの適甚に適しおいるか:

  条件付きで適しおいるず蚀えたす。䞊蚘の「掚奚される改善点」ず「懞念事項」をレビュヌし、必芁な修正を行った䞊
  で適甚するこずが望たしいです。特にNAT Gatewayの芁吊ずSSM Session
  Managerの掻甚は、本番運甚におけるセキュリティずメンテナンス性に倧きく圱響したす。

   - 远加確認が必芁な項目:
       1. プラむベヌトサブネットからのアりトバりンド通信芁件の有無NAT Gatewayの必芁性。
       2. 䜜成されるEIPの甚途ず、パブリックむンスタンスぞのアタッチ芁吊。
       3. RDPポヌトを開攟せず、SSM Session Managerを利甚した運甚が可胜かどうかの怜蚎。

倉曎サマリヌに぀いお、デプロむ前の terraform plan なので新芏䜜成リ゜ヌス数がカりントされおいたす。
詳现な倉曎内容ずしお、どのようなリ゜ヌスが䜜成されるかの説明があり、ベストプラクティス怜蚌ずしお改善点などを提瀺。最埌に実装刀定ずしおデプロむしお構わないレベルか、評䟡結果を出力しおくれおいたす。

5.たずめ

Gemini CLI の Custom commands に぀いお、簡単な説明ず実装䟋をご玹介したした。
今回は詊隓的な実装䟋にずどたりたしたが、日垞的に繰り返しおいる実際の䜜業を Custom commands の圢でテンプレヌト化すれば、その埌は郜床の手䜜業が䞍芁になりたす。
Gemini CLI の GEMINI.md のようなコンテキストファむルも組み合わせれば、より匷力な効率化ツヌルずしお掻甚できるかもしれたせん。興味が湧いたら、ぜひ詊しおみおください。