Kurahi Industrial

レガシーを読み解き、変更前に影響を把握する。

モダナイゼーションは、コードが何をしているかを正確に把握することから始まります。同じ入力から常に同じ結果を出す解析エンジンが事実を抽出し、すべての事実に出典のファイルと行番号を付けます。エージェントは推測ではなく、その事実に基づいて説明します。

サンプル工場を表示した Kurahi Industrial ワークベンチ:7 段階のライフサイクルと 5 つの機能パック
図1Kurahi Desktop の Industrial ワークベンチ(サンプルプロジェクト。画面は英語表示)。

導入にあたって

  • すぐに使えるもの

    • COBOL・JCL、PL/I、FORTRAN、Java、SQL DDL、PLC コードの解析エンジン
    • 保存したベースラインとの変更検出
    • すべての事実に path:line を付けた日本語・英語の Word 設計書
    • 変更をレビュー用に準備する夜間ルーティン
    • IDE 向けの MCP サーバー
  • 設定が必要なもの

    • ソースフォルダー(読み取り専用)をプロジェクトとして登録
    • 比較の基準とするベースライン
    • 文書と変更のレビュー担当者
    • 夜間ルーティンのスケジュール
  • 設定する人

    • 情報システム部門の管理者が Kurahi を導入し、ソースフォルダーを登録
    • リードエンジニアがベースラインとレビュー担当者を決定
    • Enterprise 契約では KODA SōKEN が設定をご一緒します
  • エンジニアが覚えること

    • 設計書を path:line の出典と照らして読む
    • 要確認とされた項目の確認
    • 検出された変更を案件としてレビュー
  • 個別にお見積もりするもの

    • 対応一覧にない言語・方言
    • 追加ルールが必要な社内フレームワークや生成コード
    • 貴社固有の文書テンプレート

ソースコードから、レビューできる設計書へ

レガシー解析の流れ:ソースコードを解析エンジンが読み取り、保存したベースラインと夜間に比較し、変更点を Word の設計書にまとめてレビュー担当者に案件として届ける01ソースCOBOL、JCL、PL/I、FORTRAN、Java、SQL、PLC02解析同じ入力なら同じ結果を出す解析エンジン。すべての事実に path:line03変更検出保存したベースラインと夜間に比較04設計書Word 文書と、レビュー担当者への案件レガシー解析の流れ:ソースコードを解析エンジンが読み取り、保存したベースラインと夜間に比較し、変更点を Word の設計書にまとめてレビュー担当者に案件として届ける01ソースCOBOL、JCL、PL/I、FORTRAN、Java、SQL、PLC02解析同じ入力なら同じ結果を出す解析エンジン。すべての事実に path:line03変更検出保存したベースラインと夜間に比較04設計書Word 文書と、レビュー担当者への案件
図2レガシー解析の流れ。ソースコードは読み取るだけで、結果は解析キャッシュとレビュー担当者に届きます。

解析対象

COBOL・JCL
プログラム、コピーブック、ジョブステップ
PL/I
プログラムと埋め込み SQL の呼び出し
FORTRAN
プログラムと呼び出し構造
Java
JPA のマッピングと DDL の突き合わせを含む
MyBatis
マッパー XML と、それを呼び出す Java の対応付け
SQL データベース
DDL とストアドプロシージャ(DB2 SQL PL、PL/SQL、パッケージ本体)を、Java・COBOL・PL/I の呼び出し元と対応付け
PLC
IEC 61131-3 Structured Text と、PLCopen XML 出力の FBD・LD。ソースのテキストだけを読み、コントローラーには接続しません

Industrial の機能(詳細)

解析対象、エージェントツール、設計書、変更検出、オートパイロットまで、Kurahi Industrial のすべての機能です。

解析対象の言語と形式

機能内容
COBOL プログラム段落、PERFORM/CALL グラフ、ファイルアクセス、EXEC SQL / EXEC CICS によるアクセスを読み取り、すべての事実に path:line を付ける。
COBOL コピーブックCOPY の解決を含め、コピーブックから項目レベルのデータ辞書を作成する。
JCL(ジョブとプロシージャ)ジョブ、ステップ、EXEC PGM/PROC、DD 文、データセットを読み取り、ジョブフローとデータセットの系譜に利用する。
Java(Spring、JPA、MyBatis を含む)クラス、インターフェース、enum、record、メソッド、フィールドを読み取って継承と静的呼び出しを解決し、JPA、Spring Data、@Query、JDBC の SQL リテラル、MyBatis のマッパー XML からテーブルアクセスを検出する。
JPA マッピングと DDL の照合JPA の結合マッピングを DDL の外部キーと比較し、外部キーのない結合と、どのマッピングにも使われていない外部キーを報告する。
SQL DDLCREATE TABLE/VIEW/INDEX、列、キー、コメント、ALTER、COMMENT ON(ANSI、DB2、Oracle、PostgreSQL の基本構文)を読み取り、複数のスキーマで定義されたテーブルはスキーマごとに1つのノードとする。
SQL ストアドルーチン(DB2 SQL PL、Oracle PL/SQL)プロシージャ、関数、トリガー、Oracle パッケージのメンバーを、使用するテーブルやルーチンと関連付け、動的 SQL は未解析の箇所として一覧に示す。
FORTRAN(固定形式 77、自由形式 90 以降)プログラム単位、CALL/USE/INCLUDE、レイアウト検査付きの COMMON ブロック、EQUIVALENCE、JCL で割り当てられたファイル I/O ユニットを読み取る。
PL/Iプロシージャ、CALL の関係、%INCLUDE、DECLARE 構造、JCL の DD 文に割り当てられたファイル、EXEC SQL のテーブル、ON ユニットを読み取る。
PLC 構造化テキスト(IEC 61131-3:.st .scl .iecst)PROGRAM、FUNCTION_BLOCK、FUNCTION の各ユニット、VAR セクション、%I/%Q/%M アドレスの I/O マップ、アドレスの重複、FB インスタンスと書き込みを読み取り、ソーステキストのみを対象としてコントローラーには一切接続しない。
PLCopen XML(TC6 0201)ST の本体、FBD/LD のブロック呼び出し、コイルへの書き込みを含む同じ事実を XML の行単位で読み取り、IL/SFC の本体は未解析の箇所として報告する。
言語検出と振り分け拡張子または内容でファイルを識別し、内容で判定した各ファイルを必ず1つのエンジンに振り分ける。
言語をまたぐ共有テーブルCOBOL の EXEC SQL、PL/I、JPA の @Table、CREATE TABLE に現れるテーブルを1つのノードとして扱い、CRUD と影響範囲の分析を言語横断で行えるようにする。

エージェントツール(legacy_*、modernise_*)

機能内容
インデックス作成フォルダー内の COBOL、コピーブック、JCL を解析し、件数と診断情報付きの事実インデックスを作成してキャッシュする。
インデックス作成(MCP)エディタ向け MCP サーバー版のインデックス作成。
インデックス状態対象範囲に最新のインデックスがあるかを件数とともに報告し、解析自体は行わない。
構造の問い合わせ構造に関する問い合わせに file:line 付きで回答する(summary、programs、paragraphs、callers、callees、call-graph、perform-graph、file-access、data-item、data-refs、job-steps、datasets、unresolved、graph-neighbours、call-chains、lineage)。
業務ルール候補条件、定数を含む演算、ROUNDED、88 レベルの値、リテラルなどの業務ルール候補を一覧化し、該当するソーステキストをそのまま引用して意味の推測は行わない。
データ辞書 / データ項目定義書レベル、PIC、USAGE、バイト数、オフセット、桁位置、OCCURS、REDEFINES、VALUE/88、コメントを含むコピーブックのデータ辞書を作成する。
影響範囲COBOL のデータ項目の変更が及ぶ範囲(共有ストレージ、データフロー、コピーブックの利用箇所、CALL USING、データセット、ジョブステップ)を、それぞれの根拠となる事実とともに示す。
設計書コードから設計書を生成する(セクション3を参照)。
移行ウェーブ案人がレビューするための移行ウェーブを提案する(セクション4を参照)。
変更検知ソースを保存済みのベースラインと比較する(セクション4を参照)。
ベースラインの更新変更検知のベースラインを最後に比較したスナップショットまで進めるか、現在のソースから作り直す。
刷新計画(言語検出と棚卸し)フォルダー内の言語を検出して有効なエンジンを実行し、統合した棚卸し結果、CRUD 付きの共有テーブル、カバレッジの欠落、計画中のアシスタントが対象とするファイルを返す。
言語横断 CRUDCOBOL、PL/I、Java、JCL ユーティリティにまたがるテーブルの CRUD と、COBOL、FORTRAN、PL/I にまたがるファイルの CRUD を、操作ごとの path:line 付きで示す。
言語横断の影響範囲テーブル、列、データセット、FORTRAN の COMMON ブロックやモジュール、Java クラス、プログラムを変更した場合の言語横断の影響範囲を示す。
棚卸しJava の型、SQL のテーブルとビュー、FORTRAN の単位と COMMON ブロック、PL/I のプロシージャ、PLC の POU と I/O マップ(種別 `plc`)を一覧または詳細で表示する。

設計書

機能内容
設計書(日本語/英語)すべての事実の行に path:line を引用した Markdown 文書をコードから作成し、業務目的やルールの意味は確認用のプレースホルダー(要確認)として明示する。
システム概要・ジョブフロー・プログラム仕様書・データ項目定義書・CRUDマトリクス・カバレッジoverview、jobs、programs、java、fortran、pli、plc、dictionary、tables、crud、coverage の各セクションを含み、各セクションはフォルダーに該当する言語がある場合にのみ追加される。
Mermaid 図グラフから生成したシステム概要図と、ジョブごとのフロー図を含む。
PLC プログラム仕様POU 一覧、%I/%Q/%M アドレス別の I/O 割付表、各 POU の変数を含む。
Java・FORTRAN・PL/I 仕様とテーブル定義該当するソースがある場合、Java クラス仕様、COMMON マップ付きの FORTRAN 単位、PL/I プロシージャ仕様、テーブル定義を追加する。
Word(.docx)出力`output_format: docx` を指定すると、`設計書_YYYYMMDD.docx`(英語版は `design-doc_YYYYMMDD.docx`)もプロジェクトの `output/design-docs/` に書き出し、既存のファイルは上書きしない。

変更検知・移行ウェーブ案・影響範囲

機能内容
変更検知(ベースラインとの比較)追加・削除・変更された COBOL プログラム、コピーブック、JCL ジョブ、SQL のテーブル・列・ルーチンと CALL/PERFORM/EXEC SQL/ステップの関係を、証跡と変更された各プログラムの影響範囲とともに一覧化し、ベースラインは `output/.legacy-index/baseline/` に保存する。
移行ウェーブ案CALL とデータセットの依存関係、循環(SCC)、結合度、規模、複雑度、文書化されたリスクスコアに基づき、COBOL プログラムの移行ウェーブを人のレビュー用に日英の Markdown で提案する。
ナレッジグラフとデータの系譜グラフ上の隣接ノード、上位・下位への呼び出しチェーン、ユーティリティステップを経由したデータセット・テーブルの系譜を提供する。
カバレッジレポートモデル化されなかった構文、未解決の呼び出し、見つからないコピーブック、スキップした DDL などの欠落を一覧化し、解析されなかった範囲を明確にする。

Autopilot・ワークベンチ・パック・エディタ連携

機能内容
夜間レガシー解析と設計書更新毎晩 01:30 JST とソース投入後に実行し、ソースに変更があれば Word の設計書を再生成して変更内容の業務項目を1件作成したうえでベースラインを進め、変更がなければモデルを呼び出さない(レベル L1)。
産業:システム刷新source/、data/、docs/ を読み取り専用とし、出力は output/ のみに書き込むプロジェクトテンプレートで、ルール、プレイブック、ルール表テンプレート、評価テンプレート、キュー(解析結果レビュー、設計書レビュー、移行計画、品質・リスク)を含む。
産業ワークベンチ / 資産タブ(チャット、端末、タイムライン、ファイル、成果物、資産)、刷新工程、エンジンレジストリから状態を取得する領域グリッドを備えたプロジェクト画面。
設計書の生成依頼を開く/移行ウェーブ案の生成依頼を開く`legacy_design_doc` または `legacy_wave_plan` を実行する準備済みのチャット依頼を開き、送信前に内容を確認できる。
エージェントパック(準備状況)5つの Industrial パックを準備状況とともに表示し(分析:利用可能、刷新・保全:設定確認が必要、制御:オフライン環境の準備が必要、サイバーセキュリティ:現在は利用できません)、現時点でエンジンが実装されているのは分析のみ。
エディタでレガシー解析(MCP)VS Code、Eclipse ベースの IDE などの MCP クライアント向けに stdio またはループバック HTTP で動作する単体の MCP サーバーで、1つのプロジェクトルートに限定され、応答サイズを制限し、追記専用の監査ログを保持する。
  • コードから生成する設計書

    日本語または英語の設計書を Word ファイルとして作成します。事実の各行に path:line を記載し、コードから分からないことは推測せず「要確認」と明記します。

  • ベースラインとの比較による変更検出

    保存したベースラインと比べ、夜間の解析では変わった箇所だけを、ファイルと行の根拠付きで報告します。ベースラインは、変更点が案件として担当者に届いた後にだけ更新されます。

  • 移行ウェーブ案

    依存関係と、計算式を明示したリスク点数から移行の順序を提案します。あくまで人がレビューし判断するための提案です。

  • エンジニアのエディタから

    kurahi-legacy MCP サーバーが、同じ読み取り専用の解析を VS Code、Eclipse 系 IDE、任意の MCP クライアントに提供します。

架空の給与計算システムを、ソースから設計書まで

架空の会社の COBOL プログラム 4 本、コピーブック 2 本、4 ステップの JCL ジョブを使っています。実在する組織のデータは含みません。

架空の給与計算システムから生成した設計書:プログラム呼び出しとジョブステップの一覧で、各行が根拠となるファイル名と行番号を示し、隣に該当する COBOL ソースの行番号付き抜粋が並んでいる
図2Kurahi Industrial が生成した設計書。すべての関係に、根拠となるソースのファイル名と行番号が示されます。サンプルデータで表示しています。

明確な制限付きの、エンジニアリングのオートパイロット

夜間のルーティンでコードベースを解析し、変更を検出し、設計書を準備できます。本番の OT や PLC に書き込むことはなく、顧客システムへのマージやデプロイも行いません。プルリクエストの作成には、L3 と対象リポジトリを指定した常設承認が必要です。

まずは、ひとつの業務から。

任せたい業務についてお聞かせください。貴社の業務に近い流れで Kurahi をご覧いただき、どこまで任せるかを一緒に検討します。

  1. お問い合わせ

    対象の業務、関係するシステム、承認の流れをお伺いします。貴社に近い業務でデモをご覧いただけます。

    お問い合わせ
  2. お見積もり

    デジタルスタッフ、データガバナンス、インターネットに接続しない構成、SLA サポートは、個別契約でご提供します。

    お見積もり
  3. 無料で始める

    自社サーバーに Kurahi を導入し、エディション、業務キュー、L0・L1 のオートパイロットを無料でお使いいただけます。

    無料で始める