Mapepireとは
まず、一言で、「Mapepire(マパピー)」を紹介するならば、Db2 for iへのアクセスを提供するデータベース・クライアント、となります。
従来のODBC/JDBCやJTOpenといったクライアントとは異なり、WebSocketベースの新しい通信プロトコルを採用し、Node.js、Python、Javaなどのモダン言語からシンプルに接続できます。
「Mapepire: A new IBM i database client」によると、IBM i Access Client Solutions(ACS)やIBM Navigator for iと異なり、「クライアントがデータベースに接続するために、ネイティブ・バイナリーを必要としない」ことを要件として、Mapepireは開発されました。
Mapepireは、Python、Node.js、Javaについてクライアント・ライブラリーが用意されています。また、AIとの連携に関する文脈では、IBM iのMCPサーバーでデータソースとして使用されることがあります。
本記事では、既存のACSやNavigator for iと違うMapepireそのものの紹介と、Mapepireが評価されているポイントなどを、整理して記述します。
「クラウド・フレンドリーなIBM i データベース・アクセス・レイヤー」
Mapepireの公式サイトの冒頭には、「A cloud-friendly IBM i database access layer, built with simplicity and performance in-mind.」と書かれています。
IBM iの運用や操作で用いられるツールのうち、IBM i Access Client Solutions(ACS)はJavaベースのアプリケーションであり、IBM Navigator for iはブラウザー・ベースのツールです。では、Mapepireは、どのようなものなのでしょうか。
Mapepireを利用するためには、まず、IBM i上のPASE環境でMapepireのサーバーを起動する必要があります。そして、用意されているクライアント・ライブラリーから、Node.js、Java、Pythonのいずれかを選択し、クライアントを実装します。換言すれば、クライアント側でオペレーティング・システムへのドライバーのインストール不要であり、Python、Node.js、Java向けに提供されているSDKを使用することになります。
つまり、Mapepireは、ACSのような単体のアプリケーションではなく、IBM i上で起動するMapepireのサーバーと連携するクライアント/サーバー型のツールと思えば良さそうです。
IBM i をバックエンドとして活用しながら、クラウドやコンテナ環境でアプリケーションを構築したい開発者にとって、Mapepire は新しい選択肢となりつつあります。
| アーキテクチャー Mapepire は大きく分けて「Mapepire Server(IBM i 側)」と、「クライアント SDK(アプリ側)」の2つで構成されます。 |
|
| Mapepire Server | クライアント SDK*1 |
|---|---|
| IBM i上に常駐する軽量なデーモンで、クライアントからのWebSocket接続を受け付け、SQLの実行や結果の返却を担当します。 従来のようにクライアント側で複雑なプロトコル処理を行う必要がなく、サーバー側に役割を集約することで、クライアントは非常にシンプルになります。 サーバー側のシステム要件 OS:IBM i 7.3 以降 |
Node.js、Python、Javaなどの言語向けに提供されており、接続・クエリ実行・結果取得といった基本操作を簡潔なコードで実現できます。 WebSocket ベースの通信のため、クラウド環境でも安定して動作し、接続設定も最小限で済みます。 クライアント側のシステム要件 Pythonを使用する場合:3.10以降 Javaを使用する場合:Java8以降 |
| 「サーバー側に処理を寄せ、クライアントを軽量化する」という設計が、Mapepire のモダンさを支えています。 | |
*1 SDKは、「Software Development Kit(ソフトウェア開発キット)」の略で、開発者が特定のサービスや仕組みを簡単に利用できるようにまとめられたものです。
Mapepireの特長
GitHubにあるMapepire公式サイトの「Why Mapepire?」で述べられている「設計の核心となる原則」は以下の通りです。
- 言語間で一貫したクライアントSDK
- 最小限の依存関係
- クライアント・マシンにネイティブの依存関係(ドライバーなど)が不要
- サーバーとの通信は、単一ポート経由
- データの常時暗号化
これらの原則に基づいた結果、複雑なポートの解放が不要な形でサーバーとの通信が実現し、SDKのスタイルで各言語からの利用が可能となります。
また、「Why Mapepire?」に掲載されているJDBC/ODBCとMapepireとの比較表中で「Enhanced CCSID support」にチェックが入っていることから、CCSID(コード化文字セットID)のサポートが強化されていることがわかります。具体的にはCCSIDの処理をIBM i上のMapepireサーバー側に任せることで、クライアント側の軽量化が実現できています。
| JDBC/ODBCとMapepireとの比較(Why Mapepire?より) | |||
| JDBC | ODBC | Mapepire | |
|---|---|---|---|
| 単一ポートのみで動作可能 | ✅ | ||
| データは常時暗号化 | ✅ | ||
| 出口点経由で管理可能 | ✅ | ✅ | ✅ |
| 強化されたCCSIDサポート | ✅ | ✅ | |
| IBM watsonx.ai、Jupyter notebookで利用可能 | ✅ | ||
| 軽量なコンテナで稼働可能(例:Alpine Linux) | ✅ | ✅ | |
| 複数のクライアント言語を直接サポート | ✅ | ||
軽量クライアントであることは、クラウドネイティブ・アプリケーションのデプロイにおいて理想的な選択肢となり、RedHat UBI環境、最小・軽量・安全を重視しているAlpine Linuxのコンテナ、多様なクラウド・サービス(AWS、Azure、IBM Cloud、IBM watsonx.aiなど)で、Mapepireはシームレスに動作します。
そして、本来であれば、本記事の冒頭に記述するべきことでしょうが、Mapepireの大半がオープンソースで提供されていることは、重要な特長の1つです。
補足:Mapepireが開発された背景(現在のODBCの仕組みにおける課題)
本記事の冒頭で、Mapepireの開発要件が「クライアントがデータベースに接続するために、ネイティブ・バイナリーを必要としない」ことであったとことが、「Mapepire: A new IBM i database client」に書かれている、と紹介しました。
その「Mapepire: A new IBM i database client」には、新しいサーバーやクライアントが開発された背景も述べられています。
「IBM iでは、データベースとサーバーのクライアントの負荷が非常に高くなります。例えば、JTopenやODBCクライアントは、CCSIDを処理するためのコードが内部にあり、文字列を特定のエンコーディングに変換します。そのため、クライアントのコードが非常に大きくなり、複雑さも増します。」
「もう1つの問題は、サーバーとクライアント間の通信に使用されるプロトコルが、(十分には)公開されていないことです。」
これらの課題を背景として開発されたMapepireは、エンコーディングやパスワードレベルなどの処理をサーバーに任せることでクライアントの軽量化を実現した、ということです。 また、Mapepireの大半がオープンソースであることから、新たな言語で新たなアプリケーションを開発し、多くのプラットフォームでの実行が容易になる、とのことです。
Mapepireについて執筆しているQiita記事(2026年3月31日時点)
- 新しい IBM i データベース クライアント Mapepire|@tom_m_m氏
「サーバーの準備」「クライアントの実装」「出力結果」などを紹介しています。 - Mapepireの概要と始め方①(IBM i サーバー編)|@gomAnomalocaris氏
「Mapepire のインストール」「Mapepire サーバーの開始」「クライアントIPによる接続制限」などを紹介しています。 - Mapepireの概要と始め方②(クライアント編)全般・Java(途中です)|@gomAnomalocaris氏
「クライアントモジュールのダウンロードサイト」「Mapepire サンプルプロジェクト」などを紹介しています。
筆者
|
黒澤 巧 |
今尾 友樹 |










