IBM Bob

IBM BobでIBM iを使った作業

プラットフォームの簡単なツアー、日々の摩擦、IBM Bobが今日のIBM i開発者のワークフローにどのように適合するか、そして次に向かう方向。

IBM BobでIBM iを使った作業

著者

Peter MaTim Rowe

公開日

カテゴリー

announcement

共有

IBM BobでIBM iを使った作業

RPGを一行も書いたことがない場合、IBM iは大規模な本番環境で最も魅力的なプラットフォームの1つです。数百万行書いたことがある場合は、日々の痛みがどこにあるかすでに知っています。この投稿では両方をカバーします:IBM iをユニークにするものの技術的なスケッチ、モダナイゼーションの摩擦が実際にどこに現れるか、IBM Bobが今日のIBM iワークフローにどのように適合するか、開始するためのセットアップ手順、そしてプラットフォームのロードマップで次に来るものです。

IBM iが実際に何であるか

IBM iは「これを書き直すべき」という意味でのレガシーオペレーティングシステムではありません。それは統合されたプラットフォームです — OS、データベース、セキュリティモデル、ランタイムが1つのものとして設計され出荷されています — 銀行、保険会社、病院、製造業者、物流企業のために何十年も収益を上げてきました。だから、私たちはそれを伝説的と呼ぶべきです。

初めて見る開発者を驚かせる傾向がある詳細:

  • Single-level storage。 RAMとディスクは1つの仮想アドレス空間を共有します。オブジェクトポインタは再起動を超えて永続化します。OSはメモリとストレージを単一の層として扱い、それらの間で透過的にページングします。ほとんどの最新システムはまだこれに追いついています。
  • TIMI、Technology Independent Machine Interface。 1990年代のハードウェアでコンパイルされたRPGバイナリは、現在のPOWERチップで変更なしで実行されます。OSは内部で新しい命令セットに対して再翻訳します。最も近い現代の類似物はWebAssemblyで、数十年前のものです。
  • オブジェクトベースのOS。 プログラム、ファイル、キュー、権限は属性を持つ型付きオブジェクトです — メタデータが追加されたファイルではありません。セキュリティはオブジェクトレベルで適用されます。
  • Db2 for iは統合されており、追加されていません。 SQLとネイティブのレコードレベルI/Oは同じデータにアクセスします。40年前の物理ファイルは、移行プロジェクトなしで最新のSQLビューを通じてクエリできます。
  • ソースはシステム上またはGitに存在できます — あなたの選択です。 歴史的に、IBM iソースはソース物理ファイル(QSYS)内のメンバーとして保存され、システム上で直接コンパイルされました。プラットフォームは元々LPARを真実のソースとして位置付けていました。しかし、IBM iは進化しました:コンパイラとOSは現在、最新のGit中心のワークフロー、IFSストリームファイル、選択すればローカル開発を完全にサポートしています。多くのショップはまだQSYSライブラリを使用していますが、プラットフォームはオプションを提供します

プラットフォームは、すぐに使える最新の配信パターンもサポートしています:OSの一部としてのネイティブREST APIエンジン、Power Virtual Serverを通じたハイブリッドクラウド、トランザクションワークロードと同じハードウェアで実行されるAI推論。RPG、COBOL、CL、SQLは、エンジニアリング組織の残りの部分がすでに使用している開発プラクティスと共存します。

プラットフォームは問題ではありません。摩擦はその周りにあります。

摩擦が現れる場所

ほぼすべてのIBM iショップで4つのパターンが現れます。それらのどれもRPG自体についてではありません — 言語は問題ありません — しかし、決して書き留められなかったコードの周りのコンテキスト、そしてプラットフォームがそのコンテキストを保存し共有する方法についてです。

  • 設計による暗黙的なコンテキスト。 動作するRPGプログラムは、1つのソースで4つの言語世代にまたがることができます — RPG II、RPG IV、/COPYコピーブック(コンパイル時に引き込まれる共有宣言)、フリーフォーマットプロシージャ — 列に敏感な構文と番号付きインジケータ(*IN01*IN99)が、ほとんどの他の言語で構造化制御フローと名前付きブール値が行う仕事をします。構文は1週間で学習可能です;その周りの規約とビジネスルールはシニアエンジニアの頭の中に存在します。
  • 変更は決してローカルではありません。 フィールドの型は、それを使用するプログラムで宣言されていません — データベーステーブル自体で、別のソースファイル(DDSメンバー)で宣言されています。そのテーブルを読み書きするすべてのプログラムは、上部でファイルを参照するだけでそれらの定義を継承します。したがって、1つの列を10桁から12桁に延長することは、決して1つのプログラムの編集ではありません:ファイルに触れるすべてのプログラムに波及し、それらのプログラムのリストはどこにも書かれていないことがよくあります。したがって、重要なワークロードへの各変更は継続性リスクを伴い、モダナイゼーションは停滞します。
  • ソースは最新のツールが期待する場所にほとんど存在しません。 プログラムの正規のコピーはシステム上にあり、ラップトップ上のGitリポジトリにはありません。15年前に他の誰かが書いたコードを読むことは、LPAR上でそれを見つけ、エクスポートし、次にエクスポートが正規のコピーであるかどうかを決定することから始まります — ローカル作業ツリーを想定する任意のツールが、その価値を証明する前に適応しなければならないワークフローです。
  • 固定形式RPGは最新のコードとは全く似ていません。 ほとんどの本番RPGは固定形式で書かれました:操作コードが列26–35に存在し、Factor 1が12–25に、コメントは列80以降にのみ収まる列に敏感な構文。PythonまたはJavaScriptでトレーニングされた人にとっては、アセンブリ言語のように読めます。IBMは完全にフリーフォーマットのRPG(RPG IV、後に単に「RPG」)で言語を再発明しました。これは最新の手続き型言語のように見え、感じられます — 構造化ブロック、名前付き変数、標準式。構文のギャップは現実ですが、言語自体は進化しました。摩擦は、何十年もの動作するコードがまだ固定形式であり、それを書き直すことはほとんどのショップが正当化できないリスクを伴うことです。

BobがIBM i用のRPGアプリケーションで行うこと

BobをRPGプログラムに向けて、Askモードで開始します:

  • 「このプログラムが何をするか、どのファイルに触れるかを説明してください。」
  • CUSTNOはどこで設定され、その後どのプログラムがそれを読みますか?」
  • 「このフィールドの長さを変更したら何が壊れますか?」

変更を念頭に置いている場合は、Planモードに切り替えます:フリーフォーマット変換、レコードレベルI/OからのSQL移行、またはモノリスをモジュールに分割します。Bobは、ファイルが変更される前に、計画、触れた依存関係、および実行する予定のステップを生成します。

変更を適用するには、Codeモードに切り替えます。Bob:

  • 繰り返し可能なパターンを使用して、固定形式RPGをフリーフォーマットに変換します。ファイルごとに。
  • 適切な場合、レコードレベルI/Oを埋め込みSQLに移行します。
  • 既存のプロシージャに対してRPGUnitテストスイートを生成し、変換がコンパイルされるだけでなく検証可能になるようにします。
  • ソースから平易な言語のドキュメントとMermaidダイアグラムを生成します — 検索可能で共有可能なアーティファクトで、どのエンジニアよりも長持ちします。

同じワークフローはRPG II/III/ILE、CL、DDS、SQL、COBOLを処理するため、生まれる前に書かれたプログラムを読む新入社員は、もはや構文によってブロックされません。

IBM iソースをBob対応にする

Bobは今日、ローカルコンピュータ上のソースに対して動作します。セットアップは短いです:

  1. ソースをダウンロードします。 RPG、RPGLE、CL、DDS、SQLメンバーをローカルフォルダにエクスポートします。Code for iプロジェクトエクスプローラーは、物理ファイルメンバーからのエクスポートを文書化しています:migrate source
  2. Bobでフォルダを開きます。 ソースルートでFile → Open Folder。Bobは最初のオープン時にコードベースをインデックス化します。
  3. IBM iツールチェーンをインストールします。 Extensionsパネルから、IBM i Development Pack(Code for iバンドル)とBobが生成するダイアグラム用のMermaidレンダラーを追加します。
  4. Askモードでセッションを開始します。 単一のプログラムを選択します — 理想的には、チームの誰も完全に理解していないもの — そしてBobにそれを説明するように依頼します。それは、Bobがあなたのワークフローでその場所を獲得するかどうかを確認する最速の方法です。

チームがSEUまたはRDiから来ている場合、移行は主に上記のエクスポートステップと拡張機能のインストールです。編集サーフェスは、構文の強調表示、コード補完、および前述のAIワークフローを備えた最新のVS Codeファミリー環境です;行番号は、それらを望むエンジニアのためにまだ利用可能です。

IBM i上のBobの次のステップ

最近発表されたPremium Package for iは、IBM i開発チーム向けのネイティブで最適化されたエクスペリエンスを提供します。Premium Package for iは6月24日に一般提供されます。

Premium Package for i。 6月24日のGAで、BobはIBM iに直接接続します。単一のセッションから、QSYSから直接ソースメンバーを読み取り、上記と同じワークフローで編集し、システムに対して直接コンパイルとテストサイクルを実行します。接続性と並行して、BobはIBM i開発に調整された組み込みのスキルとワークフローを取得します — 固定からフリーへの変換、リファクタリング、ドキュメント生成 — RPGコードベースでの開始プロンプトがすぐにIBM i規約により直接着地するようにします。具体的には、これは次のことを意味します:

  • 開発LPARに接続された1つのBobセッション;別のエクスポート-編集-インポートループはありません。
  • IBM iからのコンパイルエラーとテスト結果は、Bobがすでにいる会話に戻ってきます。
  • IBM iショップが繰り返し実行するリファクタリング、変換、テスト生成パターン用の組み込みスキルとワークフロー。

さらに先 — エンドツーエンドSDLC。 将来のリリースのために3つのスレッドがアクティブな設計中です:

  • DevOps統合。 IBM iワークロード用のビルド、デプロイ、モニター、CI/CDにBobが参加 — テストLPARに対してリグレッションパスを実行し、環境を通じて変更を昇格させ、ランタイムの問題をセッションに戻します。
  • SQLパフォーマンス。 Bobが今日すでに生成している埋め込みSQL移行パターンに加えて、ファーストクラスの機能としてのデータ分析とインデックス最適化。
  • IBM iナレッジアシスタント。 コードベース、設計ドキュメント、チケット全体にわたる検索ベースの回答 — ソースの外に存在するコンテキストが同じ会話から到達可能になるように。

今日Bobを採用するチームにとって、上記のローカルファイルワークフローが正しい出発点です;このセクションの項目は、IBM iオファリングが成熟するにつれて、そのワークフローがどのように短縮され拡張されるかを説明しています。

顧客リファレンス

ヘルスケア、農業、エンタープライズIT、物流のチームは、今日、本番IBM iコードベースに対してBobを使用しています:

  • MEDHOST。 米国の病院展開全体で複数のRPG世代にまたがるヘルスケアアプリケーション。チームは、影響分析と固定からフリーへの変換、および元の著者が長い間去ったプログラムへの新しい開発者のオンボーディングにBobを使用しています。
  • NI+C。 生き残った設計ドキュメントなしで10年以上変更されずに実行されていたRPGプログラムを持つ日本のエンタープライズインテグレーター。Bobは、以前にAIアシスタントから跳ね返されたエンジニアが実際の作業のためにそれを使い続けるのに十分正確な設計ドキュメントとMermaidダイアグラムを生成しました。
  • Heartland Co-op。 穀物品質と機器監視のためにIBM i環境にリアルタイムIoTセンサーデータをストリーミングするアイオワベースの農業協同組合。Bobは、開発者がIoTパイプライン、穀物会計、コア運用システム間の相互依存関係を推論するのを助け、新入社員のランプアップを短縮します。
  • Carreras Grupo Logístico。 スペインで最初のエンタープライズBob採用者の1つで、レガシープログラムロジックを説明し、ドキュメントを生成し、物流プラットフォームのモジュール全体でリファクタリングするために使用しています。

4つすべてに共通するスレッドは同じです:既存のIBM iコードベースはそのまま残り、説明、変換、ドキュメント作業は、置き換えプロジェクトの前ではなく、本番システムと並行して実行されます。

始める

  • 無料トライアルを開始
  • 1つのRPGプログラムをローカルフォルダに取り込み、Bobで開きます。
  • Askモードで、ウォークスルーとそのデータフローのMermaidダイアグラムをリクエストします。

そのセッション — 1つのプログラム、1つの会話 — は、Bobがあなたのチームの働き方に合うかどうかについての本当の答えへの最短経路です。