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?

VSCode と Db2 for IBM i による RPG 開発効率化

Last updated at Posted at 2025-10-16

はじめに

本記事では Visual Studio Code (以下 VSCode) に拡張機能「Db2 for IBM i」を導入し、IBM i との接続方法や活用法についてご紹介いたします!

1. Db2 for IBM i での IBM i 接続

ここでは Db2 for IBM i から IBM i に接続し、簡単な SQL を実行するまでを説明します。

1.1. Code for IBM i のインストール

Db2 for IBM i の導入には、Code for IBM i のインストールが前提となります。こちらの記事でご紹介していますので、参考にしてください。

1.2. Db2 for IBM i のインストール

画面左のアクティビティーバーから拡張機能を選択 → 『Db2 for IBM i』を検索してインストールしましょう。

image.png

1.3. IBM i への接続

Code for IBM i を接続します。

image.png

SQL Job を開始するか聞かれます。Yes を選択します。

image.png

環境によってはエラーが発生します。その場合は 1.2 の手順に戻り、「特定のバージョンをインストール」からバージョンを下げて試してみることをおすすめします。

1.4. SQL の実行

画面左のアクティビティーバーから Db2 for IBM i を起動し「SQL JOB MANAGER」から + ボタンをクリックすると、SQL を入力するコマンドパレットが表示されます。

image.png

SQL を入力し、コマンドパレット右上の ▶ から 「Run statement」クリックします。

image.png

SQL の実行結果が表示されます。

image.png

2. GitHub Copilot で SQL を作ってみよう

VSCode と Db2 for IBM i に加えて、コードアシスト AI の GitHub Copilot を組み合わせると、SQL の生成などを AI に任せることができます。

2.1. GitHub アカウントの作成

GitHub Copilot の利用には GitHub のアカウントが必要です。

「Sign up」よりアカウントを作成します。

image.png

2.2. GitHub Copilot 学習設定について

GitHub Copilot が私たちのデータを使って学習する設定は「無効」で固定されています。

image.png

ただし、もし GitHub Copilot の個人版している場合は、下記のチェックも外したほうが無難です。以降でその説明をしていきます。

image.png

GitHub にログイン出来たら、左上のメニューより「Copilot」をクリックします。

image.png

左下のメニューより「Settings」をクリックします。

image.png

「Allow GitHub to use my data for product improvements」のチェックを外します。

image.png

2.3. GitHub Copilot のインストール

1.2 の手順と同様に拡張機能「GitHub Copilot」をインストールします。

image.png

左下のメニューより、GitHub にサインインします。

image.png

「Authorize Visual Studio Code」をクリックします。

image.png

VSCode 画面右側に GitHub Copilot のチャット画面が表示されます。

image.png

表示されない場合は VSCode 画面上部にある、「チャットの切り替え」ボタンをクリックします。

image.png

2.4. GitHub Copilot で SQL を生成する。

このような気温情報を管理しているテーブル TEMP から、気温の一番高い月を抽出する SQL を生成してみます。

image.png

PF ファイルをアタッチし、GitHub Copilot に指示します。

image.png

GitHub Copilot が PF ファイルを解析し、SQL を生成します。

image.png

生成された SQL を VSCode 上の Db2 for IBM i から実行して確認することができます。

image.png

3. IBMi Servicesについて

3.1. IBMi Servicesとは?

IBMiのシステム状態やユーザーの情報、
ジョブ情報を簡単に取得できるサービスのことです!!

SQLを使って簡単に情報を取得できるので、システム管理者の方々にとっては非常に便利な機能です。

3.2. 具体的にどんなことが出来るの?

・CPUやメモリの使用率を調べる
・動いているジョブの一覧を調べる
・ユーザーのログイン状況を調べる
・データベースのテーブルの状態を調べる
 etc...

3.3. VSCodeでIBMi Servicesを使うには?

EXAMPLESのタブに数々のサンプルコードがあるので、
そこから利用することが出来ます。
EXAMPLES.png

ジョブの実行はACSと同様「CNTL+R」で実行することが出来ます。

3.3. どんなサービスがあるの?

IBM i Servicesには様々なサービスがあり、以下にいくつかの例を挙げます。
例1)稼働中のジョブがどれだけメモリを利用しているか
 Storage-Temporary storage consumption,by active jobs
⇒過去に一番使われた時のサイズ(BUCKET_PEAK_SIZE)と
  現在のサイズ(BUCKET_CURRENT_SIZE)を調べることが出来ます。
image.png

例2)高権限を持っているユーザーの一覧を出す。
   Security-Review ALLOBJ users
ALLOBJ権限を持っているユーザーの一覧を調べることが出来ます。
image.png

例3)libraryの一覧を出す
Librarian-Find objects

image.png

3.4.検索について

英語が多くて先ほど出した例について見つからないよ💦
という方はフィルター機能がございますので、そちらを活用してみてください。
image.png

フィルターバーに絞りたい用語を入力します。
フィルターバー.png

フィルター後.png

3.5.注意点

権限によってServiceを利用できない場合があります。
その場合はCHGUSRPRF コマンドで一時的に特殊権限を高くすることなどを
検討してみてください。

4.IBM i Notebooksを使ってみよう

VSCodeでSQL等を利用したデータ取得を行う場合、Notebooks機能を活用するとより便利になるかもしれません。
「運用業務をしていて毎日同じデータを取得・解析するけれど、もっと楽できないだろうか」「もっと早く・視覚的に取得したデータを見てみたい」 と悩んでいる人はぜひ一度使ってみてください!

ここでは、SQLを用いたIBM i Notebooksの活用について紹介します。

4.1.Notebooks機能とは

そもそもNotebooksとは、VSCodeで利用できるAPIの一つであり、inbファイルというファイル形式に 【Markdown形式でのメモ作成】や【ソースコードとその出力結果】、【Github Copilotチャットとの連携結果】を保存できる機能 のことを指します。
"Notebooks are the epitome of a REPL"とも言われていて(参照先1より抜粋)、Notebooksは入力結果の即時実行・出力が行われるREPLの1つであると言うこともできるでしょう。

Notebooksではファイル上にメモとコードを同時に保管できるほか、結果をグラフとして出力することも出来るので、メモとコードを同じページに保管・活用したい人だけでなく出力結果を視覚的に取得したい人にもおすすめの機能となっています。
参照先1:Notebooks, Visual Studio Code style(公式ドキュメント)
参照先2:Jupyter Notebooks in VS Code(公式ドキュメント)
※VSCode、及びQiita記事では「Notebooks」というAPIの名称より、「Jupyter Notebook」での利用や名称のほうが広く知られているかもしれません。

4.2.Notebooksの利用方法

では、そんな便利なNotebooks機能はどうすれば使うことが出来るのでしょうか?
利用する際の手順としては主に2つあり、それぞれ以下の通りです。

  1. EXAMPLESとして登録されているSQL記述を呼び出し実行する方法
  2. Notebooksを新規作成し、自分で記述する方法

順番にやり方を説明します。

4.2.1.EXAMPLESから呼び出す場合

DB2 for IBM i にはIBM i Servicesと同様、EXAMPLESとしてNotebooksの例文が掲載されています。このEXAMPLESの中から使用したい項目を呼び出して実行する場合、以下の手順で行います。

1.VSCodeからIBM i に接続、DB2 for IBM i を起動させる
接続方法や起動については 1. DB2 for IBM i での IBM i 接続 をご覧ください。

2.DB2 for IBM i の画面からEXAMPLESを選択、Notebooks項目を開く
rising3-1.png
EXAMPLESには様々なSQL例が載っていますが、その中からNotebooksという項目を選択⇒利用したい項目をクリックすると、該当項目のSQLが記されたinbファイルを開くことが出来ます。

3.実行
rising10.png

ファイル上部に表示される「すべてを実行」、もしくはSQLの横に表示される「▷」マークをクリックすると、SQLを実行できます。
SQLの直下、黄色い枠で囲われた部分がSQLの実行結果を元にグラフとして出力したものです(具体的な名称についてはマスクしています)。

グラフの詳しい説明は 4.5.グラフ機能 へどうぞ!

EXAMPLESとして示されたNotebooksはIBM i Servicesと同様、上位レベルの権限でないとSQLそのものの実行ができない場合もありますので注意が必要です。

うまくEXAMPLESのNotebooksが実行できない/実行できたがもっと分かりやすいもので試してみたいという方は、下記の新規作成例を参考にファイルを作成してみてください。

4.2.2.新規作成する場合

EXAMPLESを利用せずinbファイルを1から作成する場合、以下の手順で行います。

1.VSCodeを起動した状態でF1キーを押し、New Notebookを選択する
rising8.png
F1キーを押すと画面上部に検索用入力画面が出現します。そこに Notebooksnew notebook と入力することで【IBMi Notebooks:New Notebook】を呼び出し、選択することが可能です。

2.inbファイルが新しく生成されるため、記述を行う
rising4.png
1の手順を実行すると、新しいinbファイルが作成され画面入力を行えるようになります。ここに実行したいSQLを入力したり、記述したいメモを残したりすることが可能です。
入力できる項目は 4.3.入力項目の説明 で解説しています。

3.実行
EXAMPLESと同様、▷マークかファイル上部の「すべてを実行」を押下することで実行できます。

4.保存
rising5.png
作成した、あるいは開いたinbファイルを保存したい場合、画面上部からファイルの保存、あるいはCtrl + Sを実行することで任意の名前やディレクトリを選んでファイルの保存が可能です。

5.既存ファイルの読み込み
保存したファイルを読み込み再度使用することもできます。
その場合、「ファイル」⇒「ファイルを開く」⇒開きたいファイルを選択して利用してください。
※EXAMPLESから呼び出したinbファイルも同じ手順で保存・再読み込みをして実行することができます。

今回の場合は ローカル環境、かつドキュメントフォルダ直下にinbファイルを保存 することでファイル呼び出しできましたが、場合によってはうまく呼び出せないこともあるようです。
参考:@gomAnomalocaris(Mikio Sasaki)さんの記事

実行環境によるinbファイルの読み込みエラーについては、追加調査で分かることがあれば追記します。


4.3.入力項目の説明

ここではinbファイル内に記述できる、入力項目を解説します。
rising6.png

4.3.1.「生成」

Github Copilotを使い、SQLや文章を生成するときに使用します。
ボタンを押すとGithub CopilotとVSCodeの連携・及びインストールが済んでいない場合は以下の画面が表示されますが、
rising7.png

記事内でも紹介したように、Github Copilotをインストール・連携した 場合、以下のような入力項目が出現しNotebooks画面内で質問の記述が可能となります。
rising9.png

4.3.2.「コード」

コードを書きたいとき使用します。
ボタンを押すとコードブロックが出現するため、コードブロック内にコード記載を行ってください。解説してきた実行手順で記載コードの実行が可能です。
rising11.png
※コードの実行結果はSQLのコードブロック直下に表示されます。

4.3.3.「マークダウン」

マークダウン形式でメモを書きたいとき使用します。
rising12.png
画面上に書かれているように、右上に表示されたチェックマークを押下することで内容を確定、マークダウン形式を反映して画面に表示させることができます。
文字を大きくしたり段落ごとに分けることも可能なため、自由な記述が可能です。

4.4.実行例

使い方の説明だけではイメージがつきづらいため、ここからは具体的な画面をお見せして説明します。
今回Notebooks機能を使って表示させるのは、TOKMSP(得意先マスター)というテーブルです。

ここではTOKMSPに存在する得意先名カナという項目を、アイウエオ順にそれぞれ何件ずつあるのか、SQLで取得したいとします。
このときマークダウン形式でメモをしながらコードブロックにSQLを記述し、実行すると…………
rising13.png
結果が表示されました!

4.5.グラフ機能

Notebooksでは通常のSQL実行のほか、 実行して得た結果をグラフとして出力する 機能も備わっています。
SQLの実行結果をグラフとしてする場合、

  1. ①. SQLの直前に 【どのグラフで表示したいか】 を記述する
  2. ②. グラフとして表示したいSQLデータ(SELECTで取得するデータ)に対し、 【AS句で"label"という名前】 を指定する

という2つのルールを守る必要があります。

このルールを 必ず 守らないとグラフ表示ができません!!


特に①については、以下のような文字列を打ち込むとそれぞれのグラフで結果を表示できることが分かったため、必要に応じて記述変更するのもいいかもしれません。
※試してみてグラフ表示できたのは以下のとおりですが、他にも別種類のグラフがあるかもしれません。分かり次第追記します。

SQL前の記述 出力されるグラフ表示
pie: 円グラフ
line: 棒グラフ
bar: 折れ線グラフ
doughnut: ドーナツグラフ
radar: レーダーチャート

4.4.実行例 にて実行したSQLをグラフにする場合、それぞれ以下のような見た目になります。

4.5.1.円グラフ

rising16.png

4.5.2.折れ線グラフ

rising15.png

4.5.3.棒グラフ

rising14.png

4.5.4.ドーナツグラフ

rising17.png

4.5.5.レーダーチャート

rising18.png


分かりやすくするためすべて同じSQLを用いて別々のグラフを表示させましたが、実際の利用の際は自分が使用したいグラフ種別を選んで使ってみてくださいね!

さいごに

以上のように、Visual Studio CodeとDB2 for IBM i/Code for IBM iとの連携を用いることで、普段利用しているIBM i でのデータ操作を簡単にしたり便利にしたり、より使いやすくできることが分かりました。

では、こういった機能は実務的にはどう生かすことが出来るのでしょうか?
実務的には、IBM i OS 7.4以降のIBM i に対する設定変更を行う際、SQLを用いて変更出来るもの・逆にSQLでないと設定変更ができないものなどが存在しているそうです。

それに対し、IBM i Servicesを用いたりNotebooks機能を用いたりすることで普段の保守・運用・IBM i の設定変更を便利に行えるようになる/Github Copilotとの連携も含めると、さらに統合的に便利に使うことが出来る……という観点があり、今回はVSCodeの活用方法として上記をご紹介しました。

開発を行っている立場だとあまり触る頻度が多くない仕組みではありますが、こういったことが出来るというのを知っているだけでも保守業務・運用業務についたとき役立ちます。
また、開発業務の方も普段の業務に役立てられる部分があるので、ご自身の業務に合わせてぜひ役立ててください!

ここまでお読みいただき、ありがとうございました:smiley:


当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。


2
0
0

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?