前置き
- タイトルが長い…!シュッとシリーズでもIBM Bobを取り上げる時がきました
- IBM i MCP ServerをIBM Bobから利用、開発時のユースケースを考えました
- IBM iシステムの開発・保守で、こんな経験はありませんか?
- 「このテーブル変更したら、どこに影響するんだっけ……?」
- 「使ってないインデックス、どれ?」
- 「このビューや論理ファイルって、最近使われてる?」
- 従来は複雑なSQLを書いたり、複数のコマンドを組み合わせたりする必要がありましたが、 IBM i MCP Serverのdeveloperツールセットを使えば、IBM BobやAIエージェントに自然言語で聞くだけで、これらの情報をシュッと取得できます
- developerツールセットやその他ツール群は、IBM i MCP ServerのGit Repositoryに公開されており、今後も増えていくのでは?と推察します
- 本記事では、実際にIBM Bobを使って
KOINULIB/TOKMSP物理ファイルの依存関係を調査する例を通じて、developerツールセットの活用方法を紹介します
前提条件
この記事では、IBM i MCP ServerをローカルPCに導入・起動します。
IBM i に導入をしたい場合は、IBM i MCP Serverのセットアップを参照してください。
ローカルPCでMCPサーバーを導入する手順
参照ドキュメント
-
IBM i MCP Server Quick Start Guide
- 👆参照しながら作業していきます。この記事では、開発ツールをBobで起動させるため、手順とほぼ同じではありません
1. 環境前提
PC:
- Windows11(Mac、Linux、IBM iでも導入できます)
- Node.js18以上が導入済
# Node.js 18 以上がインストールされているか確認(CMD/PowerShellで確認) node --version- 未導入の場合はNode.jsダウンロードサイトから導入をしてください
- 今回は.msiファイルをダウンロードして、導入をしました
IBM i:
- IBM iにMapepire をインストールする
- 新しい IBM i データベース クライアント Mapepireの記事を参照してください
- IBM iにMapepire を起動しておく
# Mapepireサーバーの起動確認(IBM i 上で(PASEやsshで接続して)実行) sc check mapepire
2. IBM i MCP Server をローカルPCにセットアップ
- IBM i MCP Server公式ドキュメント:クイックスタートのStep 1: Installationを見ると、npx(npm配布版)を利用したセットアップ手順を推奨しています。npxは、ソースからビルドすることなく即座にインストールができ、IBM i MCP Serverのセットアップ手順でも推奨されています
npmとは
Node Package Manager の略称。
Node.js の 標準パッケージマネージャーであり、ライブラリやツールといった npm パッケージの インストール・依存関係の管理・スクリプト実行を行うためのツール。
npxとは
Node Package eXecute の略称。
npm パッケージに含まれる コマンド(CLI)を実行するためのツールで、ローカルにインストールされていないパッケージであっても、必要に応じて取得してその場で実行できる。
-
まず、作業用ディレクトリーを作成します。(作成する場所は任意です。今回はC直下に作成します)
# (CMD/PowerShellで確認) mkdir mcp-work cd mcp-work -
mcp-workフォルダー配下に、.envファイルを作成します
- IBM i DB2 for i Connection Settingsは、接続するIBM i の情報を追記してください
cat > .env << 'EOF' # IBM i DB2 for i Connection Settings DB2i_HOST=your-ibmi-host(IPを入れる) DB2i_USER=your-username(ユーザープロファイル) DB2i_PASS=your-password(ユーザーパスワード) DB2i_PORT=8076 DB2i_IGNORE_UNAUTHORIZED=true # Server Configuration MCP_TRANSPORT_TYPE=stdio EOF -
ツール格納用のフォルダーを作成します
mkdir -p tools/developer -
tools/developer配下にobject-statistics-dev.yamlを作成します
- object-statistics-dev.yamlを貼り付けます
- ツールでできることは後述します
3. IBM i MCP Server をIBM Bobでセットアップ
IBM Bobの設定画面から追加
- IBM Bobを開きます
-
...よりMCP サーバーを選択 します - MCPサーバーを有効化します
- MCPの設定を追加・編集します(今回はプロジェクトMCPを編集します)
{
"mcpServers": {
"ibmi-developer-local": {
"command": "npx",
"args": [
"-y",
"@ibm/ibmi-mcp-server@latest",
"--tools",
"C:/mcp-work/tools/developer/object-statistics-dev.yaml"
],
"env": {
"MCP_SERVER_CONFIG": ".env"
},
"disabled": false,
"alwaysAllow": []
}
}
}
設定の確認
- IBM Bobを再起動後、以下のように確認できます
developerツールセットが使えるか確認してください
- IBM Bobが以下のようなツール一覧を表示すれば成功です
4. developerツールセットでできること
- developerツールセットは、IBM iの
QSYS2.OBJECT_STATISTICSとSYSTOOLS.RELATED_OBJECTSを活用した5つのツールを提供します
| ツール | 機能 |
|---|---|
find_recently_used_objects |
指定期間内に使用されたオブジェクトを検索(最新順) |
find_stale_objects |
指定期間使用されていないオブジェクトを検索 |
find_dependent_objects |
特定のデータベースファイルに依存するすべてのオブジェクトを検索 |
find_dependent_objects_by_type |
特定タイプの依存オブジェクトのみを検索 |
describe_sql_object |
IBM i データベースオブジェクトを記述し、SQL DDL文を生成 |
5. 実際に使ってみた
Case1: PFの依存関係を調査
- KOINULIB
ライブラリのTOKMSP`物理ファイルを変更する前に、どのオブジェクトが依存しているかを確認したいので、IBM Bobを開いて、自然言語で質問します
質問:
KOINULIBライブラリのTOKMSP物理ファイルに依存しているオブジェクトを全て教えてください
IBM Bobの応答:
IBM Bobは自動的にfind_dependent_objectsツールを使用して、以下のような情報を返してくれます:
KOINULIBライブラリの[`TOKMSP`](KOINULIB/TOKMSP)物理ファイルに依存しているオブジェクトは以下の通りです:
**依存オブジェクト: 1件**
| オブジェクト名 | タイプ | ライブラリ | 所有者 | 説明 | 最終変更日時 |
|---|---|---|---|---|---|
| [`TOKMSL03`](KOINULIB/TOKMSL03) | KEYED LOGICAL FILE | KOINULIB | KOINUMA | 得意先マスター論理ファイル(KEY-TKNAKN) | 2023-09-21 13:42:32 |
[`TOKMSP`](KOINULIB/TOKMSP)物理ファイルには、1つの論理ファイル([`TOKMSL03`](KOINULIB/TOKMSL03))が依存しています。この論理ファイルは得意先マスターのキー付き論理ファイルで、TKNAKN(得意先名カナ)をキーとして使用しています。
Case2: 未使用オブジェクトの確認
KOINULIBライブラリで長期間使用されていないオブジェクトも確認してみます
質問:
KOINULIBライブラリで1年以上使用されていないオブジェクトをリストアップしてください
IBM Bobの応答:
KOINULIBライブラリで1年以上使用されていないオブジェクトは以下の12件です:
| オブジェクト名 | タイプ | 説明 | 最終使用日 | 使用日数 | サイズ(KB) |
|---|---|---|---|---|---|
| [`TOKMSP@BK`](KOINULIB/TOKMSP@BK) | PF | 得意先マスター物理ファイルsample | 2023-10-24 | 3日 | 156 |
| [`QQRYOUT`](KOINULIB/QQRYOUT) | PF | - | 2023-10-25 | 1日 | 36 |
| [`TOKMSPOUT`](KOINULIB/TOKMSPOUT) | PF | 得意先マスターQUERY ハンズオン用 | 2023-11-10 | 1日 | 40 |
| [`HINMSP_BK`](KOINULIB/HINMSP_BK) | PF | EOL/400品目マスター物理ファイル(KEY-HNBANG) | 2023-11-16 | 3日 | 112 |
| [`HINMSP@ADD`](KOINULIB/HINMSP@ADD) | PF | EOL/400品目マスター物理ファイル(KEY-HNBANG) | 2023-11-16 | 4日 | 112 |
| [`HINMSPL`](KOINULIB/HINMSPL) | LF | EOL/400品目マスター論理ファイル(KEY-HNTEIK) | 2023-11-16 | 3日 | 112 |
| [`DSPOBJDP`](KOINULIB/DSPOBJDP) | PF | DSPOBJD の出力ファイル | 2024-07-11 | 1日 | 37,912 |
| [`DSPOBJDP2`](KOINULIB/DSPOBJDP2) | PF | DSPOBJD の出力ファイル | 2024-07-11 | 1日 | 200 |
| [`HINMSP2`](KOINULIB/HINMSP2) | PF (TABLE) | - | 2024-11-07 | 1日 | 208 |
| [`QRNCVTLG`](KOINULIB/QRNCVTLG) | PF | - | 2024-11-15 | 1日 | 24 |
| [`TOKJUP`](KOINULIB/TOKJUP) | PF | QRY結合 TOKMSP JUMEIP | 2024-12-03 | 4日 | 36 |
| [`TOKTAB2`](KOINULIB/TOKTAB2) | PF (TABLE) | - | 2024-12-12 | 4日 | 240 |
**分析結果:**
- 合計12個のオブジェクトが1年以上使用されていません
- 最も古いものは2023年10月24日が最終使用日
- 最も新しいものでも2024年12月12日が最終使用日
- ほとんどが物理ファイル(PF)で、1つだけ論理ファイル(LF)が含まれています
- バックアップファイル(@BK、_BK)やテスト用ファイル(@ADD、OUT)が多く含まれています
- [`DSPOBJDP`](KOINULIB/DSPOBJDP)は約37MBと最も大きなサイズです
これらのオブジェクトは削除候補として検討できる可能性があります。
Case3: 新規DDL作成
KOINULIBライブラリに新規でTableを作成します
質問:
KOINULIBに店舗来店履歴テーブルをDDLで作ってください。カラムは(来年日、名前、店舗ID、店舗名)を記録するテーブルです
IBM Bobの応答:
KOINULIBライブラリに店舗来店履歴テーブルを作成するDDLファイルを生成しました。
**作成ファイル:** [`create_store_visit_history.sql`](create_store_visit_history.sql)
**テーブル仕様:**
- **テーブル名:** `KOINULIB.STORE_VISIT_HISTORY` (店舗来店履歴)
- **カラム構成:**
1. `VISIT_DATE` (DATE) - 来店日 ※必須
2. `CUSTOMER_NAME` (VARCHAR(100)) - 顧客名 ※必須
3. `STORE_ID` (VARCHAR(10)) - 店舗ID ※必須
4. `STORE_NAME` (VARCHAR(100)) - 店舗名 ※必須
5. `CREATED_AT` (TIMESTAMP) - 登録日時(自動設定)
**主キー:** 来店日 + 顧客名 + 店舗ID の複合キー
**インデックス:**
- `STORE_VISIT_IDX1`: 店舗ID + 来店日(店舗別検索用)
- `STORE_VISIT_IDX2`: 顧客名 + 来店日(顧客別検索用)
**実行方法:**
```sql
RUNSQLSTM SRCSTMF('/path/to/create_store_visit_history.sql') COMMIT(*NONE)
```
または
```bash
db2 -tvf create_store_visit_history.sql
```
おわりに
- IBM i MCP Serverのdeveloperツールセットを使うことで、従来は面倒だったオブジェクト管理作業も効率化されそうです
- Bob(AIペアプログラマー)に「○○について教えて」と聞くだけで、必要な情報がシュッと手に入る。これが新しい開発スタイルなのかもしれません(もちろん信じすぎてはだめ)
- ぜひ日々の開発業務に取り入れて、モダンを超えた最新のIBM i開発を体験してみてください!
参考リンク:






