1.はじめに
この記事は2025年に2回目の開催となった「IBM i RiSING」にBチームとして参加した際の活動を記録したものになります。
コンバートを簡潔にまとめるとRPGⅢの形式をRPGⅣの形式に書き換えることです。
Ⅳに書き換えることによって、さまざまなメリットがあるようです。
しかし、Ⅳを触ったことのないメンバーでⅢからⅣへのコンバートを行ったとき、メンバーの総意として「あまり違いが分からない…」となりました。
実際コンバートしただけでは見た目が変わることなく、そこから色々書き換えることでようやくⅣの良さを享受できるようになります。
これを受けて、「じゃあ、一般的に謳われるメリットはどういったことをいうのか」「Ⅳに変換することで一体何ができるようになるのか」という疑問が生じ、それをまとめる運びとなりました。
本記事では、上記に挙げた疑問を解決すべく、
- RPGⅣへコンバートするメリット
- コンバートしてできるようになること
についてまとめています。
ただ、本当に良い部分ばかりであるのか、懐疑的でもあるので、
- RPGⅣにコンバートするデメリット
についてもまとめていきます。
2.RPGⅣへコンバートするメリット
太田賢氏執筆の連載|RPG Ⅳの魅力と可能性を参考に、Ⅳへコンバートするメリットについて触れていきます。
ちなみに、こちらの連載はRPG初心者の筆者にも分かりやすく、簡潔にまとめられているため、RPG言語ユーザーは必読です。
〇コードが見やすい
メンバーがコンバートした際、「画面が広くなってコードが見やすい」との意見がありました。
実際、ⅣではⅢに比べて画面幅、フィールド等の桁数が拡張されています。
これらが拡張されると、
- 自然な命令
- より簡単なコードの可読
が可能になります。
例えば、ⅢではSETOF
、RETRN
のような演算命令があります。これでも命令を理解することはできますが、演算命令が5桁という縛りから、少し不自然な縮め方になっています。
しかし、Ⅳでは演算命令が10桁に拡張されたため、
SETOF
→SETOFF
RETRN
→RETURN
と表示できるようになります。
自然な命令であることは、より可読性の高いコードに繋がります。
同様に、フィールド名、レコード様式名なども桁数が拡張されたことによって、「この桁数になる&伝わる名前にしなければ…」と悩むことから解放されます。
後に触れますが、画面幅、桁数の拡張は自由形式のコーディングをも可能にします。
画面が見やすくなったことによって、より自然で読みやすいコーディングができるようになったことは、充分なメリットでしょう。
〇標識を使わない
Ⅲでファイル読み取りを行う際には、結果の標識を用いて命令の結果を判断しました。標識を使用するには、先に定義しておく必要性があります。
この標識は、Ⅲのコードを簡潔にする魅力がある一方で、使用するとき、どの標識を用いるべきか分からなくなったときの煩わしさが共存します。
Ⅳではその煩わしさが取り除かれ、標識を使用せず結果を判断することができます。
標識を使用しないコーディングは、もっと簡単に、簡潔な記述を可能にします。
例えば、演算を行うとき、複数の条件を記述するとき…など、Ⅲで標識を使用した書き方を行うと複数の文を記述していたのに対して、Ⅳでは一文で済みます。
この簡潔さは、上記のコードの見やすさとも大いに関係しますね。
〇オープン系からの参入が容易
先に挙げたように、ⅣではⅢに比べてコーディングの自由度が高くなりました。これは、現代におけるIT言語ユーザーにとって、嬉しいものとなります。
最近の主流言語はJava、C、Pythonなどであり、これらはいずれもオープン系言語に当たります。構文の考え方で、大きく言えば、構文に当てはめることさえできれば、プログラムは成立します。
一方のRPGは命令の概念を必要とし、プログラムを組むにあたって、”基本操作”を知っていることが前提となります。いわゆる手続き型言語です。
従来のRPGの懸念点として、人手不足が挙げられます。RPGは古い歴史を持つ言語であるがゆえに、現代の人にとってはときに古めかしい言語として認識され、敬遠され、しまいには後継者問題に悩まされてしまう可能性が十二分にあり得ます。
(大げさに言っていますが、Ⅲもまた素晴らしい言語であることには違いありません。)
これは死活問題ですが、その解消にⅣはてきめんです。
なぜなら、Ⅳのフリーフォームでは、JavaやCなどとの書き方に大きな違いはなく、そのために内部構造を完全に理解する必要も、固定構文に悩むこともありません。
フリーフォーマットの採用によって、RPGへのハードルを下げることで、別言語学習者にとっても、新規参入者にとっても易しい言語と成り得るのです。
3.コンバートしてできるようになること
題目2と関連して、コンバートするとどのようなことができるようになるのか、具体的に挙げていきます。
〇自由形式のコーディング
上記に挙げたような画面・桁数の拡張や標識を用いない書き方から、自由形式のコーディングが可能になりました。従来のRPGでは行えなかった”どの位置に、どの構文を書いても良い”形式は、プログラマーの自由度を上げ、だれもがより簡単にRPGを記述できるようになることを示しました。
〇D仕様書にまとめて書く
Ⅳでは新たにD仕様書(定義仕様書)が加わりました。この特徴として、フィールド定義、配列、データ構造などすべての定義を一括して記述できるようになったことが挙げられます。
まとめたところに記述できると、一つの好例として”どこでどう定義したかすぐ分かる”ことが示せます。整理されたコードを読む方が、より頭を使わなくて済みます。
〇オブジェクト指向型の書き方
先に挙げたようなJava、C、Python等の言語はオブジェクト指向言語に属します。オブジェクト指向を簡単に言うと「モノに注目した考え方」であり、再利用性や、カプセル化、などが特徴といえます。
Ⅲはオブジェクト指向とは別の「手続き型言語」に属し、これにおいては料理のような、「手順を踏む考え方」となります。
どちらにも良さはありますが、将来的なことを考えると再利用性が高いに越したことはなく、同時に学習人口が多いオブジェクト指向言語は、向上の余地があるでしょう。
4.RPGⅣにコンバートするデメリット
Ⅳにコンバートするメリットや、Ⅳの良さを書き綴ってきましたが、本当に良い部分だけなのでしょうか。性質に多くの側面があり、それを多角的に見ることで、その性質の理解が深まるように、ここで一度、コンバート、Ⅳに対する負の側面を考察します。
〇コンバートしただけでは意味がない
本記事の発端となった事実については、デメリットの要素を持ち得ます。コンバートするためにコマンドをたたくなどの労力がかさむ中で、コンバートされたものは見た目に変わらないというのは、「果たしてこの操作は必要であるのか」という疑問を抱きます。
〇RPGⅢが充分に機能する
Ⅲはいまだに根強い人気を持っています。この人気は、RPGの古い歴史に関係がないとは言い切れません。また、その歴史を持つために、RPGユーザーの年齢層が高くなりつつあります。
そのために、「新しい言語」としてⅣを受け入れる体制が整っていない現場があることもめずらしくありません。
同時に、「Ⅲで充分事足りているのに、どうして移行の必要がある?」との思いを持っている方も少なくないという現実があります。
これは、ひとえにⅢが現在でも順調にプログラムやシステムを動かせていることにあります。
厳密に定義しなくとも、これがデメリットに当たるとは言えませんが、こうした背景が少なからずあることは、Ⅳにコンバートする意義を再考する必要に駆られます。
【補足】なぜコンバートしても”変わらない”と感じたのか
コンバート後に色々いじる必要があることはたしかに一つありますが、大前提として、ⅢとⅣは同じRPG言語です。どちらも同じオブジェクトであるがゆえに、コマンドを使用すればすぐに変換でき、多少ⅢとⅣが混在しても、特段の問題はありません。
見た目上にも、システム上にも影響がでにくいことから、”変わらない”と感じたのでしょう。
5.まとめ
ⅢからⅣにコンバートするメリット・デメリットを勘案したとき、
- コンバートしただけでは真価を発揮しない
- ⅣはRPG資産の将来性に有用
- Ⅲは現在においても優秀な言語である
ということが分かりました。
Ⅳにコンバートすることは決して意味のないことではなく、RPGⅢユーザーのみならず、多くのプログラマーが注目するに値するシステムといえます。
当チームの作成記事には、ⅢからⅣにコンバートする方法等が詳細に記載していますので、ぜひ参考にしてみてはいかがでしょうか。
▼コンバート後のコードを書き換える方法は以下の記事をチェック!
RPGIVの書き方に書き換え・比較
▼Bチームの活動報告記事一覧
Bチーム活動報告
6.参考資料
本記事の参考資料は以下の通りです。
- RPG ⅢとRPG Ⅳのコーディングの違い ~連載
https://www.imagazine.co.jp/imagazine-3582/ - 標識の使用
https://www.ibm.com/docs/ja/i/7.4.0?topic=indicators-using - RPGⅣ標識
https://www.ibm.com/docs/ja/i/7.4.0?topic=concepts-rpg-iv-indicators
当記事の著作権はIBMに帰属します。詳細はこちらを参照ください。