弐条海月の とはずがたり

そこはかとなく書き綴るブログなるもの

簡易データベースの並び替え…

 仕事用に開発した自作の簡易データベース作成プログラムを大幅に改良しているのですが、それに付随して過去の簡易データベースの中身をひっくり返す必要があったため、そのサポートアプリを開発しました。一応、その記録です。

 今回は何も難しい処理をしていません。単純に簡易データベースの並び替えを行っているだけです。簡易データベースの中身は、単なるテキストです。もともとは数多のテキストファイルだったのですが、それを1行=1ファイルとして1日毎に異なるタグで囲み、簡易XM風にまとめたものです。これを読み込んで検索アプリが動作しますので、検索速度向上のために並び替える必要があったのです。

 ドラッグドロップで追加した簡易データベースファイルを開き、頭から順に呼び出して旧データベースが潜在的に抱えていたバグの回避処理を行った後、変数の頭に追加していくだけ。これにより、今までは古い順にならんでいたデータが新しい順に並びます。

 ところが、途中でものすごく処理が遅くなるため、1年分のデータベースを5つに分割して処理を開始。合間にさらなる速度向上を図るためプログラムの見直しと書き換えを実施しました。

 その中で分かったことは、HSは変数にデータを追加した際に動作低下を起こすのではないか、ということ。最初のプログラムでは1行づつ読み込んで別な変数に追加していく処理が300行くらいから徐々遅くなっていったのですが、読み込みだけであれば最初の速度を維持したまま処理が可能であることが分かったからです。また、処理の効率をアップさせるため、必要な行でのみバグ回避処理を行う仕様に変更(笑)しました。もちろん、一番の問題はマシンスペックにあるわけですが…。

 次に、並び替えのデータをどうやって作るかですが、動作速度を落とさないため、単純に変数に加えている方法はやめます。そこで、メモリノートパッド命令によって先頭行に追加する方式を試してみます。
この方法だと、書き込みをしない時と速度が変わらないので劇的にプログラムが改善できますね。私的には、これがダメならばsotenote命令で並び替えることも検討し、実際に試してみて一瞬で処理ができることを確認していたのですが、そこまでやる必要もありませんでしたね。

 ここまで完成したところで、通常の仕事を進めながら、バックグラウンドでデータベースの並び替え作業を進めました。今日は2008年からさかのぼり、2005年まで完了。明日も続きをやります。


簡易データベースの作成プログラム…

仕事で使っている自作の簡易データベース検索プログラムを改良しているのですが…その際にデータベースそのものの作り直しが必要となったため、簡易データベース作成プログラムを新規に開発し直しました。これがほぼ完成したようで、動作チェックしながら今年のデータベース(今日までの分)を作成することができました。

簡易データベースは従来のそれとは異なり、新しいものが上にくるようにしてあります。そのほうが検索速度に有利に働くことが分かったためです。また、旧型のアプリはかなりバグが目立っていたのをだましながら使っておりましたが(笑)、その部分も改善してあります(…あると思います)。結論から言うと…従来のものより大幅に性能が上がっているのですが、作成したデータベースの保存方法を変えているため、速度は大きく低下しています(笑)。

ただし、速度の低下が顕著に表れるのは、データベースを新規で構築する必要がある時だけです。今回のように1月~12月のデータを作成するようなことは通常ならがあり得ないことなので、問題ないと思います。何しろ、普通は1日ないし多くても2、3日分のデータベースしか作成することがないからです(爆)。

さて、ここでデータベース検索プログラムの開発に戻ろうかと思いましたが…そうもいきません。過去のデータベースを作成しなければならないからです。ただし、過去のデータベースは、元になっているデータそのものがもう存在しておりませんので、旧データベースを元に新しいデータベースを作らねばなりません。これは単純にデータの並び替えを行えば良いので、暇な時間を見つけてサクっと作ってしまおうと思っています。


プログラム開発…法則性は大切です

先週のことでしたか、 2009年12月08日 仕事で使うサポートアプリ開発… で書いたプログラムを開発して便利だなぁ…と思っておりましたが、週1回あのアプリを使用する日がやってきました。サクっと動作することを期待してボタンを押したら…さっそくバグが発生しました(笑)。

急いでプログラムを組んで完成させたアプリですので、エラー処理とかがまるでなっていません(笑)。それでもシンプルな構造ですから、順を追って画面に処理結果を表示しながらバグが発生しているヵ所を調べると…すぐに判明しました。

データ内にある特定の文字とスペースが2つ入っている箇所で題と名称とを分離しているのですが、今回のデータは特定の文字とスペースが1つしか入っていなかったため、処理が止まっておりました。記述の法則が違っているのは、過去2週間分のデータとは違う人が作成したからなのでしょうかね。分かりませんけれども。

もちろん、すぐに対応するべくプログラムに手を入れました。特定の文字があれば、スペースが1つでも動作する仕様に変更して解決です。こういったチカラ技的な作業は得意ですからね。別の取引先から送られてくるPDFファイルのリネーム処理プログラムで鍛えられておりますので(笑)。

無事に動作することを確認し、紅茶でひと息つきながら…
「うーむ、法則性のない仕事っぷりの取引先が多いなぁ…」
と、ふと思ってしまった今日この頃。。


検索プログラムの改良…

フリーのプログラム言語HSPで開発した簡易データベースの検索プログラムを改良しています。本当はそんなことをしている時間はないのに…っていつも書いていますが、本当なんですよ(笑)。今時期は本当に忙しいのです。

簡易データベースの検索プログラムは、データベース作成アプリと検索アプリの2本立てとなっています。まずは速度と効率のアップを目的に検索アプリを見直しました。起動時に日本語入力環境が立ち上がるようにしたり、余計な処理を省いたり、処理の順番を変えることで起動速度をアップさせるなど改造しているうちに、大きな2つの改善点が見えてきました。

1つ目は…検索結果を表示する際のウインドウの処理。当時は知識が足りず毎回ウインドウを生成しリストビューコントロールを作り直していたのですが、ウインドウはそのままに、リストビューコントロールの中身だけ消去して再利用する仕様に変更しました。当たり前ですが、その方が早いですし、効率が良いですし、何より自然です(笑)。

2つ目は…検索結果の表示は新しい順がデフォルトなのですが、検索結果は古い順に処理されるのを内部で入れ替えて表示しているのです。これは簡易データベースが古い順に並んでいるためです。なので、簡易データベースを作成するアプリのほうで、新しい順に作成する仕様に変更すれば、検索結果を並べかえずとも最初から新しい順で表示できます。検索結果が多ければ多いほど、有効な仕様変更と言えましょう。

という訳で…さっそく簡易データベースを生成するアプリの改造にも着手したのですが…バックアップを取らずに始めたため、今までのデータベースを操作できなくなってしまいました(汗)。

月曜日はメインの仕事を優先させながらも、新しい順で並べた簡易データベースの生成アプリと検索アプリの完成を急がなければ…。


仕事の話です…

今日は色々な仕事が重なって多忙を極めた日でした。「たとえ帰りが遅くなろうとも、予定の仕事はすべて終わらせる!」と意気込んだのですが…ダメでした(笑)。

最近は体調も良くすこぶる元気なのに、集中力が続きませんね。そんな時は、何をすべきかを見失ってしまいがちなので、とりあえず最低限今日やっておくべきことが終わっただけでも良しとしましょうかね。

本来ならばここに書くべきことではないかもしれませんが、一応日々の記録ですので表現をぼかしながらやはり書いておきます。

今日は前の部署にいた時からの流れで、私が継続してやることになった仕事の続きをやりました。これについてはもっと前から準備はしていたのですが、やはりいざ必要にならなければ仕上げることができなくて…結局期限ギリギリでの仕事になってしまいました。それでも納得のいく仕上がりになったと自負しておりますので、後は受け手の判断に委ねたいと思います。

この他に集金とか、前の部署にいた時からの流れで私が継続してやることになった仕事の関係の打ち合わせ。加えてメインの仕事が通常の3倍(マジメに!)と…驚くほど忙しかったのです。

まぁ、一番驚いたのは、それほど多忙だったにもかかわらず、私自身がそれほど疲れを感じていないということ。確かに集中力はとぎれましたけれども。まだ闘えます(笑)。明日も相当忙しいですが、頑張ります。


固定ページ

最近の投稿

カテゴリー





カレンダー

2024年5月
 12345
6789101112
13141516171819
20212223242526
2728293031  

過去の日記はこちら

キーワードで検索