モバイルで底値データベースを持ち出す

私はこの配色が気に入っているんですが
やっぱ見づらいですかね?
下の色のボタンを
クリックすると背景色が変わります



先日ふとみたら、MSYS、MinGWのサイトで、Perlが5.8にバージョンアップしていました。

FreePWINGが使えるじゃないというので早速インストールしてみたら、あっけなくできました。

ウィキペディアを変換してみようと思ったのですが
素性のよろしい(?)ちゃんと文法が正確なダンプファイルは、相互参照もばっちりできたのですが、
やはり、文法にエラーがあると、そこでとまってしまいます
不特定多数で書き込みをしているので、全員に文章のルールを守って書いてもらえるわけでもないので、
やはりウィキペディアをウインドウズで変換するのは少々しんどいですね。
また、ImageMagickも、本家サイトにMinGW用のバイナリーがすでにアップされているのですが、
ウインドウズ用のPerlMagickは、ActivePerl 用だけのようで、やっぱりCygwinでないとソースからインストールするのは無理のようでした。

やはり、リナックスじゃないと駄目か、

うーん、せっかくウインドウズで、お気に入りのMSYSで、変換ができると思ったのに、と、少々残念に思っていました。

私がEPWINGを知ったのは、2008年に、
Googleの検索結果でウィキペディアそっくりの内容のサイトがひっかかるので
どうもウィキペディアのミラーサイトがあるらしい
ウィキペディアのデータを配布しているのではないか、と思って
そこから調べていったら、EPWINGに辿り着いたわけですが


前前から、検索言語をいれるとぱっと結果がでてくるのがすごいなぁ
と思っていて、辞書とかそういう用途なんだろうな、と思っていたのですが

なにか、EPWING版のウィキペディアのHONMONをうちのサイトでアップしていると
アクセス解析からどうやら青空文庫のEPWING版を探してやってくる人が結構いるみたいだ、
というのに気が付いたのですが、
どう考えても、青空文庫のEPWINGに検索キーワードを載せる場合に

作者名と作品の題名、くらいしか思い浮かばなくて
まさか、登場人物の名前とか、出てくる地名とか、あらすじとか、いちいち読んでから登録するのも
あれだけ膨大な収録点数があるので、全部読むのは無理ですし


まあ、最近は事情がかわって、もしかしたら、MeCabで、中身を解析して、
頻度の多いものを機械的にキーワード登録していけば、あるいは使用に耐える品質になるかもしれないけど

でもしかし、HONMONが無駄に膨大なデータ量になってしまって
本末転倒になるのではないか、と思うし

わざわざ、青空文庫のほうで、調べやすいように、作者名からと題名からで50音順に並べてあるので、
Wgetでサイトを一年に一回とか半年に一回とか、青空文庫のサーバに負担をかけないような頻度で、
全部ダウンロードすればいいだけの話なんじゃないかと思って

すごく不思議だったのですが

なぜ、青空文庫のEPWINGにこだわっている人がいるのかというのが
ひょんなところから疑問が解決して

どうやら、昔、まだ、電子ブックが一般的ではなかった時代に
出版社から、EPWINGで、書籍が出版されたことがあったらしい
というのが、なにかを調べているときにひょいっとでてきて

ああそうだったのか、と納得したわけです。


しかし、パソコンのCPUの能力も上がって、メモリーも多く積めるようになった現在、
わざわざEPWINGに変換しなくても
ブラウザーなどで、楽々、一気に一冊分の文章を読み込んでも
フリーズすることはめったに無いですし
もうEPWING版にする必要はやっぱりないよなぁと思いました。


じゃあ、なんに使うんだ、
なにかほかの用途に使えないもんだろうかと、しばし考えていたところ

そうだ、持ち運びに便利なデータベースだったらどうだろう、と思い立ったわけです。

データベースは、Microsoft Accessとか
フリーでも、MySQLとかありますが

WindowsCEに乗せるのにはちょっと無理でしたし
ちょっとPDAを使おうと思って結構周辺機器に投資をした途端に、各社が一斉にPDAから撤退してしまった苦い経験があるので
羹に懲りて膾を吹くじゃないですが
時代遅れかも知れないですが、スマートフォンとかにはいまだ手を出していないのですが
それでも
アップル社のや、アンドロイド携帯などで
データベースを扱えるソフトがなにかなさそうですし
しかし、EPWINGなら、ソフトを配布している人がいるわけで

これは使わない手は無いんじゃないか、と思いました

で、私は買い物をしたレシートを一時期家計簿をつける代わりに

中古で買ったパソコンにWINDOWS2000を載せて
そこにAPACHE、MySQL、PHPなどを載せて

PHPで簡単なフォームを作って
買い物をした商品ごとに

店名、商品名、金額、支払い方法、日付
なんかを登録して

ある程度たまったら、CSVファイルに出して

それを、インターネットエクスプローラを使って
Javascriptのデータベースで読み出し、
サーバのないパソコンやPDAで参照する

みたいなのをやって

例えば、ブランクDVDなんかを買うときに
安い時期と高い時期があったりするので
値段を見比べながら検討したりなどという目的で
データベースを作って

買い物の管理をしていたわけですが

いちいち、サーバーをたてなきゃならないし、
普段、ネットサーフィンをしているパソコンにサーバを載せるのはなにか怖いですし
公開してなくても接続してくる人とかいるので、
それに、 買い物をする度に、サーバーのパソコンの電源を入れて、接続しなきゃならないのも 鬱陶しいし、

なにかいろいろ面倒だと思っていたら

インターネットエクスプローラー6がなにか
マイクロソフトが躍起になって終了させようとしていて
それに合わせて、IE6では、なにか見られないサイトが増えてきて
ネットサーフィンも、しにくくなってきましたし

そのJavascriptのデータベース読み出しも
Firefoxではできないので

途方にくれていたわけです。

なにかCVSファイルの簡単なデータベース化と、その検索抽出を含めた読み出し方法はないものかなーと
何気にぼんやり考えていたわけです。

で、それとは別に、
2008年頃に、WikipediaをEPWING化するソフトがあって、
ほぼ自動でさくっと、XMLをEPWINGデータベース化する作業を始めたりしていて

まあ脳内で、なにか
CVSファイルをデータベースにして簡単に検索や参照をしたいな
という要求と

FreePWINGというソフトがばらばらになにか別々に存在していたわけです


で、なにか
今回、改めて、なにに使うんだみたいな感じで考えていて

ああ、CVSのデータベースには、FreePWINGが使えるんじゃないか?

とやっと思い当たったわけです


で、私の買い物リストをここで公開するわけにはいきませんので、・・・えへへ





で、まあ、誰でもぱっと思いつくらしいですが
サンプルとして

いまさらですが
CSVでデータが配布されている郵便番号のファイルを使って

CSVからデータを抽出して、EPWINGに変換しようと思い立ったわけです

ゆくゆくは、個人のデータをプライベートにEPWINGに変換して

底値表を持ち歩いたりして店頭で検索してみたりするのを目的にしたらいいんじゃないかなとか思いました

まあ、個人用のプライベートなデータが載っているようなCSVの変換プログラムをネットに出すわけにも行かないので
今回は郵便番号データCSVファイルからEPWINGを作成する方法をアップします。
後は応用してみてください。
今回は、私のメモ代わりの覚書みたいな内容です
ネットにあげておくと結構後から調べ物をするときに楽なんですよね
オフライン前提の話をしているのに本末転倒みたいな話ですが。



さてさて、まずMSYSですが いままで使っている人は
MSYS、MinGWのサイトからPerlの5.8をダウンロードしてきて
MSYSに展開すれば、すぐに使用できます。


これから新規にMSYSをインストールする人は

まず、MSYSのサイトから

http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst


mingw-get-inst-20111118.exe (20120206現在)をダウンロードして

ダブルクリックでインストールします

なにか以前と比べて、すごい楽になっています。

そして普通に一通りインストールしたら

デスクトップにできているMSYSのショートカットをダブルクリックして

をやります。

次に

とやって、自動でインストールできるプログラム名をlist.txtに打ち出します。

それから、抽出したリストを全部突っ込みます


もう全部一度に入れます。
なにか、後から、これこれのパッケージに分割してあるのだというので
掲示板でMSYSの開発者と一般ユーザがやり取りをしていて
一般ユーザーがあっけにとられているさまがひしひしと伝わってくるので
私もImageMagickをインストールするときに
あれが無い、これがないとエラーになって
なにか、これこれは、別のディベロッパーパッケージに入っているとか後からグーグルで調べたら掲示板のやり取りとか引っかかって、ドつぼにはまったなみたいな脱力感がひしひしと襲ってきたので

このパッケージ分類は、
一般的なGNUのような、ほぼ確立されたわけ方ではなくて
MSYSもいま、試行錯誤中で
MSYSのプロジェクトの人たちの恣意的な分類なのだとつくづく思ったので

ついでなので全部いれます。
全部入れておきましょう。

長くなるので、2回に分けてインストールしましょう。

wgetでもhttpsサイトに普通にアクセスできるようにするために、以下もやっておくといいらしいです。

参考サイト ラシウラさん
http://d.hatena.ne.jp/bellbind/20110612


で、ここまでで、すでにPerlがインストールされているので
FreePWINGもソースからインストールできます。

でインストールしましょう。

さて、今回は郵便局の郵便番号データをEPWINGにするので
ダウンロードします
http://www.post.japanpost.jp/zipcode/dl/kogaki.html

http://www.post.japanpost.jp/zipcode/dl/jigyosyo/index.html

からそれぞれ、ken_all.lzh、jigyosyo.lzhをダウンロードします。


CSVファイルはShift-JISでかかれているのだそうなので

FreePWINGはEUC-JPでないと、文字化けをするそうなので

nkfかiconvの利用を考えます

なにか最近、UTF-8でソースを書くのが流行しているそうで

use utf8

などを使うそうですが

私はたびたび、文字コードで痛い目をみているので

できれば、Perlのソースの中でごちゃごちゃいろいろやるのは避けたいので

先に、CSVファイルをEUC-JPに揃えておくことにしました。

今回はベクターからnkf.exe nkf32.dll Windows用
http://www.vector.co.jp/soft/win95/util/se295331.html

をダウンロードして
nkf32.exeをnkf.exeに名前を変更して
MSYSのbinフォルダーに入れてください

準備ができたら

適当なフォルダーをMSYSの作業できる場所に作って

その中に、変換ソースファイルと、Makefileと、CSVファイルを入れます

まず、一般の郵便 ken_all.lzh の方から処理をはじめます

あらかじめ、別のソフトで解凍してCSVファイルにしておきます。

それから

Makefile


fpwyuubin

の二つのファイルを拡張子なしで、EUC-JPで 保存します。

Shift-JISしか扱えないメモ帳で保存したときは

nkfで

とやれば、変換されます。

で、

fpwmake

をやって変換し
カタログファイルも
catalogs.txt

をEUC-JPで保存して

fpwmake catalogs

でカタログファイルを作つくります。

そして、

yuubin\yuubin\data\

というような感じに新しいフォルダーを作って

dataフォルダーにHONMONをいれて
その二つ上のフォルダーにカタログファイルを入れます


最初のyuubinフォルダーをあけると、yuubinというフォルダーとcatalogsがあって
そのyuubinフォルダーをあけるとdataというフォルダーだけが入っていて
そのdataフォルダーの中にHONMONが入っているような感じです



出来上がりです



同じように、事業所郵便番号も新たに、MSYSの作業スペースに新しいフォルダーを作って その中に、変換ソースファイルと、Makefileと、CSVファイルを入れます

Makefile


fpwyuubinjigyou



事業所ファイルのCSVには
項目に空欄がある個所があって

FreePWINGで変換途中に

word is enpty

なるエラーがでて、とまるので結構あせります
0985298 枝幸町役場 歌登総合支所 北海道 枝幸郡枝幸町などがそうです。

FreePWINGは、記号を削除する機能があるそうなので
本当は目立たないコンマとか、ピリオドでお茶を濁したいところですが
削除されてしまってまた空欄でエラーがでて怒られてしまいますので

空集合をあらわすΦを利用して(本当はファイじゃないそうですが、あえて暫時)
まあ、Φを住所宛名に書く人はいないだろうという期待もこめて
あえて、すごい目立つ記号で、空欄を埋めておきます
事業所郵便番号CSVはそこが注意点ですね。

なにか以前は、エライいろいろ書かなければならなかった
カタカナ、ひらがな変換が

use Encode;
~ tr/ァ-ン/ぁ-ん/;

で済むのも、時間の流れを感じさせます。いや楽になったもんだ。

簡単なPerlの知識さえあれば
CSVを分解するのは簡単ですので

EPWINGには
HTMLのタグを入れるような感じで、追加していけばいいので

FreePWINGの開発者には感謝感謝です

東芝J40で、Ubuntuでは、郵便番号に15分くらい、事業所は瞬時でしたが
intel815 Windows2000 CPU1GHzでは
郵便番号の変換に30分、事業所郵便番号は5分かかりました

でもまあ、毎月一回、待てないことは無いくらいの時間です

自分用の
お買い物底値データベースや
蔵書一覧
購入したソフト一覧
名刺管理データベースなどは

多分、普通の人は郵便番号よりも情報量が少ないはずです
頻繁に更新するのだとしても、十分普段使いに耐えられる作業時間だと思います

(20120206) (加筆20120329)



女の子お絵かき掲示板ナスカiPhone修理