はじめに
- お待たせいたしました。第3回から第5回でGitの基礎を学んできましたが、いよいよIBM i のソースをGitで管理する実践編に突入です。
- IBM i 上にGitを導入してコマンドでリポジトリ管理することも可能ですが、本連載ではVS CodeのGUIをフル活用して、シュッと覚えてまいりましょう。
※本記事を印刷してご覧になりたい場合は、iWorld会員向けに公開しているPDF版「VS CodeでGitを使ってIBM i のソースを管理してみよう」をご利用ください。
1. IBM i でGitを使うモチベーションは何か
なぜ今、IBM i でGitなのか
IBM i の開発環境は長年、ソースファイルとPDMを中心とした独自の管理方法で運用されてきました。しかし、現代の開発トレンドを見ると、以下のような理由からGitの導入が重要になっています。
- Gitは言語やプラットフォームを問わず、世界中で使われているバージョン管理システムです。
- IBM i 開発でもこの標準技術を採用することで、他のプラットフォームとの連携や、新しい開発者の参入障壁を下げることができます。
言語、プラットフォーム関係なく、デファクトスタンダードの技術を使う良さ
- CI(継続的インテグレーション)と CD(継続的デリバリー)を1本の流れとしてまとめたもの、即ちCI/CDパイプラインの構築に必要です。
- IBM i 向けのCI/CDツール(例:ibmi-tobi)もGitリポジトリを利用すると、より自動化された本番化が可能になります。
CI/CDをするときも必要
- IBM BobなどのAIエージェントを活用した開発では、どんどんドキュメントやソースが増え、変更されていきます。履歴を残すためにも、AIエージェント開発をするにあたって、Gitでソース管理されていることは重要な前提となります。
IBM BobなどAIエージェントを使った開発に必要であること
- 第3回「VS CodeでGitを触ってみよう(1) 基礎学習編」で学んだように、Gitの分散型管理により、先祖返りを防ぎ、複数人での並行開発がスムーズになります。
- ILE RPGやサービスプログラムなど、複数のソースから構成されるプログラムの管理に有効です。
複数人開発での生産性向上
2. まずは、コンパクトにはじめる
色々とモチベーションに関してのご説明をしましたが、今回は、まずコンパクトに始めることを目標とします。具体的には、以下の流れでIBM i のソース管理を体験していきます。
実現する開発フロー
- GitHubでリモートリポジトリを作成
・プライベートリポジトリを作成します。 - ローカルPCにClone(複製)
・リモートリポジトリをローカルリポジトリとして複製します。 - IBM i Project Explorerでプロジェクト設定
・ローカルフォルダー(=ローカルリポジトリ)とIFSを紐づけます。 - RPGソースの作成とデプロイ
・ローカルフォルダーでRPGソースを作成し、IFSへデプロイ(=IFSへ移送)します。 - コンパイル実行
・VS CodeからIBM i へコンパイル指示を行います。 - Gitでバージョン管理
・ローカルリポジトリにコミットし、リモートリポジトリへPushします。
今回の対象範囲
- 対象ソース:RPG IV(Free Form RPG)をIFSに配置して管理します。
・RPG IIIやDDS等は次の回で触れていきます。
3. 事前準備
必要な環境
- VS Codeがインストールされていること(第1回「VS Codeをインストールし、画⾯操作のイメージをつかもう」参照)
- Gitがインストールされていること(第4回「VS CodeでGitを触ってみよう(2) 基礎学習編」参照)
- GitHubアカウントが作成されていること(第4回「VS CodeでGitを触ってみよう(2) 基礎学習編」参照)
- IBM i への接続情報(IPアドレス、ユーザーID、パスワード(鍵認証指定可能))
IBM i 側の前提条件
-
SSHデーモンが起動していること
- VS CodeからIBM i はssh接続を行います。
- SSHデーモンが動いていない場合は、1399か5035などの英子文字が使えるユーザーで、以下のコマンドを実行
STRTCPSVR SERVER(*SSHD)
yumコマンドが利用可能であること(オープンソース管理パッケージ導入済みであること)
- yumコマンドが未導入の場合は、IBM i OSS Documentを参照してください。
- BashインストールはOSS管理パッケージからインストールするか、以下のyumコマンドでインストールをしてください。
yum install bash
- Bashインストール後に、今回使用するユーザープロファイルでは、SSHセッションで接続する際のデフォルトシェルにする設定を行います。
- 設定は、SQLで実行すればOKです。以下は対話型SQLで実行したコマンドです。
STRSQL CALL QSYS2.SET_PASE_SHELL_INFO('KOINU2', '/QOpenSys/pkgs/bin/bash')
TOBiがインストール済みであること
- TOBiが未導入の場合は、以下を参照してください。
TOBi前提条件、TOBiインストール - TOBiインストールの指示内容に従って、sshでIBM i に接続し、以下コマンドを実行します。
export PATH="/QOpenSys/pkgs/bin:${PATH}" - パスを通します(後の手順で$HOME/.bash_profileに自動で作成されるため、このタイミングでの作成は必須ではありません)。
- TOBiをインストールします。
yum install tobi
- インストールがされているかを確認するために、makei コマンドを実行します。usage: などが表示されれば、正しくインストールされています。
makei
Bashシェルが利用可能であること
4. VS Codeで拡張機能をインストール
IBM i Development Packのインストール
- VS Codeを開き、Ctrl+Shift+X または、アクティビティバーの拡張機能アイコンを押下します。
- 検索バーに IBM i Development Pack と入力し、検索します。

- インストール ボタンを押下して、IBM i Development Packをインストールします。
※スクリーンショットはすでにインストール済のため、表示が異なります。未導入の場合は、通常、拡張機能の横にインストールボタンが確認できます。
ポイント
IBM i Development Packには、以下の拡張機能が含まれています。
IBM i Development Packには、以下の拡張機能が含まれています。
- Code for IBM i:IBM i への接続とソース編集
- IBM i Project Explorer:プロジェクト管理とビルド
- Source Orbit:ソースファイルのIFS移行(次回以降で使用)
5. GitHubでリモートリポジトリを作成し、ローカルリポジトリに複製(clone)する
GitHubでリモートリポジトリ作成
- GitHubにブラウザからアクセスし、サインインします。
- 右上の自分のユーザーアイコンを押下し、Repositoriesを選択します。

- New ボタンを押下して、新しいリポジトリを作成します。
リポジトリの設定
以下の項目を入力します。
- Repository name:ibmi-rpg-project(任意の名前で構いません)
- Description:IBM i RPG開発プロジェクト
- Choose visibility:Private(プライベートリポジトリとして作成)
※Privateリポジトリは外部の人には見えないリポジトリです

- その他の項目はデフォルトのままで構いません。
- Create repositoryボタンを押下します。
Clone用URLの取得
- リポジトリが作成されたら、Codeボタンを押下します。
- HTTPSタブが選択されていることを確認し、URLをコピーします。

- 例:https://github.com/koinumasaoko/ibmi-rpg-project.git
ローカルリポジトリに複製(clone)
- ローカルPCに作業用フォルダーを作成します。
- HTTPSタブが選択されていることを確認し、URLをコピーします。
例:C:\iWorld-ibmi - VS Codeを起動します。/li>
- Ctrl+Shift+Pでコマンドパレットを開き、git cloneと入力して選択します。
- 先ほどコピーしたリモートリポジトリのURLを貼り付け、Enterを押下します。
- フォルダー選択画面で、先ほど作成した作業用フォルダー(C:\iWorld-ibmi)を選択します。

- リポジトリの宛先として選択を押下します。
- 開くを押下して、Cloneしたリポジトリを開きます。

確認ポイント
エクスプローラーエリアにibmi-rpg-projectフォルダーが表示されていればOKです。
フォルダー構成はC:\iWorld-ibmi\ibmi-rpg-projectとなります。
エクスプローラーエリアにibmi-rpg-projectフォルダーが表示されていればOKです。
フォルダー構成はC:\iWorld-ibmi\ibmi-rpg-projectとなります。
6. IBM i への接続設定
接続情報の登録
- アクティビティバーの`IBM i`アイコンを押下します。

- SERVERSエリアの+ボタンを押下します。

-
-
以下の接続情報を入力します。
- Connection Name: MY-IBMi(任意の名前)
- Host or IP Address: IBM i のIPアドレス
- Port: 22
- Username: ユーザープロファイル名(今回はKOINU2というユーザープロファイルを使用)
- Password: パスワード
- Connectボタンを押下します。
初回接続時の設定
- 初回接続時、ホームディレクトリ(/home/ユーザー名)が存在しない場合、作成するか確認されます。Yesを押下します。

- IBM i Debug拡張機能がパスワードを許可してほしいと出てきたらAllowで許可をしてください。

- Bashのパスを通すか確認されます。Yesを押下します。

- これにより、/home/ユーザー名/.bashrcが自動生成されます。
# Generated by Code for IBM i export PATH=/QOpenSys/pkgs/bin:$PATH:/QOpenSys/usr/bin:/usr/bin
IFS BROWSERの確認
- IFS BROWSER`エリアに/home/ユーザー名が表示されていることを確認します。

- 表示されていない場合は、+ボタンを押下し、/home/ユーザー名を追加します。
7. IBM i Project Explorerのセットアップをする
プロジェクトの作成
- アクティビティバーのエクスプローラーを押下します(Ctrl+Shift+E)。

- PROJECT EXPLORERエリアを開きます。

- →(Create iproj.json)を押下します。

- プロジェクトの説明を入力します。
例:IBM i RPG開発プロジェクト

- Enterを押下します。
- プロジェクトが作成されました。

作成されるファイル
iproj.jsonファイルが作成されます。このファイルは、プロジェクトの設定情報を保持します。
iproj.jsonファイルが作成されます。このファイルは、プロジェクトの設定情報を保持します。
Run Setup コンパイルコマンドの定義
- PROJECT EXPLORERエリアで、プロジェクト名(ibmi-rpg-project)にカーソルを合わせて右クリックします。
- Launch Action Setupを選択します。

- コンパイルコマンドの対象を選択する画面が表示されます。今回はすべて選択します。

※余談です。画面の中に「ibmi-bob」がありますが、上述の「Tobi」のことです。
IBM Bobの登場により名称変更したものの、まだ残っているんですね… - OKを押下します。
- actions.jsonが作成されました。

作成されるファイル
.vscode/actions.jsonファイルが作成されます。このファイルには、各種コンパイルコマンドの定義が含まれています。
.vscode/actions.jsonファイルが作成されます。このファイルには、各種コンパイルコマンドの定義が含まれています。
IFSと紐づけする
- PROJECT EXPLORERエリアのSourceにフォーカスします。

- →(Please configure deploy location)を押下します。

- IFSのパスを確認します。デフォルトは/home/ユーザー名/builds/ibmi-rpg-projectです。

- そのままEnterを押下します(パスを変更することも可能です)。
確認ポイント
アクティビティバーのIBM iアイコンを押下し、IFS BROWSERエリアで、指定したフォルダーが作成されていることを確認します。
アクティビティバーのIBM iアイコンを押下し、IFS BROWSERエリアで、指定したフォルダーが作成されていることを確認します。
デプロイ方法の設定
- PROJECT EXPLORERエリアで、Sourceの横にあるSet Development Methodアイコンを押下します。

- compareを選択します。

デプロイ方法について
- compare:ローカルとIFSのファイル内容を比較し、差分があるものだけをアップロード(推奨)
- changes:VS Code上で変更されたファイルをアップロード
- workingChanges:GitのWorking Treeで変更されたファイルだけアップロード
- stagedChanges:Gitでステージされたファイルだけアップロード
- all:すべてのファイルを強制的にアップロード
8. ローカルファイルからコンパイル指示をする
FF RPGソースを新規で作成する
- エクスプローラーで、プロジェクトフォルダー(ibmi-rpg-project)で新規ファイルを作成します。

- 新しいファイルを選択します。
- ファイル名をhello.rpgleと入力します。
ソースコードの記述
- 以下のRPGソースコードを入力します。
**free ctl-opt dftname(hello); ctl-opt main(main); //--------------------- // main処理 // CALL PGM(ライブラリ名/HELLO) //--------------------- dcl-proc main; dsply ('Hello from IBM i with Git!'); end-proc; - Ctrl+Sで保存します。
注意点
この時点では、まだIFSへファイルは配置されていません。
この時点では、まだIFSへファイルは配置されていません。
IFSへのデプロイ(ローカルフォルダーからIFSへ移送する)
- PROJECT EXPLORERエリアを確認します。
- 追加したファイルが検知されていることを確認します。

※反映されていない場合は、更新ボタンを押下します。 - Deploy Projectボタンを押下します。

確認ポイント
アクティビティバーのIBM iアイコンを押下し、IFS BROWSERエリアで、hello.pgm.rpgleファイルが配置されていることを確認します。
アクティビティバーのIBM iアイコンを押下し、IFS BROWSERエリアで、hello.pgm.rpgleファイルが配置されていることを確認します。
ライブラリーリストの設定
- PROJECT EXPLORERエリアで、Library Listにカーソルを合わせます。
- Add Library List Entryを押下します。

- 必要なライブラリーを追加します(例:KOINU2LIBなど)。


カレントライブラリーの設定
- Library Listにカーソルを合わせます。
- Set Current Libraryを選択します。

- コンパイル先のライブラリーを指定します(例:KOINU2LIBなど)。
カレントライブラリーの設定
- プロジェクト名(ibmi-rpg-project)にカーソルを合わせて右クリックします。
- Set Compile Commandを選択します。

- デフォルトのコマンドが表示されます。そのままEnterを押下します。

設定内容
iproj.jsonに、以下のような設定が追加されます。
iproj.jsonに、以下のような設定が追加されます。
ビルド(コンパイル)用ファイルを作成
- PROJECT EXPLORERエリアで、Source Orbitにカーソルを合わせ、Generate Build Fileを選択します。

- Bobを選択します(繰り返しますが、TOBiの旧名称はBob…)

- ローカルフォルダーにRules.mkが作成されました。

- この時点で一度、Deploy Projectを実行しておきます。

コンパイルの実行
- エクスプローラーでhello.rpgleを右クリックします。
- Run Compileを選択します。

- ターミナルエリアにコンパイルログが表示されます。

コンパイル結果の確認
- コンパイル後、.logsと.evfeventフォルダーがローカルに作成されます。
- エラーや警告がある場合は、これらのログで確認できます。
9. Gitリポジトリをローカルで作成・リモートリポジトリとして公開する
変更内容の確認
- アクティビティバーのソース管理アイコンを押下します(Ctrl+Shift+G)。

- 変更されたファイルの一覧が表示されます。
- .gitignore
- hello.rpgle
- Rules.mk
- iproj.json
- .vscode/actions.json
.gitignoreの設定
- プロジェクトフォルダーに.gitignoreが存在しない場合は、ファイルを作成します。
- 以下の内容を記述します。
# ビルドログは除外 .logs .evfevent .env
- Ctrl+Sで保存します。
git add
- git add=編集履歴をステージングエリアに移すこと、でしたね。
- ソース管理エリアで、Git管理したいファイルの+ボタンを押下します(ステージング)。

git commit
- commit=スナップショットをとることでしたね!
- コミットメッセージを入力します。
例:初回コミット:Hello Worldプログラムを追加

- コミットボタンを押下します。
git push
- ローカルリポジトリで行われたcommitをgit pushでリモートリポジトリに同期させていきます。
- 初回の場合はブランチの発行と表示されます。

- GitHubのブラウザーでリモートリポジトリを確認し、ファイルがPushされていることを確認します。

10. 開発フローの確認
ここまでの作業で、以下の開発フローが確立されました。
- ローカルでソース編集 → VS Codeのエディターで編集
- IFSへデプロイ → Deploy ProjectでIFSに転送
- コンパイル → Run CompileでIBM i 上でコンパイル
- Gitでバージョン管理 → ステージング、コミット、Push
この流れを繰り返すことで、IBM i のソースをモダンな方法で管理できます。
おまけ READMEを追加してみよう
- GitHubのブラウザーでリモートリポジトリからAdd a README.mdファイルを追加します。
- README.mdには、以下のような情報を入れておきます。

- 今回は以下の内容で作成しました。
# IBM i RPG開発プロジェクト IBM i 上でRPGプログラムを開発するためのサンプルプロジェクトです。 ## 概要 このプロジェクトは、IBM i環境でのモダンなRPG開発とGitによるバージョン管理の例を示しています。
- Commit changesをクリックします。

- Commit messageを追加し、Commit changesをクリックします。


- 今の状態は、リモートリポジトリの方がコミットが一つ進んでいる状態なので、ローカルリポジトリにリモートリポジトリの変更(READMEの追加分)を取り込む必要があります。
- 変更を同期またはgit pullで、リモートリポジトリの情報をローカルリポジトリに取り込みます。

- READMEファイルがローカルリポジトリで確認できれば、今回の対象範囲は終了です。
おわりに
- 今回はローカルPCにあったRPG IVのソースをIFSと紐づけて、ローカルのソースからコンパイル指示、さらにはGit管理まで行いました。
- ローカルPCでソースを編集し、IFSへデプロイ、コンパイル、そしてGitでバージョン管理という一連の流れが確立できました。
- 今回は、コンパクトに始めることを目標としたためmainブランチで作業していますが、実務ではfeatureブランチを使った運用がおすすめです。
- 本記事で作成したGitリポジトリは、GitHub Actionsやibmi-tobiと組み合わせることで、自動ビルドやCI/CDに発展させることも可能です。
- 次回は、RPG IIIやDDS、ディスプレイファイルなど、ソースファイルに格納されているソースをIFSに移行し、Git管理する方法をご紹介します。
- Source Orbitを使った移行作業や、より実践的な開発フローについても触れていく予定です。
- IBM i の開発も、モダンなツールとワークフローで、より楽しく、より効率的に進めていきましょう!
筆者
|
|
日本アイ・ビー・エム株式会社
Qiitaに、シュッとシリーズを投稿中 |













IBM i パッケージ リポジトリ(ibmi-repos)がインストールされていることを確認してください。
・存在しない場合は以下コマンドを実行してください。 ・存在するがtobiパッケージが見つからない場合、リポジトリを更新するために次の手順を実行します。