IBM Bob

Bobがメインフレームに出会う

IBM Bob Premium Package for Zが一般提供開始。汎用モデルがCOBOLを間違える理由と、私たちが取り組んだこと。

Bobがメインフレームに出会う

著者

Louisa MuschalNicolas DangevilleStefan Liesche

公開日

カテゴリー

announcement

共有

Bobがメインフレームに出会う

Bobをリリースした際、私たちが指摘した本質的な問題は、新しいコードを書くことではなく、すでに存在するシステムの中で作業することでした — 変更を加える適切な場所を見つけ、チームが何年も前に定めた規約を守り、長い時間をかけて成長してきたファイル全体で整合性のある動作を維持すること。

「すでに存在するシステム」の最も長く稼働しているバージョンはメインフレーム上で動いています。数十年分のCOBOLとPL/I、数百万行のコード、Db2・CICS・IMS・バッチスケジューラを通じて連携する数万のプログラム — 誤りが許されないビジネスを止めることなく動かし続けているコードです。

本日、IBM Bob Premium Package for Z (Bob PP4Z) を一般提供開始します。IBM watsonx Code Assistant for Zを置き換え、IBMZの専門知識 — プラットフォーム言語、ミドルウェアの知識、決定論的なエンタープライズ全体の分析 — をBobのエクスペリエンスに直接組み込みます。

これはエンジニアリングの話であり、機能紹介ではありません。PP4Zができることをすべて列挙するのではなく、3つのことをお伝えします:

  1. 汎用モデルがメインフレームアプリケーションについて認めている以上に間違える理由。
  2. 確率ではなく決定論的な事実にBobを根拠づける方法。
  3. Z固有のモード、スキル、ワークフロー — そしてそれで何を構築できるか。

1. メインフレームが難しいケースである理由

汎用モデルをメインフレーム環境に向けると、どれほど賢いプロンプティングでも解決できない3つの問題に直面します。PP4Zの設計はそれぞれに解決策を提供します。

1.1. スケールとコンテキストウィンドウへの影響

単一のビジネスアプリケーションが、COBOL・PL/I・アセンブラにわたる数十万の相互接続モジュール、エンタープライズスケジューラで連鎖する数千のバッチジョブで構成されることがあります。「小さな」200プログラムのスライスでさえ、軽く数十万行になります。

それはコンテキストウィンドウに収まらず、問題はウィンドウだけではありません。コンテキストが増えるほどモデルの性能は低下し(Chroma Research Context Rot Study, 2025)、回答が不完全・矛盾・自信満々の誤りになります。「関連ファイル」を取り込むには、どのファイルが関連するか事前に知っている必要がありますが、それこそが調べようとしていたことです。

1.2. コードの中にない意味

メインフレームコードは意味的に密度が高い。ビジネスの意味はフィールド名と数十年の慣習の中にあり、パーサーが読めるものではありません。いくつかは推測できます — SERIALNはおそらくシリアル番号、TOT-STTMはおそらく合計決済。しかし大半はわかりません:C-Mとは何か?M-CAPは?CCZDプレフィックスの意味は?NO-SINNO-EVNNO-CNTの違いは?

意味は実在し重要ですが、コードだけからは推測できません。従来の答えはデータ辞書ですが、スケール(数十億の変数)が手作業や言語モデルによる力業での構築を困難にします。

1.3. 最も可能性の高い答えが正しい答えとは限らない

言語モデルは学習分布から見て統計的に確率の高いものを返します。モデルは非決定論的であり、同じ質問でも日によって異なる回答が返ることがあります。制御フローに関する誤った回答がビジネスロジックを誤って表現しうるシステムでは、これは重大なリスクです。

おそらくあなた自身も経験したことがあるシナリオです。実際のCOBATCHアプリケーションを例にとりましょう:233プログラム、742コピーブック、20MB超のコード、頻繁に呼び出される日付ユーティリティN991DATE。メタデータによる正解は30プログラムが呼び出しているというものです。フロンティアモデルに直接聞いてみると:

  • 1日目。 すべてをロードできないため、静的CALL文をgrepして13と報告。動的呼び出しについて尋ねると、regexを拡張して29と報告。見落としたCHKOUTBROCHKOUT.cblというファイルに存在します — 慣習上ファイル名はPROGRAM-IDと一致することが多いですが、必須ではないためです。
  • 2日目。 同じ質問、異なるヒューリスティックで31を報告 — 過剰カウント。偽陽性のN285RODRはworking storageでリテラル'N991DATE'を宣言するだけで使用していません。モデルはそれに気づくまで何度もフォローアップが必要でした。

これらのヒューリスティックはどれも不合理ではありません。ただ十分ではなく、「Xを呼び出しているのは誰か」はインパクト分析とプログラム理解の中核的な質問の一つです。より高度な質問 — 複数のプログラムで更新されているテーブルはどれか、読み取られるが書き込まれないファイルはどれか、PREMPZ72WS-UIT02の計算に関与する変数はどれか — には、パターンマッチングが提供できない完全で精密な分析が必要です。

結論は「モデルはメインフレームプログラムの理解に役立たない」ではありません。推論の根拠となる真実があれば、モデルの回答品質は大幅に向上するということです。言語モデルはデータの処理が得意です。

2. 確率ではなく事実にBobを根拠づける

PP4Zの答えは、モデルにソースコードからシステムを再構築させるのをやめ、代わりに決定論的でクエリ可能な環境の表現を与えて推論させることです。3つのメカニズムが根拠づけを行います:モデルはリクエスト自体の中でz/OSの曖昧な構成要素にフラグを立てるよう指示され、プロンプトには権威あるIBM Zインサイト・IBMドキュメント・参照資料・検証済みサンプルなどが付加されて汎用プログラミングの偏りが抑制され、モデルは分析メタデータから優先的に回答するよう指示されます。目標は回答をIBM Zシステムに対してトレーサブルにすることです。

2.1. Z Understand: あなたの環境のクエリ可能なモデル

Z UnderstandはPP4Zの基盤となる静的解析プラットフォームです。フルソースにアクセスできるサーバーで動作し、COBOL・PL/I・アセンブラに加えJCLやControl-M・TWSなどのスケジューラ用スキャナーを搭載し、数千のプログラムを並列処理して単一のクエリ可能なリポジトリに格納します。10,000以上のプログラムの環境にわたって決定論的で一貫した構造を保持します。

異なる出力を持つコンパイラパイプラインとして考えると理解しやすいでしょう:実行可能ファイルではなく、構造化されたクエリ可能な知識 — データ定義、プログラムとジョブをまたいだ制御フロー、正確なデータフロー(REDEFINESとメモリオフセットを含む)、サブシステムの相互作用。

2.2. モデルに自分のクエリを書かせる

メタデータの公開方法はメタデータ自体と同様に重要です。固定APIと事前定義されたMCPクエリパターンは既知で期待される質問には非常に効率的ですが、オープンエンドな分析では機能しません。オープンエンドな分析では、1つの実際の質問が推論の進展とともに変化する多くのサブクエリに分岐します。

そのため私たちは、提供された既製のクエリを超えて独自のクエリを生成・実行できるようBobを訓練しました。これはモデルが本当に得意なこと — 推論とクエリ生成 — を活用し、構造化データのようにスケールします:10プログラムでも10,000でも、クエリは同じで結果セットだけが大きくなります。

2.3. 拡張性、カスタムスキャナー、ランタイムデータ

純粋な構文解析は、動的呼び出し・API抽象化・プリプロセッサが実際のフローを隠す場合に重要な関係を見逃します。Z Understand Extensibilityフレームワークがそのギャップを埋めます:

  • APIコール/マクロ解決は間接的・パラメータ駆動の呼び出しを実際のターゲットにマッピングし、汎用的な呼び出しエッジを具体的な呼び出し元-被呼び出し元の関係に置き換えます。
  • プリプロセッサ拡張性は非標準的な文を解釈しながら元のソースビューを保持し、処理前後のコード間でクリーンにマッピングします。
  • カスタムスキャナーはスキーマ駆動のJSONインターフェースを通じて独自言語・4GL・非コードソースまでを1つのモデルに取り込みます。

静的解析は何が起こりうるかを教え、ランタイムデータは何が起きたかを教えます。PP4Zはデバッガーをデータ収集ツールに変え、正確なトレースをBobに渡します。

2.4. データ辞書: 完全性より関連性

数十億の変数を文書化することは実現可能でも保守可能でもないため、PP4Zはそれを試みません。決定論的な分析は、実際に動作を駆動する程度 — 使用頻度、コード領域への分散、制御フローへの参加、データベース・I/Oとの相互作用 — に基づいて変数をランキングし、プログラムの目的を明らかにする小さなセットを選択します。

ここでの有益な発見:限られた範囲で十分です。 プログラムごとに上位10〜20の変数を定義するだけで、網羅的な文書化なしに理解度が大幅に向上します。Z Understand ServicesはCLIからポートフォリオ全体にわたってこれを自動化し、信頼スコアは閾値以上の定義のみを保持し、IDEのhuman-in-the-loopステップで開発者がレビュー・修正・既存用語集との整合を行えます。

3. BobをZに特化させる

根拠づけはBobに正確な事実を与えます。特化は、出力が説明可能でプロセスがガバナンスを満たす必要がある環境でBobを予測可能にするものです。PP4Zは4つの要素で構築されています:モード、ツール、スキル、ワークフロー。

  • モードはインタラクションフローの役割と境界を設定します。アーキテクトスタイルのモードは分析・文書化・依存関係の発見を優先し、コード変更は明示的に禁止されます。開発者モードはコーディング標準の適用を組み込んだ生成とリファクタリングに最適化されています。
  • ツールはモデルに構造化されたシステム知識への直接アクセスを提供します — プログラムスキャン・メタデータ照会・データ辞書検索・エンタープライズ全体の分析サービス。
  • スキルは繰り返される専門知識を再現可能で監査可能なステップに体系化します。実装計画スキルは例えば固定シーケンスを強制します:コンテキストを取得・検証し、要件を定義し、メタデータからインパクトをマッピングし、保存されレビュー可能なプランを作成。
  • ワークフローは状態を持つオーケストレーションを追加します — 順序を強制し、中間結果を検証し、不正な入力で停止します。データ辞書ワークフローは変数が見つからなければ作り出す代わりに停止します。

標準とガバナンスはリポジトリレベルの**agents.md**ルールによってデフォルトで適用されます。独自のスキルを作成することもできます — コードを書く必要はありません。

これらが組み合わさると、単一のプロンプトがエンドツーエンドのタスクを駆動できます:

「電気自動車かどうかを記録するカラムをMotor Policy Tableに追加し、コーディング標準を適用して影響を受けるすべてのプログラムを更新してください。」

Bobは意図を読み取り、プランを構築し、適切なモード・スキル・リポジトリルールを選択し、プログラムの分析・変数の抽出・データ定義の更新・準拠した結果の生成に必要なツールを安全に実行します — ガバナンス・実行・推論を一度に、変更の承認はあなたが行います。

4. 今日から構築できること

  • ドリフトしないドキュメント。 ドキュメントを決定論的メタデータとソース・ランタイムコンテキストに根拠づけられた生成アーティファクトとして扱います — オンデマンドで再生成可能、現在のシステムに合致。
  • z/OS上でのCOBOL-to-Java決定論的移行。 PP4Zはメタデータを変換のバックボーンとして使用し、アーキテクチャを再現可能にしビジネスロジックを精確にマッピングします。
  • ターゲットを絞ったリファクタリングと関数抽出。 Bobはビジネス機能でアノテーションされたリファクタリング候補のランク付きリストを作成し、明確な入出力を持つ自己完結したモジュールを抽出します。
  • ネイティブz/OSツール。 Z Open Editorの機能に加え新しいMCPツール:IDEからz/OSでビルドを実行するDependency Based Build (DBB)、Z Code Scan、ライブデバッグセッションをAI支援の根本原因分析に変えるIBM Debug for z/OS。

これはエンジニアリング投稿なので正直に申し上げます:これらはいずれも開発者をループから除外するものではなく、そのような意図もありません。モード・承認ゲート・human-in-the-loopのデータ辞書はいずれも、これらのシステムでは「ほぼ正しい」が失敗モードであり目標ではないために存在します。

5. アクセスの取得方法

Bob Premium Package for Z (PP4Z)はIBM Bobのアドオンであり、個別にダウンロードする製品ではありません。PP4Zはエンタープライズ環境内のライブメインフレーム環境に対して動作します — エンタイトルメントはセールス主導です。

  • IBMの担当者にご連絡いただくか、bob.ibm.comの「営業に連絡」を使用してください。組織向けのIBM Bobベースプランと Zアドオンを設定します。
  • BobアドミニストレーターがZアドオン付きのシートを割り当てると、IBM Bobを使用するときにエンタイトルメントが検出されます。Bob IDEをインストールしてサインインすると、Z固有のモード・スキル・ツールが表示されます。

6. はじめ方

  1. すでにBobを使用している場合、PP4Zは既存のものに加えてZ固有のモード・スキル・ツールを追加します。
  2. 組み込みの理解機能を使用して、ワークスペース内のコードの深いインサイトを得ます。
  3. 正解をすでに知っているアプリケーションにZ Understandを向けて、Bobの分析をグランドトゥルースと照合します。
  4. まだ明確な答えを得たことのない質問から始めます:このユーティリティを本当に呼び出しているのは誰か?このジョブはどのテーブルに触れているか?この変数はどんな意味か?
  5. データと推論を組み合わせたより難しい質問をします:「トピック別に整理されたダイアグラム付きのコールグラフを作成してください」

リンク