【DO!BOOK・ページリンク】
2009_migaro_techreport_001   66 / 80

BOOKをみる

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


64 の場面ではいろいろと考慮しなければな らない。代表的なものが対象レコード数 である。  対象となるレコードが100 件や200 件であれば気にしなくてもよいかもしれ ないが、企業によっては、対象レコード が1 万件や10 万件、さらには100 万件 と膨大になることがほとんどで、この点 を無視すると実際に使える(ユーザーが 使用する)ものにはならない。  この場合、制御するポイントをまとめ ると、以下の2 点となる。 ● 処理速度に関する、パフォーマンスの 制御   検索を開始してから画面に表示し終え るまでの時間 ● 表示件数に関する、パフォーマンスの 制御  1 回の処理で画面に表示できる件数  表示件数での制御は、特にWeb アプ リケーションで考慮する必要がある。そ れはWeb アプリケーションの場合、一 度に通信できるデータの量を考慮する必 要が出てくるからである。 (Web アプリケーションであれば一度に 表示する件数を決め、ページを分けて次 のレコードを参照するのが一般的)  いずれも一度に全件処理をするのでは なく、順次に処理をする考え方である。 それでは、これらのポイントをどのよう にRPG で実装するか、その方法を以降 で具体的に説明していく。 順次読み込みの手法  これまでの5250 アプリケーションの 開発で工夫できる順次読み込みの仕組み を用いて、Delphi/400やJACi400(Web) で活用するための実装方法を紹介してい こう。 処理速度のパフォーマンス制御  前述した通り、100 万件のデータを一 度に抽出して画面に表示すると、処理に 時間がかかってしまうのは簡単に想像で きると思う。この場合、1 回の検索処理 の最大時間を設定することで対応する。  つまり、全体の抽出処理を複数回に分 割してしまうのだ。分割することでユー ザーのストレスを軽減する。と同時に、 必要なデータを確認したら、以降の処理 をせずに終了することもできる。業務効 率が上がるはずだ。  さっそく、実際のプログラミングのポ イントを説明しよう。 @設定時間の計算  処理の開始ポイントを決め、その時点 でのタイムスタンプを内部で保持してお く。この際、開始ポイントは、プログラ ム起動時でも、ファイルのREAD 開始 時でもかまわないので、開発しやすいよ うにルールを決めておく。  そして、繰り返しでREAD するたび にタイムスタンプを取得して、開始ポイ ントと比較するのである。比較した結果、 設定時間を超えていなければ処理を継続 し、時間を超えていれば処理をいったん 中止すればよい。非常に簡単だ。 A読み込み処理を終了するタイミング  設定時間を過ぎたら処理を中止するの だが、ここで次回のために、続きの開始 ポイントを保持しておかなければならな い。また、その開始ポイントは、読み込 んだ最後のキーを持っても、次回開始時 のキーを持ってもいい。ただし、保持す るタイミングに気をつけなければならな い。  読み込んでいるファイルが1 つで、 キーがUNIQUE であれば、そのまま終 了しても問題はない。しかし、複数ファ イルを参照し、見出しと明細のような組 み合わせで処理している場合は、設定時 間を過ぎたからといって即時処理を中止 すると、本来対象として表示するべきレ コードが漏れてしまったりする。  このような場合は、見出しファイルの キーに紐付く明細ファイルの内容をすべ て処理し終えてから、読み込み処理を終 了しなければならない。  以上のことを考慮して、処理終了のタ イムスタンプを取得する場所が、適切な タイミングになるようにうまく設定す る。 B次回開始キーの保持  最後に、次回開始キーを保持する方法 である。キーテーブルを作成し、そこに 書き込む。  読み込み処理終了時にキーテーブルに 対して更新し、続きの読み込み処理を行 う時に、キーテーブルを参照し、読み込 み開始ポイントをセットするのである。  この場合、一覧照会画面を閉じる時に キーテーブルをクリアするか、画面起動 時にクリアする処理を忘れないようにし てほしい。  以上が、処理速度のパフォーマンス制 御のためのポイントである。【図1】  その他の細かいこと、例えば未処理の レコードがあるのか、全件処理を終えて いるのかを表示するなど、便利な機能も 実装していただきたい。 表示件数のパフォーマンス制御  次に、表示件数(データ量)において、 パフォーマンスを制御する方法について 説明しよう。  これは、Web アプリケーションの一 般的な仕様で、インターネットの検索 ページを思い出してもらうとイメージし やすいと思う。【図2】  よく見かけるのは、1 ページに20 件 の検索結果が表示され、画面の一番下に 残りの検索結果がページ番号として表示 されており、そのページ番号をクリック すると画面が変わり、別の20 件の検索 結果が表示されるというものである。こ れは、一度に通信できるデータ量を考慮 しており、さらには安定したレスポンス を提供することができる。  ここでは、JACi400 を使ったWeb ア プリケーションを例に、表示件数のパ フォーマンス制御のためのプログラミン グポイントを説明する。 @レコードの抽出  JACi400 の場合、プログラムはすべ てRPG で組まれることになる。一覧照 会は、内部テーブルを使って処理をする。  そのため、あらかじめ一覧表示用の外 部記述ファイルを作成しておき、その記 述を参照するように内部テーブルを宣言 する。そして、その内部テーブルに演算 命令の「OCUR」を使用して、抽出した レコードをすべて保管する。 A内部テーブルから、表示するレコード を取り出す  対象レコードをすべて内部で保管して しまうと、次は、画面に表示するレコー ドのみを抽出する。