top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
blanco Frameworkの概要説明の加筆を行いました。
blanco Framework Community会の事前準備をおこなっています。とりあえず そもそも blanco Frameworkの説明について改善すべきところがあると強く認識したので、そこを重点的に改善中です。
まず最初に重要なことなのですが、blanco Framework いまや blancoDbというR/Oマッピングツール実装だけではありません。対象領域が広がっています。いまや まがいなりにもシステム開発フレームワークへと発展してしまっています。blanco Framework Community会では 時間の半分程度をかけて blanco Frameworkの全体的な紹介をさせていただく予定となっています。いくつかの Excel様式に必要事項を記入していくだけで各種 Javaソースコードが自動生成されるという系統のお話をさせていただきます。むろん blancoDbの説明も半分程度の時間をかけて紹介させていただきます。
blanco Frameworkに含まれるソフトウェア・ツールは オープンソースというルールのもとで提供しています。もし、[replace-link:blanco Framework]の説明を聞かれて気に入っていただけた場合には、オープンソース・ライセンスの所定のルールにのっとった範囲において自由に利用することが出来ます。
blanco Frameworkは自社フレームワークをお持ちでない中小企業さまを重要なターゲットのひとつであると位置づけさせていただいております。「何かしら自社の開発フレームワークを導入するなどして生産性向上・品質確保をおこないたい。しかし自社の開発フレームワークの新規開発コストなんて、とても捻出なんてできない」というような会社様で導入頂ければ、願ったり叶ったりなのです。そういう立場の方にもblanco Framework Community会にご参加いただければと思っています。…ああ、そういえば私の会社も つい最近まで自社の開発フレームワークを持っていない中小企業だったです :-P
blanco Frameworkに含まれるソフトウェア・ツールのひとつを単独で利用することも出来ます。例えば、バリューオブジェクト定義書からバリューオブジェクトのJavaクラスを自動生成するという機能だけを取り出して使うだけでも効果が出る場合があります。原則としてLGPLライセンス下のプロダクトであるので、[replace-link:blanco Framework]に含まれるソフトウェア・ツールをアプリケーションに組み込んで利用する場面も想像します。
また、blanco Framework Community会にエントリーされた方からリクエストがあったので、blanco Frameworkの Excelから情報を読み取る仕組みである blancoCalcParserについて、ある程度時間を割いて説明をさせていただこうと考えています。blanco Frameworkの中核的な機能であるはずの blancoCalcParserについても、ほとんど説明されていません。これも改善すべき点ですね。blancoCalcParserを用いると、Excel97形式の *.xlsファイルで新規に様式を作成して、そこからXMLファイル形式という中間ファイルのかたちで情報を抽出することができます。しかもblancoCalcParserを用いていれば、ある程度の様式へのカスタマイズにも無修正で対応することができるようになるという副次的な効果があります。
、、、というのも説明を書かなくてはなりません。しかし仕事は相変わらず忙しいです… (苦笑)
blanco Frameworkの概要に「規模と新技術のあいだのジレンマ」に関する記述を追記しました。これを掲載します。
背景
情報処理産業におけるダウンサイジングの波が Java言語/C#言語などのコンパイル系言語処理系に押し寄せて、もう何年も経ちます。近年のインターネット/Webアプリケーションの流行などもあり Java言語/C#言語などを用いたシステム開発は とても一般的なものになりました。その結果、特にJava言語に関していうと世間において十分に普及したものと考えられます。Java言語の知識やノウハウが人的交流や情報誌、Webなどを通じて世に行き渡っています。
では、Java言語を採用してシステム開発を行うリスクは低減化されたかというと、困ったことに そう単純に良い結果は出ていません。ナゼなのでしょう。ふと立ち止まって良く見かける Java言語を用いたシステム開発を思い起こしてみると、下記のような特性があるように感じています。(でも、このような感触は人それぞれの経験によっては異なることでしょうけれども)
規模が大きめ
手作り開発
ウォーターフォール型
ドキュメント指向
これら特性に加えて、最近は下記のような特性がかかっているように感じます。
コスト削減の圧力
開発の短納期化
こういった様々なプレッシャーが、Java言語を用いたシステム開発のリスクを増加させているものと感じています。その結果として Java言語を用いて開発を行っているプロジェクトへのアツレキとして跳ね返ってきているように感じます。
規模が大きいと新技術が利用できないというジレンマ
従事している人にとっては、しごく当たり前のことなことなのですが、規模が大きめの手作り開発には「新技術」のタグイを適用することは非常に困難です。規模が大きければ大きいほど、新技術の導入コストおよび導入リスクが高くなってしまうのです。開発を効率化するために様々な新技術を用いて革新的な改善を実現したいと多くの人が自然に思い描くのですが、実際には新技術を導入することは非常にリスクが高いです。これは技術が枯れているか枯れていないか、という事も重要なのですが、それ以上にインパクトのある制約として現れてしまいます。一般的に規模が大きいほど 従事する人の数も多くなります。従事する人が増えれば増えるほど、それら従事者に新技術を教育していくコストがかかるのです。皮肉なことですが、新技術を導入して得られるコストダウンを 新技術を教育するために費やすコストが上回ってしまうということが現実的にあり得るのです。これは新技術であるかどうかに関わらず、規模の大きめなシステムにおける皮肉なジレンマなのです。何か革新的な仕組みを導入しようとすると、その仕組みの説明のコストが 従事者の人数が多いばかりに教育コストという形で大きくのしかかり、仕組みの導入によるメリットを吹き飛ばしてしまうのです。これは従事している人数が少ないプロジェクトを主に経験する人たちにとっては想像が難しいことかも知れません。
規模が大きいと開発工程の改善が難しくなる
加えて規模が大きいと開発工程の改善を実現しにくくなります。これも皮肉なことです。まず規模が大きければ大きいほどドキュメントが増えます。規模が大きいとウォーターフォール型の開発である確率が高くなります。ウォーターフォール型およびドキュメントの増加によって開発工程の抜本的な改善が実現困難になっていきます。そもそも規模が大きいほど開発工程を固定化させるための様々なノウハウが施されており、そもそも抜本的な改善なんて仕組み上できなくなっているのです。しかも規模が大きいと、全体的な統一感という観点から見ると、画一的であればあるほど便利なのです。一部分だけが何か工夫をもって作られていると、全体的な統一感が損なわれてしまいます。このようなことから、規模が大きければ大きいほど、開発工程の改善はどんどん難しくなっていってしまうのです。
blanco Frameworkは そのようなジレンマを解消することを目的としています。
オープンソースの下流開発フレームワーク
blanco Frameworkは下記のような領域をターゲットとするオープンソースによる下流開発フレームワークです。
プログラム設計・製造・単体試験工程を対象工程とする
プログラミングをツールが肩代わり
プログラミング言語と外部インタフェースとの間のギャップを主に扱う ※業務的な内容は本フレームワークの対象外
ライセンスにGNU LGPLライセンスを採用 ※JBoss, Hibernate等のオープンソースプロダクトもLGPLを採用 ※詳しくは GNU LESSER GENERAL PUBLIC LICENSEを参照下さい。
このような領域をカバーすることにより、開発工程の革新的な改善を実現します。
転記作業の自動化
ソフトウェア開発現場では様々な転記作業が存在します。特にシステム規模が大きければ大きいほど、このような作業はとても大きなウェイトを占めるようになります。
開発現場における様々な転記作業を自動化・機械化する
ドキュメントからソースコードなどを自動生成
ソースコードからドキュメントを自動生成
ドキュメントからドキュメント一覧を自動生成
そして blanco Frameworkは まさにこれら転記作業の自動化を実現します。
Excel(*.xls)ファイル形式の様式を中心とした自動生成
ソフトウェア開発現場では、ワードプロセッサや表計算ソフトなどのオフィスツールをもちいてドキュメントを作成する場合が多いです。blanco Frameworkは Excel (*.xls)ファイル形式の様式を中心とした各種自動生成をおこなうような構造になっています。
Excelフォーマット(*.xls) を採用 ※ある一定のルールに従った範囲での様式のカスタマイズは可能
所定の様式をExcelを使って埋めていく ※Excel様式を埋めることが該当箇所のコーディング完了と一致
所定の様式のExcelファイルが生成される ※他の情報をもとに所定のExcel様式のドキュメントを生成
自動生成にはオフィスツールのマクロを一切利用しない※様式ファイルを外部プログラムで処理することによりマクロ不要を実現 ※OpenOffice.org 2.0に対応
普及したオフィスツールのファイル形式を採用することにより、初期稼働の少ない導入が可能になっています。
定義書様式の例
blanco Frameworkでは 下記のような定義書様式を提供しています。これら定義書様式を埋めていくことが、そのまま該当箇所の開発完了へとつながるようになっています。
AntTask定義書
定数定義書
ファイル定義書(CSV)
SQL定義書
リソースバンドル定義書
画面項目定義書(Struts)
バリューオブジェクト定義書
電文処理定義書・電文定義書
etc...
大規模開発を意識した構成
blanco Frameworkは システム規模が大規模である場合に対する耐性をもった構成を取っています。
疎結合な設計を採用 ※他のフレームワークとの併用・共存が ある程度可能
実行時ライブラリ(JARファイルなど)を原則として必要としない ※JARファイル・シンドロームの回避
低い導入コスト ※初期費用や学習コストが低くなるように設定
また大規模を意識するうえで特に気をつけているのが、blanco Frameworkそのものの仕様によって処理件数の制約を規定してしまわないようにすることです。
blanco Framework 主なラインナップ
blanco Frameworkには多くのツールが含まれています。そのなかで特に代表的なツールを下記に挙げます。
blancoDb Enterprise Edition ※SQL定義書からデータベース入出力ソースコードを自動生成 ※詳しくはWEB+DB PRESS Vol.29 (2005年10月22日発売) を参照ください
blancoSOAP ※電文処理定義書・電文定義書からWSDL/XSDを自動生成
blancoResourceBundle ※リソースバンドル定義書からプロパティファイルおよびアクセス用ソースコードを自動生成 ※詳しくはWEB+DB PRESS Vol.30 (2005年12月22日発売) を参照ください
blancoCsv ※ファイル定義書からファイル入出力ソースコードを自動生成
blancoStruts ※画面項目定義書からStruts用ソースコードを自動生成
Java版 (EclipseプラグインまたはAnt) を提供
これらは一般的な Java言語による開発において 特に導入効果が出やすいところであると考えています。
blanco Frameworkを導入することにより、さまざまな効果を得ることが出来ます。それらをご紹介します。これらは単独で見ると地味なものですが、規模が大きいときには絶大な効果となって現れます。
自動生成による効果
自動生成というアプローチを取ることにより、下記のような効果を得ることが出来ます。
下流工程の生産性・保守性・品質向上を実現 ※特に保守性が大幅に向上
設計書とソースコードがおのずと必ず一致する ※所定のプログラム設計書が「必ず」作成されるようになる
自動生成されたクラスのソースコードは強制的に標準化される
所定の様式導入による効果
また所定の様式を導入していくことにより、下記のような副次的な (しかしシステム完遂という観点からは非常に重要な) 効果を得ることができます。
下流工程の作業・成果物を平準化
表計算ソフトのスキル+αだけあれば開発の一部に参画可能 ※オブジェクト指向の知識が無い人でも参画可能に
様式ごとに分業することが可能 ※様式ごとに必要とされるスキルを限定することが可能
様式内の記述間違いをチェック可能※様式内の項目の値や項目間チェックなどをプログラムで実施できる ※あたかもExcelドキュメントがコンパイルされるような操作感
オープンソース採用の効果
blanco Frameworkは開発フレームワークであるとともに オープンソースプロダクトでもあります。オープンソースというアプローチを取っていることにより、多くの人々に利用していただきやすくなっています。
開示手続きなど一切なしで、多くの人間がすぐに利用開始することができる
参加メンバーのモチベーション向上が期待できる
市販の書籍やWebなど多くの情報源から知識を得ることができるようになる可能性がある
ソースコード公開による品質向上が期待できる ※第3者から不具合報告や修正案を受け取ることができる ※なお、現状のblanco Frameworkには通信系モジュールは無し
オープンソースであることによる安心感 ※万が一のことがあっても、第三者の手によってメンテしていくことが可能
オープンソースによる広告効果
自社フレームワークなどをお持ちでない企業様には ぜひ blanco Frameworkの導入を検討していただきたく思います。
blanco Framework導入事例
blanco Frameworkの導入事例について、あるプロジェクトの一部をサンプリングした結果を紹介します。このシステムでは blancoDbおよび blancoStrutsのみを導入しました。
Java Web基幹系システム (Struts JDBC)
90キロステップ程度 (実行数のみ調査)
こちらを導入した結果、実際のプロジェクトにおける行数のバランスは下記のようになりました。
blancoDb : 63%
blancoStruts : 10%
業務プログラム部分 : 27%