基幹システムのWEB化における
落とし穴に落ちないためのポイント
http://www.juas.or.jp/seminar/open/s07080.html
2月19日(火)10:00~17:00開催。
有料セミナーですが、Biz/Browserを実践レベルで広めていくためのものという位置づけで行います。
アクシスソフト様関係者の方もよろしければご参加下さい。
落とし穴に落ちないためのポイント
Biz/Browserは有料であるため、BtoCで使う用途には不向きである。
そのため、通常はBtoCのECサイトは通常のHTMLで構築し、Biz/Browserとデータ連係させるという手法をとる。
例えばyahooや楽天のショッピングサイトを使うと、ECサイト構築はショッピングサイト側の機能で汎用的なものがほとんどそろっている。
一方、業務システムはHTMLでは不可能なので、Biz/Browserのほうが向いている。
「yahoo!ショッピングサイトとBiz/Browserの連動例」
上は、yahoo!ショッピングの中に構築したECサイトの画面である。
このECサイトとCV.netが連動している。商品マスタはCV.netで管理し、ECサイトからの売上情報をCV.netに取り込んで集計・分析を行っている。
このように、Biz/Browserの強みを生かした使い方をすることで、ユーザにとってもっともメリットがあるシステムを構築することができる。
http://store.yahoo.co.jp/shirt/
また、ECサイト連動の部分はある程度決まってくるので、上記のようなシステムを構築することで、例えばyahoo以外のECサイトでも同様に連動させることができる。
SODECへ向けて、Biz/Browser Mobileは大幅に進化している。
3/30には開発ドキュメントが「Bizの宝箱」に公開されたが、今度はBiz/Browser Mobileのデバッグ環境が提供されようとしている。
Biz/Browser Mobile3と同等の実行環境をWindows上で再現する、「Biz/Browser Mobile3 for Windows」の開発が大詰めを迎えているのだ。
この「Mobile3 for Windows」はモバイル版でのデバッグ効率を大幅に高めてくれる。
いままではPCのDesignerでスクリプトを記述し動作チェックは全てPDA上でおこなう必要があった。それが、この「Mobile3 for Windows」を使うことによって論理的なデバッグ作業は全てPC上で完結する。デバッグが済んだスクリプトを最後にPDA上でチェックするだけでよくなる。
モバイル端末向けに、これだけ開発環境が整ったリッチクライアントは他にない。
Microsoftですら、モバイル開発環境はPCに比べればかなり貧弱である。
以前にもBlogで書いたように、Windows Mobileは去年、今年かなりの機種が発売されている。
アクシスソフト社として、マイクロソフトのモバイル事業部に「Biz/Browser Mobile」をなんとか紹介できないだろうか?
これだけ材料が整ってくれば、「Biz/Browser Mobile」はモバイル開発環境として最強、最速のものとしてその地位を確立できるであろう。
また、「Mobile3 for Windows」は既存のモバイル端末に対応するだけではなく、端末プロファイルを変更することで、将来的なモバイル端末にも対応可能である。(現在は、画面サイズ、縦横切替等のみ。今後設定項目が増えていけばかなり役に立つと思われる)
現在「Mobile3 for Windows」はベータ版だが、Bizのパートナーであればアクシスソフト社の担当経由で手に入るはずである。
Windows Mobile5.0タイプのPDAで現在開発されている会社があれば、是非早めに「Mobile3 for Windows」を手に入れ、Biz/Browserでなければ作れないようなシステムを構築していって欲しい。
「Bizの宝箱」に「ライセンスファイルに関するよくあるお問い合せ」という内容が載っていた。
ここに書かれてない内容について若干補足。
サーバライセンスをチェックするCRSスクリプトということで、以下のような内容になっている。
CV.netでは、サーバURLが変わっても問題ないよう、以下のようなCRSスクリプトを使用している。
[menu.crs]
若干脱線するが、//.SYSオブジェクトをうまく使うことで、クライアントの端末バージョンなどの管理を行うことができる
CV.netでは、上の画像のように、OSバージョン、コンピュータ名、ユーザ名、Bizバージョンなどの情報を端末から取得することで、誰が、いつ、どの端末からLOGINしたのかを管理している。
(2008年会計年度から始まる内部統制では、こういうアクセス情報の管理は必須となる)
こういった管理をしておくと、Biz/Browserのバージョンが上がり端末をバージョンアップしたいときなど(直近ではIE7やVista対応のとき)、ユーザがちゃんとBiz最新版をインストールしているのかどうか一目瞭然である。
例えば、下の画面は仕入入力画面(CV.net)で、仕入先を入力する項目がある。
この項目に対し、仕入先を選択入力できるようにするのに、
1.ComboBoxで選択させる
2.Dialogを表示して選択させる
2通りの方法が考えられる。
CV.netでは、ユーザの要望に応じて両方対応させるために、フラグを用意し内部で処理を分岐させている。
さらに、共通ルーチン(cvnet.car)内部にクラスを持つことで、共通化させている。
---------------------------------------------
/* Dialogで選択する場合の処理 */
.....(中略).....
Get(dia);
var wrk_para = v_obj;
if (v_obj instanceof ComboBox){
wrk_para = split(v_obj," ",0);
}
var child = FindChild("SubDlg_Sel");
if (child == null) {
child = FindChild("SubDialog");
}
child.OnInit(v_mstname,new array(wrk_para),v_para2);
return;
.....(中略).....
/* Comboboxで選択する場合の処理 */
if (v_obj instanceof ComboBox){
wrk_para = split(v_obj," ",0);
}
if (i==0){
ret_csv = Cvnet.AspxSqlQueryMst(v_mstname,new array(wrk_para),v_para2);
}
if (v_obj instanceof ComboBox){
v_obj.ComboItem1.truncate();
ret_csv.clearColumnName();
v_obj.ComboItem1<< ret_csv;
if (v_obj.findChild("para")!=null){
v_obj.para.clear();
v_obj.para << ret_csv;
}
}
.....(中略).....
---------------------------------------------
Biz/Browser V3からV4になるとき、Classの概念が導入されたが、それによって大幅に開発効率が向上した。ロジックや外見を共通化させることが簡単にできるようになった。
近日中にさらなるバージョンアップがあるが、さらに便利なClassがいくつか追加されるようである。
また、既存のClassも、マイナーバージョンアップ毎に細かい修正が加わっており、使い勝手と動作の安定性も高くなってきている。
これら標準提供のClassを使いこなすことによって、開発効率は大幅に上がっていくようになる。
---------------------------------------------
(現在の要望項目)
・FlexItemクラスに表示/非表示を定義させてほしい。
(現在は、Width=0;Title=nullにしているが、カーソルが止まってしまうので不自然)
・FlexViewクラスのSortメソッドで複数列を指定できるようにしてほしい。
(現在は、裏でダミー列=複数列のデータ項目を連結させた文字列を保持、によって擬似的にソート)
などなど。。。
Biz/Browserにも、ユーザが作成したDLLを組み込む機能があるが、開発時にも同様に、DLLで機能拡張することができるようになっている
(Ver4.1.3.2から。現在のバージョンは4.1.3.3)
このDLL拡張機能を使ったものが、「HTMLドキュメントエクステンション」である。
CRSファイル内のコメントとHTMLで記述されたテンプレートを組み合わせることで、CRSの簡易HTMLドキュメントを作成することができる。
(1CRSファイル=1HTMLファイル)
出力されるドキュメントの元になっているテンプレートは通常のHTMLファイルなので、出力フォーマットを自由にカスタマイズすることが可能である。
プロジェクト内のCRSファイルの一通りの内容が出力できるので、受託開発型でBiz/Browserを使っている企業にはとても便利な機能である。
また、DLL拡張機能は使い方によっては非常におもしろくなる。
例えばBiz/BrowserのVBコンバータという某商品があるが、これをDLL拡張に対応することで、あたかもBiz/Designerの標準であるかのように組み込むことが可能になる。
1/30にWindows Vistaが発売されてから、1週間ほど経過した。
一般の家電量販店を見ると、すでにVista搭載モデルが主流でXPモデルは在庫品処分の扱いになっていた。
ということは、BtoCのソリューションを展開している企業は、Vista対応をせざるを得ない状況にあるということだ。
Biz/Browserは企業向けブラウザという売りだが、Bizを使う企業でBtoCもやっているところも少なからずある。
また、これからBizの導入を検討している企業にとっては、新しいOSに対応しているかどうかは選定の重要ポイントになる。
また、Biz/Browser(3Tierアプリケーション)の本当の競合は、CurlやFlexではない。クライアントサーバ型のアプリケーションである。
既存のVB、COBOL、Delphi、dbMAGIC等のクラサバ型ツールで作ったアプリケーション、ここをリプレースすることで巨大な市場が生まれる。
極論すれば、アプリケーションの一部のWeb化はCurl、Flex、Ajax、HTMLなどどれを使ってもできる。しかし、既存のクラサバアプリケーションの全面リプレースは、これらWeb型ツールでは事例がない。(少なくとも公式には出ていない)
CV.netでは、既存のクラサバで動いている基幹業務を全部リプレースさせて数十社導入してきた。
ユーザにはクラサバを遙かに凌駕するパフォーマンスを実感してもらい、満足されている。
(台数が多くなっても遅くならない、回線スピードに依存しない、どこからでもアクセスできる、クライアントのインストールが簡単になったなど)
SODECなどで業務アプリケーションが全部Biz/Browserで可能であるということをユーザに実感してもらえれば、クラサバからの移行がより進むであろう。
上に上げたようなクラサバ型開発ツールは、Vistaが出てきたにも関わらず、ほとんどが対応できていない。実際にこれらツールは、XPになっても2000互換モードでやっと対応してきた。Vista上でも互換モードで検証しているだろうが、それではあまりにも古すぎ、時代に合わなくなる。
また、過去のクラサバ型のツールは開発エンジンにしろ、実行エンジンにしろ非常に高価であった。
このようなことから、Vista登場を契機として再び基幹系アプリケーションの見直しが行われていくであろう。
さきほど気がつきましたが、1/23,1/25と更新されていたようです。
この「Bizの宝箱」にはバージョンの更新情報があるので、定期的にチェックしています。
バージョン情報は、PrintStreamの若干の更新があったようです。
プレビュー時の不具合修正、PDF生成時1レコードもない場合の不具合修正etc細かいアップデートがありました。
また、以前私のほうからあげていた「ダウンロードのドキュメントを最新にしてほしい」という要望が受け入れられたようで最新になっていました!ありがとうございます。
それよりも、一番驚いたのは、Bizのサンプルのレベルが以前と比べものにならないぐらい上がっていることです。
いくつかあるうちの1つ、FlexView2をダウンロードして動かして見たのですが、すごく実用的な作りになっています!
(Biz宝箱 FlexView2サンプルの画面)
ソースもざっと確認してみたのですが、実に理にかなった作りになっていて、かなりのBiz経験値の高さが感じられる作り方でした。(^_^)
例えば、
var csvobj = new CSVDocument;
csvobj.Get( "BB_Data.csv" );
......
csvobj.clearColumnName();
csvobj.setColumnName( 0, "FlexIndentLabel1.Data" );
csvobj.setColumnName( 2, "FlexIndentLabel1.parentKey" );
csvobj.setColumnName( 3, "FlexIndentLabel1.value" );
csvobj.setColumnName( 4, "FlexLabel1" );
csvobj.setColumnName( 5, "FlexLabel2" );
FlexView1 << csvobj;
この部分。
前にこのBlogでもふれましたが、CSVDocumentで列名をつけるといろいろよいことがあります。このソースでは、列名をセットすることで、FlexView1へのCSVDocumentの読み込みを1行で済ませることができています。
これ、列名をセットしないとループで回さないといけなくなるので効率的なコードです。
また、StyleEditの
SetKeywordStyle(0, "[0-9a-z_.-]+@[0-9a-z_-]+.[0-9a-z_.-]+", StyleEdit.REGEXP + StyleEdit.NOCASE+ StyleEdit.HOTSPOT, $BLUE);
SetKeywordStyle(1, "http[s]*://[0-9a-z_/.-?=&~#%:]+", StyleEdit.REGEXP + StyleEdit.NOCASE + StyleEdit.HOTSPOT, $BLUE);
SetKeywordStyle(2, "^>.*", StyleEdit.REGEXP + StyleEdit.NOCASE, $DGREEN);
この部分。
SetKeywordStyleをちゃんと正規表現で設定していますし、オプション設定も正しく設定されています。
StyleEditクラスは、SetKeywordStyleを設定することで、簡単に複数行の文字列をきれいに表示することができます。
また、正規表現は使ったことがない人にとってはとっつきにくいものかもしれませんが、上の数行でどんなメールアドレスやURLでも、正しく表示orイベント処理することができるようになります。
FlexViewあたりのコードも、無駄がなくきれいに記述されています。
いろいろあるのですが、効率化で重要なポイントを1つ説明すると、
FlexView FlexView1{
...
Function OnClicked(e){
if( e.ctrlKey ){
if( e.row.FlexIndentLabel1.BgColor == ^.PrintLine ){
e.row.FlexIndentLabel1.BgColor = $STD;
e.row.FlexLabel1.BgColor = $STD;
e.row.FlexLabel2.BgColor = $STD;
...}
}
}
この部分。
OnClickedイベントは、FlexLabelやFlexIndentLabelなどのクラスで発生するのですが、OnClickedファンクションの定義はFlexView直下でしています。
これが正しいやり方で、私はFlexViewのイベント関数や独自関数などは基本はFlexView直下にすべきだと思っています。
デザイン画面から定義しようとすると、各FlexLabelやFlexIndentLabelなどにOnClickedを作成することになります。しかし、それでは複数のオブジェクトに同じような処理を定義することになります。
ゆえにイベント伝播の原則(これもBizにおいては重要な概念)により、FlexView直下に1つだけ定義します。
他のサンプルはまだ見ていませんが、FlexViewをこれだけ理解されているので、おそらく非常によい出来になっていることと思います。
Bizのテクニック等で悩まれている方がおられれば、是非新しくアップされたサンプルを参考にされることをオススメいたします!