弐条海月の とはずがたり

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

» 2011-07-21の日記

HSPで開発したアプリをLinuxのWineで動かす

社内で保管している膨大な量のテキストファイルを簡易データベース化してこれを検索できるアプリケーションを、Windowsで動作するフリーのインタプリタ型プログラム言語「HSP(Hot Soup Processor)」で開発し、運用しております。このアプリケーションをLinux(Ubuntu、Linux Mint)のWineでも動作するようにここ数日かけて大きく改良しました。その記録です。

まずはこの検索アプリについて説明

この検索アプリは、数々のテキストファイルを1テキスト1行とし、それを1年分にまとめた簡易データベースを検索できるアプリです。簡易データベースの作成アプリも別にあって、毎日動作させては1日に40~50ファイルくらいのテキストを追加しています。簡易データベースは1年に10~12MBくらいのサイズになります。

この簡易データベースは2001年から現在までのファイルを格納していて、自由にその内容を検索できる仕様です。検索結果は年月日、テキストファイルの元の名称、関連する画像の有無なども分かるように一覧表示され、テキストファイル名をクリックすると、右側のエリアにテキストの内容も表示できるようになっています。本来ならば画像で紹介できれば分かりやすいのですが、業務内容が分かってしまうのでできません。

選択したテキストは、内容の一部をコピー&ペーストしたり、あるいはファイルとして書き出すことも可能です。関連画像がある場合は、その画像が格納されているフォルダを開くこともできます。

開発したのは2007年で、そこから改良を加えつつ現在に至ります。未だ完成した!とは言えないアプリなので、現在はβ13ということにしております(笑)。

今回のアプリ改良の目的

このアプリはWindows 9X、XP、Vista、7にて現在運用されておりますが、Ubnutuでも使えるようにしたかったんです。当初はPythonを習得してOSに依存しないアプリケーションの開発に乗り出すつもりでしたが、私が仕事で使っているWindowsマシンが98SEなので、Python 2.5までしか対応していないんです。できればPython 2.6以降で開発したいので、現状では難しい…。そこでHSPで開発したアプリをUbuntu上のWineで動かす方法を試すことにしたのです。

最初の難関

HSP本体をUbuntu上のWineにインストールして動作させることできます。簡単なアプリケーションの開発も十分行えます。ただし、サーバーとの接続がうまくいきません。純然たるWindowsとはパスの概念が異なるのでうまくいくはずがないんですよね。じゃあ、どうすれば良いのか…そこでしばらく時間がかかりました。

問題解決

たとえば、Windowsでアクセスできるサーバーのアドレスが「\\\\SERVER\\○○○○○」だとすると、このサーバーをUbuntu上でマウントした場合は「Z:/home/ユーザ名/.gvfs/○○○○○@server”」になるんです。Ubuntu上のWineでWindowsアプリを動作させる場合、このパスを使ってサーバーにアクセスする必要があります。これが分かってからは、動作しているOSを判別してパスを切り替えれば良いんだと開発が進むと思っておりました。

 

新たな問題

ところが、OSを判別できなかったんですよね(笑)。Windows 98はそのまま98、XPはWindows_NT 5.1、Vistaは同6.1、7は同7.1と判別できますけれども、Ubuntu上のWineはXPの「Windows_NT 5.1」を名乗りやがるんです(爆)。これでは判別できない…そこで新しい方法を試すことにしました。

 

こんどこそ問題解決

その方法とは…デスクトップの場所を探る方法です。Windows 98ではデスクトップの場所が「C:\WINDOWS\デスクトップ」となっております。XP以降では「C:\Documents and Settings\ユーザ名\デスクトップ」です。そして、Ubuntu上のWineでは「z:/home/ユーザ名/Desktop」です。これでOSの判別ができました。後は、いちいちパスを保存した設定ファイルを手動で書き換えるのも面倒なので、検索アプリの起動時にデスクトップの場所を取得し、前回と異なるようであれば違うOS上で動作させていると判断し、INIファイルを再設定する仕様に変更しました。これで異なるOSでも動作させることができます。良かった良かった(笑)。

さらなる高速化へ

この検索アプリは、サーバーに繋がらない環境でもローカルに簡易データベースを格納しているので動作するのですが、サーバーにアクセスできる状況下ですと、簡易データベースの更新もできるようになっているんです。ところが、データベースの更新後も、アプリケーションはサーバー上のデータベースを使って検索する仕様にしていたことをUbuntu上のWineでテストした際に初めて気づきました。

というのも、Windowsで動作させる場合は、サーバー上の簡易データベースを使ってもそう遅くはならなかったので気づかなかったのですが、Ubuntu上のWinëで動作させると検索スピードが格段に遅くなることから判明したのです。

もちろん、サーバーへのアクセスの有無にかかわらず、検索は常にローカル側の簡易データーベスで行う仕様に変更しました。Ubuntu上のWineでの検索アプリのテストはネットブック「HP 1000 mini VIVIENNE TAM Edition」で行いましたが、検索スピードは会社で使うWindowsに比べると爆速でした(笑)。

例を挙げますと、Windows98SEのマシン(Pentium III 900MHz、メモリ512MB)で2001年~2011年の簡易データベースを「プログラム」というワードで検索してみます。年単位で11のテキストファイルからなる総行数158229の簡易データベース中、ヒットした件数(テキストファイル数)は791件。検索から表示まで3回の平均値は16.3秒でした。Ubuntu上のWineで動作させた場合は3回の平均は8.46秒でした。その差は歴然。まぁ、通常の使用では2001年から検索することはほとんどなくて、今年の分あるいは昨年を入れた2年分での検索がほとんどですから、そうなるとほとんど待ち時間はないです。十分な速度で動作していると思います。

結びに

Ubuntu上のWineで動作させることになった時、検索アプリの本体をWindows用とLinux(Wine)用に分けて開発したのですが…やはり不都合というか、面倒なので頑張って統合して開発できて良かったと思っております。また少しだけHSPでのアプリケーション開発のスキルが上がったと自画自賛。でも本当は早くPythonを習得したい今日この頃です(笑)。


Linux Mintで使うアプリの話…

ネットブックに入れて使っているLinux Mintのお話です。今日は私が使わないアプリケーションやら、常用しているアプリケーションなどについて書きます。

まず、チャット系のアプリケーション「xchat」「pidgin」はいらないので削除しました。使いやすいTwitterクライアントが欲しくて取りあえずUbuntuで採用されていた「gwibber」を入れてみます。Gnomeデスクトップ環境ではメニューバーに「gwibber」が統合されていてTwitterクライアントとしても使えたので便利だったのだけれど、Linux Mintでのメニューバーへの統合の方法が分かりません。

また、Twitter専用アプリ「Qwit」も入れてみたのだけれど…どちらも一長一短があるように感じます。これだダメだったら、ブラウザのアドオンでも試そうと思います。まぁ自宅でネットブックで作業をすることがそう多くはないですし、TwitterはMacBook ProでもiPhoneで使うほうが断然多いので、いらないと言えばいらないのかもしれませんけれども。やっぱり、あると便利なんですよね。

それから、複数のマシンを使う上では必須とも言える「dropbox」を追加しました。書きかけのテキストの編集とか、画像のやりとりなどで重宝しています。iPhoneで撮影した写真はiPhotoにいちいち入れるのが面倒なので、必要なものだけをDropboxに追加し、日記で使用しております。画像はある程度たまったらまとめてiPhotoに入れるようにしているからです。

また、自分で開発したWindows系のアプリを使うためにWineを追加しています。「HSP(Hot soup Processor)」で開発したアプリ。この話は別に書きます。

あとは音楽制作を趣味にしている私には必須とも言える「Audacity」です。これはフリーの波形編集アプリで、WindowsでもLinuxでもMacでも動作するだけでなく、ファイルも共通で開くのでとても重宝しているんです。主にネットブックを持ち込んで音源を録音するのに使っていますけれども、最近忙しくて手付かずですが仕事で新しい分野に挑戦することになり、そこで活用することにもなっております(笑)。


OS X Lion

250を超える新機能を引っさげたAppleのMac用新OS「OS X Lion」がいよいよリリースされました。これまでのMacのOSで一番安い2600円という価格で、しかもMac App Storeからのダウンロード販売という新しい形でのリリース。さっそく購入したのですが、混雑しているためかダウンロード(3.49GB)には時間がかかりました。OS X Lionの私なりのファースト・レビューです。

新しいOSにはいつもワクワクしますから、OS X Lionの登場には諸手を上げて歓迎…なのですが…。冷静に判断しながら使ってみますと…私が持っている従来の古いデスクトップのしがらみから抜け出すのは容易ではないと思いました。

インストールが終わって、再起動後のログイン画面が変更されておりますね。なんとも形容しがたいですが、ちょっとおしゃれな感じ。iOSっぽい?かもしれません。従来よりもさらに洗練された印象です。スクリーンショットが取れないので写真を撮ってみました。暗いですがこんな感じです。

 

ログインして、いよいよLionが起動しました。パッと見た感じではデスクトップ上はほとんど変化を感じられない…と思いきや見たことのないアイコンが2つ、Dockに追加されています。「LunchPad」と「Mission Control」ですね。

取りあえず、時間がないのでちょっと使った雑感だけ記しておきます。

マルチタッチ

例えば…トラックパッドによるマルチタッチがそう。あまりその恩恵には預かれていない気がします。スクロールの方向が変わったのが一番大きいですね。下にスクロールさせたいときは上に動かすという従来のスクロール方式をあっさりと捨て、指を動かす方向にコンテンツが移動する方式に変わりました。確かに、初めてパソコン(OS X Lion)を触る人には指の方向にコンテンツが追従するので極めて直感的だと思います。ですが、今までの常識とは逆方向の動きをするので、戸惑う人がたくさん出ることは必至ではないでしょうか。

私の場合は…仕事でWindowsを使います。会社ではMacも使いますが、OS X Lionが動作する環境ではないので、スクロールは従来のままです。Ubuntuも使いますが、やはりスクロール方式が従来のままですから、これでは自宅でも会社でもスクロールに違和感を感じながら使わねばなりません。

OS X Lionのスクロールの方向は「システム環境設定」の「トラックパッド」内のタブ「スクロールとズーム」で変更できます。ただ、恐らく(きっと)iOS 5もスクロールをLionと同じように変更してくると思うので、今から慣れておいたほうが良いのかもしれませんけれども。

LanchPad

iOSのようにアプリケーションを選ぶことができるLanchPadは、Dockにあったアプリケーションフォルダの全画面版といった印象。アプリの並び替えも可能ですが、アプリケーションフォルダに入っている純然たるアプリケーション以外のもの(インストーラーとか)も表示されます。iOSと同様にアプリケーションを並べ替えたり、フォルダに入れて管理すれば使い勝手は良くなるかもしれませんが、よく使うアプリケーションはDockにいれておけば良いので、たまに使うアプリケーションが従来より呼び出しやすくなった程度の印象しかないです。

うーん、否定的なことを書くつもりはまったくなのですが…ちょっと触ってみた感想はそんなところですかね。時間がないので、レビューの続きはまた後ほど。


固定ページ

最近の投稿

カテゴリー





カレンダー

2011年7月
 123
45678910
11121314151617
18192021222324
25262728293031

過去の日記はこちら

キーワードで検索