TECH PLAY

macOS

イベント

該当するコンテンツが見つかりませんでした

マガジン

該当するコンテンツが見つかりませんでした

技術ブログ

G-gen の杉村です。2026年4月に発表された、Google Cloud や Google Workspace のイチオシアップデートをまとめてご紹介します。記載は全て、記事公開当時のものですのでご留意ください。 はじめに Google Cloud Next '26 の開催 プロダクトの名称変更 概要 Looker Studio → Data Studio(和名: データポータル) Dataplex Universal Catalog → Knowledge Catalog Cloud Composer → Managed Service for Apache Airflow BigLake → Google Cloud Lakehouse Dataproc → Managed Service for Apache Spark Vertex AI → Gemini Enterprise Agent Platform Google Cloud のアップデート オープンモデル Gemma 4 がリリース Cloud Armor に match condition builder が登場(Preview) Google の動画生成 AI モデル Veo 3.1 Lite が Preview 公開 Google Cloud の VPC で Hybrid Subnets が使用可能に Google Cloud コンソールでも Load Balancer 作成時に Certificate Manager 証明書アタッチが可能に Pub/Sub で AI Inference Single Method Transform (SMT)機能が一般公開 BigQuery に AI.AGG 関数が登場(Preview) Cloud SQL でストレージの縮小ができるように すべての Google Cloud 認定資格で日本語版が受験可能に BigQuery Graph が Preview 公開 Privileged Access Manager(PAM)で将来の IAM 権限付与を予約できるように Colab Enterprise で visualization cells が使えるように Cloud Run woker pools が Preview 版 → 一般公開(GA) Google Cloud〜AWS間のPartner Cross-Cloud Interconnectが一般公開(GA) Gemini Enterprise 用の専用 IAM ロールが登場 データポータルで BigQuery の Conversational Analytics が使用可能に Cloud Run でエフェメラルディスクが Preview 公開 Gemini Cloud Assist のサイドパネルが強化 Gemini Enterprise app でカスタム MCP サーバーが接続可能に BigQuery の CDC テーブルからマテリアライズドビューを作成可能に Compute Engine、GKE、Cloud Storage で「AI Zone」が公開 Google SecOps が VPC Service Controls に対応 VPC Service Controls の ingress/egress ルールで IAM ロールが使用可能に Google Workspace のアップデート Google Vids から YouTube への直接エクスポートが可能に Chrome 拡張機能 Google Vids Screen Recorder が登場 Gemini アプリの macOS 版ネイティブデスクトップアプリが登場 Gemini アプリで会話結果から Docs や PDF を生成可能に Google Meet の Take notes for me(自動議事録)のカスタマイズが可能に はじめに 当記事では、毎月の Google Cloud(旧称 GCP)や Google Workspace(旧称 GSuite)のアップデートのうち、特に重要なものをまとめます。 また当記事は、Google Cloud に関するある程度の知識を前提に記載されています。前提知識を得るには、ぜひ以下の記事もご参照ください。 blog.g-gen.co.jp リンク先の公式ガイドは、英語版で表示しないと最新情報が反映されていない場合がありますためご注意ください。 Google Cloud Next '26 の開催 Google Cloud の旗艦イベントである Google Cloud Next が、米国ネバダ州ラスベガスにおいて4月22日(水)から24日(金)までの3日間、開催された。 Agentic(エージェンティックな、自律的な)をテーマに、数多くの新機能が発表された。発表された機能の中には、既に一般公開(GA)されているもの、Preview 公開されているもの、まだ使用可能になっていないものなどが混同している。 主要な発表がされたキーノート(基調講演)については、以下の記事を参照されたい。 blog.g-gen.co.jp blog.g-gen.co.jp また G-gen では、現地に派遣したエンジニアや日本からリモートで情報収集するエンジニアが、各種セッションレポートを公開している。以下のカテゴリ一覧から、Google Cloud Next '26 の関連記事にアクセスできる。 blog.g-gen.co.jp プロダクトの名称変更 概要 2026年4月には以下のように、プロダクトの名称変更が相次いだ。 旧名称 新名称 Looker Studio Data Studio(和名: データポータル) Dataplex Universal Catalog Knowledge Catalog Cloud Composer Managed Service for Apache Airflow BigLake Google Cloud Lakehouse Dataproc Managed Service for Apache Spark Vertex AI Gemini Enterprise Agent Platform Gemini Enterprise Gemini Enterprise app Looker Studio → Data Studio(和名: データポータル) Data Studio returns as new home for Data Cloud assets (2026-04-11) Looker Studio は Data Studio(和名: データポータル)に名前が再変更された。昔の名前に戻ったことになる。経緯は以下のとおり。 もともとは「英名: Data Studio / 和名: データポータル」という名称だった 日本では商標の関係で「Data Studio」という名称が使えないため「データポータル」と表記される 2022年10月の Google Cloud Next '22 で「Looker Studio」に名前が変更され、Looker ブランドに統一された。Looker と Looker Studio の2つの製品が存在する状態になり、混乱を呼んだ 2026年4月に「英名: Data Studio / 和名: データポータル」に戻った システム的には以下の変更がされた。 UI 上の表記が「データポータル(Data Studio)」になった 従来の URL( lookerstudio.google.com )にアクセスすると、新しい URL( datastudio.google.com )にリダイレクトされる Dataplex Universal Catalog → Knowledge Catalog Knowledge Catalog release notes - April 10, 2026 Dataplex Universal Catalog は Knowledge Catalog に改名された。 フルマネージドのデータカタログサービス。今回で4回目の名称変更となる。名称の変遷は以下のとおり。 Data Catalog → Dataplex Catalog → BigQuery universal catalog → Dataplex Universal Catalog → Knowledge Catalog Cloud Composer → Managed Service for Apache Airflow Cloud Composer release notes - April 15, 2026 Cloud Composer は Managed Service for Apache Airflow に改名された。 フルマネージドの Apache Airflow であり、データパイプラインの実装等に使われるマネージドサービス。 BigLake → Google Cloud Lakehouse What is Google Cloud Lakehouse? (2026-04-20) BigLake が Google Cloud Lakehouse に改称。 Google Cloud Lakehouse は、Apache Spark、Apache Flink、Trino といったオープンソースのクエリエンジンとの互換性を持つ、レイクハウスフレームワーク。BigQuery を基幹技術とする。 Dataproc → Managed Service for Apache Spark Managed Service for Apache Spark cluster deployment overview (2026-04-22) Dataproc が Managed Service for Apache Spark に改称。 Managed Service for Apache Spark はその名のとおり、フルマネージドの Apache Spark クラスタ。 Vertex AI → Gemini Enterprise Agent Platform Vertex AI to Gemini Enterprise Agent Platform naming changes (2026-04-22) Vertex AI は、Gemini Enterprise Agent Platform と改名された。これに伴い、これまで Gemini Enterprise と呼ばれていた Web サービスは、Gemini Enterprise app と改名された。また Vertex AI プロダクト群は、以下のように名称が変更となる(一部のみ抜粋)。 旧称 旧名称 Vertex AI Gemini Enterprise Agent Platform Gemini Enterprise Gemini Enterprise app Generative AI on Vertex AI Generative AI Vertex AI Studio Agent Studio Vertex AI API Agent Platform API Vertex AI Agent Engine Agent Runtime Vertex AI Search Agent Search Vertex AI Search for Commerce Agent Search for Commerce Vertex AI Conversation Agent Conversation Vertex AI Vector Search Vector Search Vertex AI Training Agent Platform Managed Training Vertex AI Pipelines Agent Platform Pipelines Google Cloud のアップデート オープンモデル Gemma 4 がリリース Gemma 4 モデルの概要 (2026-03-31) オープンモデル Gemma 4 がリリース。商用利用可。以下の種類がある。 E2B / E4B : モバイル、エッジ、ブラウザ向け 31B : より高密度 26B A4B : 高スループットで高度な推論向け Cloud Armor に match condition builder が登場(Preview) Use the match condition builder (2026-03-31) フルマネージド WAF である Cloud Armor に match condition builder が登場(Preview)。 CEL 文を書く時の UI 補助ツール。ルールを書く負担が軽減される。 Google の動画生成 AI モデル Veo 3.1 Lite が Preview 公開 Veo 3.1 Lite Generate Preview (2026-04-02) Google の動画生成 AI モデル Veo 3.1 Lite が Preview 公開。 Veo 3.1 < 3.1 Fast < 3.1 Lite の順で生成秒数あたりの料金単価が安く、Lite が最も安価なモデルとなる。 Google Cloud の VPC で Hybrid Subnets が使用可能に About migrating to Google Cloud with Hybrid Subnets (2026-04-03) Google Cloud の VPC で Hybrid Subnets が使用可能になった。 クラウド側サブネットにオンプレと同じ CIDR を持たせ、IP アドレスを変えずにサーバーをクラウドへ移行できる。オンプレ側ルーターに Proxy ARP の設定が必要であり、またクラウド側のルーティングも少しトリッキーになる。 Google Cloud コンソールでも Load Balancer 作成時に Certificate Manager 証明書アタッチが可能に Google Cloud release notes - April 05, 2026 (2026-04-05) Cloud Load Balancer 作成時に Certificate Manager 証明書のアタッチが Google Cloud コンソールでもできるようになった。 従来は DNS 認証した証明書だと gcloud コマンド等を使う必要があった。今後は証明書マップを UI 上で選択できる。 Pub/Sub で AI Inference Single Method Transform (SMT)機能が一般公開 AI Inference SMT (2026-04-06) Pub/Sub で AI Inference Single Method Transform (SMT)機能が一般公開。Pub/Sub トピックまたはサブスクリプション内のメッセージを Gemini 等の AI モデルで加工。以下のような用途がある。 メッセージに対してリアルタイムで AI モデルによる推論結果を追加(エンリッチメント) アプリケーション側の処理のオフロード 以下の記事も参照。 blog.g-gen.co.jp BigQuery に AI.AGG 関数が登場(Preview) The AI.AGG function (2026-04-06) BigQuery に AI.AGG 関数が登場(Preview)。Cloud Storage 上の非構造化データ(画像またはテキスト)に対して Gemini を使い「意味的な集計」のような処理ができる。感情分析、コンテンツ要約、ログ分析など。 Cloud SQL でストレージの縮小ができるように About storage shrink (2026-04-06) Cloud SQL でストレージの縮小ができるようになった。従来は拡大はできたが縮小はできなかった。インスタンスの再起動が必要。 プライマリインスタンスとリードレプリカの両方で可能。 すべての Google Cloud 認定資格で日本語版が受験可能に Google Cloud 認定資格の一覧を解説。全部で何個ある?難易度は? (2026-04-08) これまで日本語版しか提供されていなかった以下の2試験の日本語版が公開された。 Professional Security Operations Engineer Professional Cloud Database Engineer これをもって、14種類すべての Google Cloud 認定資格が、日本語で受験可能になった、 以下の記事も参照。 blog.g-gen.co.jp BigQuery Graph が Preview 公開 Introduction to BigQuery Graph (2026-04-09) BigQuery Graph が Preview 公開。 Graph Query Language(GQL)を使ってデータ間の関係性を可視化できる。CREATE PROPERTY GRAPH 文でノードテーブル・エッジテーブルを事前に定義。 Privileged Access Manager(PAM)で将来の IAM 権限付与を予約できるように Grant scheduling (2026-04-13) Privileged Access Manager(PAM)で将来の IAM 権限付与を予約できるようになった。最大7日後の予約が可能。 Colab Enterprise で visualization cells が使えるように Use visualization cells (2026-04-13) Colab Enterprise で visualization cells が使えるように。データフレームに入れた値を基にチャート(図表)を簡単に UI で作成できる。BigQuery → df → 可視化を UI 上で簡単に行える。 Colab Enterprise の visualization cells Cloud Run woker pools が Preview 版 → 一般公開(GA) Deploy worker pools to Cloud Run (2026-04-14) Cloud Run woker pools が Preview 版 → 一般公開(GA)。 Pub/Sub などに対してタスクを取得する pull 型ワークロードを実行するためのフルマネージドのコンテナ基盤。高いコスト効率でコンテナのジョブを実行できる。 Google Cloud〜AWS間のPartner Cross-Cloud Interconnectが一般公開(GA) Partner Cross-Cloud Interconnect for AWS overview (2026-04-14) Google Cloud と AWS を容易に専用線接続できる Partner Cross-Cloud Interconnect が一般公開(GA)。 VPC ピアリングまたは Network Connectivity Center 経由で接続できるため、かなり手軽に Google Cloud 〜 AWS 間で専用線確立が可能。 最短で当日中に接続を確立できる。帯域は1Gbps〜100Gbps。 Gemini Enterprise 用の専用 IAM ロールが登場 IAM roles and permissions (2026-04-15) Gemini Enterprise 用の専用 IAM ロールが登場。 Gemini Enterprise 管理者( roles/discoveryengine.agentspaceAdmin ) Gemini Enterprise ユーザー( roles/discoveryengine.agentspaceUser ) これまでは事前定義ロールとして「ディスカバリー エンジン管理者( roles/discoveryengine.admin )」および「ディスカバリー エンジン ユーザー( roles/discoveryengine.user )」が存在していた。 なお2026年4月現在、これらのロールはそれぞれ名称が違うだけで、含まれている権限が全く同一である。 Gemini Enterprise 管理者 <=> ディスカバリー エンジン管理者 Gemini Enterprise ユーザー <=> ディスカバリー エンジン ユーザー データポータルで BigQuery の Conversational Analytics が使用可能に Data agents in Data Studio (2026-04-16) データポータル(先日、Looker Studio から改名した)の画面から、BigQuery の Conversational Analytics(会話型分析)を使用できるようになった。 データポータル Proライセンスは不要。BigQuery でデータエージェントを作成して、一般従業員にエージェントを配ることが容易になった。 データポータルから BigQuery のデータエージェントを使用する Cloud Run でエフェメラルディスクが Preview 公開 Configure an ephemeral disk for Cloud Run services (2026-04-20) Cloud Run でエフェメラルディスクが Preview 公開。 ext4 フォーマットの一時ディスク。インスタンス停止で消去される。 service、job、worker pool いずれでも使用可。従来の /tmp はインメモリのためメモリ料金を消費したが、今後は一時ディスクに逃がせる。 Preview 公開されている2026年4月現在、料金の表記はない。 Gemini Cloud Assist のサイドパネルが強化 Gemini Cloud Assist release notes - April 22, 2026 (2026-04-22) 日本語でも使える 表示させているコンソール画面をコンテキストとして読み取る グラウンディング有無を設定 カスタムインストラクション など。その他にも Private Preview で MCP への対応など。 Gemini Cloud Assist のサイドパネルが強化 Gemini Enterprise app でカスタム MCP サーバーが接続可能に Set up your custom MCP server data store (2026-04-22) Gemini Enterprise app でカスタム MCP サーバーをデータストアとして接続できるようになった(Preview)。 認証は OAuth。MCP 準拠の外部システムや社内データに Gemini Enterprise app からアクセスできる。 BigQuery の CDC テーブルからマテリアライズドビューを作成可能に Tables with active change data capture (2026-04-28) BigQuery の CDC(change data capture)適用テーブルをベーステーブルとして、マテリアライズドビューを作成可能になった。 ストリーミングデータを受け取るテーブルをベースに、自動更新のマテビューを作成でき、運用負荷の軽減になる。 Compute Engine、GKE、Cloud Storage で「AI Zone」が公開 AI Zones (2026-04-27) Google Cloud で「AI Zone」が公開。Compute Engine、GKE、Cloud Storage が対応。 us-south1-ai1b のような名称の特殊なゾーン。GPU や TPU が優先的に提供される代わりに一部サービスは提供されない。オランダ、テキサス、アイオワのリージョンで使用可能。地理的に隔離されているため、通常ゾーンとのレイテンシは比較的大きい。 Google SecOps が VPC Service Controls に対応 Configure VPC Service Controls for Google SecOps (2026-04-30) Google SecOps の VPC Service Controls 対応が一般公開(GA)。Google SecOps は Google の SIEM 製品。VPC Service Controls による IP アドレス制御や、コンテキストアウェアなアクセス制御が可能になった。 VPC Service Controls の ingress/egress ルールで IAM ロールが使用可能に Configure IAM roles in ingress and egress rules (2026-04-30) VPC Service Controls の ingress/egress ルールで、IAM ロールを使用した許可設定が可能に(Preview → GA)。 これまでプリンシパルやメソッドの指定ができたが特定の IAM ロールを持っている場合のみアクセス許可するよう設定できるようになった。以下の記事も参照。 blog.g-gen.co.jp Google Workspace のアップデート Google Vids から YouTube への直接エクスポートが可能に Export Google Vids directly to YouTube (2026-04-02) Google Vids から YouTube への直接エクスポートが可能に。 MP4 で一度エクスポートする必要がない。限定公開動画のエクスポートも可能。 Chrome 拡張機能 Google Vids Screen Recorder が登場 Record your screen directly from Chrome with the Google Vids Screen Recorder Chrome Extension (2026-04-02) Chrome 拡張機能「Google Vids Screen Recorder」が登場。ブラウザ画面を録画して直接 Google Vids に記録できるため編集や共有が容易になる。 Google Workspace でも個人アカウントでも利用可能。 Gemini アプリの macOS 版ネイティブデスクトップアプリが登場 Gemini アプリが Mac に登場 (2026-04-15) Gemini アプリの macOS 版ネイティブデスクトップアプリが登場。 Web 版にない機能として、画面共有して Gemini に質問する機能などがある。 Gemini アプリで会話結果から Docs や PDF を生成可能に Move from conversation to creation with file generation in Gemini (2026-04-27) Gemini アプリで会話結果から Google ドキュメント、スプレッドシート、Microsoft Word(.docx)、Microsoft Excel(.xlsx)、PDF などのファイルを直接、生成可能になった。その他の対応フォーマットは以下のとおり。 Google Workspace files (Docs, Sheets, and Slides) PDF file Microsoft Word (.docx) Microsoft Excel (.xlsx) CSV file (.csv) LaTeX (.tex) Plain Text (.txt) Rich Text Format (.rtf) Markdown (.md) Gemini アプリで会話結果から Docs や PDF を生成可能に Google Meet の Take notes for me(自動議事録)のカスタマイズが可能に New ways to customize AI-generated meeting notes (2026-04-30) Google Meet の Take notes for me(自動議事録)のカスタマイズが可能に。メモの長さや決定事項を入れるかどうかなど。 ただし、一部機能は英語にしか対応していない。詳細なカスタムプロンプトを入れられるわけではない。2026年4月30日から15日間かけて段階的ロールアウト。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
Claude Code を快適に使うための macOS デスクトップ通知セットアップ 背景 なぜ alerter を採用したのか 1. alerter のインストール 2. 通知スクリプトの作成 2-1. notify_alerter.sh(Stop / Notification hook 用) 2-2. notify_pretool.sh(PreToolUse hook 用) 3. Claude Code の hooks 設定 各 Hook の役割 4. VSCode 拡張での Notification hook の扱い 5. macOS のセキュリティ許可 6. 動作確認 通知テスト 確認項目 デバッグログ 7. alerter のプロセス管理で学んだこと 問題: プロセスのゾンビ化 対策1: --group(プロセス蓄積の防止) 対策2: --timeout(最終的なプロセス回収) 溜まったプロセスの手動クリーンアップ 8. なぜ nohup + disown が必要だったか 9. 通知のカスタマイズ 特定ツールの通知をスキップする サウンド --sender(通知アイコン) まとめ 最後に  こんにちは、開発本部 開発2部 RetailHUB NetSuperグループに所属するホーク🦅アイ👁️です。 背景  弊社ではClaude を非エンジニアも含めた全社に展開しており、業務のあらゆる場面で生成AI の活用を推進しています。  そんな中、我々のチーム内でも今年3月から本格的にCursor から移行してClaude Code (VSCode 拡張機能)を日常的に使うようになってから、両者の明らかな違いを実感することになりました。  それは、Cursor が標準搭載しているmacOS デスクトップ通知機能でした。Claude Code にはその機能がないためAgent にプロンプトを投げた後、私自身が他の作業を並行しているとClaude Code 側が permission_prompt のWait でタスクが一向に完了できない状態やタスク完了状態に気付くのが随分遅れてしまうということがしばしばありました(業務効率化のためのAgent ツールなのに、、)。  Claude Code には Hooks という仕組みが用意されています。これは Stop(応答終了)や Notification(許可待ち等)、PreToolUse(ツール実行直前)といったライフサイクルイベントに対して任意のシェルコマンドを実行できる公式機能で、JSON がイベント情報として標準入力から渡ってきます。  本記事ではこの Hooks と alerter というコマンドラインツールを組み合わせて、 タスク完了・許可待ち・入力待ちの デスクトップ通知を出す 通知を クリックすると、対象プロジェクトの VSCode ウィンドウが自動でアクティブになる (全画面の別アプリ上からでも切り替わる) VSCode 拡張版 でも許可待ち通知を取りこぼさない という環境を構築した内容をまとめます。macOS 26 系(Tahoe)環境で動作確認しています。 なぜ alerter を採用したのか  macOS から通知を出すだけなら選択肢は複数あります。今回の要件「通知をクリックしたら VSCode がアクティブになる」を満たせるものを比較した結果を表にまとめます。 ツール 通知表示 クリックイベントの取得 備考 terminal-notifier 環境依存 可能(旧来の定番) 公式リポジトリ の最新リリースは 2017 年 11 月(v2.0.0)で、近年の macOS での動作不具合 Issue( #307 、 #312 、 #319 ほか)が未解決のままです。私の環境(macOS 26 系)では通知が出ませんでした。 osascript ( display notification ) 動作する 不可 AppleScript 公式ドキュメント( Standard Additions: display notification )に「戻り値なし」と明記されており、クリック結果を取得する手段がありません。 alerter 動作する 可能 公式リポジトリ によれば、 terminal-notifier を Swift で書き直した後継で、macOS 13.0 以降対応。クリック時に @CONTENTCLICKED / @ACTIONCLICKED を stdout に出力するため、外部プロセスでの後処理が可能です。   alerter がクリック結果を stdout に返してくれるおかげで、「クリック → open -a "Visual Studio Code" で対象プロジェクトを開く」という連携を、標準ツールの組み合わせだけで実現できました。 1. alerter のインストール  Homebrew で導入します( 公式の導入手順 に準拠)。 brew install vjeantet/tap/alerter  インストール確認: which alerter # /opt/homebrew/bin/alerter alerter --version 2. 通知スクリプトの作成  2 つのスクリプトを ~/.claude/ に配置し、実行権限を付与します。前者は Stop / Notification hook 用、後者は VSCode 拡張向けの PreToolUse hook 用です。 chmod +x ~/.claude/notify_alerter.sh chmod +x ~/.claude/notify_pretool.sh 2-1. notify_alerter.sh (Stop / Notification hook 用)  タスク完了通知および、CLI 版 Claude Code での許可待ち通知を処理します。Hook に渡ってくる JSON の仕様は 公式リファレンスの Stop / Notification セクション に従っています。 notification_type として permission_prompt / idle_prompt が返ってくるため、これで分岐しています。 #!/bin/bash input = $( cat ) echo " $( date ' +%H:%M:%S ' ) $input " >> /tmp/claude_notify_debug.log cwd = $( echo " $input " | jq -r ' .cwd ' ) project = $( basename " $cwd " ) notification_type = $( echo " $input " | jq -r ' .notification_type ' ) # ターミナルアプリの Bundle ID を自動検出 get_terminal_bundle_id() { if [[ -n " ${__CFBundleIdentifier} " ]] ; then echo " ${__CFBundleIdentifier} " return fi case " ${TERM_PROGRAM} " in " Apple_Terminal ") echo " com.apple.Terminal " ;; " iTerm.app ") echo " com.googlecode.iterm2 " ;; " ghostty ") echo " com.mitchellh.ghostty " ;; " WarpTerminal ") echo " dev.warp.Warp-Stable " ;; * ) local pid parent comm pid = $$ while [[ " ${pid} " -ne 1 ]] 2 >/dev/null; do parent = $( ps -p " ${pid} " -o ppid = 2 > /dev/null | tr -d ' ' ) || break [[ -z " ${parent} " ]] && break comm = $( ps -p " ${parent} " -o comm = 2 > /dev/null ) case " ${comm} " in *Terminal* ) echo " com.apple.Terminal "; return ;; *iTerm* ) echo " com.googlecode.iterm2 "; return ;; *Cursor* ) echo " com.todesktop.230313mzl4w4u92 "; return ;; *Code* ) echo " com.microsoft.VSCode "; return ;; *ghostty* ) echo " com.mitchellh.ghostty "; return ;; *warp* ) echo " dev.warp.Warp-Stable "; return ;; * ) ;; esac pid = " ${parent} " done echo "" ;; esac } BUNDLE_ID = $( get_terminal_bundle_id ) send_notification() { local message =" $1 " local sound =" $2 " local group =" $3 " local args = (--title " Claude Code " --subtitle " ${project} " --message " ${message} " ) if [[ -n " ${sound} " ]] ; then args += ( --sound " ${sound} " ) fi args += ( --sender " com.microsoft.VSCode " ) # --group: 同じグループの通知は前のプロセスを自動終了して置き換える args += ( --group " ${group :- claude-default } " ) # --timeout: プロセスのゾンビ化防止(秒)。通知自体は macOS 通知センターに残る local timeout = 86400 local timeout_file =" $HOME /.claude/notify_timeout.conf " if [[ -f " ${timeout_file} " ]] ; then timeout = $( cat " ${timeout_file} " | tr -d ' [:space:] ' ) fi args += ( --timeout " ${timeout} " ) # alerter はクリック待ちでブロックするため、nohup + disown で完全にデタッチ nohup bash -c " result= \$ (alerter $( printf ' %q ' " ${args[ @ ]} " ) 2>/dev/null) if [[ \"\$ {result} \" == \" @CONTENTCLICKED \" || \"\$ {result} \" == \" @ACTIONCLICKED \" ]] && [[ -n \" ${cwd} \" ]]; then open -a \" Visual Studio Code \" \" ${cwd} \" fi " &> /dev/null & disown } case " ${notification_type} " in " permission_prompt ") send_notification " 許可待ち " " Ping " " claude-permission " ;; " idle_prompt ") send_notification " 入力待ち " " Purr " " claude-idle " ;; " stop ") send_notification " タスク完了 " " Glass " " claude-stop " ;; * ) send_notification " 通知 " " default " " claude-other " ;; esac 2-2. notify_pretool.sh (PreToolUse hook 用)  こちらは VSCode 拡張環境向けの「許可待ち通知」の代替実装です。詳細は「4. VSCode 拡張での Notification hook の扱い」で後述します。  ざっくり説明すると、次の 4 つの設定ファイルの permissions.allow リストと照合し、 自動許可されないツールの実行前にのみ 通知を送るというロジックです。 ~/.claude/settings.json (グローバル) ~/.claude/settings.local.json (グローバルローカル) $cwd/.claude/settings.json (プロジェクト) $cwd/.claude/settings.local.json (プロジェクトローカル) #!/bin/bash # PreToolUse hook: 許可が必要なツール実行前に通知を送る # settings.json の allow リストにマッチするツールはスキップする input = $( cat ) tool_name = $( echo " $input " | jq -r ' .tool_name ' ) cwd = $( echo " $input " | jq -r ' .cwd ' ) project = $( basename " $cwd " ) # 常に自動許可されるツール(通知不要) case " ${tool_name} " in Glob|Grep|TodoWrite|Agent|Skill|ToolSearch|SendMessage ) exit 0 ;; esac # ユーザー個別のスキップリスト(~/.claude/notify_skip_tools.txt) SKIP_FILE = " $HOME /.claude/notify_skip_tools.txt " if [[ -f " ${SKIP_FILE} " ]] ; then while IFS = read -r skip_tool; do [[ -z " ${skip_tool} " || " ${skip_tool} " == \# * ]] && continue if [[ " ${tool_name} " == " ${skip_tool} " ]] ; then exit 0 fi done < " ${SKIP_FILE} " fi # allow リストと照合する関数 check_allow_list() { local settings_file =" $1 " [[ -f " ${settings_file} " ]] || return # Bash ツール: コマンドプレフィックスで照合 if [[ " ${tool_name} " == " Bash " ]] ; then local command command= $( echo " $input " | jq -r ' .tool_input.command ' ) while IFS = read -r pattern; do if [[ " ${pattern} " =~ ^Bash\((.+)(:\*|\*)?\)$ ]] ; then local prefix =" ${BASH_REMATCH[ 1 ]} " prefix = " ${prefix % :* } " if [[ " ${command} " == " ${prefix} " * ]] ; then exit 0 fi fi done < < ( jq -r ' .permissions.allow[] ' " ${settings_file} " 2 > /dev/null ) fi # Read ツール: パスパターンで照合 if [[ " ${tool_name} " == " Read " ]] ; then local file_path file_path = $( echo " $input " | jq -r ' .tool_input.file_path ' ) while IFS = read -r pattern; do if [[ " ${pattern} " =~ ^Read\(//(.+)\)$ ]] ; then local path_pattern =" ${BASH_REMATCH[ 1 ]} " local path_prefix =" ${path_pattern %% /** } " if [[ " ${file_path} " == " ${path_prefix} " * ]] ; then exit 0 fi fi done < < ( jq -r ' .permissions.allow[] ' " ${settings_file} " 2 > /dev/null ) fi # MCP ツール・WebSearch 等: 完全一致で照合 while IFS = read -r pattern; do if [[ " ${pattern} " == " ${tool_name} " ]] ; then exit 0 fi done < < ( jq -r ' .permissions.allow[] ' " ${settings_file} " 2 > /dev/null ) } # グローバル設定 check_allow_list " $HOME /.claude/settings.json " check_allow_list " $HOME /.claude/settings.local.json " # プロジェクト設定 check_allow_list " $cwd /.claude/settings.json " check_allow_list " $cwd /.claude/settings.local.json " # 許可リストにマッチしない → 通知を送る echo " $( date ' +%H:%M:%S ' ) PRETOOL_NOTIFY: ${tool_name} " >> /tmp/claude_notify_debug.log nohup bash -c " timeout=86400 timeout_file= \"\$ HOME/.claude/notify_timeout.conf \" if [[ -f \"\$ {timeout_file} \" ]]; then timeout= \$ (cat \"\$ {timeout_file} \" | tr -d '[:space:]') fi result= \$ (alerter --title 'Claude Code' --subtitle ' ${project} ' --message '許可待ち: ${tool_name} ' --sound Ping --sender com.microsoft.VSCode --group claude-pretool --timeout \"\$ {timeout} \" 2>/dev/null) if [[ \"\$ {result} \" == '@CONTENTCLICKED' || \"\$ {result} \" == '@ACTIONCLICKED' ]] && [[ -n ' ${cwd} ' ]]; then open -a 'Visual Studio Code' ' ${cwd} ' fi " & > /dev/null & disown exit 0 3. Claude Code の hooks 設定   ~/.claude/settings.json の hooks セクションに以下を追加します( 公式リファレンス の書式に準拠)。 { " hooks ": { " Stop ": [ { " matcher ": "", " hooks ": [ { " type ": " command ", " command ": " echo '{ \" cwd \" : \" ' \" $(pwd) \" ' \" , \" notification_type \" : \" stop \" }' | ~/.claude/notify_alerter.sh " } ] } ] , " Notification ": [ { " matcher ": "", " hooks ": [ { " type ": " command ", " command ": " ~/.claude/notify_alerter.sh " } ] } ] , " PreToolUse ": [ { " matcher ": "", " hooks ": [ { " type ": " command ", " command ": " ~/.claude/notify_pretool.sh " } ] } ] } } 各 Hook の役割 Hook 発火タイミング 用途 VSCode 拡張 CLI Stop Claude が応答を終えて停止したタイミング 「タスク完了」通知 動作する 動作する Notification 許可待ち・入力待ちなどの通知イベント 「許可待ち」「入力待ち」通知 permission_prompt が発火しないケースあり 動作する PreToolUse ツール実行の直前 VSCode での「許可待ち」通知の代替 動作する 動作する 4. VSCode 拡張での Notification hook の扱い   公式リファレンス では、 Notification hook の notification_type として permission_prompt / idle_prompt / auth_success / elicitation_dialog の 4 種が定義されています。しかし、私の環境で動作確認したところ、 VSCode 拡張版では許可ダイアログが出ても Notification hook( permission_prompt )が発火しないケース があり、「許可待ちなのに通知が来ない」という状態になっていました。CLI 版では同じ設定で期待どおり発火しています。  そのため、VSCode 拡張で使う場合は PreToolUse hook(必ず発火する)でツール実行直前に自前で判定する という回避策を取っています。流れは以下です。 PreToolUse hook がツール実行直前に発火する notify_pretool.sh がツール名(と Bash の場合はコマンド、Read の場合はファイルパス)を受け取り、4 つの設定ファイルの permissions.allow と照合する allow リストに マッチしなかったとき だけ通知を送る(=「このあと許可ダイアログが出るはず」というタイミング)  この方式であれば、 Notification hook の発火有無にかかわらず、VSCode でも CLI でも漏れなく許可待ち通知を届けられます。CLI 版では Notification hook が正常動作するため、重複しないよう --group を claude-permission と claude-pretool で分けています(後述)。 5. macOS のセキュリティ許可   alerter + open -a の組み合わせは、macOS のアクセシビリティ・オートメーション等の追加許可なしで動作しました。初回のみ通知センター側で通知の表示許可を求められる程度で、特別な設定は不要です。 6. 動作確認 通知テスト # タスク完了通知 echo ' {"cwd": " ' $( pwd ) ' ", "notification_type": "stop"} ' | ~/.claude/notify_alerter.sh # 許可待ち通知(CLI の Notification hook 用) echo ' {"cwd": " ' $( pwd ) ' ", "notification_type": "permission_prompt"} ' | ~/.claude/notify_alerter.sh 確認項目 タスク完了通知がデスクトップに表示される 許可待ち通知が表示される(VSCode: PreToolUse / CLI: Notification) VSCode アイコンが通知に表示される( --sender com.microsoft.VSCode ) 通知をクリックすると対象プロジェクトの VSCode ウィンドウがアクティブになる 全画面の別アプリ(Chrome 等)から通知をクリックしても正しいウィンドウに切り替わる 通知後に Claude が WAIT 状態にならず即座に続行する デバッグログ  通知が来ないときはデバッグログを確認します: tail -f /tmp/claude_notify_debug.log 7. alerter のプロセス管理で学んだこと  運用してみて一番ハマったのがプロセス管理です。 問題: プロセスのゾンビ化   alerter は クリックされるまで stdout をブロックし続ける 仕様です( 公式リポジトリ の README にある @CONTENTCLICKED / @ACTIONCLICKED / @TIMEOUT / @CLOSED のいずれかが出力されるまでプロセスが生きる)。通知バッジを macOS 通知センターから消去しても alerter プロセスは終了しません。放置すると各プロセスがメモリを消費し、長時間の利用で数 GB に達するケースがありました。 対策1: --group (プロセス蓄積の防止)  同じ --group の通知が新たに発行されると、前のプロセスが自動で kill されます。グループは用途別に分けており、同時に存在するプロセスは最大 4 つになる設計です: グループ 用途 claude-stop タスク完了 claude-permission 許可待ち(CLI Notification hook) claude-pretool 許可待ち(VSCode PreToolUse hook) claude-idle 入力待ち 対策2: --timeout (最終的なプロセス回収)   --group だけでは最後の 4 プロセスが残り続けるため、 --timeout でプロセスの最大生存時間を設定して確実に回収します。 デフォルト: 86400 秒(1 日) カスタム: ~/.claude/notify_timeout.conf に秒数を書く # 例: 2 時間に変更 echo 7200 > ~/.claude/notify_timeout.conf  なお、timeout が切れてもプロセスが終了するだけで、macOS 通知センターの通知バッジは残ります。 溜まったプロセスの手動クリーンアップ # alerter プロセス数を確認 ps aux | grep alerter | grep -v grep | wc -l # 全 alerter プロセスを終了 pkill -f alerter 8. なぜ nohup + disown が必要だったか  前述のとおり alerter はクリック待ちでブロックします。単純に (...) & でバックグラウンド実行しても、 Claude Code の hook ランナーが子プロセスの終了を待ってしまい、Claude 本体が WAIT 状態のまま止まる (トークンも消費し続けてしまう)という問題がありました。   nohup ... & で SIGHUP を無視させ、さらに disown でジョブテーブルから外すことで、hook プロセスから完全に切り離せます。これにより、通知の表示・クリック待ちとは独立して Claude が動作を継続できるようになりました。 9. 通知のカスタマイズ 特定ツールの通知をスキップする  VSCode の「Edit Automatically」などセッションレベルで自動許可しているツールは settings.json に記録されないため、 ~/.claude/notify_skip_tools.txt に 1 行 1 ツール名で記載する仕組みを入れてあります: # セッションレベルで自動許可しているツール名を 1 行 1 つで記載 Edit  もしくは notify_pretool.sh の先頭付近にあるスキップリスト( Glob|Grep|TodoWrite|... )に追記する方法でも同等です。 サウンド  macOS 標準のサウンド名を指定できます: Ping , Purr , Glass , default , Basso , Blow , Bottle , Frog , Funk , Hero , Morse , Pop , Sosumi , Submarine , Tink 。 --sender (通知アイコン)   --sender に Bundle ID を指定すると通知アイコンが変わります。現在は com.microsoft.VSCode を指定して VSCode アイコンを表示しています。 アプリ Bundle ID VSCode com.microsoft.VSCode Cursor com.todesktop.230313mzl4w4u92 Terminal com.apple.Terminal iTerm2 com.googlecode.iterm2 Ghostty com.mitchellh.ghostty  ただし --sender を指定すると、そのアプリの macOS 通知設定に依存することになります。対象アプリの通知を OFF にしていると通知が表示されなくなるため注意が必要です。 まとめ  本記事では、Claude Code の Hooks 機能と alerter を組み合わせて、 タスク完了・許可待ち・入力待ちのデスクトップ通知を出す 通知クリックでプロジェクトの VSCode ウィンドウを自動でアクティブにする VSCode 拡張でも PreToolUse hook で許可待ち通知を取りこぼさない というセットアップ方法と、その過程で踏んだプロセス管理の落とし穴(ゾンビ化 → --group / --timeout / nohup + disown での回収)をご紹介しました。  Claude Code をバックグラウンドで走らせつつ他の作業を並行して進めるスタイルにおいては、「気づかずに長時間止まっていた」という時間を減らすだけで、体感の生産性が目に見えて向上します。CLI と VSCode 拡張で挙動が異なる部分は PreToolUse hook で吸収できるので、Hooks の仕様を把握したうえで自分の開発スタイルに合わせてカスタマイズしてみてください。 通知例 最後に エブリーでは、ともに働く仲間を募集しています。 テックブログを読んで少しでもエブリーに興味を持っていただけた方は、ぜひ一度カジュアル面談にお越しください! corp.every.tv
サイオステクノロジー株式会社 Saman Part 1 では Elastic Agent Skills の概要とインストール方法を、 Part 2 では Claude Code とローカル Elasticsearch をつなぐ手順を紹介しました。 Part 3 では MCP Apps を試します。MCP Apps は、チャットの中にクリックできる画面を直接表示する仕組みです。Elastic は 2026 年 4 月に 3 つの MCP Apps をオープンソースで公開しました。Security、Search(ダッシュボードビルダー)、Observability の 3 つです。 本記事では Security に絞って、実際にインストールから動作確認まで一通り試した結果を紹介します。Search と Observability は最後に簡単に触れます。 ホストには Claude Desktop を使います。.mcpb ファイルをダブルクリックするだけでインストールできる、最もシンプルな方法です。なお Security MCP Apps は Claude Desktop 以外にも以下のホストで動作します。 ホスト インストール方法 セットアップガイド Claude Desktop .mcpb をダブルクリック 本記事で解説 Claude Code claude mcp add CLI setup-claude-code.md Claude.ai cloudflared トンネル経由 setup-claude-ai.md Cursor npx またはローカルサーバー setup-cursor.md VS Code npx またはローカルサーバー setup-vscode.md 接続先は Elastic Cloud Serverless を使います。ローカル接続(Part 2)と比べると、CA 証明書が不要な分セットアップがシンプルです。 本記事の対象環境は以下の通りです。 Claude Desktop(最新版) Elastic Cloud Serverless 9.3(Security プロジェクト) macOS(Windows の場合はパスのみ読み替えてください) 📝 本記事について 本記事は MCP App v1.0.0での 動作検証に基づいています。Elastic Security MCP App は現在 パブリックプレビュー中であり、活発に開発が続いています。 記事公開後もバージョンアップが頻繁に行われる可能性があるため、 実際の挙動が本記事の内容と異なる場合があります。 最新の動作状況は GitHub リリースノート を合わせてご確認ください。 目次 MCP Apps とは何か Step 1:API キーを作成する(権限が重要) Step 2:Claude Desktop に .mcpb をインストールする 拡張機能を「有効」にする Step 3:スキルをインストールする 7 つのインタラクティブツール 重要な制約:プロジェクト内のチャットでは動かない 実データで SOC フローを動かす Step 1:アラートをトリアージする Step 2:Attack Discovery を確認する Step 3:ケースを作成する Step 4:検知ルールを確認する Step 5:脅威ハントで掘り下げる Step 6:サンプルデータを生成する Attack Discovery のハマりどころ(実体験) 現象 1:MCP App から実行すると「AI コネクタなし」エラー MCP Apps 動作状況のまとめ Attack Discovery のライセンス要件 Search と Observability MCP App について まとめ Serverless × Claude Desktop の接続手順 気をつけるポイント(実体験で学んだこと) MCP Apps の現実と将来性 参考資料 本シリーズのリンク MCP Apps とは何か 通常、MCP ツールが返すのはテキストです。「アラートが 47 件あります」という文章です。それを読んだアナリストは Kibana に移動してアラートを開く、という作業が別途必要でした。 MCP Apps はこれを変えます。ツールの結果として、クリックできるダッシュボードがチャットの中に直接表示されます。Kibana に移動する必要はありません。会話の文脈を保ったまま、インタラクティブな UI を操作できます。 設計上の特性は 3 つあります。 コンテキストの維持: UI はチャットの中にあります。別タブを開く必要がないので、会話の流れが切れません。AI が前の文脈を保持したまま操作できることが SOC や調査でとても重要です。 双方向のデータフロー: UI は MCP サーバーに直接データを取りに行けます。チャットで別の質問をしながら、UI 上のデータが更新されます(UI → MCP Host → MCP Server → Elasticsearch)。 サンドボックス化された信頼境界: MCP Apps はホストが管理する iframe の中で動きます。親ページへのアクセスや Cookie の読み取りはできません。 Step 1:API キーを作成する(権限が重要) ここが最大の落とし穴です。単にキーを作るだけでは一部機能が動きません。 ⚠️ Serverless 環境での重要な注意: Elastic Cloud Serverless では、細かい権限指定(feature_cases.all など)が意図通りに機能しない場合があります。全機能を確実に動かすには、以下の superuser 相当のロールでAPIキーを作成してください。本番環境では最小権限への絞り込みを推奨します。 Kibana の Dev Tools で以下を実行します。 POST /_security/api_key { "name": "claude-mcp-security", "expiration": "30d", "role_descriptors": { "mcp-full-access": { "cluster": ["all"], "indices": [ { "names": ["*"], "privileges": ["all"] } ], "applications": [ { "application": "kibana-.kibana", "privileges": ["all"], "resources": ["*"] } ] } } } 返ってくるレスポンスの encoded フィールドの値が API キーです。 { "id": "rLV1zp0BZGqtkno0tEMy", "name": "claude-mcp-security", "expiration": 1779877313588, "api_key": "YOUR_API_KEY", "encoded": "ckx**********vMHR****6ZFZrV***********RODZoUQ==" } Step 2 で使うのでメモしておいてください。 補足(権限を絞りたい場合): 最小権限で構成する場合、以下が必要です。ただし Serverless 環境では動作しない権限名がある場合があります。検証済みの構成が確定次第、本記事を更新します。 cluster: monitor, monitor_inference indices: read, view_index_metadata, monitor(logs-*, .alerts-security*, .siem-signals*) Kibana: feature_agentBuilder.read, feature_siemAttackDiscovery.all, feature_siem.all, feature_cases.all, feature_actions.read Step 2:Claude Desktop に .mcpb をインストールする Security MCP Apps の最新版を GitHub の最新リリース からダウンロードします。 Assets セクションから example-mcp-app-security.mcpb をダウンロードしてください。 ダウンロードした .mcpb ファイルをダブルクリックします。Claude Desktop が自動的に起動して、インストールダイアログが表示されます。 警告について: 「インストールすると、この拡張機能にコンピュータ上のすべてのデータへのアクセス権が付与されます」というメッセージが表示されますが、これはすべての .mcpb 拡張機能に表示される標準メッセージです。Elastic Security MCP App が実際にアクセスするのは Elasticsearch と Kibana の API のみで、PC 上の他のデータにはアクセスしません。 「インストール」をクリックすると、続いて接続情報の入力ダイアログが開きます。 項目 値 ELASTICSEARCH_URL https://your-cluster.es.cloud.example.com ELASTICSEARCH_API_KEY Step 1 で作成した API キー KIBANA_URL https://your-cluster.kb.cloud.example.com API キーは macOS のキーチェーンに暗号化保存されます。設定ファイルには残りません。 拡張機能を「有効」にする ここが見落としがちなポイントです。インストール後、拡張機能はデフォルトで「無効」状態になっています。 Settings → Extensions で elastic-security-mcp-app を開き、トグルを「有効」に切り替えてください。これは Claude Desktop のすべての拡張機能に共通の動作です。 切り替えたら Claude Desktop を完全に再起動します。チャット画面の下部に 🔨 ハンマーアイコンが表示されれば接続成功です。 Step 3:スキルをインストールする スキルは Claude に「いつ・どのツールを使うか」を教える SKILL.md ファイルです。スキルがないと、Claude は各ツールの使いどころを判断できません。 最新リリース の Assets から以下の zip ファイルをダウンロードします。 alert-triage.zip attack-discovery-triage.zip case-management.zip detection-rule-management.zip generate-sample-data.zip macOS の注意: Safari でダウンロードすると zip が自動展開されてフォルダになります。その場合、フォルダを右クリック →「○○を圧縮」で zip に戻してからアップロードします。 Claude Desktop で Customize → スキル → スキルを作成 → スキルをアップロード から、zip を 1 つずつアップロードします。5 つすべて入れてください。 7 つのインタラクティブツール インストールが完了すると、以下の 7 つのツールが使えるようになります。それぞれがプロンプトに応じてインタラクティブな UI をチャット内に返します。 ツール 機能 triage-alerts アラートの取得・フィルタ・分類。AI 判定カード、プロセスツリー、ネットワークイベント triage-attack-discoveries 既存の Attack Discovery を一覧・トリアージ generate-attack-discovery 新しい Attack Discovery を生成(AI コネクタ必須) manage-cases SOC 調査ケースの作成・管理。AI アクションボタン付き manage-rules 検知ルールの閲覧・チューニング threat-hunt ES|QL ワークベンチ、クリッカブルなエンティティ、D3 調査グラフ generate-sample-data 17 の攻撃シナリオのサンプルデータ生成 重要な制約:プロジェクト内のチャットでは動かない Claude Desktop のプロジェクト機能の中の新規チャットでは MCP Apps の拡張機能が動作しません。プロジェクト外の通常チャットで使う必要があります。 New chat をクリックして、プロジェクトの外で会話を始めてください。 実データで SOC フローを動かす 今回使うデータは logs-endpoint.events.imported.fixed インデックスの Elastic Endpoint エンドポイントイベントです。監視対象は 2 台の Ubuntu ホスト(omm-nix-detect、omm-nix-prevent)で、実際に調査につながるシグナルが含まれています。 データのポイント 内容 omm-nix-prevent への SSH ログイン 16 人の異なるユーザー(isla、abrar、ddroot、kominfo など) unzip プロセスによるファイル作成 /home/ubuntu/74ef6cc38f5a1a80… event.action の種類 fork(117)、end(116)、deletion(82)、creation(80)、ssh_login(20)… Step 1:アラートをトリアージする omm-nix-prevent のアラートをトリアージして Alert Triage ダッシュボードがチャット内に表示されます。各検知ルールに対して AI の判定が信頼スコア付きで表示されます。omm-nix-prevent への大量の SSH ログインがフラグされ、isla、abrar、ddroot といったユーザーの認証履歴をプロセスツリーで確認できます。 ホスト別、検知ルール別、重大度別の集計が UI 内に表示され、アラートをクリックするとプロセスツリーや詳細が展開されます。 図 1:Alert Triage ダッシュボード。high 100 件、medium 100 件の計 200 件が表示され、検知ルール別・ホスト別の集計が確認できる。 Step 2:Attack Discovery を確認する 既存の Attack Discovery を一覧表示して triage-attack-discoveries ツールが起動し、既存の Attack Discovery 一覧が表示されます。 図 2:Attack Discovery 一覧。まだ生成していない場合は 0 件と表示される(正常動作)。 Step 3:ケースを作成する omm-nix-prevent SSH ログイン調査というタイトルでケースを作成して。 重大度は HIGH、関連タグは ssh-login, file-activity, suspicious-unzip Case Management ダッシュボードがインラインに表示され、ケースが即座に作成されます。 図 3:Case Management ダッシュボード。 Step 4:検知ルールを確認する 検知ルールを一覧表示して manage-rules ダッシュボードが起動し、検知ルールの一覧が表示されます。ルール名、重大度、有効/無効の状態、KQL クエリが確認できます。 図 4:検知ルール管理画面。critical、high、medium のルールが一覧表示され、個別に有効化・チューニングできる。 Step 5:脅威ハントで掘り下げる omm-nix-prevent へのSSHログイン後のファイル作成を調査して Threat Hunt ワークベンチが開き、クエリが自動生成されて実行済みの状態で返ってきます。結果には以下のような情報が表示されました。 unzip がハッシュ名のファイルを作成しているのが目立ちます。マルウェアペイロードの可能性があり、調査を進める根拠になります。テーブル内のホスト名やユーザー名はクリックでさらに掘り下げられます。 図 5:Threat Hunt ワークベンチ。ES|QL クエリが自動生成・実行済みで返ってくる。テーブル内のエンティティはクリックで掘り下げ可能。 Step 6:サンプルデータを生成する Ransomware Kill Chain のサンプルデータを生成して Sample Data Generator ダッシュボードが起動し、17 のシナリオから選択できます。 Windows Credential Theft AWS Privilege Escalation Okta Identity Takeover Ransomware Kill Chain(最も多段階で Attack Discovery 向き) Linux Persistence その他 12 シナリオ Ransomware Kill Chain を選択すると、複数の検知ルールに対応するアラートが生成されます。 図 6:Sample Data Generator。17 のシナリオが選択可能で、生成するイベント数も指定できる。 Attack Discovery のハマりどころ(実体験) ここから実体験のトラブルシュート記録です。同じ問題に遭遇する方の参考になればと思い、起きたことをそのまま書きます。 現象 1:MCP App から実行すると「AI コネクタなし」エラー Claude Desktop で「Attack Discovery を実行して」と入力したら、結果は「AI コネクタが設定されていません」のエラー画面でした。 調査した結果、以下のことがわかりました。Kibana 9.x Serverless では AI コネクタがすべて .inference タイプ(統合 Inference API ベース)として提供されています。しかし MCP App v1.0.0 はこのタイプのコネクタを列挙対象に含めていないため、Kibana UI から見えているコネクタが MCP App には 1 つも見えない状態になります。 確認のために手動で .gen-ai タイプのコネクタを作成したところ、そのコネクタだけは MCP App から認識されました。 コネクタタイプ Kibana UI MCP App .inference(Serverless 標準) ✅ 見える ❌ 見えない .gen-ai(手動作成) ✅ 見える ✅ 見える この問題は Elastic 側のバグとして認識済み です。修正時期は未定ですが、修正状況は example-mcp-app-security のリリースノート で確認できます。 図 7:generate-attack-discovery の実行結果。Serverless 標準の .inference コネクタが認識されず、「No matching connector. Available: (空)」エラーが表示される。 MCP Apps 動作状況のまとめ 本記事執筆時点(MCP App v1.0.0)での動作状況をまとめます。 ツール MCP App 経由 備考 triage-alerts ✅ 動作 フル機能 triage-attack-discoveries ✅ 動作 既存 Discoveries の閲覧は可 manage-cases ✅ 動作 superuser ロールが必要(Serverless) manage-rules ✅ 動作 通常動作 threat-hunt ✅ 動作 superuser ロールが必要(Serverless) generate-sample-data ✅ 動作 17 シナリオ対応 generate-attack-discovery ❌ 未動作 .inference タイプコネクタ非対応(Elastic 側バグ認識済、修正待ち) Attack Discovery 機能を使いたい場合は、現時点では Kibana UI から直接実行するのが確実です。 Attack Discovery のライセンス要件 Attack Discovery は OSS(Basic)ライセンスでは利用できません。 デプロイ形態 必要なライセンス Self Managed / Elastic Cloud Hosted Enterprise サブスクリプション Elastic Cloud Serverless EASE(Elastic AI SOC Engine)または Security Analytics Complete ティア 無料トライアルでは 14 日間 Enterprise 相当の機能を試せます。本番導入時のライセンス検討材料にしてください。 Search と Observability MCP App について Security MCP App と同じ仕組みで、別途リポジトリが用意されています。 Search MCP App(example-mcp-dashbuilder): プロンプトから Kibana ダッシュボードを生成します。「ホスト別のイベント数、ユーザー別の操作件数、event.action 種別の内訳を含むダッシュボードを作って」と入力すると、ES|QL でデータを探索して可視化を組み立て、Kibana にエクスポート可能なダッシュボードを返します。 Observability MCP App(example-mcp-app-observability): クラスターヘルスサマリ、APM サービス依存関係グラフ、Kubernetes ノード停止時のインパクト範囲分析などを提供します。 それぞれインストール手順は Security と同じで、.mcpb ファイルをダブルクリックしてダウンロード、API キーを設定、Settings → Extensions で有効化、という流れです。 まとめ Serverless × Claude Desktop の接続手順 ステップ 内容 Step 1 Kibana で API キーを作成(Serverless では superuser ロールを推奨) Step 2 example-mcp-app-security.mcpb をダブルクリックしてインストール、接続情報入力、「有効」に切り替え Step 3 スキル zip を 5 つアップロード 気をつけるポイント(実体験で学んだこと) .mcpb をインストールしただけでは拡張機能は「無効」状態。手動で有効化が必要 Serverless 環境では API キーに superuser ロールを使う (細かい権限指定が機能しない場合がある) API キーを変更したら拡張機能の設定で API キーを上書きして Claude Desktop を再起動 プロジェクト内の新規チャットでは MCP Apps 拡張が動かない。プロジェクト外で会話する Attack Discovery は Enterprise サブスクリプション(または Serverless の EASE / Security Analytics Complete)が必要 Attack Discovery は本記事執筆時点では Kibana UI 経由が確実(MCP App 側は Elastic バグ認識済、修正待ち) ⚠️ パブリックプレビュー期間中の注意 本記事執筆時点(2026年4月)では、MCP App は活発に開発・更新 されています。バージョンアップにより、本記事に記載の手順や 挙動が変わる場合があります。問題が発生した場合は、まず GitHub Issues で既知の問題を確認し、最新の .mcpb への更新や APIキーの再設定をお試しください。 MCP Apps の現実と将来性 正直に書くと、現時点では MCP Apps が Kibana の完全な代替にはなりません。Kibana の方が安定していて、機能が完成しています。 それでも MCP Apps が意義を持つ場面はあります。 SOC アナリスト初心者の学習用: 「アラートをトリアージして」と日本語で言うだけで、AI がどのフィールドを見て、どう ES|QL を書くかを示してくれます。Kibana の使い方を覚える前に、調査の流れを体感できます。 横断的な調査: Security、Search、Observability の 3 つの MCP Apps を入れておけば、1 つのチャットで「アラート確認 → メトリクス調査 → ダッシュボード作成」までできます。Kibana だと画面の往復が必要です。 レポート作成・要約: 「このアラート群を経営層向けに要約して」「IOC を抽出してケースに追加して」など、AI が得意な作業をデータに対して直接実行できます。 「今すぐ Kibana を置き換えるもの」というよりは、「AI 時代のセキュリティ運用の方向性を体験できる先取り技術」と捉えるのが現実的です。 参考資料 Elastic Agent Builder MCP server https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/mcp-server Permissions and access control in Elastic Agent Builder https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/permissions Attack Discovery https://www.elastic.co/docs/solutions/security/ai/attack-discovery Elastic Security, Observability, and Search now offer interactive UI in your AI tools https://www.elastic.co/search-labs/blog/mcp-apps-elastic elastic/example-mcp-app-security https://github.com/elastic/example-mcp-app-security elastic/example-mcp-dashbuilder https://github.com/elastic/example-mcp-dashbuilder elastic/example-mcp-app-observability https://github.com/elastic/example-mcp-app-observability ohmymalware(for dataset) https://ohmymalware.com/ 本シリーズのリンク Part 1:Elastic Agent Skills とは、インストールから始める https://elastic.sios.jp/blog/elastic-agent-skills-part1/ Part 2:Claude Code で Elastic Agent Skills を試す、ローカル接続編 https://elastic.sios.jp/blog/elastic-agent-skills-part2/ The post Kibana を開かずに SOC 業務をこなす、 Elastic Security MCP App 実践ガイド first appeared on Elastic Portal .

動画

該当するコンテンツが見つかりませんでした

書籍