こんにちは。SCSK小寺です。
私の20台の頃の目標に、オープンソースのプロジェクトに参加して、機能追加、バグ修正をしたいという目標がありました。
ただ、時間もなく、仕事に追われ、漠然とした夢となっていました。
ここ最近のAIブームにより、その夢が手に届きそうなところにきましたので、このブログで紹介したいと思います。
内容は、Claude Codeを使用して、Zabbixのモジュール開発をしてみたいと思います。
Zabbixのモジュールはプラグイン形式で、所定の場所にプログラムを配置することで、画面の追加やウィジェットの追加をすることができます。
そこで今回は Claude Code を相棒にして、WSL上のZabbix環境でフロントエンドモジュールを作り、ブラウザに「Hello World」を表示するところまでをやってみます。
今回のゴールと構成
– WSL(Ubuntu)上に **Zabbix** と **Claude Code** をインストール
– WindowsのホストPCに **VS Code** +拡張機能(Remote Development / Claude Code)をインストールし、WSLに接続して開発
– 最小構成のフロントエンドモジュールを作り、ブラウザに「Hello World」を表示
– 途中でエラーが出たら、Claude Codeに調査・修正を任せる
全体像はこんなイメージです。
1. WSLの準備
まずWindows側でWSLを有効化し、Ubuntuを入れます。すでにWSL環境がある方はスキップしてください。
※WSLじゃなく、仮想サーバやEC2でもSSHで接続できれば問題ありません
# PowerShell(管理者)で実行 wsl --install -d Ubuntu
インストール後、Ubuntuを起動してユーザー作成まで済ませておきます。
2. WSLにZabbixをインストール
WSL(Ubuntu)のターミポイントで、Zabbixをインストールします。
今回は検証用なのでサーバ+フロントエンド+DB(MySQL)をひとまとめに入れる構成です。
公式の手順は環境(OS・Zabbixバージョン)で変わるため、ここでは流れだけ示します。
実際のコマンドは [Zabbix公式のダウンロードページ]で対象バージョンを選んで生成されるものに従ってください。
3. WSLにClaude Codeをインストール
次に相棒のClaude Codeを入れます。
curl -fsSL https://claude.ai/install.sh | bash
インストール方法は更新されることがあるので、
最新は [Claude Code公式ドキュメント](https://code.claude.com/docs/ja/quickstart) を確認してください。
次にAIプロバイダーの設定を行います。私はAmazon Bedrockを使用するためAWS CLIをインストールしています。
#.claude.json に追記
"env": {
"CLAUDE_CODE_USE_BEDROCK": "1",
"AWS_REGION": "ap-northeast-1",
"AWS_PROFILE": "aws-profile",
"ANTHROPIC_MODEL": "jp.anthropic.claude-sonnet-4-5-20250929-v1:0"
},
4. ホストPCにVS CodeをインストールしてWSLに接続
Windows側に [VS Code](https://code.visualstudio.com/) をインストールし、続けて以下の拡張機能を入れます。
拡張機能ビュー(`Ctrl+Shift+X`)で「Remote Development」「Claude Code」を検索してインストールしてください。
Remote Development(Microsoft)
|WSL・SSH・コンテナ内のファイルをローカル同様に編集できるようにする拡張パック。Zabbixサーバへの接続に利用
Claude Code for VS Code(Anthropic)
VS Code内でClaude Codeを呼び出せるプラグイン。エディタとターミナルを行き来せず、開いているファイルを文脈に渡せる
VS Codeを開いて、左下の緑色アイコン → 「Connect to WSL」を選ぶと、WSL内のファイルをそのまま編集できるようになります。
ZabbixのWebモジュールは「/var/lib/zabbix」にあるため、VS Codeのフォルダを開くで「/var/lib/zabbix」を開きます。
これで「Windowsで編集 → WSLで実行」という快適な開発環境が整いました。
5. Claude Codeに `/init` させて構成を理解させる
ここからが本題です。モジュールを作りたいディレクトリで `claude` を起動し、`/init` を実行します。
`/init` を実行すると、Claude Codeがプロジェクト(=今いるディレクトリ)の構成を読み取り、`CLAUDE.md`(プロジェクトの説明メモ)を生成します。これにより、以降のやり取りでClaude Codeが「ここはZabbixのモジュールディレクトリだ」という前提を共有した状態で動いてくれます。
6. 「Hello World」モジュールを作らせる
Claude Codeにこう頼みます。
ブラウザに「Hello World」と表示するだけの、最小構成のZabbixフロントエンドモジュールを作って。
そうするとClaude Codeがモジュールの作成を開始して、以下のファイルが作成されます。
helloworld/ ├── manifest.json … モジュールの定義(名前・バージョン・アクション・メニュー) ├── Module.php … モジュール本体クラス ├── actions/ │ └── HelloWorld.php … アクション(コントローラ) └── views/ └── helloworld.php … 表示テンプレート
ファイルの生成が完了したら、Zabbixの管理画面 **「管理」→「一般設定」→「モジュール」** から対象モジュールをスキャン・有効化し、ブラウザでアクションのURLを開きます。
無事に「Hello World」が表示されれば成功です。
7. エラーが出ても、Claude Codeに調査させる
ここが今回いちばん伝えたいところです。**初回からきれいに動くことは、まずありません。** ファイル配置ミス、namespaceの不一致、manifestのキー名違い…と、地味なエラーが必ず出ます。
これまでなら、エラーメッセージをコピーしてチャット形式のAIに貼り付けて。。。という手間でした。
Claude Codeなら、こう投げるだけです。
“`
モジュールを有効化したらこのエラーが出た。原因を調べて直して。
(エラーメッセージを貼る)
“`
Claude Codeは、
– 生成したファイルの中身を自分で読み直し
– Zabbixのログ(`/var/log/zabbix/` やApacheのエラーログ)を確認し
– manifestやnamespaceの不整合を特定し
– 修正パッチを当てて、再度確認する
という調査ループを **自分で回してくれます**。こちらは「直して」と言って、結果を確認するだけ。
私の体感では、ここでの「自分でログを見に行ってくれる」挙動がいちばんありがたい。
モジュール開発はエラーの8割が「定義ファイルのちょっとしたズレ」なので、人間が探すと地味に時間が溶けます。
まとめ
今回やったことを振り返ります。
「オープンソースの開発」はハードルが高いというイメージは、相棒のClaude Codeがいるとかなり下がります。**まず動くものを作って、エラーは任せて、自分は設計と確認に集中する**。この進め方は、もっと実用的なモジュール(カスタムダッシュボードウィジェットや独自のデータ表示など)を作るときにもそのまま効いてきます。
次回は、この延長で「ZabbixとClaude CodeとMCP」あたりを書いてみたいと思います。
それでは、よいZabbixライフを。
SCSK Plus サポート for Zabbix
★YouTubeに、SCSK Zabbixチャンネルを開設しました!★
★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★







