2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シュッとIBM BobとIBM i MCP Serverのdeveloperツールを使ってみよう

Last updated at Posted at 2026-01-28

前置き:raised_hand:

  • タイトルが長い…!シュッとシリーズでもIBM Bobを取り上げる時がきました
  • IBM i MCP ServerをIBM Bobから利用、開発時のユースケースを考えました
  • IBM iシステムの開発・保守で、こんな経験はありませんか?
    • 「このテーブル変更したら、どこに影響するんだっけ……?」
    • 「使ってないインデックス、どれ?」
    • 「このビューや論理ファイルって、最近使われてる?」
  • 従来は複雑なSQLを書いたり、複数のコマンドを組み合わせたりする必要がありましたが、 IBM i MCP Serverdeveloperツールセットを使えば、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
    

IBM i:

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を作成します

3. IBM i MCP Server をIBM Bobでセットアップ

IBM Bobの設定画面から追加

  • IBM Bobを開きます
  • ...よりMCP サーバーを選択 します
    • image.png
  • MCPサーバーを有効化します
    • image.png
      ※スクリーンショットは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": []
    }
  }
}
  • 設定を保存し、起動を確認します
    • image.png

設定の確認

  • IBM Bobを再起動後、以下のように確認できます
developerツールセットが使えるか確認してください
  • IBM Bobが以下のようなツール一覧を表示すれば成功です
    • find_recently_used_objects
    • find_stale_objects
    • find_dependent_objects
    • find_dependent_objects_by_type
    • image.png

4. developerツールセットでできること

  • developerツールセットは、IBM iのQSYS2.OBJECT_STATISTICSSYSTOOLS.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(得意先名カナ)をキーとして使用しています。
  • image.png

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と最も大きなサイズです

これらのオブジェクトは削除候補として検討できる可能性があります。
  • image.png

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
    ```
  • 作ってくれたDDL例
    • image.png

おわりに

  • IBM i MCP Serverのdeveloperツールセットを使うことで、従来は面倒だったオブジェクト管理作業も効率化されそうです
  • Bob(AIペアプログラマー)に「○○について教えて」と聞くだけで、必要な情報がシュッと手に入る。これが新しい開発スタイルなのかもしれません(もちろん信じすぎてはだめ)
  • ぜひ日々の開発業務に取り入れて、モダンを超えた最新のIBM i開発を体験してみてください!

参考リンク:

2
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?