【DO!BOOK・ページリンク】
2008_migaro_techreport_001   26 / 136

BOOKをみる

10秒後にBOOKのページに移動します


24 G 動的に内容を変化させるcomboBox 用のデータベースの、ローカル化と定 期更新 H 一定の未操作時間経過で、自動的に表 示情報を更新 I Grid に表示される不要項目の非表示 化、並び順変更の可能化。その条件は、 次回起動時にも保持(Ini ファイルに 配列情報を書き込み) 実用レベルに向けた 改善ポイント  アプリケーション開発の独創性・創意 工夫について詳細を述べる。 @毎回、抽出条件を設定しSQL 処理を 行うよりも、ある程度の範囲で抽出し、 ローカルでキャッシュされたデータに対 してフィルター、並べ替え、検索等を瞬 時に実行可能にすることにした。これに より、思考の中断も少なくできる。その ために、ClientDataset の使用を基本と した。  抽出した結果の並べ替えは、任意の項 目の組み合わせで可能であり、優先順が 明示できるようにしている。また、フィ ルター機能についても、複数条件の組み 合わせが可能で、条件とフィルター中で あることがわかるようにした。【図2-2】  なお、DBGrid の各列のタイトル、巾 等については、開発のメンテナンス性を 考慮した。Query の静的項目のみの設 定で、その内容が自動的にClientData Set に引き継がれるように、OnAfter Open イベントに汎用処理を記述した。 【図2-3】【図2-4】  またDBGrid、Query、ClientDataSet、 フィルター用ボタン等、関連する一連の コンポーネントを配列化した。とともに、 Tag プロパティ等の活用により、呼び 出し元の識別を汎用化し、コードの記述 を抑えた。【図2-5】【図2-6】 AB IBM のIBM i 講座「SQL パフォー マンス・チューニングの基礎」を受講し、 IBM i に同梱されているi-Series ナビ ゲータを開発用PC に導入した。【図 2-7】  これにより、組み込むSQL のパフォー マンスについて検証を行うことができ、 適正な索引の確認と索引の生成が一連の 操作で可能となった。結合キーの型不一 致のチェック等も可能であり、その際に はiSeries DB2 のSQL 解説書を参考に 型の変換を行った。【図2-8-1】【図 2-8-2】  i-Series ナビゲータでは、GUI の画面 で既存ライブラリに新規にテーブル、 ビュー(論理ファイル)、索引等を簡単 に作ることも可能であるため、情報シス テム室に依存せず、新たな管理項目を含 むデータベースを作れるため有効であ る。【図2-9】【図2-10】 C開発時のテストにおいて、データが正 しく抽出されない、またはエラーが発生 する場合、実アプリケーションのコード 修正を繰り返すとコンパイルの時間ロス が大きい。また、どのようなSQL 文が 実行されているかも、コードからは読み 取りにくい。そのため、該当SQL の配 列番号指定で実行されたSQL 文を、テ キストで読み出せる仕組みを作った。  また、任意のSQL 文での抽出結果を 確認するテスト専用のアプリケーション を、別途準備し、SQL のテストが簡単 にできるようにした。【図2-11】【図 2-12】【図2-13】 E 1 回の操作で複数のQuery をOPEN する際には、その変わり目でProgress Bar のPosition を変更し、SQL 処理が 進んでいることをユーザーに示す、とい うことを可能にした。  一方、単体の場合、個々の処理時間が 長いと本当に処理が進んでいるか不安に なり、体感時間も長くなる。そのため、 動画を指定のPanel 上で再生して、ユー ザーの手待ち感の軽減を試みた。【図 2-14】【図2-15】 F SQL 文には文字数の制限もあり、 CASE 文等を多用するとレスポンスが 低下するケースも多い。また、複雑な処 理の記述が困難となるため、内容に応じ てQuery のOnCalcFields イベントを 用いた。 G抽出条件の設定では、ユーザーの好み に応じてコードのEdit 入力、またはコー ドに対応する文字のComboBox からの 選択を行えるようにしている。  ComboBox 使用の場合、選択肢を少 なくし操作性を高めるために、例えば営 業担当者のComboBox の内容は、部門 のComboBox の選択結果に応じて動的 に変更される。【図2-16】【図2-17】【図 2-18】  その際、IBM i の情報を参照して ComboBox を設定すると、ネットワー ク、SQL の待ち時間が多少発生する。 そこで、ComboBox で多用される社員 マスター、客先マスター等の更新頻度が 少ないデータベースは、定期的にユー ザーのPC にParadox 形式でダウンロー ドされる仕組みを作り、ComboBox 操 作時の待ちをなくした。【図2-19】【図 2-20】【図2-21】 H同一の抽出条件であれば、設定に対応 して起動中に一定時間アプリケーション 操作がない場合は、ClientDataSet の Refresh メソッドを実行するようにし た。  これは、ApplicationEvents のOnIdle、 OnMessage イベントと、Timer のOn Timer イベントで実装できる。【図 2-22】【図2-23】 I各機能で抽出される項目は、ある程度 汎用性を持たせるために多くなり、ユー ザーによって不要だったり、または優先 度が異なる。横スクロールの手間、同時 参照性により、並べ替え、一部項目の非 表示化等のカスタマイズのニーズがあっ た。【図2-24】【図2-25】【図2-26】 教訓と今後の予定  参照系のアプリケーションについて は、RPG 等の知識がなくても十分構築 できる。ただし、SQL の構文、JOIN キー の型の整合性等により、パフォーマンス が大きく変化する。十分な検証が必要で ある。  関連する各種情報を同時参照可能とす ることで、5250 アプリケーション以上 のTotal パフォーマンスが得られる。今 後は、抽出に時間を要する機能について、 パフォーマンスを改善する手段をさらに 追求したい。