mcframeアプリケーション開発における 特 オブジェクト指...

6
16 特集1 MCFrameアプリケーション開発における オブジェクト指向の有効性 Effect of Object-Oriented Technology in Application Development of MCFrame 大田 和弘     川西 弘純 OOTA Kazuhiro   KAWANISHI Hirozumi 概要 お客さまにとってのコンピュータシステムは業務を遂行するための道具であり、違和感なく利用できることが条件 である。開発言語や過去の実装例(パターンを含む)は、開発技術者にとっての道具であるとともに、アイデアの源 である。開発技術者は目標を効率的に達成するために道具を改善し、お客さまにとってより良い使い方を追求する ことになる。 良い道具を使って誰でも容易に開発できる環境を提供することは、ソフトウェア開発の生産性向上のために有 効な手段である。 業務アプリケーションのプログラムは、ほとんどが同じようなパターンであるため、簡単なパラメータ設定やわず かな違いの修正を行うだけで、開発できる部分を含んでいる。しかし、多くの事例を見ていると、生産性と品質の 向上のためには、単純化のアプローチだけでなく、技術者の行動範囲を広げていくアプローチも必要であることが 明らかである。 本稿ではMCFrame(VisualWorks、Smalltalk)によるプログラム開発を事例として、オブジェクト指向を有効に 活用することで、生産性と品質の改善につながる可能性を示す。 1. はじめに MCFrameビジネス プロジェクト管理者と開発技術者は、技術としての開発手 法や開発言語を扱う上で、該当技術のアーキテクチャを理解 し共有していることが条件である。それは、お客さまに対し て開発手法や開発言語を説明する場合も同様である。 MCFrame(VisualWorks、Smalltalk)でのオブジェク ト指向の目指すところは、全てのクラスの実装が公開されて いることに象徴されている通り、アイデアの宝庫である既存 のクラスを再利用してソフトウェアを作り上げていくことに ある。例えば、開発技術者が問題解決のために、実世界(サー ビスする機能)により近い形式で対象のモデル化を行うケース である。 そこには、開発言語を単にプログラミングの道具として利用 するのではなく、設計を含めた問題解決の道具として利用する という考え方が、含まれている。 我々は道具である MCFrame開発というオブジェクト指向 言語を利用したプログラミングにおいて、再利用や部品化を 効率よく進めることにより、設計を含めた生産性の向上がいか に図れるかを理解し、技術力を日々向上させている。 *VisualWorksはCincom Systems.Inc. (日本ではシンコム・システムズ・ジャパン(株))が販売する製品です。 *SmalltalkはXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語です。

Upload: others

Post on 14-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MCFrameアプリケーション開発における 特 オブジェクト指 …...という考え方が、含まれている。 我々は道具であるMCFrame開発というオブジェクト指向

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

16 17

20 21

18 19

特集1

特集1

特集1

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L特集1

MCFrameアプリケーション開発における オブジェクト指向の有効性

Effect of Object-Oriented Technology in Application Development of MCFrame

大田 和弘     川西 弘純   OOTA Kazuhiro   KAWANISHI Hirozumi

概要  お客さまにとってのコンピュータシステムは業務を遂行するための道具であり、違和感なく利用できることが条件

である。開発言語や過去の実装例(パターンを含む)は、開発技術者にとっての道具であるとともに、アイデアの源

である。開発技術者は目標を効率的に達成するために道具を改善し、お客さまにとってより良い使い方を追求する

ことになる。

 良い道具を使って誰でも容易に開発できる環境を提供することは、ソフトウェア開発の生産性向上のために有

効な手段である。

 業務アプリケーションのプログラムは、ほとんどが同じようなパターンであるため、簡単なパラメータ設定やわず

かな違いの修正を行うだけで、開発できる部分を含んでいる。しかし、多くの事例を見ていると、生産性と品質の

向上のためには、単純化のアプローチだけでなく、技術者の行動範囲を広げていくアプローチも必要であることが

明らかである。

 本稿ではMCFrame(VisualWorks、Smalltalk)によるプログラム開発を事例として、オブジェクト指向を有効に

活用することで、生産性と品質の改善につながる可能性を示す。

1. はじめに

2. MCFrameによるプログラミングの概要

3. 部品化の有効性

4. アプリケーションプログラム   開発における、改善の方向性

川西 弘純 KAWANISHI Hirozumi

MCFrameビジネス

 プロジェクト管理者と開発技術者は、技術としての開発手

法や開発言語を扱う上で、該当技術のアーキテクチャを理解

し共有していることが条件である。それは、お客さまに対し

て開発手法や開発言語を説明する場合も同様である。

 MCFrame(VisualWorks、Smalltalk)でのオブジェク

ト指向の目指すところは、全てのクラスの実装が公開されて

いることに象徴されている通り、アイデアの宝庫である既存

のクラスを再利用してソフトウェアを作り上げていくことに

ある。例えば、開発技術者が問題解決のために、実世界(サー

ビスする機能)により近い形式で対象のモデル化を行うケース

である。

 そこには、開発言語を単にプログラミングの道具として利用

するのではなく、設計を含めた問題解決の道具として利用する

という考え方が、含まれている。

 我々は道具であるMCFrame開発というオブジェクト指向

言語を利用したプログラミングにおいて、再利用や部品化を

効率よく進めることにより、設計を含めた生産性の向上がいか

に図れるかを理解し、技術力を日々向上させている。

(3)

大田 和弘 OOTA Kazuhiro

図1 FrameManagerとMCFrame共通フレームワークの関係

図 3 FrameManagerを利用したメッセージ管理例

 アプリケーションプログラム開発における、現状分析の結果、

有効と思われる改善点を見出した。

4.1 データモデルの明確化とクラスの分離の判断  業務アプリケーションを、画面を中心に設計しているだけで

は、データモデルの明確化の観点が、不十分になる傾向がある。

これは他のオブジェクト指向言語を用いた開発でも見られる傾

向であり、フレームワークや自動生成によるアプリケーション

開発を、画面中心で進めている場合に顕著である。

 ひとつの画面が、複数の目的の異なるデータを扱うことに

なった場合、対象データごとにクラスを分離することが、問

題を扱う範囲の局所化や再利用性を高めることになる。この考

えに基づきMCFrameの標準化を実施し、効果を上げている。

4.2 SQL文の局所化と隠蔽  リレーショナルデータベースのデータベース操作言語として、

SQLを利用する業務アプリケーションが主流となっている現

状にあって、SQL文をオブジェクト指向の枠組みの中で、ど

のようにとらえるべきかがポイントとなる。

 オブジェクト指向同様に、SQL文も実装のための言語にと

どまらず、データを扱うための仕様を示す表現として定着して

いる。多くの開発技術者は画面のイベントに近い箇所にSQL

文を実装する傾向にある。ところがSQL文はあくまでも操作

言語であって、データモデルを表現する手法ではない。そのた

め、データを扱う目的レベルとは分離するようにしている。

 プログラムのテスト時に、画面に対応したデータベースの更

新内容を確認することは必須であるので、分離を極端に進める

ことは現実的ではないという考えもあるが、画面機能とは直接

関係のないマスタテーブル参照等は、業務的な意味のある共通

部品とすることで、個々の業務プログラムからは、SQL文を

なくすようにしている。

4.3 継承  作成済のアプリ-ケーションクラスを継承し、一部の機能を

変更した新たなクラスを作成する場合には、フレームワークに

従って実装された小さな機能ごとのメソッドをオーバーライド

することで、新たなクラスにおける実装量を最小限にとどめる

ことができる。

 一方で、継承元のアプリケーションクラスの機能が変更にな

ることを想定すると、一部の機能をオーバーライドして上位ク

ラスから影響を受けるよりは、丸ごとコピーを行い、継承元の

影響を受けないようにする考え方もある。

 問題の本質は、アプリケーションクラスの中に、異なる目的

の実装が混在していることにある。解消するために、目的ごと

にクラスを分離し、再構成している。当作業の必要性を認識せ

ずに、継承による生産性向上だけを求めて、結果として保守性

を損なうことのないようにしている。

4.4 共通クラスやフレームワークの修正の決断  MCFrameのアプリケーションクラスはフレームワークを継

承しているため、アプリケーション全体にかかわる変更は、フ

レームワークまたは関連する共通クラスの修正で対応可能な

ケースが多い。ユーザインターフェースである画面の見た目に

ついても同様である。個々のアプリケーションクラスを修正

する必要がないという強みを積極的に利用することで、様々な

効果が期待できる。

 現在のところ、まだ一部のプロジェクトのみでの実施だが、

効果が高いことは実証されている。システム導入後の保守

フェーズへの影響など解決すべき課題もあるが、オブジェクト

指向言語の有効性を活かすためにも共通クラスやフレームワー

クを理解し、的確に修正の決断ができるようにしている。

4.5 VisualWorksクラスの利用  MCFrameで利用されている以外にも、VisualWorksには、

他言語に勝る様々な機能の実装が含まれている。また、それら

を利用することによりOSの機能や外部ライブラリの呼出も可

能となっている。

 しかし、これまで、VisualWorksが実装している利用価値

の高いクラスの存在が理解されていなかっため、MCFrameを

使わない実装方法の選択やアドオンによる時間をかけた開発が

選択されたケースがあったので、実装されている機能を生かす

ように改めた。

 画面アプリケーションとは直接関係のない機能においても、

VisualWorksのクラスを再利用して、他言語より簡単に実装

できた例が確認できている。

4.6 技術者の育成  MCFrameの開発言語となっているSmalltalkを理解してい

る技術者の絶対数は、JavaやVisualBasicといったメジャー

な言語と比較すると IT業界全体を見ても極少数である。

 年々増え続けているMCFrameのニーズに対して、インテッ

クでは独自の開発体制作りを進めている。新入社員~3年目ま

でをターゲットとした「プログラム開発技術者育成カリキュラ

ム」のほかに、中堅社員をターゲットとした「ジュニアSE、

SE育成カリキュラム」を用意している。b-en-g社が実施して

いる技術者認定試験も積極的に取得し、技術力を有することを

形にしている。惜しまぬ日々の努力の結果として、多くのお客

さまにより良いサービスを提供することを目指している。

5. おわりに  オブジェクト指向と言語に関しては、開発現場も含めて、理

解を深める努力が必要であることは明白である。他の開発手法

と比べて、より本質的な理解が必要であることが、困難さをと

もなう一因と思われる。しかし、本質が理解できれば、様々な

面で変化が加速されることが予測される。

 本稿で述べた改善の方向性は、開発技術者の発想の転換だけ

ではなく、プロジェクトの関係者がオープンなコミュニケー

ションを実施することにより達成できる。

 プログラム開発の現場には、まだまだ改善すべき問題点が山

積している。我々インテックはこれからも継続的にその問題点

を明らかにし、改善を実施し、お客さまへより良い道具を提供

し続けていく所存である。

参考文献

[1]ケント・ベック:ケントベックのSmalltalkベストプラクティス・パ

  ターン シンプル・デザインへの宝石集,株式会社ピアソン・

  エデュケーション,(2003.4.10)

[2]青木淳:Smalltalkイディオム,ソフト・リサーチ・センター,

  (1997.2.25)

図 4 インターフェースの改修にともなうプログラム変更例

図2 FrameManagerを利用した二画面合成例

 フレームワークとしての柔軟性を最大限に利用し、多くの事

例を共有化することで、MCFrameは発展を続けている。多く

のお客さまに有効と思われる機能を、フレームワークのバリエー

ションや共通機能とすることで、再利用を進めている。

 以下に、代表的な事例を示す。

3.1 化粧品業界テンプレート  他の開発言語と同様に、MCFrameにおいても複数のお客さ

まへのシステム導入実績により、同様の(あるいは共通した)

機能カスタマイズや新規機能の追加が見えてくる。その共通部

分をインテック独自のテンプレートとして部品化し社内で共有

することにより、プログラム開発期間の短縮や、品質の安定化

を図ることが可能となる。

 例えば、化粧品業界テンプレートである。これまでインテッ

クが担当した複数の化粧品の開発・販売メーカーの導入事例

より、明らかに共通化できそうな機能を集めてテンプレート

を作成し部品化を行った。以後、化粧品メーカーへのシステ

ム化提案時には、MCFrame+化粧品業界テンプレートを基本

モデルとして提案・要件定義を進めてきてる。結果として、

テンプレートを作成・部品化した時の開発コスト以上の恩恵

を得ている。

3.2 帳票印刷機能の拡張  MCFrame標準の帳票印刷機能には、通常使うプリンタから

出力することしかできない。そのため、ラベルプリンタ利用

時には都度通常使うプリンタを切り替えるか、ラベルプリン

タ印刷用に端末を用意する必要があった。そこで、帳票と出

力プリンタを定義する新しいテーブルを作成し、そのテーブ

ルを帳票出力時に参照することにより出力先のプリンタを使

い分ける機能も部品化した。これは業種を問わず有効な部品

である。

 MCFrameの標準機能では不足している機能を補い、短納期

で高品質のシステム提案ができるように、今後も部品化を進

めて行く計画である。

販売 管理

生産 管理

原価 管理

MCFrame共通フレームワーク

FrameManager

■画面の変更(青色のボタンの機能のみの画面に変更)

■画面の変更にともなうプログラムの変更(変更箇所は青色)

■検索・一覧・登録 画面例

■検索・一覧 画面例 ■二画面合成 画面例

(1)

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

2.1 MCFrameについて  MCFrameはオブジェクト指向言語の基本型と言われる

Smalltalkの開発環境であるVisualWorksをベースに、

b-en-g社が開発・販売している純国産の生産・販売・物流フ

レームワークである。豊富な機能と柔軟性や拡張性を併わせ

持つことで、高品質・低コスト・短納期によるSCMシステム

導入が可能である。業務機能は再利用できる「部品」とい

う形で実装しているため、MCFrame 共通フレームワーク

をベースに、各製品/業種別ソリューションに部品を追加して

いく方法で、効率的にカスタマイズすることが可能となる。

 1996年の発売後、医薬品や自動車などそれぞれの業界に最

適化した商品をラインナップに加え、また外国語対応(英語・

中国語)も行い、今後も着実にそのシェアを拡大していくと

予想される。

2.2 FrameManagerについて  MCFrame専用のアプリケーション開発環境として、

b-en-g社がVisualWorksをベースに改良を加えて作り上げた

のがFrameManagerである。設計~開発~テストまで広範囲

にサポートしており、業務アプリケーションの開発期間の短

縮や品質の安定化などを実現する強力な機能を備えている。

 元々はb-en-g社がVisualWorksを用いて独自に開発した各

種ツールであったが、VisualWorks上にアドオンされること

によって、FrameManagerという1つのアプリケーション開

発環境を形成している。

 b - en - g社がMCF r ameの開発環境のベースとして

VisualWorksを選択したのは、次のような理由からである。

 ● ピュアなオブジェクト指向の開発言語Smalltalkを採用し

  ていること

 ● 開発者にとっての使い勝手が良いこと

 MCFrame開発当初のテクノロジーでは、Javaをはじめと

する他のオブジェクト指向言語を利用しても実行時に満足で

きるパフォーマンスを得られなかったはずである。そのため、

ソースのオープン化なども含めてMCFrame開発言語として

SmalltalkをベースにしたVisualWorks開発環境が選択され

たと推測される。細部に渡りカスタマイズ可能なこと、独自

機能を備えた開発環境が実現できることがSmalltalk採用の決

め手となったのである。

 図1は、FrameManagerとMCFrame共通フレームワーク

の関係図である。FrameManagerをベースにMCFrame共通

フレームワークを確立し、その上に生産管理、販売管理、原価

管理それぞれのサブシステムが成り立っている。共通フレーム

ワークには汎用的なメソッドがあらかじめ用意されているため、

個別に業務アプリケーションを開発する場合でも、継承やオー

バーライドで既存のメソッドに多少の改修を行うだけで仕様を

実装できるケースが多い。これはオープンな環境のため上位ク

ラスを含めてすべてのソースが参照可能なことの恩恵である。

2.3 FrameManagerを利用した   自動生成によるアプリケーションの作成  MCFrameはすべてがSmalltalkをベースに作られている

パッケージソフトである。FrameManagerには自動生成機能

が標準装備されている。この自動生成機能を利用することによ

り、Smalltalkの知識が少ない人でも、画面・帳票の新規作成

やカスタマイズによる修正が可能である。

 図2は、FrameManagerを利用した画面の作成例である。

既存の別々の機能を持った二つの画面を合成して一画面を作成

することが、FrameManagerを利用することによりプログラ

ミングレスで可能である。FrameManagerはプログラミング

未経験者やエンドユーザ自身による画面のメンテナンスや機能

拡張を可能にしている。

 また、画面、コンボボックス、ラジオボタンやメッセージも

FrameManagerによって一括管理できる。

2.4 FrameManagerを利用した資源管理  図3はメッセージ管理画面の例である。専用画面が用意され

ておりメッセージの種別ごとにメッセージ番号を符番し、登録・

管理できる。開発に参加しているプロジェクトメンバーは、

MCFrame開発環境実行時にFrameManagerを起動してデー

タベース内に保持した情報と同期をとり、全員が同一環境で開

発作業を行うことができる。

2.5 自動生成を使わないアプリケーションの作成  FrameManagerを利用してアプリケーションを自動生成する

ことができる一方で、画面インターフェースの大幅な改修など

の開発作業は、これまでのアプリケーション開発同様にソース

プログラムを直接編集して行われる。

 図4は、インターフェースの改修にともなうボタン押下時のロ

ジックの変更をオーバーライドしている例である。カスタマイズ

機能の追加にともない画面が変更されても、変更元のクラスを継

承した新しいクラスを作成しており、その中にはオーバーライド

されたインスタンスメソッドが1つあるだけである。今後同じ画

面に機能が追加され、チェックが増えた場合でも、作成された新

しいクラス内にメソッドを追加するだけで対応が可能である。

*VisualWorksはCincom Systems.Inc.(日本ではシンコム・システムズ・ジャパン(株))が販売する製品です。 *SmalltalkはXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語です。

Page 2: MCFrameアプリケーション開発における 特 オブジェクト指 …...という考え方が、含まれている。 我々は道具であるMCFrame開発というオブジェクト指向

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

16 17

20 21

18 19

特集1

特集1

特集1

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L特集1

MCFrameアプリケーション開発における オブジェクト指向の有効性

Effect of Object-Oriented Technology in Application Development of MCFrame

大田 和弘     川西 弘純   OOTA Kazuhiro   KAWANISHI Hirozumi

概要  お客さまにとってのコンピュータシステムは業務を遂行するための道具であり、違和感なく利用できることが条件

である。開発言語や過去の実装例(パターンを含む)は、開発技術者にとっての道具であるとともに、アイデアの源

である。開発技術者は目標を効率的に達成するために道具を改善し、お客さまにとってより良い使い方を追求する

ことになる。

 良い道具を使って誰でも容易に開発できる環境を提供することは、ソフトウェア開発の生産性向上のために有

効な手段である。

 業務アプリケーションのプログラムは、ほとんどが同じようなパターンであるため、簡単なパラメータ設定やわず

かな違いの修正を行うだけで、開発できる部分を含んでいる。しかし、多くの事例を見ていると、生産性と品質の

向上のためには、単純化のアプローチだけでなく、技術者の行動範囲を広げていくアプローチも必要であることが

明らかである。

 本稿ではMCFrame(VisualWorks、Smalltalk)によるプログラム開発を事例として、オブジェクト指向を有効に

活用することで、生産性と品質の改善につながる可能性を示す。

1. はじめに

2. MCFrameによるプログラミングの概要

3. 部品化の有効性

4. アプリケーションプログラム   開発における、改善の方向性

川西 弘純 KAWANISHI Hirozumi

MCFrameビジネス

 プロジェクト管理者と開発技術者は、技術としての開発手

法や開発言語を扱う上で、該当技術のアーキテクチャを理解

し共有していることが条件である。それは、お客さまに対し

て開発手法や開発言語を説明する場合も同様である。

 MCFrame(VisualWorks、Smalltalk)でのオブジェク

ト指向の目指すところは、全てのクラスの実装が公開されて

いることに象徴されている通り、アイデアの宝庫である既存

のクラスを再利用してソフトウェアを作り上げていくことに

ある。例えば、開発技術者が問題解決のために、実世界(サー

ビスする機能)により近い形式で対象のモデル化を行うケース

である。

 そこには、開発言語を単にプログラミングの道具として利用

するのではなく、設計を含めた問題解決の道具として利用する

という考え方が、含まれている。

 我々は道具であるMCFrame開発というオブジェクト指向

言語を利用したプログラミングにおいて、再利用や部品化を

効率よく進めることにより、設計を含めた生産性の向上がいか

に図れるかを理解し、技術力を日々向上させている。

(3)

大田 和弘 OOTA Kazuhiro

図1 FrameManagerとMCFrame共通フレームワークの関係

図 3 FrameManagerを利用したメッセージ管理例

 アプリケーションプログラム開発における、現状分析の結果、

有効と思われる改善点を見出した。

4.1 データモデルの明確化とクラスの分離の判断  業務アプリケーションを、画面を中心に設計しているだけで

は、データモデルの明確化の観点が、不十分になる傾向がある。

これは他のオブジェクト指向言語を用いた開発でも見られる傾

向であり、フレームワークや自動生成によるアプリケーション

開発を、画面中心で進めている場合に顕著である。

 ひとつの画面が、複数の目的の異なるデータを扱うことに

なった場合、対象データごとにクラスを分離することが、問

題を扱う範囲の局所化や再利用性を高めることになる。この考

えに基づきMCFrameの標準化を実施し、効果を上げている。

4.2 SQL文の局所化と隠蔽  リレーショナルデータベースのデータベース操作言語として、

SQLを利用する業務アプリケーションが主流となっている現

状にあって、SQL文をオブジェクト指向の枠組みの中で、ど

のようにとらえるべきかがポイントとなる。

 オブジェクト指向同様に、SQL文も実装のための言語にと

どまらず、データを扱うための仕様を示す表現として定着して

いる。多くの開発技術者は画面のイベントに近い箇所にSQL

文を実装する傾向にある。ところがSQL文はあくまでも操作

言語であって、データモデルを表現する手法ではない。そのた

め、データを扱う目的レベルとは分離するようにしている。

 プログラムのテスト時に、画面に対応したデータベースの更

新内容を確認することは必須であるので、分離を極端に進める

ことは現実的ではないという考えもあるが、画面機能とは直接

関係のないマスタテーブル参照等は、業務的な意味のある共通

部品とすることで、個々の業務プログラムからは、SQL文を

なくすようにしている。

4.3 継承  作成済のアプリ-ケーションクラスを継承し、一部の機能を

変更した新たなクラスを作成する場合には、フレームワークに

従って実装された小さな機能ごとのメソッドをオーバーライド

することで、新たなクラスにおける実装量を最小限にとどめる

ことができる。

 一方で、継承元のアプリケーションクラスの機能が変更にな

ることを想定すると、一部の機能をオーバーライドして上位ク

ラスから影響を受けるよりは、丸ごとコピーを行い、継承元の

影響を受けないようにする考え方もある。

 問題の本質は、アプリケーションクラスの中に、異なる目的

の実装が混在していることにある。解消するために、目的ごと

にクラスを分離し、再構成している。当作業の必要性を認識せ

ずに、継承による生産性向上だけを求めて、結果として保守性

を損なうことのないようにしている。

4.4 共通クラスやフレームワークの修正の決断  MCFrameのアプリケーションクラスはフレームワークを継

承しているため、アプリケーション全体にかかわる変更は、フ

レームワークまたは関連する共通クラスの修正で対応可能な

ケースが多い。ユーザインターフェースである画面の見た目に

ついても同様である。個々のアプリケーションクラスを修正

する必要がないという強みを積極的に利用することで、様々な

効果が期待できる。

 現在のところ、まだ一部のプロジェクトのみでの実施だが、

効果が高いことは実証されている。システム導入後の保守

フェーズへの影響など解決すべき課題もあるが、オブジェクト

指向言語の有効性を活かすためにも共通クラスやフレームワー

クを理解し、的確に修正の決断ができるようにしている。

4.5 VisualWorksクラスの利用  MCFrameで利用されている以外にも、VisualWorksには、

他言語に勝る様々な機能の実装が含まれている。また、それら

を利用することによりOSの機能や外部ライブラリの呼出も可

能となっている。

 しかし、これまで、VisualWorksが実装している利用価値

の高いクラスの存在が理解されていなかっため、MCFrameを

使わない実装方法の選択やアドオンによる時間をかけた開発が

選択されたケースがあったので、実装されている機能を生かす

ように改めた。

 画面アプリケーションとは直接関係のない機能においても、

VisualWorksのクラスを再利用して、他言語より簡単に実装

できた例が確認できている。

4.6 技術者の育成  MCFrameの開発言語となっているSmalltalkを理解してい

る技術者の絶対数は、JavaやVisualBasicといったメジャー

な言語と比較すると IT業界全体を見ても極少数である。

 年々増え続けているMCFrameのニーズに対して、インテッ

クでは独自の開発体制作りを進めている。新入社員~3年目ま

でをターゲットとした「プログラム開発技術者育成カリキュラ

ム」のほかに、中堅社員をターゲットとした「ジュニアSE、

SE育成カリキュラム」を用意している。b-en-g社が実施して

いる技術者認定試験も積極的に取得し、技術力を有することを

形にしている。惜しまぬ日々の努力の結果として、多くのお客

さまにより良いサービスを提供することを目指している。

5. おわりに  オブジェクト指向と言語に関しては、開発現場も含めて、理

解を深める努力が必要であることは明白である。他の開発手法

と比べて、より本質的な理解が必要であることが、困難さをと

もなう一因と思われる。しかし、本質が理解できれば、様々な

面で変化が加速されることが予測される。

 本稿で述べた改善の方向性は、開発技術者の発想の転換だけ

ではなく、プロジェクトの関係者がオープンなコミュニケー

ションを実施することにより達成できる。

 プログラム開発の現場には、まだまだ改善すべき問題点が山

積している。我々インテックはこれからも継続的にその問題点

を明らかにし、改善を実施し、お客さまへより良い道具を提供

し続けていく所存である。

参考文献

[1]ケント・ベック:ケントベックのSmalltalkベストプラクティス・パ

  ターン シンプル・デザインへの宝石集,株式会社ピアソン・

  エデュケーション,(2003.4.10)

[2]青木淳:Smalltalkイディオム,ソフト・リサーチ・センター,

  (1997.2.25)

図 4 インターフェースの改修にともなうプログラム変更例

図2 FrameManagerを利用した二画面合成例

 フレームワークとしての柔軟性を最大限に利用し、多くの事

例を共有化することで、MCFrameは発展を続けている。多く

のお客さまに有効と思われる機能を、フレームワークのバリエー

ションや共通機能とすることで、再利用を進めている。

 以下に、代表的な事例を示す。

3.1 化粧品業界テンプレート  他の開発言語と同様に、MCFrameにおいても複数のお客さ

まへのシステム導入実績により、同様の(あるいは共通した)

機能カスタマイズや新規機能の追加が見えてくる。その共通部

分をインテック独自のテンプレートとして部品化し社内で共有

することにより、プログラム開発期間の短縮や、品質の安定化

を図ることが可能となる。

 例えば、化粧品業界テンプレートである。これまでインテッ

クが担当した複数の化粧品の開発・販売メーカーの導入事例

より、明らかに共通化できそうな機能を集めてテンプレート

を作成し部品化を行った。以後、化粧品メーカーへのシステ

ム化提案時には、MCFrame+化粧品業界テンプレートを基本

モデルとして提案・要件定義を進めてきてる。結果として、

テンプレートを作成・部品化した時の開発コスト以上の恩恵

を得ている。

3.2 帳票印刷機能の拡張  MCFrame標準の帳票印刷機能には、通常使うプリンタから

出力することしかできない。そのため、ラベルプリンタ利用

時には都度通常使うプリンタを切り替えるか、ラベルプリン

タ印刷用に端末を用意する必要があった。そこで、帳票と出

力プリンタを定義する新しいテーブルを作成し、そのテーブ

ルを帳票出力時に参照することにより出力先のプリンタを使

い分ける機能も部品化した。これは業種を問わず有効な部品

である。

 MCFrameの標準機能では不足している機能を補い、短納期

で高品質のシステム提案ができるように、今後も部品化を進

めて行く計画である。

販売 管理

生産 管理

原価 管理

MCFrame共通フレームワーク

FrameManager

■画面の変更(青色のボタンの機能のみの画面に変更)

■画面の変更にともなうプログラムの変更(変更箇所は青色)

■検索・一覧・登録 画面例

■検索・一覧 画面例 ■二画面合成 画面例

(1)

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

2.1 MCFrameについて  MCFrameはオブジェクト指向言語の基本型と言われる

Smalltalkの開発環境であるVisualWorksをベースに、

b-en-g社が開発・販売している純国産の生産・販売・物流フ

レームワークである。豊富な機能と柔軟性や拡張性を併わせ

持つことで、高品質・低コスト・短納期によるSCMシステム

導入が可能である。業務機能は再利用できる「部品」とい

う形で実装しているため、MCFrame 共通フレームワーク

をベースに、各製品/業種別ソリューションに部品を追加して

いく方法で、効率的にカスタマイズすることが可能となる。

 1996年の発売後、医薬品や自動車などそれぞれの業界に最

適化した商品をラインナップに加え、また外国語対応(英語・

中国語)も行い、今後も着実にそのシェアを拡大していくと

予想される。

2.2 FrameManagerについて  MCFrame専用のアプリケーション開発環境として、

b-en-g社がVisualWorksをベースに改良を加えて作り上げた

のがFrameManagerである。設計~開発~テストまで広範囲

にサポートしており、業務アプリケーションの開発期間の短

縮や品質の安定化などを実現する強力な機能を備えている。

 元々はb-en-g社がVisualWorksを用いて独自に開発した各

種ツールであったが、VisualWorks上にアドオンされること

によって、FrameManagerという1つのアプリケーション開

発環境を形成している。

 b - e n - g社がMCF r ameの開発環境のベースとして

VisualWorksを選択したのは、次のような理由からである。

 ● ピュアなオブジェクト指向の開発言語Smalltalkを採用し

  ていること

 ● 開発者にとっての使い勝手が良いこと

 MCFrame開発当初のテクノロジーでは、Javaをはじめと

する他のオブジェクト指向言語を利用しても実行時に満足で

きるパフォーマンスを得られなかったはずである。そのため、

ソースのオープン化なども含めてMCFrame開発言語として

SmalltalkをベースにしたVisualWorks開発環境が選択され

たと推測される。細部に渡りカスタマイズ可能なこと、独自

機能を備えた開発環境が実現できることがSmalltalk採用の決

め手となったのである。

 図1は、FrameManagerとMCFrame共通フレームワーク

の関係図である。FrameManagerをベースにMCFrame共通

フレームワークを確立し、その上に生産管理、販売管理、原価

管理それぞれのサブシステムが成り立っている。共通フレーム

ワークには汎用的なメソッドがあらかじめ用意されているため、

個別に業務アプリケーションを開発する場合でも、継承やオー

バーライドで既存のメソッドに多少の改修を行うだけで仕様を

実装できるケースが多い。これはオープンな環境のため上位ク

ラスを含めてすべてのソースが参照可能なことの恩恵である。

2.3 FrameManagerを利用した   自動生成によるアプリケーションの作成  MCFrameはすべてがSmalltalkをベースに作られている

パッケージソフトである。FrameManagerには自動生成機能

が標準装備されている。この自動生成機能を利用することによ

り、Smalltalkの知識が少ない人でも、画面・帳票の新規作成

やカスタマイズによる修正が可能である。

 図2は、FrameManagerを利用した画面の作成例である。

既存の別々の機能を持った二つの画面を合成して一画面を作成

することが、FrameManagerを利用することによりプログラ

ミングレスで可能である。FrameManagerはプログラミング

未経験者やエンドユーザ自身による画面のメンテナンスや機能

拡張を可能にしている。

 また、画面、コンボボックス、ラジオボタンやメッセージも

FrameManagerによって一括管理できる。

2.4 FrameManagerを利用した資源管理  図3はメッセージ管理画面の例である。専用画面が用意され

ておりメッセージの種別ごとにメッセージ番号を符番し、登録・

管理できる。開発に参加しているプロジェクトメンバーは、

MCFrame開発環境実行時にFrameManagerを起動してデー

タベース内に保持した情報と同期をとり、全員が同一環境で開

発作業を行うことができる。

2.5 自動生成を使わないアプリケーションの作成  FrameManagerを利用してアプリケーションを自動生成する

ことができる一方で、画面インターフェースの大幅な改修など

の開発作業は、これまでのアプリケーション開発同様にソース

プログラムを直接編集して行われる。

 図4は、インターフェースの改修にともなうボタン押下時のロ

ジックの変更をオーバーライドしている例である。カスタマイズ

機能の追加にともない画面が変更されても、変更元のクラスを継

承した新しいクラスを作成しており、その中にはオーバーライド

されたインスタンスメソッドが1つあるだけである。今後同じ画

面に機能が追加され、チェックが増えた場合でも、作成された新

しいクラス内にメソッドを追加するだけで対応が可能である。

*VisualWorksはCincom Systems.Inc.(日本ではシンコム・システムズ・ジャパン(株))が販売する製品です。 *SmalltalkはXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語です。

Page 3: MCFrameアプリケーション開発における 特 オブジェクト指 …...という考え方が、含まれている。 我々は道具であるMCFrame開発というオブジェクト指向

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

16 17

20 21

18 19

特集1

特集1

特集1

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L特集1

MCFrameアプリケーション開発における オブジェクト指向の有効性

Effect of Object-Oriented Technology in Application Development of MCFrame

大田 和弘     川西 弘純   OOTA Kazuhiro   KAWANISHI Hirozumi

概要  お客さまにとってのコンピュータシステムは業務を遂行するための道具であり、違和感なく利用できることが条件

である。開発言語や過去の実装例(パターンを含む)は、開発技術者にとっての道具であるとともに、アイデアの源

である。開発技術者は目標を効率的に達成するために道具を改善し、お客さまにとってより良い使い方を追求する

ことになる。

 良い道具を使って誰でも容易に開発できる環境を提供することは、ソフトウェア開発の生産性向上のために有

効な手段である。

 業務アプリケーションのプログラムは、ほとんどが同じようなパターンであるため、簡単なパラメータ設定やわず

かな違いの修正を行うだけで、開発できる部分を含んでいる。しかし、多くの事例を見ていると、生産性と品質の

向上のためには、単純化のアプローチだけでなく、技術者の行動範囲を広げていくアプローチも必要であることが

明らかである。

 本稿ではMCFrame(VisualWorks、Smalltalk)によるプログラム開発を事例として、オブジェクト指向を有効に

活用することで、生産性と品質の改善につながる可能性を示す。

1. はじめに

2. MCFrameによるプログラミングの概要

3. 部品化の有効性

4. アプリケーションプログラム   開発における、改善の方向性

川西 弘純 KAWANISHI Hirozumi

MCFrameビジネス

 プロジェクト管理者と開発技術者は、技術としての開発手

法や開発言語を扱う上で、該当技術のアーキテクチャを理解

し共有していることが条件である。それは、お客さまに対し

て開発手法や開発言語を説明する場合も同様である。

 MCFrame(VisualWorks、Smalltalk)でのオブジェク

ト指向の目指すところは、全てのクラスの実装が公開されて

いることに象徴されている通り、アイデアの宝庫である既存

のクラスを再利用してソフトウェアを作り上げていくことに

ある。例えば、開発技術者が問題解決のために、実世界(サー

ビスする機能)により近い形式で対象のモデル化を行うケース

である。

 そこには、開発言語を単にプログラミングの道具として利用

するのではなく、設計を含めた問題解決の道具として利用する

という考え方が、含まれている。

 我々は道具であるMCFrame開発というオブジェクト指向

言語を利用したプログラミングにおいて、再利用や部品化を

効率よく進めることにより、設計を含めた生産性の向上がいか

に図れるかを理解し、技術力を日々向上させている。

(3)

大田 和弘 OOTA Kazuhiro

図1 FrameManagerとMCFrame共通フレームワークの関係

図 3 FrameManagerを利用したメッセージ管理例

 アプリケーションプログラム開発における、現状分析の結果、

有効と思われる改善点を見出した。

4.1 データモデルの明確化とクラスの分離の判断  業務アプリケーションを、画面を中心に設計しているだけで

は、データモデルの明確化の観点が、不十分になる傾向がある。

これは他のオブジェクト指向言語を用いた開発でも見られる傾

向であり、フレームワークや自動生成によるアプリケーション

開発を、画面中心で進めている場合に顕著である。

 ひとつの画面が、複数の目的の異なるデータを扱うことに

なった場合、対象データごとにクラスを分離することが、問

題を扱う範囲の局所化や再利用性を高めることになる。この考

えに基づきMCFrameの標準化を実施し、効果を上げている。

4.2 SQL文の局所化と隠蔽  リレーショナルデータベースのデータベース操作言語として、

SQLを利用する業務アプリケーションが主流となっている現

状にあって、SQL文をオブジェクト指向の枠組みの中で、ど

のようにとらえるべきかがポイントとなる。

 オブジェクト指向同様に、SQL文も実装のための言語にと

どまらず、データを扱うための仕様を示す表現として定着して

いる。多くの開発技術者は画面のイベントに近い箇所にSQL

文を実装する傾向にある。ところがSQL文はあくまでも操作

言語であって、データモデルを表現する手法ではない。そのた

め、データを扱う目的レベルとは分離するようにしている。

 プログラムのテスト時に、画面に対応したデータベースの更

新内容を確認することは必須であるので、分離を極端に進める

ことは現実的ではないという考えもあるが、画面機能とは直接

関係のないマスタテーブル参照等は、業務的な意味のある共通

部品とすることで、個々の業務プログラムからは、SQL文を

なくすようにしている。

4.3 継承  作成済のアプリ-ケーションクラスを継承し、一部の機能を

変更した新たなクラスを作成する場合には、フレームワークに

従って実装された小さな機能ごとのメソッドをオーバーライド

することで、新たなクラスにおける実装量を最小限にとどめる

ことができる。

 一方で、継承元のアプリケーションクラスの機能が変更にな

ることを想定すると、一部の機能をオーバーライドして上位ク

ラスから影響を受けるよりは、丸ごとコピーを行い、継承元の

影響を受けないようにする考え方もある。

 問題の本質は、アプリケーションクラスの中に、異なる目的

の実装が混在していることにある。解消するために、目的ごと

にクラスを分離し、再構成している。当作業の必要性を認識せ

ずに、継承による生産性向上だけを求めて、結果として保守性

を損なうことのないようにしている。

4.4 共通クラスやフレームワークの修正の決断  MCFrameのアプリケーションクラスはフレームワークを継

承しているため、アプリケーション全体にかかわる変更は、フ

レームワークまたは関連する共通クラスの修正で対応可能な

ケースが多い。ユーザインターフェースである画面の見た目に

ついても同様である。個々のアプリケーションクラスを修正

する必要がないという強みを積極的に利用することで、様々な

効果が期待できる。

 現在のところ、まだ一部のプロジェクトのみでの実施だが、

効果が高いことは実証されている。システム導入後の保守

フェーズへの影響など解決すべき課題もあるが、オブジェクト

指向言語の有効性を活かすためにも共通クラスやフレームワー

クを理解し、的確に修正の決断ができるようにしている。

4.5 VisualWorksクラスの利用  MCFrameで利用されている以外にも、VisualWorksには、

他言語に勝る様々な機能の実装が含まれている。また、それら

を利用することによりOSの機能や外部ライブラリの呼出も可

能となっている。

 しかし、これまで、VisualWorksが実装している利用価値

の高いクラスの存在が理解されていなかっため、MCFrameを

使わない実装方法の選択やアドオンによる時間をかけた開発が

選択されたケースがあったので、実装されている機能を生かす

ように改めた。

 画面アプリケーションとは直接関係のない機能においても、

VisualWorksのクラスを再利用して、他言語より簡単に実装

できた例が確認できている。

4.6 技術者の育成  MCFrameの開発言語となっているSmalltalkを理解してい

る技術者の絶対数は、JavaやVisualBasicといったメジャー

な言語と比較すると IT業界全体を見ても極少数である。

 年々増え続けているMCFrameのニーズに対して、インテッ

クでは独自の開発体制作りを進めている。新入社員~3年目ま

でをターゲットとした「プログラム開発技術者育成カリキュラ

ム」のほかに、中堅社員をターゲットとした「ジュニアSE、

SE育成カリキュラム」を用意している。b-en-g社が実施して

いる技術者認定試験も積極的に取得し、技術力を有することを

形にしている。惜しまぬ日々の努力の結果として、多くのお客

さまにより良いサービスを提供することを目指している。

5. おわりに  オブジェクト指向と言語に関しては、開発現場も含めて、理

解を深める努力が必要であることは明白である。他の開発手法

と比べて、より本質的な理解が必要であることが、困難さをと

もなう一因と思われる。しかし、本質が理解できれば、様々な

面で変化が加速されることが予測される。

 本稿で述べた改善の方向性は、開発技術者の発想の転換だけ

ではなく、プロジェクトの関係者がオープンなコミュニケー

ションを実施することにより達成できる。

 プログラム開発の現場には、まだまだ改善すべき問題点が山

積している。我々インテックはこれからも継続的にその問題点

を明らかにし、改善を実施し、お客さまへより良い道具を提供

し続けていく所存である。

参考文献

[1]ケント・ベック:ケントベックのSmalltalkベストプラクティス・パ

  ターン シンプル・デザインへの宝石集,株式会社ピアソン・

  エデュケーション,(2003.4.10)

[2]青木淳:Smalltalkイディオム,ソフト・リサーチ・センター,

  (1997.2.25)

図 4 インターフェースの改修にともなうプログラム変更例

図2 FrameManagerを利用した二画面合成例

 フレームワークとしての柔軟性を最大限に利用し、多くの事

例を共有化することで、MCFrameは発展を続けている。多く

のお客さまに有効と思われる機能を、フレームワークのバリエー

ションや共通機能とすることで、再利用を進めている。

 以下に、代表的な事例を示す。

3.1 化粧品業界テンプレート  他の開発言語と同様に、MCFrameにおいても複数のお客さ

まへのシステム導入実績により、同様の(あるいは共通した)

機能カスタマイズや新規機能の追加が見えてくる。その共通部

分をインテック独自のテンプレートとして部品化し社内で共有

することにより、プログラム開発期間の短縮や、品質の安定化

を図ることが可能となる。

 例えば、化粧品業界テンプレートである。これまでインテッ

クが担当した複数の化粧品の開発・販売メーカーの導入事例

より、明らかに共通化できそうな機能を集めてテンプレート

を作成し部品化を行った。以後、化粧品メーカーへのシステ

ム化提案時には、MCFrame+化粧品業界テンプレートを基本

モデルとして提案・要件定義を進めてきてる。結果として、

テンプレートを作成・部品化した時の開発コスト以上の恩恵

を得ている。

3.2 帳票印刷機能の拡張  MCFrame標準の帳票印刷機能には、通常使うプリンタから

出力することしかできない。そのため、ラベルプリンタ利用

時には都度通常使うプリンタを切り替えるか、ラベルプリン

タ印刷用に端末を用意する必要があった。そこで、帳票と出

力プリンタを定義する新しいテーブルを作成し、そのテーブ

ルを帳票出力時に参照することにより出力先のプリンタを使

い分ける機能も部品化した。これは業種を問わず有効な部品

である。

 MCFrameの標準機能では不足している機能を補い、短納期

で高品質のシステム提案ができるように、今後も部品化を進

めて行く計画である。

販売 管理

生産 管理

原価 管理

MCFrame共通フレームワーク

FrameManager

■画面の変更(青色のボタンの機能のみの画面に変更)

■画面の変更にともなうプログラムの変更(変更箇所は青色)

■検索・一覧・登録 画面例

■検索・一覧 画面例 ■二画面合成 画面例

(1)

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

2.1 MCFrameについて  MCFrameはオブジェクト指向言語の基本型と言われる

Smalltalkの開発環境であるVisualWorksをベースに、

b-en-g社が開発・販売している純国産の生産・販売・物流フ

レームワークである。豊富な機能と柔軟性や拡張性を併わせ

持つことで、高品質・低コスト・短納期によるSCMシステム

導入が可能である。業務機能は再利用できる「部品」とい

う形で実装しているため、MCFrame 共通フレームワーク

をベースに、各製品/業種別ソリューションに部品を追加して

いく方法で、効率的にカスタマイズすることが可能となる。

 1996年の発売後、医薬品や自動車などそれぞれの業界に最

適化した商品をラインナップに加え、また外国語対応(英語・

中国語)も行い、今後も着実にそのシェアを拡大していくと

予想される。

2.2 FrameManagerについて  MCFrame専用のアプリケーション開発環境として、

b-en-g社がVisualWorksをベースに改良を加えて作り上げた

のがFrameManagerである。設計~開発~テストまで広範囲

にサポートしており、業務アプリケーションの開発期間の短

縮や品質の安定化などを実現する強力な機能を備えている。

 元々はb-en-g社がVisualWorksを用いて独自に開発した各

種ツールであったが、VisualWorks上にアドオンされること

によって、FrameManagerという1つのアプリケーション開

発環境を形成している。

 b - en - g社がMCF r ameの開発環境のベースとして

VisualWorksを選択したのは、次のような理由からである。

 ● ピュアなオブジェクト指向の開発言語Smalltalkを採用し

  ていること

 ● 開発者にとっての使い勝手が良いこと

 MCFrame開発当初のテクノロジーでは、Javaをはじめと

する他のオブジェクト指向言語を利用しても実行時に満足で

きるパフォーマンスを得られなかったはずである。そのため、

ソースのオープン化なども含めてMCFrame開発言語として

SmalltalkをベースにしたVisualWorks開発環境が選択され

たと推測される。細部に渡りカスタマイズ可能なこと、独自

機能を備えた開発環境が実現できることがSmalltalk採用の決

め手となったのである。

 図1は、FrameManagerとMCFrame共通フレームワーク

の関係図である。FrameManagerをベースにMCFrame共通

フレームワークを確立し、その上に生産管理、販売管理、原価

管理それぞれのサブシステムが成り立っている。共通フレーム

ワークには汎用的なメソッドがあらかじめ用意されているため、

個別に業務アプリケーションを開発する場合でも、継承やオー

バーライドで既存のメソッドに多少の改修を行うだけで仕様を

実装できるケースが多い。これはオープンな環境のため上位ク

ラスを含めてすべてのソースが参照可能なことの恩恵である。

2.3 FrameManagerを利用した   自動生成によるアプリケーションの作成  MCFrameはすべてがSmalltalkをベースに作られている

パッケージソフトである。FrameManagerには自動生成機能

が標準装備されている。この自動生成機能を利用することによ

り、Smalltalkの知識が少ない人でも、画面・帳票の新規作成

やカスタマイズによる修正が可能である。

 図2は、FrameManagerを利用した画面の作成例である。

既存の別々の機能を持った二つの画面を合成して一画面を作成

することが、FrameManagerを利用することによりプログラ

ミングレスで可能である。FrameManagerはプログラミング

未経験者やエンドユーザ自身による画面のメンテナンスや機能

拡張を可能にしている。

 また、画面、コンボボックス、ラジオボタンやメッセージも

FrameManagerによって一括管理できる。

2.4 FrameManagerを利用した資源管理  図3はメッセージ管理画面の例である。専用画面が用意され

ておりメッセージの種別ごとにメッセージ番号を符番し、登録・

管理できる。開発に参加しているプロジェクトメンバーは、

MCFrame開発環境実行時にFrameManagerを起動してデー

タベース内に保持した情報と同期をとり、全員が同一環境で開

発作業を行うことができる。

2.5 自動生成を使わないアプリケーションの作成  FrameManagerを利用してアプリケーションを自動生成する

ことができる一方で、画面インターフェースの大幅な改修など

の開発作業は、これまでのアプリケーション開発同様にソース

プログラムを直接編集して行われる。

 図4は、インターフェースの改修にともなうボタン押下時のロ

ジックの変更をオーバーライドしている例である。カスタマイズ

機能の追加にともない画面が変更されても、変更元のクラスを継

承した新しいクラスを作成しており、その中にはオーバーライド

されたインスタンスメソッドが1つあるだけである。今後同じ画

面に機能が追加され、チェックが増えた場合でも、作成された新

しいクラス内にメソッドを追加するだけで対応が可能である。

*VisualWorksはCincom Systems.Inc.(日本ではシンコム・システムズ・ジャパン(株))が販売する製品です。 *SmalltalkはXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語です。

Page 4: MCFrameアプリケーション開発における 特 オブジェクト指 …...という考え方が、含まれている。 我々は道具であるMCFrame開発というオブジェクト指向

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

16 17

20 21

18 19

特集1

特集1

特集1

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L特集1

MCFrameアプリケーション開発における オブジェクト指向の有効性

Effect of Object-Oriented Technology in Application Development of MCFrame

大田 和弘     川西 弘純   OOTA Kazuhiro   KAWANISHI Hirozumi

概要  お客さまにとってのコンピュータシステムは業務を遂行するための道具であり、違和感なく利用できることが条件

である。開発言語や過去の実装例(パターンを含む)は、開発技術者にとっての道具であるとともに、アイデアの源

である。開発技術者は目標を効率的に達成するために道具を改善し、お客さまにとってより良い使い方を追求する

ことになる。

 良い道具を使って誰でも容易に開発できる環境を提供することは、ソフトウェア開発の生産性向上のために有

効な手段である。

 業務アプリケーションのプログラムは、ほとんどが同じようなパターンであるため、簡単なパラメータ設定やわず

かな違いの修正を行うだけで、開発できる部分を含んでいる。しかし、多くの事例を見ていると、生産性と品質の

向上のためには、単純化のアプローチだけでなく、技術者の行動範囲を広げていくアプローチも必要であることが

明らかである。

 本稿ではMCFrame(VisualWorks、Smalltalk)によるプログラム開発を事例として、オブジェクト指向を有効に

活用することで、生産性と品質の改善につながる可能性を示す。

1. はじめに

2. MCFrameによるプログラミングの概要

3. 部品化の有効性

4. アプリケーションプログラム   開発における、改善の方向性

川西 弘純 KAWANISHI Hirozumi

MCFrameビジネス

 プロジェクト管理者と開発技術者は、技術としての開発手

法や開発言語を扱う上で、該当技術のアーキテクチャを理解

し共有していることが条件である。それは、お客さまに対し

て開発手法や開発言語を説明する場合も同様である。

 MCFrame(VisualWorks、Smalltalk)でのオブジェク

ト指向の目指すところは、全てのクラスの実装が公開されて

いることに象徴されている通り、アイデアの宝庫である既存

のクラスを再利用してソフトウェアを作り上げていくことに

ある。例えば、開発技術者が問題解決のために、実世界(サー

ビスする機能)により近い形式で対象のモデル化を行うケース

である。

 そこには、開発言語を単にプログラミングの道具として利用

するのではなく、設計を含めた問題解決の道具として利用する

という考え方が、含まれている。

 我々は道具であるMCFrame開発というオブジェクト指向

言語を利用したプログラミングにおいて、再利用や部品化を

効率よく進めることにより、設計を含めた生産性の向上がいか

に図れるかを理解し、技術力を日々向上させている。

(3)

大田 和弘 OOTA Kazuhiro

図1 FrameManagerとMCFrame共通フレームワークの関係

図 3 FrameManagerを利用したメッセージ管理例

 アプリケーションプログラム開発における、現状分析の結果、

有効と思われる改善点を見出した。

4.1 データモデルの明確化とクラスの分離の判断  業務アプリケーションを、画面を中心に設計しているだけで

は、データモデルの明確化の観点が、不十分になる傾向がある。

これは他のオブジェクト指向言語を用いた開発でも見られる傾

向であり、フレームワークや自動生成によるアプリケーション

開発を、画面中心で進めている場合に顕著である。

 ひとつの画面が、複数の目的の異なるデータを扱うことに

なった場合、対象データごとにクラスを分離することが、問

題を扱う範囲の局所化や再利用性を高めることになる。この考

えに基づきMCFrameの標準化を実施し、効果を上げている。

4.2 SQL文の局所化と隠蔽  リレーショナルデータベースのデータベース操作言語として、

SQLを利用する業務アプリケーションが主流となっている現

状にあって、SQL文をオブジェクト指向の枠組みの中で、ど

のようにとらえるべきかがポイントとなる。

 オブジェクト指向同様に、SQL文も実装のための言語にと

どまらず、データを扱うための仕様を示す表現として定着して

いる。多くの開発技術者は画面のイベントに近い箇所にSQL

文を実装する傾向にある。ところがSQL文はあくまでも操作

言語であって、データモデルを表現する手法ではない。そのた

め、データを扱う目的レベルとは分離するようにしている。

 プログラムのテスト時に、画面に対応したデータベースの更

新内容を確認することは必須であるので、分離を極端に進める

ことは現実的ではないという考えもあるが、画面機能とは直接

関係のないマスタテーブル参照等は、業務的な意味のある共通

部品とすることで、個々の業務プログラムからは、SQL文を

なくすようにしている。

4.3 継承  作成済のアプリ-ケーションクラスを継承し、一部の機能を

変更した新たなクラスを作成する場合には、フレームワークに

従って実装された小さな機能ごとのメソッドをオーバーライド

することで、新たなクラスにおける実装量を最小限にとどめる

ことができる。

 一方で、継承元のアプリケーションクラスの機能が変更にな

ることを想定すると、一部の機能をオーバーライドして上位ク

ラスから影響を受けるよりは、丸ごとコピーを行い、継承元の

影響を受けないようにする考え方もある。

 問題の本質は、アプリケーションクラスの中に、異なる目的

の実装が混在していることにある。解消するために、目的ごと

にクラスを分離し、再構成している。当作業の必要性を認識せ

ずに、継承による生産性向上だけを求めて、結果として保守性

を損なうことのないようにしている。

4.4 共通クラスやフレームワークの修正の決断  MCFrameのアプリケーションクラスはフレームワークを継

承しているため、アプリケーション全体にかかわる変更は、フ

レームワークまたは関連する共通クラスの修正で対応可能な

ケースが多い。ユーザインターフェースである画面の見た目に

ついても同様である。個々のアプリケーションクラスを修正

する必要がないという強みを積極的に利用することで、様々な

効果が期待できる。

 現在のところ、まだ一部のプロジェクトのみでの実施だが、

効果が高いことは実証されている。システム導入後の保守

フェーズへの影響など解決すべき課題もあるが、オブジェクト

指向言語の有効性を活かすためにも共通クラスやフレームワー

クを理解し、的確に修正の決断ができるようにしている。

4.5 VisualWorksクラスの利用  MCFrameで利用されている以外にも、VisualWorksには、

他言語に勝る様々な機能の実装が含まれている。また、それら

を利用することによりOSの機能や外部ライブラリの呼出も可

能となっている。

 しかし、これまで、VisualWorksが実装している利用価値

の高いクラスの存在が理解されていなかっため、MCFrameを

使わない実装方法の選択やアドオンによる時間をかけた開発が

選択されたケースがあったので、実装されている機能を生かす

ように改めた。

 画面アプリケーションとは直接関係のない機能においても、

VisualWorksのクラスを再利用して、他言語より簡単に実装

できた例が確認できている。

4.6 技術者の育成  MCFrameの開発言語となっているSmalltalkを理解してい

る技術者の絶対数は、JavaやVisualBasicといったメジャー

な言語と比較すると IT業界全体を見ても極少数である。

 年々増え続けているMCFrameのニーズに対して、インテッ

クでは独自の開発体制作りを進めている。新入社員~3年目ま

でをターゲットとした「プログラム開発技術者育成カリキュラ

ム」のほかに、中堅社員をターゲットとした「ジュニアSE、

SE育成カリキュラム」を用意している。b-en-g社が実施して

いる技術者認定試験も積極的に取得し、技術力を有することを

形にしている。惜しまぬ日々の努力の結果として、多くのお客

さまにより良いサービスを提供することを目指している。

5. おわりに  オブジェクト指向と言語に関しては、開発現場も含めて、理

解を深める努力が必要であることは明白である。他の開発手法

と比べて、より本質的な理解が必要であることが、困難さをと

もなう一因と思われる。しかし、本質が理解できれば、様々な

面で変化が加速されることが予測される。

 本稿で述べた改善の方向性は、開発技術者の発想の転換だけ

ではなく、プロジェクトの関係者がオープンなコミュニケー

ションを実施することにより達成できる。

 プログラム開発の現場には、まだまだ改善すべき問題点が山

積している。我々インテックはこれからも継続的にその問題点

を明らかにし、改善を実施し、お客さまへより良い道具を提供

し続けていく所存である。

参考文献

[1]ケント・ベック:ケントベックのSmalltalkベストプラクティス・パ

  ターン シンプル・デザインへの宝石集,株式会社ピアソン・

  エデュケーション,(2003.4.10)

[2]青木淳:Smalltalkイディオム,ソフト・リサーチ・センター,

  (1997.2.25)

図 4 インターフェースの改修にともなうプログラム変更例

図2 FrameManagerを利用した二画面合成例

 フレームワークとしての柔軟性を最大限に利用し、多くの事

例を共有化することで、MCFrameは発展を続けている。多く

のお客さまに有効と思われる機能を、フレームワークのバリエー

ションや共通機能とすることで、再利用を進めている。

 以下に、代表的な事例を示す。

3.1 化粧品業界テンプレート  他の開発言語と同様に、MCFrameにおいても複数のお客さ

まへのシステム導入実績により、同様の(あるいは共通した)

機能カスタマイズや新規機能の追加が見えてくる。その共通部

分をインテック独自のテンプレートとして部品化し社内で共有

することにより、プログラム開発期間の短縮や、品質の安定化

を図ることが可能となる。

 例えば、化粧品業界テンプレートである。これまでインテッ

クが担当した複数の化粧品の開発・販売メーカーの導入事例

より、明らかに共通化できそうな機能を集めてテンプレート

を作成し部品化を行った。以後、化粧品メーカーへのシステ

ム化提案時には、MCFrame+化粧品業界テンプレートを基本

モデルとして提案・要件定義を進めてきてる。結果として、

テンプレートを作成・部品化した時の開発コスト以上の恩恵

を得ている。

3.2 帳票印刷機能の拡張  MCFrame標準の帳票印刷機能には、通常使うプリンタから

出力することしかできない。そのため、ラベルプリンタ利用

時には都度通常使うプリンタを切り替えるか、ラベルプリン

タ印刷用に端末を用意する必要があった。そこで、帳票と出

力プリンタを定義する新しいテーブルを作成し、そのテーブ

ルを帳票出力時に参照することにより出力先のプリンタを使

い分ける機能も部品化した。これは業種を問わず有効な部品

である。

 MCFrameの標準機能では不足している機能を補い、短納期

で高品質のシステム提案ができるように、今後も部品化を進

めて行く計画である。

販売 管理

生産 管理

原価 管理

MCFrame共通フレームワーク

FrameManager

■画面の変更(青色のボタンの機能のみの画面に変更)

■画面の変更にともなうプログラムの変更(変更箇所は青色)

■検索・一覧・登録 画面例

■検索・一覧 画面例 ■二画面合成 画面例

(1)

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

2.1 MCFrameについて  MCFrameはオブジェクト指向言語の基本型と言われる

Smalltalkの開発環境であるVisualWorksをベースに、

b-en-g社が開発・販売している純国産の生産・販売・物流フ

レームワークである。豊富な機能と柔軟性や拡張性を併わせ

持つことで、高品質・低コスト・短納期によるSCMシステム

導入が可能である。業務機能は再利用できる「部品」とい

う形で実装しているため、MCFrame 共通フレームワーク

をベースに、各製品/業種別ソリューションに部品を追加して

いく方法で、効率的にカスタマイズすることが可能となる。

 1996年の発売後、医薬品や自動車などそれぞれの業界に最

適化した商品をラインナップに加え、また外国語対応(英語・

中国語)も行い、今後も着実にそのシェアを拡大していくと

予想される。

2.2 FrameManagerについて  MCFrame専用のアプリケーション開発環境として、

b-en-g社がVisualWorksをベースに改良を加えて作り上げた

のがFrameManagerである。設計~開発~テストまで広範囲

にサポートしており、業務アプリケーションの開発期間の短

縮や品質の安定化などを実現する強力な機能を備えている。

 元々はb-en-g社がVisualWorksを用いて独自に開発した各

種ツールであったが、VisualWorks上にアドオンされること

によって、FrameManagerという1つのアプリケーション開

発環境を形成している。

 b - e n - g社がMCF r ameの開発環境のベースとして

VisualWorksを選択したのは、次のような理由からである。

 ● ピュアなオブジェクト指向の開発言語Smalltalkを採用し

  ていること

 ● 開発者にとっての使い勝手が良いこと

 MCFrame開発当初のテクノロジーでは、Javaをはじめと

する他のオブジェクト指向言語を利用しても実行時に満足で

きるパフォーマンスを得られなかったはずである。そのため、

ソースのオープン化なども含めてMCFrame開発言語として

SmalltalkをベースにしたVisualWorks開発環境が選択され

たと推測される。細部に渡りカスタマイズ可能なこと、独自

機能を備えた開発環境が実現できることがSmalltalk採用の決

め手となったのである。

 図1は、FrameManagerとMCFrame共通フレームワーク

の関係図である。FrameManagerをベースにMCFrame共通

フレームワークを確立し、その上に生産管理、販売管理、原価

管理それぞれのサブシステムが成り立っている。共通フレーム

ワークには汎用的なメソッドがあらかじめ用意されているため、

個別に業務アプリケーションを開発する場合でも、継承やオー

バーライドで既存のメソッドに多少の改修を行うだけで仕様を

実装できるケースが多い。これはオープンな環境のため上位ク

ラスを含めてすべてのソースが参照可能なことの恩恵である。

2.3 FrameManagerを利用した   自動生成によるアプリケーションの作成  MCFrameはすべてがSmalltalkをベースに作られている

パッケージソフトである。FrameManagerには自動生成機能

が標準装備されている。この自動生成機能を利用することによ

り、Smalltalkの知識が少ない人でも、画面・帳票の新規作成

やカスタマイズによる修正が可能である。

 図2は、FrameManagerを利用した画面の作成例である。

既存の別々の機能を持った二つの画面を合成して一画面を作成

することが、FrameManagerを利用することによりプログラ

ミングレスで可能である。FrameManagerはプログラミング

未経験者やエンドユーザ自身による画面のメンテナンスや機能

拡張を可能にしている。

 また、画面、コンボボックス、ラジオボタンやメッセージも

FrameManagerによって一括管理できる。

2.4 FrameManagerを利用した資源管理  図3はメッセージ管理画面の例である。専用画面が用意され

ておりメッセージの種別ごとにメッセージ番号を符番し、登録・

管理できる。開発に参加しているプロジェクトメンバーは、

MCFrame開発環境実行時にFrameManagerを起動してデー

タベース内に保持した情報と同期をとり、全員が同一環境で開

発作業を行うことができる。

2.5 自動生成を使わないアプリケーションの作成  FrameManagerを利用してアプリケーションを自動生成する

ことができる一方で、画面インターフェースの大幅な改修など

の開発作業は、これまでのアプリケーション開発同様にソース

プログラムを直接編集して行われる。

 図4は、インターフェースの改修にともなうボタン押下時のロ

ジックの変更をオーバーライドしている例である。カスタマイズ

機能の追加にともない画面が変更されても、変更元のクラスを継

承した新しいクラスを作成しており、その中にはオーバーライド

されたインスタンスメソッドが1つあるだけである。今後同じ画

面に機能が追加され、チェックが増えた場合でも、作成された新

しいクラス内にメソッドを追加するだけで対応が可能である。

*VisualWorksはCincom Systems.Inc.(日本ではシンコム・システムズ・ジャパン(株))が販売する製品です。 *SmalltalkはXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語です。

Page 5: MCFrameアプリケーション開発における 特 オブジェクト指 …...という考え方が、含まれている。 我々は道具であるMCFrame開発というオブジェクト指向

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

16 17

20 21

18 19

特集1

特集1

特集1

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L特集1

MCFrameアプリケーション開発における オブジェクト指向の有効性

Effect of Object-Oriented Technology in Application Development of MCFrame

大田 和弘     川西 弘純   OOTA Kazuhiro   KAWANISHI Hirozumi

概要  お客さまにとってのコンピュータシステムは業務を遂行するための道具であり、違和感なく利用できることが条件

である。開発言語や過去の実装例(パターンを含む)は、開発技術者にとっての道具であるとともに、アイデアの源

である。開発技術者は目標を効率的に達成するために道具を改善し、お客さまにとってより良い使い方を追求する

ことになる。

 良い道具を使って誰でも容易に開発できる環境を提供することは、ソフトウェア開発の生産性向上のために有

効な手段である。

 業務アプリケーションのプログラムは、ほとんどが同じようなパターンであるため、簡単なパラメータ設定やわず

かな違いの修正を行うだけで、開発できる部分を含んでいる。しかし、多くの事例を見ていると、生産性と品質の

向上のためには、単純化のアプローチだけでなく、技術者の行動範囲を広げていくアプローチも必要であることが

明らかである。

 本稿ではMCFrame(VisualWorks、Smalltalk)によるプログラム開発を事例として、オブジェクト指向を有効に

活用することで、生産性と品質の改善につながる可能性を示す。

1. はじめに

2. MCFrameによるプログラミングの概要

3. 部品化の有効性

4. アプリケーションプログラム   開発における、改善の方向性

川西 弘純 KAWANISHI Hirozumi

MCFrameビジネス

 プロジェクト管理者と開発技術者は、技術としての開発手

法や開発言語を扱う上で、該当技術のアーキテクチャを理解

し共有していることが条件である。それは、お客さまに対し

て開発手法や開発言語を説明する場合も同様である。

 MCFrame(VisualWorks、Smalltalk)でのオブジェク

ト指向の目指すところは、全てのクラスの実装が公開されて

いることに象徴されている通り、アイデアの宝庫である既存

のクラスを再利用してソフトウェアを作り上げていくことに

ある。例えば、開発技術者が問題解決のために、実世界(サー

ビスする機能)により近い形式で対象のモデル化を行うケース

である。

 そこには、開発言語を単にプログラミングの道具として利用

するのではなく、設計を含めた問題解決の道具として利用する

という考え方が、含まれている。

 我々は道具であるMCFrame開発というオブジェクト指向

言語を利用したプログラミングにおいて、再利用や部品化を

効率よく進めることにより、設計を含めた生産性の向上がいか

に図れるかを理解し、技術力を日々向上させている。

(3)

大田 和弘 OOTA Kazuhiro

図1 FrameManagerとMCFrame共通フレームワークの関係

図 3 FrameManagerを利用したメッセージ管理例

 アプリケーションプログラム開発における、現状分析の結果、

有効と思われる改善点を見出した。

4.1 データモデルの明確化とクラスの分離の判断  業務アプリケーションを、画面を中心に設計しているだけで

は、データモデルの明確化の観点が、不十分になる傾向がある。

これは他のオブジェクト指向言語を用いた開発でも見られる傾

向であり、フレームワークや自動生成によるアプリケーション

開発を、画面中心で進めている場合に顕著である。

 ひとつの画面が、複数の目的の異なるデータを扱うことに

なった場合、対象データごとにクラスを分離することが、問

題を扱う範囲の局所化や再利用性を高めることになる。この考

えに基づきMCFrameの標準化を実施し、効果を上げている。

4.2 SQL文の局所化と隠蔽  リレーショナルデータベースのデータベース操作言語として、

SQLを利用する業務アプリケーションが主流となっている現

状にあって、SQL文をオブジェクト指向の枠組みの中で、ど

のようにとらえるべきかがポイントとなる。

 オブジェクト指向同様に、SQL文も実装のための言語にと

どまらず、データを扱うための仕様を示す表現として定着して

いる。多くの開発技術者は画面のイベントに近い箇所にSQL

文を実装する傾向にある。ところがSQL文はあくまでも操作

言語であって、データモデルを表現する手法ではない。そのた

め、データを扱う目的レベルとは分離するようにしている。

 プログラムのテスト時に、画面に対応したデータベースの更

新内容を確認することは必須であるので、分離を極端に進める

ことは現実的ではないという考えもあるが、画面機能とは直接

関係のないマスタテーブル参照等は、業務的な意味のある共通

部品とすることで、個々の業務プログラムからは、SQL文を

なくすようにしている。

4.3 継承  作成済のアプリ-ケーションクラスを継承し、一部の機能を

変更した新たなクラスを作成する場合には、フレームワークに

従って実装された小さな機能ごとのメソッドをオーバーライド

することで、新たなクラスにおける実装量を最小限にとどめる

ことができる。

 一方で、継承元のアプリケーションクラスの機能が変更にな

ることを想定すると、一部の機能をオーバーライドして上位ク

ラスから影響を受けるよりは、丸ごとコピーを行い、継承元の

影響を受けないようにする考え方もある。

 問題の本質は、アプリケーションクラスの中に、異なる目的

の実装が混在していることにある。解消するために、目的ごと

にクラスを分離し、再構成している。当作業の必要性を認識せ

ずに、継承による生産性向上だけを求めて、結果として保守性

を損なうことのないようにしている。

4.4 共通クラスやフレームワークの修正の決断  MCFrameのアプリケーションクラスはフレームワークを継

承しているため、アプリケーション全体にかかわる変更は、フ

レームワークまたは関連する共通クラスの修正で対応可能な

ケースが多い。ユーザインターフェースである画面の見た目に

ついても同様である。個々のアプリケーションクラスを修正

する必要がないという強みを積極的に利用することで、様々な

効果が期待できる。

 現在のところ、まだ一部のプロジェクトのみでの実施だが、

効果が高いことは実証されている。システム導入後の保守

フェーズへの影響など解決すべき課題もあるが、オブジェクト

指向言語の有効性を活かすためにも共通クラスやフレームワー

クを理解し、的確に修正の決断ができるようにしている。

4.5 VisualWorksクラスの利用  MCFrameで利用されている以外にも、VisualWorksには、

他言語に勝る様々な機能の実装が含まれている。また、それら

を利用することによりOSの機能や外部ライブラリの呼出も可

能となっている。

 しかし、これまで、VisualWorksが実装している利用価値

の高いクラスの存在が理解されていなかっため、MCFrameを

使わない実装方法の選択やアドオンによる時間をかけた開発が

選択されたケースがあったので、実装されている機能を生かす

ように改めた。

 画面アプリケーションとは直接関係のない機能においても、

VisualWorksのクラスを再利用して、他言語より簡単に実装

できた例が確認できている。

4.6 技術者の育成  MCFrameの開発言語となっているSmalltalkを理解してい

る技術者の絶対数は、JavaやVisualBasicといったメジャー

な言語と比較すると IT業界全体を見ても極少数である。

 年々増え続けているMCFrameのニーズに対して、インテッ

クでは独自の開発体制作りを進めている。新入社員~3年目ま

でをターゲットとした「プログラム開発技術者育成カリキュラ

ム」のほかに、中堅社員をターゲットとした「ジュニアSE、

SE育成カリキュラム」を用意している。b-en-g社が実施して

いる技術者認定試験も積極的に取得し、技術力を有することを

形にしている。惜しまぬ日々の努力の結果として、多くのお客

さまにより良いサービスを提供することを目指している。

5. おわりに  オブジェクト指向と言語に関しては、開発現場も含めて、理

解を深める努力が必要であることは明白である。他の開発手法

と比べて、より本質的な理解が必要であることが、困難さをと

もなう一因と思われる。しかし、本質が理解できれば、様々な

面で変化が加速されることが予測される。

 本稿で述べた改善の方向性は、開発技術者の発想の転換だけ

ではなく、プロジェクトの関係者がオープンなコミュニケー

ションを実施することにより達成できる。

 プログラム開発の現場には、まだまだ改善すべき問題点が山

積している。我々インテックはこれからも継続的にその問題点

を明らかにし、改善を実施し、お客さまへより良い道具を提供

し続けていく所存である。

参考文献

[1]ケント・ベック:ケントベックのSmalltalkベストプラクティス・パ

  ターン シンプル・デザインへの宝石集,株式会社ピアソン・

  エデュケーション,(2003.4.10)

[2]青木淳:Smalltalkイディオム,ソフト・リサーチ・センター,

  (1997.2.25)

図 4 インターフェースの改修にともなうプログラム変更例

図2 FrameManagerを利用した二画面合成例

 フレームワークとしての柔軟性を最大限に利用し、多くの事

例を共有化することで、MCFrameは発展を続けている。多く

のお客さまに有効と思われる機能を、フレームワークのバリエー

ションや共通機能とすることで、再利用を進めている。

 以下に、代表的な事例を示す。

3.1 化粧品業界テンプレート  他の開発言語と同様に、MCFrameにおいても複数のお客さ

まへのシステム導入実績により、同様の(あるいは共通した)

機能カスタマイズや新規機能の追加が見えてくる。その共通部

分をインテック独自のテンプレートとして部品化し社内で共有

することにより、プログラム開発期間の短縮や、品質の安定化

を図ることが可能となる。

 例えば、化粧品業界テンプレートである。これまでインテッ

クが担当した複数の化粧品の開発・販売メーカーの導入事例

より、明らかに共通化できそうな機能を集めてテンプレート

を作成し部品化を行った。以後、化粧品メーカーへのシステ

ム化提案時には、MCFrame+化粧品業界テンプレートを基本

モデルとして提案・要件定義を進めてきてる。結果として、

テンプレートを作成・部品化した時の開発コスト以上の恩恵

を得ている。

3.2 帳票印刷機能の拡張  MCFrame標準の帳票印刷機能には、通常使うプリンタから

出力することしかできない。そのため、ラベルプリンタ利用

時には都度通常使うプリンタを切り替えるか、ラベルプリン

タ印刷用に端末を用意する必要があった。そこで、帳票と出

力プリンタを定義する新しいテーブルを作成し、そのテーブ

ルを帳票出力時に参照することにより出力先のプリンタを使

い分ける機能も部品化した。これは業種を問わず有効な部品

である。

 MCFrameの標準機能では不足している機能を補い、短納期

で高品質のシステム提案ができるように、今後も部品化を進

めて行く計画である。

販売 管理

生産 管理

原価 管理

MCFrame共通フレームワーク

FrameManager

■画面の変更(青色のボタンの機能のみの画面に変更)

■画面の変更にともなうプログラムの変更(変更箇所は青色)

■検索・一覧・登録 画面例

■検索・一覧 画面例 ■二画面合成 画面例

(1)

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

2.1 MCFrameについて  MCFrameはオブジェクト指向言語の基本型と言われる

Smalltalkの開発環境であるVisualWorksをベースに、

b-en-g社が開発・販売している純国産の生産・販売・物流フ

レームワークである。豊富な機能と柔軟性や拡張性を併わせ

持つことで、高品質・低コスト・短納期によるSCMシステム

導入が可能である。業務機能は再利用できる「部品」とい

う形で実装しているため、MCFrame 共通フレームワーク

をベースに、各製品/業種別ソリューションに部品を追加して

いく方法で、効率的にカスタマイズすることが可能となる。

 1996年の発売後、医薬品や自動車などそれぞれの業界に最

適化した商品をラインナップに加え、また外国語対応(英語・

中国語)も行い、今後も着実にそのシェアを拡大していくと

予想される。

2.2 FrameManagerについて  MCFrame専用のアプリケーション開発環境として、

b-en-g社がVisualWorksをベースに改良を加えて作り上げた

のがFrameManagerである。設計~開発~テストまで広範囲

にサポートしており、業務アプリケーションの開発期間の短

縮や品質の安定化などを実現する強力な機能を備えている。

 元々はb-en-g社がVisualWorksを用いて独自に開発した各

種ツールであったが、VisualWorks上にアドオンされること

によって、FrameManagerという1つのアプリケーション開

発環境を形成している。

 b - en - g社がMCF r ameの開発環境のベースとして

VisualWorksを選択したのは、次のような理由からである。

 ● ピュアなオブジェクト指向の開発言語Smalltalkを採用し

  ていること

 ● 開発者にとっての使い勝手が良いこと

 MCFrame開発当初のテクノロジーでは、Javaをはじめと

する他のオブジェクト指向言語を利用しても実行時に満足で

きるパフォーマンスを得られなかったはずである。そのため、

ソースのオープン化なども含めてMCFrame開発言語として

SmalltalkをベースにしたVisualWorks開発環境が選択され

たと推測される。細部に渡りカスタマイズ可能なこと、独自

機能を備えた開発環境が実現できることがSmalltalk採用の決

め手となったのである。

 図1は、FrameManagerとMCFrame共通フレームワーク

の関係図である。FrameManagerをベースにMCFrame共通

フレームワークを確立し、その上に生産管理、販売管理、原価

管理それぞれのサブシステムが成り立っている。共通フレーム

ワークには汎用的なメソッドがあらかじめ用意されているため、

個別に業務アプリケーションを開発する場合でも、継承やオー

バーライドで既存のメソッドに多少の改修を行うだけで仕様を

実装できるケースが多い。これはオープンな環境のため上位ク

ラスを含めてすべてのソースが参照可能なことの恩恵である。

2.3 FrameManagerを利用した   自動生成によるアプリケーションの作成  MCFrameはすべてがSmalltalkをベースに作られている

パッケージソフトである。FrameManagerには自動生成機能

が標準装備されている。この自動生成機能を利用することによ

り、Smalltalkの知識が少ない人でも、画面・帳票の新規作成

やカスタマイズによる修正が可能である。

 図2は、FrameManagerを利用した画面の作成例である。

既存の別々の機能を持った二つの画面を合成して一画面を作成

することが、FrameManagerを利用することによりプログラ

ミングレスで可能である。FrameManagerはプログラミング

未経験者やエンドユーザ自身による画面のメンテナンスや機能

拡張を可能にしている。

 また、画面、コンボボックス、ラジオボタンやメッセージも

FrameManagerによって一括管理できる。

2.4 FrameManagerを利用した資源管理  図3はメッセージ管理画面の例である。専用画面が用意され

ておりメッセージの種別ごとにメッセージ番号を符番し、登録・

管理できる。開発に参加しているプロジェクトメンバーは、

MCFrame開発環境実行時にFrameManagerを起動してデー

タベース内に保持した情報と同期をとり、全員が同一環境で開

発作業を行うことができる。

2.5 自動生成を使わないアプリケーションの作成  FrameManagerを利用してアプリケーションを自動生成する

ことができる一方で、画面インターフェースの大幅な改修など

の開発作業は、これまでのアプリケーション開発同様にソース

プログラムを直接編集して行われる。

 図4は、インターフェースの改修にともなうボタン押下時のロ

ジックの変更をオーバーライドしている例である。カスタマイズ

機能の追加にともない画面が変更されても、変更元のクラスを継

承した新しいクラスを作成しており、その中にはオーバーライド

されたインスタンスメソッドが1つあるだけである。今後同じ画

面に機能が追加され、チェックが増えた場合でも、作成された新

しいクラス内にメソッドを追加するだけで対応が可能である。

*VisualWorksはCincom Systems.Inc.(日本ではシンコム・システムズ・ジャパン(株))が販売する製品です。 *SmalltalkはXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語です。

Page 6: MCFrameアプリケーション開発における 特 オブジェクト指 …...という考え方が、含まれている。 我々は道具であるMCFrame開発というオブジェクト指向

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L

16 17

20 21

18 19

特集1

特集1

特集1

2007

第 7 号

I N T E C T E C H N I C A L J O U R N A L特集1

MCFrameアプリケーション開発における オブジェクト指向の有効性

Effect of Object-Oriented Technology in Application Development of MCFrame

大田 和弘     川西 弘純   OOTA Kazuhiro   KAWANISHI Hirozumi

概要  お客さまにとってのコンピュータシステムは業務を遂行するための道具であり、違和感なく利用できることが条件

である。開発言語や過去の実装例(パターンを含む)は、開発技術者にとっての道具であるとともに、アイデアの源

である。開発技術者は目標を効率的に達成するために道具を改善し、お客さまにとってより良い使い方を追求する

ことになる。

 良い道具を使って誰でも容易に開発できる環境を提供することは、ソフトウェア開発の生産性向上のために有

効な手段である。

 業務アプリケーションのプログラムは、ほとんどが同じようなパターンであるため、簡単なパラメータ設定やわず

かな違いの修正を行うだけで、開発できる部分を含んでいる。しかし、多くの事例を見ていると、生産性と品質の

向上のためには、単純化のアプローチだけでなく、技術者の行動範囲を広げていくアプローチも必要であることが

明らかである。

 本稿ではMCFrame(VisualWorks、Smalltalk)によるプログラム開発を事例として、オブジェクト指向を有効に

活用することで、生産性と品質の改善につながる可能性を示す。

1. はじめに

2. MCFrameによるプログラミングの概要

3. 部品化の有効性

4. アプリケーションプログラム   開発における、改善の方向性

川西 弘純 KAWANISHI Hirozumi

MCFrameビジネス

 プロジェクト管理者と開発技術者は、技術としての開発手

法や開発言語を扱う上で、該当技術のアーキテクチャを理解

し共有していることが条件である。それは、お客さまに対し

て開発手法や開発言語を説明する場合も同様である。

 MCFrame(VisualWorks、Smalltalk)でのオブジェク

ト指向の目指すところは、全てのクラスの実装が公開されて

いることに象徴されている通り、アイデアの宝庫である既存

のクラスを再利用してソフトウェアを作り上げていくことに

ある。例えば、開発技術者が問題解決のために、実世界(サー

ビスする機能)により近い形式で対象のモデル化を行うケース

である。

 そこには、開発言語を単にプログラミングの道具として利用

するのではなく、設計を含めた問題解決の道具として利用する

という考え方が、含まれている。

 我々は道具であるMCFrame開発というオブジェクト指向

言語を利用したプログラミングにおいて、再利用や部品化を

効率よく進めることにより、設計を含めた生産性の向上がいか

に図れるかを理解し、技術力を日々向上させている。

(3)

大田 和弘 OOTA Kazuhiro

図1 FrameManagerとMCFrame共通フレームワークの関係

図 3 FrameManagerを利用したメッセージ管理例

 アプリケーションプログラム開発における、現状分析の結果、

有効と思われる改善点を見出した。

4.1 データモデルの明確化とクラスの分離の判断  業務アプリケーションを、画面を中心に設計しているだけで

は、データモデルの明確化の観点が、不十分になる傾向がある。

これは他のオブジェクト指向言語を用いた開発でも見られる傾

向であり、フレームワークや自動生成によるアプリケーション

開発を、画面中心で進めている場合に顕著である。

 ひとつの画面が、複数の目的の異なるデータを扱うことに

なった場合、対象データごとにクラスを分離することが、問

題を扱う範囲の局所化や再利用性を高めることになる。この考

えに基づきMCFrameの標準化を実施し、効果を上げている。

4.2 SQL文の局所化と隠蔽  リレーショナルデータベースのデータベース操作言語として、

SQLを利用する業務アプリケーションが主流となっている現

状にあって、SQL文をオブジェクト指向の枠組みの中で、ど

のようにとらえるべきかがポイントとなる。

 オブジェクト指向同様に、SQL文も実装のための言語にと

どまらず、データを扱うための仕様を示す表現として定着して

いる。多くの開発技術者は画面のイベントに近い箇所にSQL

文を実装する傾向にある。ところがSQL文はあくまでも操作

言語であって、データモデルを表現する手法ではない。そのた

め、データを扱う目的レベルとは分離するようにしている。

 プログラムのテスト時に、画面に対応したデータベースの更

新内容を確認することは必須であるので、分離を極端に進める

ことは現実的ではないという考えもあるが、画面機能とは直接

関係のないマスタテーブル参照等は、業務的な意味のある共通

部品とすることで、個々の業務プログラムからは、SQL文を

なくすようにしている。

4.3 継承  作成済のアプリ-ケーションクラスを継承し、一部の機能を

変更した新たなクラスを作成する場合には、フレームワークに

従って実装された小さな機能ごとのメソッドをオーバーライド

することで、新たなクラスにおける実装量を最小限にとどめる

ことができる。

 一方で、継承元のアプリケーションクラスの機能が変更にな

ることを想定すると、一部の機能をオーバーライドして上位ク

ラスから影響を受けるよりは、丸ごとコピーを行い、継承元の

影響を受けないようにする考え方もある。

 問題の本質は、アプリケーションクラスの中に、異なる目的

の実装が混在していることにある。解消するために、目的ごと

にクラスを分離し、再構成している。当作業の必要性を認識せ

ずに、継承による生産性向上だけを求めて、結果として保守性

を損なうことのないようにしている。

4.4 共通クラスやフレームワークの修正の決断  MCFrameのアプリケーションクラスはフレームワークを継

承しているため、アプリケーション全体にかかわる変更は、フ

レームワークまたは関連する共通クラスの修正で対応可能な

ケースが多い。ユーザインターフェースである画面の見た目に

ついても同様である。個々のアプリケーションクラスを修正

する必要がないという強みを積極的に利用することで、様々な

効果が期待できる。

 現在のところ、まだ一部のプロジェクトのみでの実施だが、

効果が高いことは実証されている。システム導入後の保守

フェーズへの影響など解決すべき課題もあるが、オブジェクト

指向言語の有効性を活かすためにも共通クラスやフレームワー

クを理解し、的確に修正の決断ができるようにしている。

4.5 VisualWorksクラスの利用  MCFrameで利用されている以外にも、VisualWorksには、

他言語に勝る様々な機能の実装が含まれている。また、それら

を利用することによりOSの機能や外部ライブラリの呼出も可

能となっている。

 しかし、これまで、VisualWorksが実装している利用価値

の高いクラスの存在が理解されていなかっため、MCFrameを

使わない実装方法の選択やアドオンによる時間をかけた開発が

選択されたケースがあったので、実装されている機能を生かす

ように改めた。

 画面アプリケーションとは直接関係のない機能においても、

VisualWorksのクラスを再利用して、他言語より簡単に実装

できた例が確認できている。

4.6 技術者の育成  MCFrameの開発言語となっているSmalltalkを理解してい

る技術者の絶対数は、JavaやVisualBasicといったメジャー

な言語と比較すると IT業界全体を見ても極少数である。

 年々増え続けているMCFrameのニーズに対して、インテッ

クでは独自の開発体制作りを進めている。新入社員~3年目ま

でをターゲットとした「プログラム開発技術者育成カリキュラ

ム」のほかに、中堅社員をターゲットとした「ジュニアSE、

SE育成カリキュラム」を用意している。b-en-g社が実施して

いる技術者認定試験も積極的に取得し、技術力を有することを

形にしている。惜しまぬ日々の努力の結果として、多くのお客

さまにより良いサービスを提供することを目指している。

5. おわりに  オブジェクト指向と言語に関しては、開発現場も含めて、理

解を深める努力が必要であることは明白である。他の開発手法

と比べて、より本質的な理解が必要であることが、困難さをと

もなう一因と思われる。しかし、本質が理解できれば、様々な

面で変化が加速されることが予測される。

 本稿で述べた改善の方向性は、開発技術者の発想の転換だけ

ではなく、プロジェクトの関係者がオープンなコミュニケー

ションを実施することにより達成できる。

 プログラム開発の現場には、まだまだ改善すべき問題点が山

積している。我々インテックはこれからも継続的にその問題点

を明らかにし、改善を実施し、お客さまへより良い道具を提供

し続けていく所存である。

参考文献

[1]ケント・ベック:ケントベックのSmalltalkベストプラクティス・パ

  ターン シンプル・デザインへの宝石集,株式会社ピアソン・

  エデュケーション,(2003.4.10)

[2]青木淳:Smalltalkイディオム,ソフト・リサーチ・センター,

  (1997.2.25)

図 4 インターフェースの改修にともなうプログラム変更例

図2 FrameManagerを利用した二画面合成例

 フレームワークとしての柔軟性を最大限に利用し、多くの事

例を共有化することで、MCFrameは発展を続けている。多く

のお客さまに有効と思われる機能を、フレームワークのバリエー

ションや共通機能とすることで、再利用を進めている。

 以下に、代表的な事例を示す。

3.1 化粧品業界テンプレート  他の開発言語と同様に、MCFrameにおいても複数のお客さ

まへのシステム導入実績により、同様の(あるいは共通した)

機能カスタマイズや新規機能の追加が見えてくる。その共通部

分をインテック独自のテンプレートとして部品化し社内で共有

することにより、プログラム開発期間の短縮や、品質の安定化

を図ることが可能となる。

 例えば、化粧品業界テンプレートである。これまでインテッ

クが担当した複数の化粧品の開発・販売メーカーの導入事例

より、明らかに共通化できそうな機能を集めてテンプレート

を作成し部品化を行った。以後、化粧品メーカーへのシステ

ム化提案時には、MCFrame+化粧品業界テンプレートを基本

モデルとして提案・要件定義を進めてきてる。結果として、

テンプレートを作成・部品化した時の開発コスト以上の恩恵

を得ている。

3.2 帳票印刷機能の拡張  MCFrame標準の帳票印刷機能には、通常使うプリンタから

出力することしかできない。そのため、ラベルプリンタ利用

時には都度通常使うプリンタを切り替えるか、ラベルプリン

タ印刷用に端末を用意する必要があった。そこで、帳票と出

力プリンタを定義する新しいテーブルを作成し、そのテーブ

ルを帳票出力時に参照することにより出力先のプリンタを使

い分ける機能も部品化した。これは業種を問わず有効な部品

である。

 MCFrameの標準機能では不足している機能を補い、短納期

で高品質のシステム提案ができるように、今後も部品化を進

めて行く計画である。

販売 管理

生産 管理

原価 管理

MCFrame共通フレームワーク

FrameManager

■画面の変更(青色のボタンの機能のみの画面に変更)

■画面の変更にともなうプログラムの変更(変更箇所は青色)

■検索・一覧・登録 画面例

■検索・一覧 画面例 ■二画面合成 画面例

(1)

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

● ビジネスソリューション事業本部 I-MCF事業部 I-MCFシステム部 ● MCFrameを利用したソリューションの、設計および開発に 従事

2.1 MCFrameについて  MCFrameはオブジェクト指向言語の基本型と言われる

Smalltalkの開発環境であるVisualWorksをベースに、

b-en-g社が開発・販売している純国産の生産・販売・物流フ

レームワークである。豊富な機能と柔軟性や拡張性を併わせ

持つことで、高品質・低コスト・短納期によるSCMシステム

導入が可能である。業務機能は再利用できる「部品」とい

う形で実装しているため、MCFrame 共通フレームワーク

をベースに、各製品/業種別ソリューションに部品を追加して

いく方法で、効率的にカスタマイズすることが可能となる。

 1996年の発売後、医薬品や自動車などそれぞれの業界に最

適化した商品をラインナップに加え、また外国語対応(英語・

中国語)も行い、今後も着実にそのシェアを拡大していくと

予想される。

2.2 FrameManagerについて  MCFrame専用のアプリケーション開発環境として、

b-en-g社がVisualWorksをベースに改良を加えて作り上げた

のがFrameManagerである。設計~開発~テストまで広範囲

にサポートしており、業務アプリケーションの開発期間の短

縮や品質の安定化などを実現する強力な機能を備えている。

 元々はb-en-g社がVisualWorksを用いて独自に開発した各

種ツールであったが、VisualWorks上にアドオンされること

によって、FrameManagerという1つのアプリケーション開

発環境を形成している。

 b - e n - g社がMCF r ameの開発環境のベースとして

VisualWorksを選択したのは、次のような理由からである。

 ● ピュアなオブジェクト指向の開発言語Smalltalkを採用し

  ていること

 ● 開発者にとっての使い勝手が良いこと

 MCFrame開発当初のテクノロジーでは、Javaをはじめと

する他のオブジェクト指向言語を利用しても実行時に満足で

きるパフォーマンスを得られなかったはずである。そのため、

ソースのオープン化なども含めてMCFrame開発言語として

SmalltalkをベースにしたVisualWorks開発環境が選択され

たと推測される。細部に渡りカスタマイズ可能なこと、独自

機能を備えた開発環境が実現できることがSmalltalk採用の決

め手となったのである。

 図1は、FrameManagerとMCFrame共通フレームワーク

の関係図である。FrameManagerをベースにMCFrame共通

フレームワークを確立し、その上に生産管理、販売管理、原価

管理それぞれのサブシステムが成り立っている。共通フレーム

ワークには汎用的なメソッドがあらかじめ用意されているため、

個別に業務アプリケーションを開発する場合でも、継承やオー

バーライドで既存のメソッドに多少の改修を行うだけで仕様を

実装できるケースが多い。これはオープンな環境のため上位ク

ラスを含めてすべてのソースが参照可能なことの恩恵である。

2.3 FrameManagerを利用した   自動生成によるアプリケーションの作成  MCFrameはすべてがSmalltalkをベースに作られている

パッケージソフトである。FrameManagerには自動生成機能

が標準装備されている。この自動生成機能を利用することによ

り、Smalltalkの知識が少ない人でも、画面・帳票の新規作成

やカスタマイズによる修正が可能である。

 図2は、FrameManagerを利用した画面の作成例である。

既存の別々の機能を持った二つの画面を合成して一画面を作成

することが、FrameManagerを利用することによりプログラ

ミングレスで可能である。FrameManagerはプログラミング

未経験者やエンドユーザ自身による画面のメンテナンスや機能

拡張を可能にしている。

 また、画面、コンボボックス、ラジオボタンやメッセージも

FrameManagerによって一括管理できる。

2.4 FrameManagerを利用した資源管理  図3はメッセージ管理画面の例である。専用画面が用意され

ておりメッセージの種別ごとにメッセージ番号を符番し、登録・

管理できる。開発に参加しているプロジェクトメンバーは、

MCFrame開発環境実行時にFrameManagerを起動してデー

タベース内に保持した情報と同期をとり、全員が同一環境で開

発作業を行うことができる。

2.5 自動生成を使わないアプリケーションの作成  FrameManagerを利用してアプリケーションを自動生成する

ことができる一方で、画面インターフェースの大幅な改修など

の開発作業は、これまでのアプリケーション開発同様にソース

プログラムを直接編集して行われる。

 図4は、インターフェースの改修にともなうボタン押下時のロ

ジックの変更をオーバーライドしている例である。カスタマイズ

機能の追加にともない画面が変更されても、変更元のクラスを継

承した新しいクラスを作成しており、その中にはオーバーライド

されたインスタンスメソッドが1つあるだけである。今後同じ画

面に機能が追加され、チェックが増えた場合でも、作成された新

しいクラス内にメソッドを追加するだけで対応が可能である。

*VisualWorksはCincom Systems.Inc.(日本ではシンコム・システムズ・ジャパン(株))が販売する製品です。 *SmalltalkはXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語です。