
R
イベント
マガジン
技術ブログ
私は 4 月 27 日週、英国のヨークで休暇を過ごしました。ヨークは、国内で最も幽霊に取りつかれた街として知られています。千年近くにわたってそこに立ち続けてきた修道院跡を散策し、中世の城壁沿いを散策し、夜はゴーストツアーに参加して、何世紀にもわたって語り継がれてきた物語に耳を傾けました。これほど多くの歴史を見守ってきた場所に立つと、不思議と心が落ち着きます。今はデスクに戻ってきましたが、その対比は否応なく感じられます。修道院の石は千年もの間、ほとんど変わることなくそこに立っているのに、たった 1 週間の休暇の間に、技術革新のスピードはまた一段進展していました。 ノースヨークシャーにあるウィットビー修道院跡。千年の歴史を見守ってきた石がある一方で、この 1 週間だけで新たな変化の波が押し寄せました。 それでは、2026 年 5 月 4 日週の AWS ニュースを見ていきましょう。 主なトピック 4 月 28 日、AWS の CEO であるマット ガーマン、SVP Amazon Applied AI Solutions である Colleen Aubrey 氏、AWS の CMO である Julia White、そして OpenAI のリーダーたちが登壇し、お客様がエージェントを利用してビジネスのあり方をどのように変えているのかについて語りました。このイベントでは、Amazon Quick、Amazon Connect、OpenAI とのパートナーシップの強化に関する数々の発表が行われました。このイベントでの主な発表のまとめをご紹介します。 Amazon Quick が、デスクトップアプリケーション、新しい料金プラン、ビジュアルアセット生成で拡張 – Amazon Quick は、お客様のアプリケーションと連携し、お客様にとって重要なことを学習して、お客様のためにアクションを実行する、業務用 AI アシスタントです。今週、Quick は新しいデスクトップアプリケーション (プレビュー) を発表しました。このアプリケーションを利用することで、ブラウザを開かなくても、ローカルファイル、カレンダー、コミュニケーションに接続できます。個人のメールアドレス、または既存の Google、Apple、Github、Amazon 認証情報を使用して数分でサインアップできます。AWS アカウントは不要です。Quick は、チャットインターフェイスから直接、洗練されたドキュメント、プレゼンテーション、インフォグラフィック、画像を生成できるようになりました。また、ネイティブ統合機能も拡張され、Google Workspace、Zoom、Airtable、Dropbox、Microsoft Teams が含まれるようになりました。新しい「Quick でカスタムアプリケーションを構築」機能 (プレビュー) では、自然言語を使用してビジネス全体と連携するインテリジェントなアプリケーション、ダッシュボード、ウェブページを作成できます。 Amazon Connect が 4 つのエージェンティック AI ソリューションに拡張 – Amazon Connect は、単一の製品から、お客様既存のワークフロー内で動作するように設計された、一連の 4 つのエージェンティック AI ソリューションに拡張されます。Amazon Connect Decisions は、サプライチェーンプランニングおよびインテリジェンスソリューションであり、30 年にわたる Amazon の運用科学と 25 を超える専門的なサプライチェーンツールを組み合わせることで、チームの業務を危機管理からプロアクティブな計画に移行させます。Amazon Connect Talent (プレビュー) は、エージェンティック AI 採用ソリューションであり、大規模な採用を管理する人材獲得リーダー向けに、AI 主導の面接、科学的根拠に基づいた評価、一貫性のある評価を提供します。Amazon Connect Customer (旧称: Amazon Connect) は、音声、チャット、デジタルチャネル全体でパーソナライズされたカスタマーエクスペリエンスを提供します。新しい設定機能により、組織は、対話型 AI を数か月間ではなく数週間でセットアップできます。Amazon Connect Health は、エージェントによる患者確認、予約管理、患者インサイト、アンビエントドキュメンテーション、医療コーディングを提供することで、患者がより迅速に医療ケアを利用し、臨床医がその提供により多くの時間を割けるようになります。 AWS と OpenAI が Amazon Bedrock におけるパートナーシップを拡大 – AWS と OpenAI は、最新の OpenAI モデルを Amazon Bedrock に導入し、Codex on Amazon Bedrock をリリースするほか、OpenAI を利用する Amazon Bedrock Managed Agents を提供します。すべて限定プレビューです。Amazon Bedrock 上の OpenAI モデル (限定プレビュー) は、GPT-5.5 や GPT-5.4 を含む最新の OpenAI モデルを、お客様が既にご利用の Bedrock API に統合し、統合されたセキュリティ、ガバナンス、コストコントロールを提供します。追加のインフラストラクチャを設定する必要も、新しいセキュリティモデルを学ぶ必要もありません。Codex on Amazon Bedrock (限定プレビュー) を使用すると、既存の AWS 環境内で OpenAI コーディングエージェントにアクセスして、AWS 認証情報を使用して認証し、Bedrock を通じて推論処理を実行するほか、Codex の使用量を AWS クラウドのコミットメントに算入できます。Codex on Bedrock は Bedrock API を通じて利用でき、まずは Codex CLI、Codex デスクトップアプリケーション、Visual Studio Code 拡張機能で利用可能です。OpenAI を利用する Amazon Bedrock Managed Agents (限定プレビュー) は、OpenAI のフロンティアモデルと AWS インフラストラクチャを組み合わせて、OpenAI を利用する本番対応のエージェントをクラウド内に構築します。OpenAI ハーネスを利用して構築することで、より迅速な実行、より鋭い推論、長時間実行タスクの確実な制御を実現します。 詳細については、「 Top announcements of the What’s Next with AWS, 2026 」にアクセスしてください。 2026 年 4 月 27 日週のリリース 4 月 27 日週のリリースのうち、私が注目したリリースをいくつかご紹介します: Amazon EC2 M8in および M8ib インスタンスの一般提供を開始 – カスタムの第 6 世代インテル Xeon Scalable プロセッサと第 6 世代 AWS Nitro Card を搭載したこれらのインスタンスは、M6in および M6ib と比較して、最大 43% 高いパフォーマンスを提供します。M8in は 600 Gbps のネットワーク帯域幅を提供し、M8ib は最大 300 Gbps の EBS 帯域幅を提供します。米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (東京)、欧州 (スペイン) で利用可能です。 Amazon EC2 R8in および R8ib インスタンスの一般提供を開始 – 同じ第 6 世代インテル Xeon Scalable プロセッサと Nitro Card をベースに構築されたメモリ最適化インスタンス。600 Gbps のネットワークと 300 Gbps の EBS 帯域幅プロファイルを備えています。大規模な商用データベース、データレイク、SAP HANA などのインメモリデータベースに適しています。米国東部 (バージニア北部、オハイオ)、米国西部 (オレゴン)、欧州 (スペイン) で利用可能です。 Amazon EC2 C8ine および M8ine インスタンスの一般提供を開始 – ネットワーク最適化インスタンス。C6in および M6in と比較して、最大 2.5 倍の vCPU あたりのパケットパフォーマンスと、最大 2 倍のインターネットゲートウェイ経由のトラフィックのネットワークスループットを提供します。仮想ファイアウォール、ロードバランサー、5G UPF ワークロードなどのセキュリティおよびネットワーク仮想アプライアンス向けに設計されています。C8ine は米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (東京) で、M8ine は米国東部 (バージニア北部) および米国西部 (オレゴン) で利用可能です。 Amazon Bedrock AgentCore が最適化機能を追加 (プレビュー) – AgentCore は、本番でのエージェントの「観察、評価、改善」のサイクルを完了するために、レコメンデーション、バッチ評価、A/B テストを提供するようになりました。レコメンデーションは、本番のトレースと評価の出力を分析し、最適化されたシステムプロンプトとツールの説明を提案します。これらは、事前定義済みのテストケースに対するバッチ評価、または実際のトラフィックに対する A/B テストで検証できます。すべてのレコメンデーションは、リリース前に承認が必要です。 AWS Lambda が Ruby 4.0 のサポートを追加 – 最新の LTS リリースである Ruby 4.0 が、Lambda マネージドランタイムおよびコンテナベースイメージとして利用可能になりました。JSON 構造化ログ、設定可能なログ記録レベル、ターゲット CloudWatch ロググループ設定など、Lambda の高度なログ記録コントロールのサポートを含んでいます。中国リージョンおよび AWS GovCloud (米国) を含む、すべての AWS リージョンで利用可能です。 AWS のお知らせに関する詳しいリストについては、「 AWS の最新情報 」ページをご覧ください。 その他の AWS ニュース 興味深いと思われる追加の記事やリソースをいくつかご紹介します: Amazon Q Developer サポート終了のお知らせ – Amazon Q Developer IDE プラグインと有料サブスクリプションのサポートは、2027 年 4 月 30 日に終了します。お客様は Kiro に移行する期間として 12 か月の猶予があります。新規サインアップは 2026 年 5 月 15 日からブロックされますが、既存のサブスクリプションでは引き続きユーザーを追加できます。2026 年 5 月 29 日より、Q Developer Pro では Opus 4.6 が利用できなくなります。Opus 4.5 および他の既存モデルは引き続き利用可能ですが、Opus 4.7 を含む最新のコーディングモデルは Kiro でのみ利用可能です。AWS マネジメントコンソールの Amazon Q Developer および AWS 公式エクスペリエンス (ドキュメント、モバイルアプリ、Slack、Microsoft Teams) に影響はありません。 AWS 10,000 AIdeas Competition: 受賞者の発表 – AWS は、ビルダーが Kiro と AWS 無料利用枠のみを使用して構築された AI アプリケーションを応募するグローバルコンテストである 10,000 AIdeas Competition の受賞者 20 名を発表しました。115 か国から応募があり、4 回の審査と 2 回のコミュニティ投票を経て選考されました。受賞者は、Global Champions、Regional Champions、Innovation Awards、Creative Track の各カテゴリに分かれており、各カテゴリで賞金と AWS クレジットが授与されます。 AWS Student Builder Groups – AWS Cloud Clubs は AWS Student Builder Groups に進化しました。コミュニティは現在、63 か国、600 以上の大学やカレッジに広がっています。既存の Cloud Club メンバーシップ、バッジ、進捗状況は引き継がれ、Cloud Club Captain は Group Leader になります。メンバーシップは 18 歳以上の学習者であれば誰でも参加できます。AWS Builder Center で最寄りのグループを探すか、またはキャンパスで新しいグループを立ち上げるための申請をすることができます。 近日開催予定の AWS イベント カレンダーを確認して、近日開催予定の AWS イベントにサインアップしましょう: AWS Summits – AWS Summits は、クラウドと AI をカバーする無料の実地イベントです。5 月の開催予定: シンガポール (5 月 6 日)、 テルアビブ (5 月 6 日)、 ワルシャワ (5 月 6 日)、 ストックホルム (5 月 7 日)、 シドニー (5 月 13 日~14 日)、 ハンブルク (5 月 20 日)、 ソウル (5 月 20 日)、 アムステルダム (5 月 27 日)、 ミラノ (5 月 28 日)、 ムンバイ (5 月 28 日)。 AWS Community Days – コミュニティリーダーが企画および提供するコミュニティ主導のカンファレンス。今後のイベントには、 イスタンブール (トルコ) (5 月 9 日) と パナマシティ (パナマ) (5 月 23 日) が含まれています。 AWS Builder Center にアクセスして、他のビルダーと交流したり、ソリューションを提供したり、構築を継続するのに役立つリソースを見つけたりしましょう。また、今後開催される AWS 主導の実地およびオンラインイベント や、 デベロッパー向けセッション もご覧いただけます。 – Esra この記事は、Weekly Roundup シリーズの一部です。AWS からの興味深いニュースや発表を簡単にまとめて毎週ご紹介します! 原文は こちら です。
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
G-gen の荒井です。当記事は Google Cloud Next '26 in Las Vegas の3日目に行われたブレイクアウトセッション「 Transform meetings into outcomes using Google Workspace with Gemini 」のレポートです。 G-gen Tech Blog では、現地でイベントに参加したメンバーや、日本から情報をウォッチするメンバーが、Google Cloud Next '26 に関連する記事を発信します。 blog.g-gen.co.jp セッションの概要 会議が抱える課題と Gemini による解決 会議における課題 会議の効率化とその実態 Gemini を活用した会議効率化の具体例 日程調整の自動化 会議中メッセージの自動保存 移動中の安全な会議参加 Take notes for me による議事録作成の自動化 Ask Gemini in Meet による言語の壁の排除 成果物の強化とチャットの継続 顧客事例 Air Liquide 社における導入成果 セッションの概要 当セッションでは、日々の業務における「会議」に焦点を当て、Google Workspace と Gemini がどのように会議を効率化し、より価値のあるアウトプットを生み出せるかが紹介されました。 会議が抱える課題と Gemini による解決 会議における課題 会議は業務で必要不可欠な一方、あらゆる課題が発生しています。当セッションでは会議における課題を以下表のように整理しました。 フェーズ 主な課題 会議前 カレンダーの重複による日程調整の負担、連続する会議による準備不足、事前情報の欠如。 会議中 議論からの逸脱や割り込み、議事録作成の負担、遅刻者への対応による議論の停滞。 会議後 決定事項やネクストステップの共有漏れ、会話内容消失からの再検討。 ハーバード・ビジネス・レビュー(Harvard Business Review)の調査によると、シニアマネージャーの 71% が「 会議は非効率である 」と回答しています。さらに、Atlassian の調査では従業員の 77% が「 会議は明確な結果を出さずに終わっている 」と報告しています。 会議の効率化とその実態 会議の効率化を促進するために、既存のインフラに後付けで AI ツールを導入する試みもありますが、これは結果的に ツールの断片化による管理コストの増加 と ライセンスコストの増加 を招きます。対して Google Workspace は、ユーザーが日常的に使用するツールに直接 AI を組み込んでいます。 Hypothesis Group の調査データによると、Gemini を統合した Google Workspace を使用している組織には以下のような効果が現れています。 全体的な生産性において 10% の優位性 競合他社(Microsoft 365)と比較して AI 投資に対する ROI が 15% 向上 Workspace ユーザーの 82% が AI 機能に価値を感じている Google Workspace 内のデータと連動するため、管理者が追加のセキュリティ設定を行わずとも、アクセス権限やデータ損失防止(DLP)ポリシーがそのまま維持される点も大きなメリットです。 Gemini を活用した会議効率化の具体例 日程調整の自動化 会議前の煩わしい作業を排除するため、Gemini を利用します。Google カレンダーでは参加者の予定を分析して最適な時間を提案できます。さらに、Gmail の Help me schedule 機能を使用すれば、メールのやり取りの中から直接カレンダーを参照し、インラインで会議の候補枠を提示・送信できます。 参考 : Gemini in Gmail で会議の時間を提案する 会議中メッセージの自動保存 会議が設定されると Continuous meeting chat 機能により、会議専用のチャットスペースが Google チャットに自動で立ち上がります。会議が始まる前にアジェンダや関連資料を共有しておくことで、参加者全員がコンテキストを理解した状態で議論をスタートできます。 参考 : Google Meet で Chat を使用する方法を学習する 移動中の安全な会議参加 移動中であってもシームレスに会議へ参加できるよう、Google Meet が車載システムに対応することが発表されました。 すでに Apple CarPlay には対応しており、近日中に Android Auto にも対応予定です。これにより、スマートフォンから車載のダッシュボードへ会議をシームレスに引き継ぎ、運転中もハンズフリーで安全に音声ベースの会議に参加できるようになります。 Take notes for me による議事録作成の自動化 会議中の最も大きな負担のひとつである議事録の作成も、Gemini に任せることができます。 Take notes for me 機能を開始するだけで、発言内容が Google Docs に自動的に整理され、サマリーやネクストステップが抽出されます。この機能は過去 1 ヶ月で 1億1000 万人のユーザーに利用されており、前年比 8.5 倍の成長を記録しています。 参考 : Google Meet の自動メモ生成 さらに議事録取得機能は Google Meet だけではなく、Android 向けの Google Meet アプリを開き、ホーム画面から Take notes for me をタップすることで、対面ミーティングや、他社ツール(Zoom や Microsoft Teams など)を使用したオンライン会議の音声であっても、端末のマイクを通じて録音し、Gemini に議事録を作成させることができます。 参考 : 対面会議で「自動メモ生成」を使用する Ask Gemini in Meet による言語の壁の排除 会議中に個人のアシスタントとして機能するのが Ask Gemini in Meet です。会議に遅れて参加した場合や、一瞬聞き逃してしまった場合に、「ここまでの議論の要点は何ですか?」と質問することで、他の参加者の議論を止めることなく状況をキャッチアップできます。 参考 : Google Meet の Gemini に相談 また Speech translation (リアルタイム翻訳)機能も提供されます。発言者の言語をリアルタイムで翻訳するだけでなく、発言者の「声のトーン」を維持したまま翻訳音声を生成するため、自然なコミュニケーションができます。 なお2026年4月現在、リアルタイム翻訳はまだ日本語に対応していません。 参考 : 音声翻訳について 成果物の強化とチャットの継続 会議が終了すると、Gemini は自動的に議事録のドキュメントを参加者全員にメールで共有します。今後のアップデート(2026年4月現在、アルファ版として提供)として、この議事録にはテキスト情報だけでなく、 会議中に画面共有された「プレゼンテーションスライドのスクリーンショット」も含まれる ようになります。これにより、会議を欠席したメンバーの視覚的な理解度が大幅に向上します。 また、会議前に作成された Continuous meeting chat は会議後も存続するため、決定事項に基づく後続のコミュニケーションをそのまま継続できます。 顧客事例 Air Liquide 社における導入成果 セッションの後半では、65,000 人以上の従業員を擁する産業ガスメーカー Air Liquide 社の CTO、Jeremy Gibbons 氏が登壇し、具体的な活用事例を共有しました。 同社はコンセンサスを重視する文化であり、Gibbons 氏自身も週に 35〜45 回の会議に参加しています。Gemini の導入による期待効果として、以下のような事例が挙げられました。 期待効果 詳細 全メンバーの会議参加 議事録の作成担当者が不要になったため、実質的に「会議に参加できる人数が1人増えた」ことと同義になり、全員が議論に集中できるようになりました。 多言語環境での意思疎通 グローバル企業において、全社員が英語に堪能とは限りません。 リアルタイム翻訳機能 が円滑なコミュニケーションの架け橋となっています。 業務プロセスの大幅な短縮 複数部門が妥協点を探る複雑な業務プロセス策定会議において参加者に徹底的に議論をさせた後、Gemini にその議論の要約とプロセス図の生成を依頼することで、数ヶ月に及ぶドキュメント作成期間を削減できました。 荒井 雄基 (記事一覧) クラウドソリューション部 クラウドサポート課 オンプレ環境のネットワーク・サーバーシステムを主戦場としていたが、クラウド領域にシフト。現在は Google Workspace を中心に企業の DX 推進をサポート。 ・ Google Cloud Partner Top Engineer 2025 / 2026 ・Google Cloud 認定資格 7冠 ・Jagu'e'r エバンジェリスト Follow @arapote_tweet
動画
該当するコンテンツが見つかりませんでした

















