第3回 『XA FrameManager Platformの開発フレームワーク(1)』
| 2010/01/06 03時00分 | 樋口亮平 プロダクト事業本部 商品開発2部 グループリーダー 猪上太 プロダクト事業本部 商品開発2部 システムスペシャリスト |
今回は「XA FrameManager Platform」の「開発フレームワーク」を中心にご説明したいと思います。
前回のコラムでは「開発フレームワーク」を目的別のアプリケーション構造を提供する「プログラムのひな型」と説明しました。その目的は、業務アプリケーションの開発工数を削減し、プログラムの品質を均質化して、開発生産性を向上させることにあります。
例えば、開発フレームワークには「クライアントフレームワーク」と呼ぶものが用意されておりますが、これはクライアント画面に必須となる様々な共通的な処理(ユーザのログイン、ログアウト、権限制御、画面構造や表示データのキャッシュ、通信処理など)を提供します。
もし、これらの処理が全く存在しない状態から業務アプリケーション(画面)の開発を行おうとすると、全てを一から設計・開発しなければなりません。頑張って一から設計・開発を行ったとしても、人手でプログラムを開発する以上は、開発者によって微妙に異なるプログラム記述差異による不具合発生リスクが生じるため、それを軽減・回避するための措置を取る必要があります。いずれにしても、「クライアントフレームワーク」に相当する機能の設計・開発に時間と費用がかかることになります。
つまり、開発フレームワークの狙いは、業務アプリケーション共通で利用される標準的機能はシステム基盤(XA FrameManager Platform)が提供し、それらを開発者に利用してもらうことで、開発者(人手)によるプログラム開発範囲を小さくして、業務機能の開発に集中してもらうことなのです。ソフトウェア開発におけるQCD(Quality:品質、Cost:価格、Delivery:納期)の要求レベルが益々高まっている現在においては、もはや、開発フレームワーク無くしての業務アプリケーション開発は成り立たないと言えます。
開発フレームワークは、MCFrame XA独自の詳細設計書である「設計文書」に記述する内容(機能)に応じて、開発ツール(XA FrameManager Developer)が自動的に開発フレームワークの利用有無を判断して、Javaプログラムへ組み込まれるという仕組みになっています。例えば、クライアント画面を開発する場合には、上述の「クライアントフレームワーク」が画面のプログラムに必ず組み込まれることになります。
それでは、次にXA FrameManager Platformが提供する開発フレームワークの種類についてご説明致します。
開発フレームワークの種類
XA FrameManager Platformには様々な機能とそれらを使いこなすための開発フレームワークを用意しています。主なものについて、その目的と概要を以下の表にまとめました。
| 種類 | 目的 | 機能概要・特長 |
|---|---|---|
| クライアント フレームワーク |
クライアント側の処理を管理する構造・機能を提供 | ・MCFrame XAのアプリケーションを起動してから終了するまでの間の全ての処理について、クライアント側アプリケーションの処理を管理します。 ・直感的な表現力、多彩なキー操作、多言語化、パーソナライズ、EXCELなどのWindowsアプリケーションとの連携などについて、標準的な機能を提供します。 ・クライアントフロー(エンジン)により、ユーザのログイン、ログアウト、権限制御、画面構造や表示データのキャッシュ、通信処理などを行うためのライブラリを提供します。 |
| サーバ フレームワーク |
アプリケーション・サーバ側の処理を管理する構造・機能を提供 | ・MCFrame XAのアプリケーションを起動してから終了するまでの間の全ての処理について、サーバ側アプリケーションの処理を管理します。 ・サーバフロー(エンジン)により、クライアントの認証、権限チェック、業務ロジック(オペレーション)の並行処理制御、DBアクセスやリソース管理などを行うためのライブラリを提供します。 |
| 国際化 フレームワーク |
多言語化に対応するアプリケーション構造・機能を提供 | ・クライアントPC側のロケール情報に合わせて画面表示を切替え、ロケール毎に画面のラベル、レイアウト、フォーマット、メッセージを表示します。 ・画面の表示だけでなく、帳票の表示を得意先の国ごとに切替えることも可能です。 |
| EI (Extension Injection) フレームワーク |
差分開発を可能とするアプリケーション構造を提供 | ・XA FrameManager Developer の自動生成ツールにより、3つのクラス構造(標準クラス、カスタマイズクラス、EIクラス)を持ったJavaプログラムを自動生成します。 ・EI構造を取ることで、MCFrame XAが標準で提供するプログラムソースと、アドオン/カスタマイズするプログラムソースが明確に分離できるため、アドオン/カスタマイズ機能における差分機能の差替え・実装が容易になります。 |
| 帳票 フレームワーク |
帳票出力に対応するアプリケーション構造・機能を提供 | ・MCFrame/Reportと連携して帳票出力するためのライブラリを提供します。 ・クライアント-サーバ印刷と、クライアント印刷の2パターンが可能です。 |
| 項目メタ フレームワーク |
データのメタ情報(※)を一元管理し、保守性の良いアプリケーション構造を提供 | ※「メタ情報」とはMCFrame XAの用語で、アプリケーションやDBテーブルで扱うデータの型、桁数、小数点以下の桁数などのまとまりを指します。 ・データのメタ情報を一元管理することで、メタ情報を変更する際に(例えば、特定の項目の桁数を10桁から20桁に増やしたい場合)、修正箇所を最小限にすることができ、また、変更の影響箇所を把握し易くなります。 |
| 排他制御 フレームワーク |
表示データとDBデータの一貫性を保障する処理構造・機能を提供 | ・DBレコードを参照した時点を表すタイムスタンプ(参照日時)と、DBレコードが最後に更新された時点を表すタイムスタンプ(更新日時)とを比較し排他制御(※楽観的排他)します。 ※楽観的排他:自分が操作している情報は、他の人が操作する可能性が少ないという視点に立った排他制御です。 |
| DBコンテナ フレームワーク |
単純なSQLの開発・メンテナンスを不要とするアプリケーション構造・機能を提供 | ・XA FrameManager Developer の自動生成ツールにより、JavaプログラムからDML(SELECT、UPDATE、INSERT、DELETE)の実行を容易にするプログラムを生成します。これにより、SQLレスの業務ロジックを作成することが可能になります。 ・SQLの再利用性を高めるために、SELECT文のWHERE句やUPDATE文のSET句などを部分的に編集して実行するAPIを提供します。 |
| Webサービス フレームワーク |
MCFrame XAに作成された業務ロジックをWebサービスとして公開するための処理構造・機能を提供 | ・作成済みの業務ロジック(オペレーション)をWebサービスとして公開することが可能です。 ・XA FrameManager Developer の自動生成ツールにより、オペレーションをWebサービスとして公開するためのSOAPコンバータを生成します。 ・サードパーティー製のWebサービスライブラリを使用することで、外部のWebサービスを利用することも可能です。 |
MCFrame XAの前身であるMCFrame iSeriesの時代より、MCFrameを利用した業務システム開発プロジェクトからのフィードバックを行い、様々な機能を開発してきた結果、このようないくつもの開発フレームワークが生まれることとなりました。従って、これら開発フレームワークには、MCFrameのシステム基盤としてのノウハウが凝縮されているとも言えます。
これからもMCFrameユーザ(開発者・システム利用者)のご意見・ご要望を取り入れつつ、開発フレームワークの機能強化を行ってゆく予定です。
開発フレームワークの内容については、今回と次回のコラムでご説明したいと思います。
開発部品(GUI部品)
開発フレームワークの解説に入る前に、開発フレームワーク(特にクライアントフレームワーク)を構成する要素となっている「開発部品」をご説明致します。
開発部品は、開発フレームワークよりも提供する機能の粒度が小さいもので、MCFrame XA上で開発されるアプリケーションの仕様に応じて取捨選択して利用されるものです。最も代表的なものとしては画面を構成する「GUI部品」があります。これも開発フレームワークと同様に、開発者(人手)によるプログラム開発範囲を小さくして、業務機能の開発に集中してもらうことを目的としています。
MCFrame XAのGUI部品はJavaのGUI構築ツールキットである「Swing」をベースに作られており、Swingで準備されている部品のほとんどが機能強化されMCFrame XAの画面で使用できるようになっています。これにより、Swingの最大の特長であるプラットフォームに依存しないルックアンドフィールは保証され、業務アプリケーションに求められる機能を持ったGUI部品が提供できるわけです。
多数のGUI部品が用意されていても、Java SEの仕様に精通した開発者でないと、それらを人手でJavaプログラムに組み込んで自由に使いこなすことは難しいのでは?と感じた読者も多いかもしれません。そこで、MCFrame XAでは、そういった不安を解消し、Java開発の敷居を下げるために、Java SEの仕様に精通していなくても、Javaプログラムを書かずに開発部品を自由に利用して画面を自動作成できる仕組みを提供しています。
MCFrame XAの製品には、その開発に使われた「設計文書」と呼ぶ所定のフォーマットで作られた多数のEXCELファイルが添付されており、画面の開発を行う場合には、設計文書の一つである「画面実装仕様書」を使います。この中に、開発しようとする画面の仕様・構成に応じてGUI部品の利用有無を定義し、開発ツール(XA FrameManager Developer)で「自動生成」の処理を行うと、定義されたGUI部品で構成される画面(Javaプログラム)が自動的に出来上がるというものです。(開発ツールの内容については、次回以降のコラムで改めてご説明致します。)
MCFrame XAのGUI部品は画面ごとに生成・保持されるデータモデルと関連付けられており、画面上でのデータ操作やサーバとのデータのやりとりといった取り扱いが分かりやすくなるよう工夫されています。また、GUI部品のレイアウト情報(幅・高さ・座標位置)や表示文字列がXMLファイルとして管理される仕組みを取っているので、Javaの画面プログラムを変更することなくレイアウトや表示文字列を自由に変更することができるようになっています。
MCFrame XAのGUI部品のうち、特に機能が豊富なのが複数のレコード情報を表示する「一覧部品」です。項目数の多いデータを画面表示する場合、画面の表示幅が限られるために、どうしても一覧部品を横スクロールして必要な項目を確認しなくてはなりませんが、データのID項目のような常に見えるようにしておきたい特定の項目(通常、一覧部品の左の方のカラムになっていると思います)は、「固定カラム」として横スクロールしないように設定したり、参照の必要のないカラムは「非表示」に設定したりすることができます。
また、確認・編集頻度の高い項目が一覧部品の右の方に位置する場合には、そのカラムをマウスでドラッグして見やすい左の方の位置へ自由に移動することも可能で、ユーザの操作によって、見やすい・編集しやすい一覧表示が設定できます。さらに、画面の一覧部品に表示されているデータに対して、カラム別にソートをしてレコードの並べ替えを行ったり、個々のセルの情報を検索してレコードを探したりする機能もあるので、ユーザの操作で用途に応じたデータの検索・レコードの検索も行うこともできます。
並べ替えや検索のようなデータの見方を変える機能以外にも、一覧部品の表示範囲を切り替える機能があります。MCFrame XA標準で用意されている個々の画面では半分かそれ以下のサイズで配置されている一覧部品を画面いっぱいに表示させたり、テーブルズーム機能によってフォントサイズを大小に変更したりすることによって、一覧性を高める・一覧の表示文字を大きくして見やすくする、といったことも自由に行えます。
これらの機能は、MCFrame XAが提供する開発部品を使った全ての画面で利用可能になりますので、業務アプリケーション開発者はこれら機能の開発は一切不要になるわけです。
クライアントフレームワーク(パーソナライズ)
それでは、ここからは開発フレームワークのご説明に入ります。今回は「クライアントフレームワーク」が提供する機能の一つである「パーソナライズ」をご説明致します。
「GUI部品」を使って作られたMCFrame XAの画面は、前回の「XA FrameManager Platformの実行基盤」でご説明した「クライアント実行基盤」上で動作することによって、フォントサイズや一覧部品の表示といった標準の画面設定をユーザの操作で自由に変更することができます。ユーザ毎に個々の画面で設定を細かく行うことで、担当業務に最適化された画面環境を作りあげることができるわけですが、この環境を、MCFrameを起動するたびにいちいち設定していたのでは手間がかかりすぎ魅力が半減してしまいます。そこで、ユーザや業務に合わせて変更された画面の設定を「パーソナライズ情報」として保存する機能を用意しました。
パーソナライズ情報はユーザ毎にサーバ側へ記録されるため、同じユーザが異なるPC端末でMCFrameを起動しても、そのユーザのパーソナライズ情報が反映されるようになっていますので、何度も設定し直す手間はかかりません。
パーソナライズ可能な情報は以下のものとなります。
| 種類 | 概要・特長 |
|---|---|
| 一覧部品のカラム順・サイズ | 設定されたカラムの順序・カラム幅・非表示カラム・固定カラムを各画面の一覧部品ごとに記録 |
| 一覧部品のソート順 | 設定されたソート順の設定を各画面の一覧部品ごとに記録 |
| 画面のフォント比率 | 設定された画面フォント比率(および部品レイアウト)を各画面ごとに記録 |
| 画面の位置・サイズ設定 | 設定された画面位置・サイズを各画面ごとに記録 |
| 画面のメモ、ブックマークなど | ユーザごとに画面のメモやブックマークを記録 |
パーソナライズの機能は、XA FrameManager Platform上で稼働する全ての画面で利用できますので、開発者にとっては、この機能の開発・保守が一切不要になるだけでなく、ユーザによって微妙に異なる画面表示の細かい要望に対して、画面プログラムに手を加えずに応えることが可能になります。
今回は「XA FrameManager Platform」の「開発フレームワークの概要」と「開発部品」についてご説明しました。画面に関する話題が多くなりましたが、MCFrame XAが提供する開発部品(GUI部品)と開発フレームワーク(クライアントフレームワーク)を利用することで、業務アプリケーション開発で煩雑になりがちな画面開発が大幅に効率化され、業務機能の開発に集中し易くなることがご理解頂けましたでしょうか。
次回は引き続き「開発フレームワーク」の代表的なものについてご説明したいと思います。

プロダクト事業本部 商品開発2部 グループリーダー
システム好きのプラントエンジニアが、インターネット黎明期のネットワーク技術に夢中になり、勢いでITの世界へ転身。これまでに、TRADEX、Oracle EBS、MCFrameなどのシステム導入プロジェクトに従事。最近はXA FrameManagerの伝道師になりつつある。

プロダクト事業本部 商品開発2部 システムスペシャリスト
SmalltalkがやりたくてBENG分社前のTECに入社して、MCFrame に触ってから早10年。今はJavaエンジニアですが、いつかは"Smalltalker"に戻る日を夢見て頑張ってます。
「健全なコードは健全な肉体に宿る」を信じて、毎日昼休みは会社の近所をジョギングしてます。
本コラムに対応したソリューション
本コラムに対応したセミナー
ERP&SCMカンファレンス2009(11/5) セッションA2





























