wxPythonでAA管理ツールを作ろう!閑話休題 AAの登録
あいさつ
つかさです。
今回からは応用編です。基礎的なやり方を学んでいく、というのからはずれます。
問題点
AAを管理する方法で問題になるのは、「一々AAの登録をするのが面倒」ということに尽きると思います。
- AAに一意的に名前を付けられるか。たとえばつかさAAは複数あるが、それぞれをどう名付けるのか
- 名前をつけるのが難しい場合はどうするのか
- 名前を付けたとして、分かりやすいものならいいが、それ以外ならあとで検索して、たどれることが無理になるのではないか
データベースみたいなのを作って、一々タグを付けて管理していくというのもありえますが、個人でやる以上、手間がかかりすぎて破綻すると思います。また一意的にタグをどのようにしてつけるかも難しそうです。用途に合わせてというのも、AAの場合では無理でしょう。
またデータベースを集団で作るというのも、それで有用なのができるのかどうか。誰でもたどれるキーなんてあり得るのか。
画像管理の方法の応用
そこで思いついたのが、画像管理の方法の応用です。
画像というのは、ネットで落としてきた場合でも、名前というのは適当なわけです。一意的に名付けなんてしようがない。ならばどう管理するかというと、フォルダ分けを使うわけです。猫耳でもケモナーでもテリシアでも柊つかさでもめがねっこでも、とりあえずフォルダを作って名前で判別するようにしておく。そしてそのなかに、ファイル名は適当で画像を放り込んでいく。そして、あとで画像を探す場合には、そのフォルダ名からありそうなフォルダへまずいって、そのあと内容を表示して、その画像をめくっていって目的のを見つける。こういうことをするわけですね。
- ファイル名は適当
- 画像表示をして管理
AA管理への応用
これを応用するとどうなるか。AAにあわせて、フォルダを用意するわけです。柊つかさ、中指、お断りします、みたいにAAにあわせてカテゴリ分けをする。そして、そのなかにファイル名は適当に、AAを放り込んでいく。あとは、検索するときにはそのフォルダ名をキーにして、目的のフォルダへまずいって、そのあとでそれをひとつひとつツールチップ表示で閲覧しながら目的のAAを探す。
D:\bin\SETZER\AAList └─AAList ├─お断りします ├─ねじれ ├─ほむら ├─まどかマギカ ├─ゆのっち腹パン ├─ゆるしてにゃん ├─ティッシュ ├─テリシア ├─ビンタ ├─中指 ├─化物語 ├─柊つかさ ├─矢印 └─長門有希
フォルダ名をキーとすることで、その中のファイル名は適当でもよくなるのですね
実装へ
で、このような構造を作ったとしてどうやってそれをプログラムで実装するか、です。
まずはじめに考えたのが、fenrirの方法をまねること。ディレクトリとファイルというように分離し、ディレクトリモード、ファイル検索モードと分離する。
そして、ディレクトリにヒットしたら、カーソルキーを横に押せばそこにあるファイルが一覧表示。それにカーソルをあわせると、ツールチップ表示がなされる。
fenrirにツールチップ表示がついたのを考えてくれるといいと思います。まあこのように、モード分けをしたランチャを作ってしまえば可能なわけですね。
問題点は、ランチャを作る手間がいるということ。今まで作ってきたのよりははるかに複雑なわけです。さらに、ListBoxではなくListCtrlを使う必要が出るでしょう。さっすがにAA管理ツール程度で、そこまでやるのはなあという気がします。
発想の転換
そうして思いついたのが、「キーをディレクトリ+連番にする」です。
どうせフォルダに放り込んだのなら、名前なんて見ないんだからどうでもいい。それなら、そのフォルダにあるファイルをすべて、「ディレクトリの名前+連番」にして、ListBoxに他のと一緒に並べたらそれでいいのではないか。それと、対応するパスを辞書で結びつければそれでいい。そうすれば、そのディレクトリの名前を検索すれば、その中にあるのがヒットし、表示される。あとは、そこからツールチップ表示で選択すればいい。
柊つかさディレクトリに入れたテキストファイルは、そのファイル名にかかわらず次のように表示され、それぞれがキーとして、そのパスと結びつけられることになる。
このようにすれば、一々ディレクトリ構造を実現する必要もないし、また名前とか適当なままフォルダに放り込んだとしても何の支障もない。またルートフォルダにおいた、ファイル名をつけてそれで判別したいファイルとも矛盾しない。ただ、ルートフォルダには名前-数字.txtというのをおかないようにすればいいだけだし、おいたとしたってAAが一つ表示されなくなるだけでたいしたことではない。
工夫
工夫として、名前-1のファイルをリストの上の方に並べれば、検索キーにもなるだろう。
ここではフォルダ構造は一階層のみだが、複数にすることもやろうとすればできるはず。
まとめ
ということで、ではこれを実際にどうやって実装するかという話を次回行います。
このあたりにくるともう、最初の趣旨の、基本的な作り方を知ってみるとかいうのとはかけはなれてきてるような。応用編というか、参考にしたいひとだけ見るという感じでしょうね。僕はこう進んだ、という一つのサンプルとしてご覧下さい。