Understand
Understand ダッシュボードで IBM i アプリケーションのオブジェクトと依存関係をマッピングし、Bob を使ってスキャンデータから直接構造的な質問に回答します。
Understand は IBM Bob Premium Package for i に含まれるコードインテリジェンスコンポーネントです。選択した IBM i アプリケーションライブラリーをスキャンし、プログラム、サービスプログラム、モジュール、ファイル、コマンド、データエリア、データキューを含むすべての検出済みオブジェクトをカタログ化することで、アプリケーションの包括的なモデルを構築します。また、プログラム呼び出し、ファイルアクセスパターン、サービスプログラムバインディング、SQL 参照、trigger、foreign key 関係、ジャーナリング設定、データベース制約などの依存関係も記録します。
スキャン後、Bob はすべての source member を読まずにスキャンデータから直接構造的な質問に回答でき、Understand ダッシュボードはオブジェクト、依存関係、インサイトを視覚的に探索するためのインターフェースを提供します。
すべてのスキャンデータはオブジェクト自体から取得されます。Understand はソースコードを読み取ったり解析したりしません。source member がシステム上のコンパイル済みオブジェクトと同期していない場合、スキャン結果はソースではなくオブジェクトを反映します。
前提条件
- Code for IBM i を通じたアクティブな IBM i 接続。
- Understand をインストールする前に
vscode-ibmi-bob.understand.installLibrary設定を構成する必要があります。既存のユーザーライブラリーでない専用ライブラリーを選択してください。ライブラリーへのアクセスは承認済みユーザーのみに制限してください。
スキャン済みアプリケーションデータはプライベートライブラリーに格納されます。このライブラリーへのアクセスを他のユーザーに許可すると、そのユーザーは直接の権限を持たないオブジェクトのデータを参照できる可能性があります。
はじめにウォークスルー
組み込みの Understand ウォークスルーが最短の開始方法です。command palette から Get Started with Understand コマンドを実行して開くか、VS Code の Get Started タブを開いて Understand your IBM i applications ツアーを選択してください。
ウォークスルーでは以下の手順を案内します。
- IBM i への接続
- Understand コンポーネントのインストール
- 最初のアプリケーションの作成
- スキャンの実行
- Bob による結果の探索

Understand ダッシュボード
Understand ダッシュボードはアプリケーションの管理とスキャン結果の探索のための中心的なインターフェースです。command palette の Open Understand Dashboard コマンドか、Bob チャットビューのタイトルバーにある Understand ダッシュボードアイコンをクリックして開けます。

ダッシュボードは以下のタブで構成されています。
| タブ | 目的 |
|---|---|
| Overview | Understand コンポーネントのインストール、更新、ステータス確認。 |
| Applications | IBM i アプリケーションの作成、スキャン、管理。 |
| Libraries | 選択したアプリケーションへのライブラリーの追加または削除。 |
| Objects | すべてのスキャン済みオブジェクトの検索とフィルタリング。オブジェクトを選択すると使用しているもの・使用されているものを確認できます。 |
| Insights | オブジェクトと依存関係の数、最も参照されているオブジェクト、動的 SQL リスク、trigger、foreign key、ジャーナル済みオブジェクト。 |
| Messages | 各スキャンステップの診断とステータス情報。 |
| Settings | インストールライブラリー設定へのクイックアクセス。 |
Understand コンポーネントのインストール
アプリケーションをスキャンする前に、IBM i に Understand コンポーネントをインストールする必要があります。
Understand ダッシュボードを開き、Overview タブに移動します。
インストールライブラリーが設定されていない場合は、コンポーネントカードの Set install library を選択し、設定エディターにライブラリー名を入力します。
ダッシュボードに戻り、Install Understand を選択します。
拡張機能のアップデートとともに新しいバージョンが提供された場合、Overview タブの同じカードに Update Understand アクションが表示されます。

アプリケーションの作成
アプリケーションは、給与計算システムの PAYLIB や PAYDTA のように、1 つの IBM i アプリケーションを表す関連ライブラリーの順序付きリストで構成されます。
Applications タブで New application を選択します。
- 表示名と任意の説明を入力します。
- ライブラリー名の入力を始めると、接続中のシステムで利用可能なユーザーライブラリーが表示され、システムライブラリー(
Q*、SYS*、#*)は除外されます。 - 候補ライブラリーを選択するか、Enter を押してライブラリー名を追加します。ライブラリーは追加された順にスキャンされます。
Libraries タブからいつでもライブラリーを追加または削除できます。

アプリケーションのスキャン
スキャンはアプリケーションのライブラリー内のすべてのオブジェクトを分析し、それらの間の依存関係を記録します。Applications タブでアプリケーション横の Scan を選択してスキャンを開始します。
- スキャンの進捗はダッシュボードの下部セクションに表示されます。スキャンは専用の SQL ジョブで実行されるため、スキャン中も他のダッシュボードタブを使い続けられます。
- スキャン完了時に、アプリケーションオブジェクトから参照されているがアプリケーションにまだ含まれていない追加ライブラリーが識別される場合があります。Libraries タブでこれらの推奨事項を確認してください。
- Messages タブでスキャナーが解決できなかったオブジェクト、依存関係、参照を確認してください。
Understand はソースメンバーではなく、システム上のコンパイル済みオブジェクトを読み取ります。動的呼び出し(プログラム名が変数に格納されている場合)や動的 SQL テーブル参照などの依存関係はオブジェクトスキャンでは検出できず、記録されません。動的 SQL がフラグされたオブジェクトは、ダッシュボードおよび Bob の応答内で手動レビューが必要な箇所として強調表示されます。

特定のライブラリーに変更を加えた場合、アプリケーション全体を再スキャンする必要はありません。Libraries タブから個別のライブラリーをスキャンして、インデックスをすばやく最新の状態に保てます。

オブジェクトとインサイトの探索
スキャン完了後、2 つの方法で結果を探索できます。
ダッシュボードでは、Objects タブを使ってすべてのインデックス済みオブジェクトを検索・フィルタリングできます。オブジェクトを選択すると、uses(アウトバウンド依存関係)と used by(インバウンド依存関係)が確認でき、ファイルとエクスポートされたシンボルの列も表示されます。Insights タブでは集計統計が確認できます。オブジェクトと依存関係の数、最も参照されているオブジェクト、動的 SQL リスク、trigger、foreign key、ジャーナル済みオブジェクトが含まれます。


Bob と一緒に使う場合は、Insights タブの Explore the Application with Bob ボタンを選択して、スキャン済みアプリケーションの要約から始まる IBM i Developer モードのタスクを開きます。そこから平易な言葉で質問を続けられます — あるプログラムが何を使っているか、ファイルが変更されたら何が壊れるか、動的 SQL はどこで使われているか、どのプログラムが OPM か、など。詳細は Bob と Understand を使う を参照してください。
Bob と Understand を使う
Understand がインストールされてアプリケーションがスキャンされると、Bob は IBM i Developer モードと IBM i Database モードの両方で 6 つの Understand ツール と 3 つの Understand スキル に自動的にアクセスできるようになります。
Bob は、アプリケーション構造、オブジェクト関係、依存関係分析に関わる質問に対して、Understand ツールを最初の情報源として自動的に使用します。次のようなタスクが含まれます。
- プログラム
ORDPROCを呼び出しているのは何ですか?何に依存していますか? - ファイル
CUSTMSTを削除しても安全ですか?何が壊れますか? - どのプログラムが OPM ですか?どれが動的 SQL を使っていますか?
PAYLIBアプリケーションの概要とモダナイゼーション準備状況を教えてください。- サービスプログラム
DBSRVは何をエクスポートしていますか?そのプロシージャーを誰が使っていますか?
Bob はこれらの質問をオブジェクトスキャンデータから回答します。構造分析のためにソースメンバーを開くのは、特定のソースファイルを開くよう明示的に指示した場合のみです。
特定のタスクで Bob が Understand ツールを使用できるかどうかを制御するには、タスクの開始または編集時に Understand パーミッショングループ を設定してください。
Understand ツールはコンポーネントがインストールされている場合にのみ有効になります。これらのツールが表示されない、または使用できない場合は、Understand がまだインストールされていません。有効にするには、Understand コンポーネントのインストール に記載されているインストール手順を完了してください。

データの最新化
Understand データは最新スキャン時点でのアプリケーションの状態を表しています。スキャン後にオブジェクトが追加、変更、または削除された場合は、新しいスキャンを実行してデータを更新し最新の状態に保ってください。Bob と Understand ダッシュボードはスキャン結果が古くなっている可能性がある場合に自動的に通知し、再スキャンが必要なタイミングを特定するのに役立ちます。