NEWS
IBM i のモダナイゼーションを考える(旧コラム) IBM i のモダナイゼーションを考える(旧コラム)
2020.02.10

【第6回】開発・運用環境のモダナイゼーション

開発・運用プロセスのモダナイゼーション

ソフトウェアの開発プロセスについては、1970年代のウォーターフォール・モデルに始まり1980年代のプロトタイピングやスパイラルモデル、1990年代のアジャイル開発、そして2009年のDevOpsの登場に至るまで、およそ10年毎に新しい手法が提案されてきました。

しかし、過去に提案されてきた開発手法には様々なものがあるとはいえ、要求仕様収集及び分析、システム設計、プログラミング、テスト、導入・配備、運用・保守といったアプリケーション開発におけるライフサイクル管理(ALM:Application Lifecycle Management)を構成するプロセスに大きな違いはありません。手法によって「品質重視」か「時間(開発期間)」重視のどちらにより重きを置くかという違いはあれ、各開発手法が解決しようとしているものは皆同じで、「品質の高いソフトウェアをいかに短期間で作成するか」が主要課題です。そのためにプロセスの短縮やプロセスの流れを工夫し、その時々のIT環境を考慮すると同時に利用可能なIT技術を活用することで、ALMを効率化する方法を模索してきたのが開発手法の歴史であると言えます。

現在ITの世界で注目を集めている開発手法がDevOpsで、名前だけでも耳にされたことがあるのではないでしょうか。DevOpsは、元々SoE(Systems of Engagement)と呼ばれるアプリケーション領域で、1日に10回のプログラム修正とリリースを可能にした実績から、極めて生産性の高い開発手法として急速に注目を集めるようになりました。その特徴は、ツールを活用してプロセスの生産性を高めると同時にプロセスの流れを自動化することでALMの効率化を図るだけでなく、開発部門、IT運用部門およびシステムに関わりを持つ部門すべてが一体となってALMを運用するという考え方にあります。現在では、DevOpsの考え方はSoEの領域に止まらず、いわゆるSoR(Systems of Record)と呼ばれる基幹系のアプリケーション領域でも有効であるとの認識が広がっています。

 

開発ツールのモダナイゼーション

上で述べたように、DevOpsはツールを活用して各プロセスの効率化とプロセスの流れの自動化を行います。ここでは、IBM i においてDevOps的な開発を支援するツールについて、主なものをご紹介します。

ソースエディター

(1) Rational Developer for i

Rational Developer for i (以下RDi)は、EclipseをベースにしたIBM i用の統合開発環境で、GUIによるRPG、COBOL、CLのソースコードの編集及び画面ファイルや印刷ファイルの編集に止まらず、コンパイル、デバッグまで一連の開発作業をサポートします。また、後述するIBM i Access Client Solutions(以下ACS)との連携によるデータベース管理やソフトウェア構成管理ツールと連携したソースコードのバージョン管理をシームレスに行えます。

RDiの機能は多岐に亙るためそれらの詳細な説明は省略しますが、SEUからRDiが提供する新しい開発環境に移行するべき理由を簡単にまとめると以下のようになります。

  • SEUのサポートレベルはIBM i 6.1で止まっており、それ以降のIBM i の機能強化に対応するにはRDiが必要である
  • RDiによる開発環境は、豊富な機能を有すると同時に他の様々な開発支援ツールとシームレスに連携できるのでSEUに比べて開発生産性が高い
  • Eclipseベースの開発環境なので、Eclipseに馴染みのある若いプログラマーはすぐに使いこなせるようになる

RDiには「RPGおよびCOBOL向けツール版」の他に「RPGおよびCOBOL+最新化ツールJava版」もあり、こちらを使えばRPGやCOBOLプログラムだけでなくJavaやWebアプリケーション、WebFacingなどの開発もできるので、フロントエンドのアプリケーションはJavaやWebで開発しながら、基幹業務の開発や保守は従来通りRPGやCOBOLで行うことが可能です。なお、RDiの詳細については、既にiWorldの連載「IBM i 進化論 ~知っておきたい12のこと~」の第5回の記事「スタンダード – RDi」で解説されていますのでそちらをご覧ください。

(2) Orion

RDiの他にIBM i 用として利用可能なエディターとしては、オープンソース・ソフトウェアのOrionが挙げられます。Orionは元々クラウド環境での開発を目的としたエディターで、Webブラウザーをクライアントとして使用します。IBM i 用の開発という観点で言うと、OrionではPHP、JavaScriptに加えFF RPGの編集ができます。ただし、RDiと違いこれらのソースコードはIFS上に格納する必要があります。また、ソースコードがIFS上に置かれることからそのCCSIDは1208となるので、コンパイル時にTGTCCSIDとして5035などを指定する必要があります。また、OrionはRDiと同様Gitとの連携処理も可能ですが、RDiのようにシームレスにビルドまで行うことはできません。

 

データベース設計・管理ツール

IBM i の他に異なるデータベース・サーバーがある場合、各サーバーでのデータベース・アプリケーション開発や管理用ツールとしてIBM Data Studioがあります。また、データベース・サーバーがIBM i だけの場合には、データベース管理をACSで行うという選択肢もあります。

(1) IBM Data Studio

IBM Data StudioはIBM i の他Linux、UNIX、Windows、z/OS上のDB2をサポートし、データベース・アプリケーションの開発、Queryのチューニング、データベースの管理と正常性のモニターおよびジョブの実行といったデータのライフサイクル全体に亘って管理を行う製品であり、以下のような機能を含む多彩な機能を提供します。

  • テーブルの作成、更新、削除などのDBオブジェクト管理
  • アクセス権限の管理
  • SQL文の作成、編集、実行
  • ユーザー定義関数やストアード・プロシージャーの作成、デバッグおよびデプロイ
  • SQLパフォーマンス・チューニングのためのアクセス・パスグラフや統計アドバイスなどの提供
  • DB稼働状況監視(ヘルス・モニター及び可用性モニター)
  • DBへの変更の自動化(ジョブ・スケジューラー)

IBM Data StudioはEclipseをベースにしているので、RDiと同様の優れた操作性を持っていますが、DBアドミニストレーターやある程度データベースに習熟したユーザー向けの製品です。

(2) ACSのデータベース管理

ACSが提供する以下の3つのデータベース管理機能を利用することで、IBM iのデータベース管理がより容易かつ効率的に行えます。

  • 「スキーマ管理」機能
    グラフィカルに表示されたIBM i上のスキーマの中から選択されたスキーマの詳細表示や、スキーマのコピーあるいはスキーマの定義変更などスキーマに関する様々な作業を行うことができます。
  • SQL スクリプトの実行機能
    この機能をRDiと連携させ、RPGのソースコードに記述されているSQL文を実行することでSQL文を含むRPGプログラムのデバッグが容易になる
  • 「SQLパフォーマンス・センター」機能
    データベース・アプリケーションで使われている SQL のパフォーマンス最適化を支援するための以下のような機能を提供する

    • 収集されたパフォーマンス・データの要約ビューを提供。ドリルダウン・ナビゲーションを使用してこの要約ビューをより詳細に分析可能
    • 複数のパフォーマンス・データ収集の要約比較を表示後、その内の2つを選択して更に詳細なステートメントの比較を行うことが可能
    • SQL プラン・キャッシュ内または収集されたパフォーマンス・データ内の SQL ステートメントを処理
    • システム SQL プラン・キャッシュの設定を管理
    • SQL 文がどのように実行されるかを確認できるよう、SQL文の実行プランをグラフィカルに表示(Visual Explain)

 

ソフトウェア構成管理ツール

ソフトウェア構成管理は、どのモジュールのどのバージョンの組み合わせでソフトウェアが構成されているかを管理するためのもので、元々は構成管理と呼ばれるハードウェアの開発及び製造分野の考え方をソフトウェアの分野に取り込んだものです。

ソフトウェア構成管理ツールの歴史は古く、1960年代初期のIBM UPDATEに始まり、1970年代初期のUNIXのmakeやSCCS(Source Code Control)、1980年代のRCS(Revision Control System)やCVS(Concurrent Version System)、2000年代のSubversionなどが良く知られています。

従来のIBM i のソフトウェアはモノリシックな構造だったので、せいぜいソースコードとオブジェクトの関係を管理するだけで済み、こうしたソフトウェア構成管理ツールの必要性は感じなかったかもしれません。しかし、既にアプリケーションのモダナイゼーションでお話したように、これからはモジュールを組み合わせてアプリケーション・プログラムを作る必要があり、こうしたツールによる管理は必須になってきます。

IBM i で利用可能なソフトウェア構成管理ツールにはGitやIBM Rational Team Concert (以下RTC)などがあります。GitはLinuxの生みの親であるリーナス・トーバルズ氏が、Linuxのカーネルのソースコードを管理するために作成したオープンソースの分散型のソフトウェア構成管理ツールです。RTCはソフトウェア構成管理以外にも計画管理、ビルド管理、変更管理、問題管理といったALMの広範な作業をサポートする製品で、自動化ツールや保守管理ツールとしての側面も併せ持っています。また、GitおよびRTCはどちらもOrionやRDiと連携させることができ、ソースコードの編集からバージョンの管理までをシームレスに行うことができます。図1にGitまたはRTCを使用したIBM iの開発の概要を示します。


図1. GitまたはRTCを使用したIBM i での開発概要

 

単体テストツール

プログラムやモジュールの作成あるいは修正を行ったときに、単体テストを行って当該プログラムまたはモジュールが設計通り正しく動作することを検証するのは当たり前の事として実施されていると思います。しかし、IBM i の世界ではほとんどのケースでこれを人手に頼って行っているというのが実態ではないでしょうか。この作業を人手で行っていると時間がかかる上に、時には行うべきテスト項目が抜け落ちるというミスが発生する恐れもあります。

単体テストをプログラムによって実行することができれば、テストの工数を大幅に削減できますし、テストケースの実施漏れも防ぐことができ、ソフトウェアの品質も担保できます。これを支援するのが単体テストツールで、IBM i のRPGプログラム用にRPGUnitというオープンソースのフレームワークがあります。加えて、RPGUnitにはRDi用のオープンソースのプラグインもあり、これを使えば、RDiからシームレスに単体テストを実行することができます。

 

プロセス自動化ツール

DevOpsではコーディング終了後に、ビルド、テスト、デプロイという一連の作業を自動的に実施することで、工数の削減と開発期間の短縮を図るのが標準的な方法になっています。この自動化のためのツールとしてポピュラーなのがJenkinsと呼ばれるJavaで書かれたオープンソースのプログラムです。JavaプログラムですのでIBM i のJVMでもJenkinsを動かしてこれを利用することができます。

自動化ツールと書きましたが、正確に言うとJenkins自体は条件判断に基づいてコマンドまたはスクリプトを呼び出すだけであり、ビルド、テスト、デプロイといった各プロセスに対応するツールを、前段のプロセスの結果に応じて適宜起動することでプロセスの自動化を行っています。

 

モダナイゼーションツール

ここまでは、モダナイズされたアプリケーションの開発、保守、運用支援という観点から、各種のツールの話をしてきましたが、既存のアプリケーションを新規開発と同じようなやり方でモダナイズするのは手間がかかり過ぎますし、ご紹介したツールだけでは機能が不足しています。

 

現状分析ツール

モダナイゼーションであるか否かを問わず、プログラムに何らかの修正を加えようとする場合、現在のアプリケーションの構造、例えばプログラム間の関連及びプログラムとファイルあるいはテーブルとの間のCRUD関係などを明確に把握し、あるプログラムの修正が他のどのプログラム、ファイル、テーブルにどのような影響を与えるかを明確に理解している必要があります。こうした情報を提供してくれるツールの代表的なものにARCAD社のARCAD Observer for IBM i やFRESCHE社のX-Analysis Advisorがあります。

ARCAD Observer for iについては、iWorldコラムの連載記事「ARCAD活用術 こんなに手軽なモダナイゼーション」で詳しく紹介されていますのでそちらを参考にしていただくとして、ここではX-Analysis Advisorについて簡単にご紹介します。X-Analysis AdvisorはARCAD Observer for IBM i と同様の機能を有する製品で、まずIBM i に導入されたサーバーモジュールがIBM i上のプログラムオブジェクトやソースプログラムから情報を抽出してクロスリファレンスを作成します。これにEclipseのプラグインとして提供されるX-Analysisのクライアントモジュール(RDiからも呼び出し可能)からアクセスすることで、プログラムの変更に伴う影響の分析、システム全体のグラフィカルなドキュメントの自動生成、データモデルの可視化、ビジネスルールの抽出、コードの複雑性や品質の測定などの作業を、GUIを通じて行うことができます。

紙幅の関係で詳細なご説明はできませんが、ご紹介したARCAD Observer for IBM iやX-Analysis Advisorの他にも、国内ベンダーからは以下のような製品が提供されています。

  • REVERSE COMET i (NCS&A株式会社)
  • S/D Manager Object管理およびSS/TOOL-ADV(株式会社アイエステクノポート)
  • Trinity(株式会社ZeroDivide)
  • Toolbox for IBM i (ネオアクシス株式会社)

こうした現状分析ツールの導入は、単に現行アプリケーションのモダナイゼーションのためだけではなく、アプリケーションの文書化ならびに現状管理のツールとして活用し続けることができる点も考慮すれば十分検討に値するでしょう。

 

ソースコード変換ツール

IBM i の現行アプリケーションのソースプログラムを、モダンなコードに変換するツールがあればと思われる方も多いでしょう。世の中にはRPGのソースコードをJavaなどの他言語のソースコードに変換するツールもありますが、ここではRPGのソースをILE RPGに変換するツールについて簡単にご紹介します。

IBM i の標準コマンドとして提供されているCVTSRCコマンドを使うことで、RPGⅢソースをRPG Ⅳソースへ変換することができます。さらに、ARCAD社のARCAD RPG Converter for IBM i を使えばRPG ⅣソースからFF RPGソースへ変換したり、サブルーチンをプロシージャー化したりすることができます。

ただし、こうしたツールによって変換されたコードの基本構造は元のプログラムの構造を引き継いでおり、モダナイゼーションの目標である変更や修正に迅速に対応できる構造に必ずしも変革されるわけではありません。たしかにARCAD Converter for IBM i は単に元のソースコードを自由形式に書き換えるだけでなく、構造化してGOTO文を除去するなどある程度の構造修正も行ってくれますが、本格的なモジュールの抽出まではしてくれません。これはこれで大変役立つことは間違いありませんが、上記のツールでコード変換するだけではこの連載で一貫して述べている意味での「モダナイゼーション」完了とはならないことに留意してください。

 

おわりに

今回はIBM i のシステムの開発・運用をモダナイズするという観点で主なツールをご紹介しましたが、ここで心に留めておいてほしいことが1つあります。それは、ツールの導入はあくまで目的を達成するための手段であり、必要条件に過ぎないということです。当たり前のことのように思われるかもしれませんが、ツールを導入しただけでモダナイゼーションができた気になるというのは意外に陥りがちな罠です。モダナイゼーションの目的である「ビジネスの変化に迅速に対応できるITシステムを構築する」作業の一環として、ツールが開発や運用プロセスの改善にどれだけ寄与しうるかという視点でツールを評価することが重要です。さらに言えば、開発・運用プロセスのモダナイゼーションを実現するには個々の開発プロセスの効率化もさることながら、開発サイクル全体の効率化にも目を向けることが大切です。

また、システムの開発プロセスは単にIT部門だけの関心事ではなく、ITと関わりを持つ全部門と密接に関係しています。したがって、新しい開発プロセスの採用に際しては、現在の自社のシステム開発法の課題を明確にし、それを克服するためにどのような改革を行うべきか、全社的な合意形成とコミットメントが不可欠であることにも留意する必要があります。

 

<著者プロフィール>
西原 裕善(にしはら ひろよし)
日本IBMでSEとしてS/34、S/38のシステム設計および導入作業に従事した後、米国ロチェスターの国際技術支援部門に出向し、全世界のIBM SEやお客様に対してAS/400の技術サポートを行う。帰国後、日本IBM システムズ・エンジニアリング(株)でITアーキテクトとして様々なシステムのアーキテクチャ設計を担当。現在はフリーのテクニカル・ライターとしてIBM iを中心に執筆活動を行っています。
いいねと思ったらシェア
twitter
facebook
hatena
IBM i のモダナイゼーションを考える(旧コラム) 目次を見る

この連載は…

IBM i のモダナイゼーションを考える(旧コラム)
関連記事
【第5回】インターフェースのモダナイゼーション
【第5回】インターフェースのモダナイゼーション
【第3回】データベースのモダナイゼーション(その1)</br>- DDSからDDLへ -
【第3回】データベースのモダナイゼーション(その1)
- DDSからDDLへ -
【第4回】データベースのモダナイゼーション(その2)</br>- データベース設計 -
【第4回】データベースのモダナイゼーション(その2)
- データベース設計 -
あなたにオススメの連載
できるIBM i 温故知新編
7記事
できるIBM i 温故知新編
IBM i の”新”必須言語 〜FFRPG入門〜
14記事
IBM i の”新”必須言語 〜FFRPG入門〜
IBM i アプリの第二の柱 OSS
15記事
IBM i アプリの第二の柱 OSS
PAGE TOP