Utilization case of ushiday’s Code for IBM i-Yoshiki Ushida’s impressions and evaluations of the noteworthy open source “Code for IBM i”-I Magazine | i Magazine

text = Yoshiki Ushida Chubu System

Server-side open source software technology on IBM i reached a tipping point in 2019. It’s a shift in how OSS is delivered from the licensed program 5733-OPS to yum. This has made it possible to speedily apply OSS to IBM i.

But what about the client’s development environment? RPG and CL are SEU (suspended development), and OSS is used as various editors (RDi, VSCode, Eclipse, IDEA, Atom, etc.).

Let’s face it, I am one of them. Especially when it comes to RPG and CL development, I mostly use SEU, which I have been using for many years. For craftsmen (technicians), tools are important business tools, so it is best to use them easily. However, rather than sticking to old tools forever, it is important to try new tools and use both old and new tools well.

Meanwhile, IBM i’s client-side development environment is booming. IBM i Merlin and Code for IBM i. Even the author, who usually uses SEU, is using Code for IBM i more and more. In this article, I will introduce a convenient way to use Code for IBM i.

Here are some of the benefits of Code for IBM i in my personal sense.

①ローカル作業(ソース編集/読み取り)が可能になる

IBM i上のソースをローカルPCのCode for IBM iに取り込むことにより、IBM iに未接続の状態でもローカル環境で作業することができる。筆者は外出や移動があると事前にプログラム・ソースをローカルPCにダウンロードしておき、ネットワーク環境が弱くIBM i上のソースが参照しづらいときに、Code for IBM iを利用することが多い。新幹線の移動中やカフェなどでの待ち時間中に、ソースコードの分析や事前調査をCode for IBM i上で行っている。筆者の場合は、ローカルPCでソースの改修をすることはほぼないが、分析した内容のコメントをソースに埋め込む作業などに活用している。

【手順】

1. 「Code for i – オブジェクト・ブラウザ」でソースコードを”Download”(図表1
2. ローカルPCの適当なフォルダに保存する(図表2)



図表1



図表2

②Git管理に乗せやすい

VSCode自身にGit管理がバンドルされているため、そのままGit管理上にソースを乗せることが容易になる。

【手順(ローカル環境のGitのインストールが必要)】

1. ローカルPCのソースフォルダをgit管理下に置く「git init(ソースフォルダ内)」(図表3
2. 各種 git コマンドによる管理
3. VSCodeのGitLens 拡張機能などでさらに管理しやすく(図表4



図表3



図表4

③タイムライン機能が使える

 Git管理とは別に、VSCodeのタイムライン機能で、ローカル・ヒストリー(変更履歴)が管理できる。VSCodeでは、ローカルで作業した変更も随時保存してくれるので、ちょっとした変更でGit上に履歴が残っていないケースでも、タイムライン機能で確認できる。編集ミスをしていても簡単にロールバックが可能だ。これがSEUだと、メンバーをコピーしゴミメンバーが増えてしまう悪癖を何度も見てきている。

【手順】

1. 左の“エクスプローラ”から、該当ファイルを右クリック → [ タイムラインを開く ] (図表5



図表5

④アウトライン機能が使える

VSCodeのアウトライン機能で、変数、Data Struc
ture、サブルーチンの全体構造がわかり、該当ソースコードへのジャンプが可能。長いステップ数のソースの分析などで、サブルーチンへジャンプするときに役立つ。

【手順】

1. 左の“エクスプローラ”から、該当ファイルを選択 → “アウトライン”を展開する(図表6



図表6

⑤高度な検索機能が使える

 SEUではできない正規表現を使用した、ソース検索が可能。SUEの場合は、ワイルドカードや正規表現パターンを使用した検索はできないため、意図していない検索結果も拾ってしまうが、正規表現を使用して柔軟に検索ができる。さらにプロジェクト内の検索結果の場合は、結果をコピー&ペーストで出力してその後の作業に使うことも可能である。

【手順】 

1. ソースコード検索:ソース内で”Ctrl + F”で検索窓を表示し、検索値を入力する(画面7
2. メンバー(プロジェクト)検索:左の”虫眼鏡”マークをクリックで”Ctrl + F”で検索窓を表示し、検索値を入力する(画面8、画面9



図表7



図表8



図表9

⑥ソースの差分を出力が使える

変更前ソース、変更後ソースの差分を抽出し、開発者が変更後のコードレビューする際に使用する。筆者のチームでは、開発者が責任者に開発後のソースコードをレビューすることになっているが、変更時はソースの差分で会話することが多々ある。IBM iでもCMPPFMというコマンドは用意されているが、変更分が大量だと見づらい。そんなとき、Code for IBM iやVSCodeのソース差分出力機能を使えばレビュー作業もスムーズに進む。

【手順】

1. git履歴比較:該当ファイルを右クリック→[ Commit Changes ]…(画面10
2. 任意比較:該当ファイルを右クリック → 比較元[ 比較対象の選択/Select for Compare ] → 比較先 [選択項目と比較/Compare with Selected]



図表10

⑦ローカル編集→リモート・コンパイルが可能になる 

ローカルPCで編集した場合でも、その内容をIBM i上のIFSに保存し、連続コンパイルすることも可能。しかもこれら一連の流れは、Code for IBM iのアクション機能で、ファイルの拡張子に連動した、リモートコマンドの振る舞いを行うことができる。たとえば、*.rpgle”の場合は、IFSアップロード → CRTBNDRPGを行うなど。

【手順】 

1. 上部 [表示]→[コマンドパレット]を選択
2. ”IBM i Launch Action Setup”を選択(画面11
3. Actionを定義するファイルのタイプを選択する(画面12
4. 左ペインの[IBM i]でIBM iに接続
5. ライブラリリスト(USER LIBRARY LIST)と現行ライブラリ(コンパイル先)を設定する
6. IFS BROWSER でソースのアップロード先を指定し、右クリックし[Change working directory]をクリックする
7. IFSにアップロード、コンパイルするファイルを選択肢 [Ctrl + E]を押下する。実行コマンド(画面13)とアップロード対象ファイルを選択(画面14
8. 下ペインの[Output]→[出力]でコンパイル結果を確認する(画面15



図表11



図表12



図表13



図表14



図表15

まとめ

筆者の場合は、本格的な開発やスクラッチでの利用よりも、開発における補助的な利用が多い。しかしSEUにはない機能の活用により開発効率の向上に非常に役立っており、Code for IBM iはVSCodeとIBM iのベストな橋渡し役だと言える。「すべての開発をCode for IBM iで」と考えるのではなく、まずは効率よく利用できるところから試してみてはどうだろうか。

[i Magazine・IS magazine]

Chubu System Co., Ltd.
President

Joined Chubu System in 2001. As an RPG engineer, he has been in charge of many commissioned development projects. At the same time, he is also learning open source and actively participates in community activities. He has a deep knowledge of PHP, JavaScript, Node.js, etc. He also actively speaks on Twitter and Qiita. Current position from 2021.

Verified by MonsterInsights