at_pictureのタグ付けを分担できるようオンラインで共有するためのツールを作った

週末レスを書き込もうと思ってたら熱出してぶっ倒れてた。拙いブツですが使ってくれている人、どうもありがとう。2chは規制がかかって書き込めないのでこちらで。

総じて

書き込みを見ていて思ったけど、今回意図的に一緒にした

  1. at_pictureへの手作業でのタグ登録を楽にする機能
  2. ネット共有で自動化する機能

の2つは分離しようと思う。
明らかにネット共有がネックになって速度低下や機能障害を引き起こしているので。

まずは今週末くらいに前者を単独で高速化したのを挙げようと思うので、現バージョンはちょっと無視してもらえるとありがたいです。

当該ツールに関する個別レス

画像ファイル属性管理ソフト AtPicture Part 3における書き込みへの返答です。勘違いしてレス返すと自意識過剰(笑)って言われそうなので、当ツールに対してのものと明らかにわかるもののみに限定しています。レスないぞ、という方は個別に指摘頂ければ幸いです。

>>608
早速の使用どうもありがとう。一端ネット共有機能については開発停止するけど、せっかく入れてもらった今回のデータは次回以降に活かせるようにします。

>>609
ウィンドウの移動は実装しました。608氏同様オンラインDBへの協力ありがとう。自動処理はネット機能削除に伴い一端廃止されるのでモーマンタイです。

>>614
NOD32の最新定義ファイル適用状態でチェックされています。ネットへ接続しにいくのが誤判定されていると思われます。

>>619
620氏の説明の通りです。あとちょっとタグ付けを楽にしてくれる感じ。

>>621
うん。確かに基本的に共有される、っていうのに抵抗あるのはすごくよく分かる。P2Pツール的に暗号化してやればちょっとは抵抗減るのかなぁ……。

>>622
623氏の指摘通り、ESCです。すみません書いておくべきでした。

>>623
何か別のソフトで重い処理(典型例:動画のレンダリング)を走らせている、重量級アンチウイルスソフトで最大までセキュリティ確保のためあらゆる機能をフル稼働させている、などがあるとたぶんもたついてうまく動作しないと思います。次バージョンではなんとか改善してみます。

>>624
フルスクリーンは全く想定外でした。すみません。仕様ではなくバグです。

>>626,628
うまく動作してませんね。たぶん623氏に近いところで問題が起きています。次バージョンではなんとか修正を試みます。

>>626
migemoそのものは結構キツいのですが、その気持ちはよくわかるのでもうちょっと何とか出来ないか考えます。

>>639
色々不具合も出ているので、とりあえず現バージョンのは無視して、もしよければ次回以降のバージョンを使って頂ければ幸いです。


at_pictureのタグ付けを分担することが出来ると楽になるはず

説明を色々書くより動作を見た方がわかりやすいと思うので以下参照。

※元画像はここ
この画像に対してat_picture上でタグ付けをしようとすることを想定します。付けたいタグは、「マリ」「エヴァ」「iPod風」「アニメ」「お気に入り」とします。自分が使うタグについては、あらかじめ.tagsファイルに次のように記述しておくとします(起動後に追加するやり方は後述)。

mari : マリ
ipod : iPod
eva : エヴァ
anime : アニメ
kokaku : 攻殻機動隊
kabegami : 壁紙
okini : お気に入り

最初のローマ字は読み仮名として内部的に利用されるだけなので、全部丁寧に書く必要は無いけど、重複している場合は何のエラーも出さずに解釈するので注意が必要です。さらに、「マリ」は「エヴァ」に含まれ、「エヴァ」は「アニメ」に含まれる等のタグ同士の内包関係がある場合、.tagsファイルに次のように記述しておきます。

マリ < エヴァ
エヴァ < アニメ
タチコマ < 攻殻機動隊
攻殻機動隊 < アニメ

picdb.exeを起動すると画面右下あたりにこんな感じのボックスが出るはず。

ここでおもむろに「i」を押すと、上記の定義上、iで始まるタグ名はこれしかないので自動的に「iPod風」が選択されます。

もしここで「k」を押した場合、複数ありうるので次のように表示されます。

この候補順は選択された回数が多いほど下に表示されるようになっており、複数表示されているこの状態で「Enter」を押すと自動的に一番下の候補が選択されます。
「m」を押すと、同様に定義上、「マリ」しか該当しないので「マリ」が選択され、さらに「マリ」に関しては内包関係が定義されているので、マリを内包する「エヴァ」、エヴァを内包する「アニメ」がタグとして自動的に選択されます。これにより、今回であればキーストローク2回で4つのタグを選択できたことになります。

こんな感じ(ちなみに間違えた場合はテキストボックスが空欄状態で「BackSpace」を押すと、最後に選択したタグとその内包関係にあるタグが消えます)。この状態で「Enter」を押すと、at_picture側へタグ情報を書き戻します。

ちなみにこのとき、内部的にはキーボードショートカットをメッセージ送信してクリップボード経由で送りつけているので、パフォーマンスの悪いPCやなにか重い処理をしているとメッセージが届かず失敗することがありえます。もちろん、クリップボードになにか大切なデータがある場合も消えてしまうので要注意。さらに、このタグの書き戻しのタイミングでPicDBのネットワークDBへ「画像のハッシュ」と「付けたタグ」の情報が自動送信されます。
一方、例えば「お気に入り」というタグは個人的なものなので共有する意味がない(or共有したくない)場合は、次のように.tagsへ記述しておくことでネットワークDBへは自動送信されません。

お気に入り -

登録すると、自動的に次の画像に遷移し、その画像のハッシュ情報を取得してタグ情報があるかをネットワーク上へ問い合わせます。

※元画像はここ
ここでは、さっきの画像へタグを付けている間に、この画像へ誰か別の人がタグ付けをしてくれていたと想定します。つまり、ネットワーク上のpicdbに当該画像のハッシュ情報とそれに付与されたタグ情報(ここでは「iPod風」と「タチコマ」)がある場合、picdbは最初からその二つのタグを選択状態にして表示します。ただ、「タチコマ」というタグの読み方は自分の環境では定義されていないため、次のように読み方の定義を要求されます。

「Escape」か「キャンセル」か空白のまま「OK」でそのタグの登録処理は飛ばされます。このとき、こちらでは既にタチコマは読み方の定義はされていなかったものの、「攻殻機動隊」や「アニメ」に内包されている、という定義はあるため、オンライン上のDBのタグ情報にそれらを付与してタグの選択状態を構成します。

この場合、「Enter」を押すだけで「iPod風」「タチコマ」「攻殻機動隊」「アニメ」が登録されることになります。

以上が基本的な処理の流れになります。
以下はその他のポイントについて。

今at_pictureで表示されている情報をpicdbに把握させる場合は、F5を押すことでat_pictureと同期し、当該画像のハッシュ値にひもづくタグ情報を取得します。

一括で自動処理したい場合、空欄状態で「F9」を押すことで、数秒間隔で自動的に画像を遷移し、ネットワーク上のタグ情報をロードする自動モードに入ります(もう一度「F9」を押すことで止まります)。ある程度このツールのユーザが増えてきて、そこそこの確率でタグ情報が取得できて、しかも自分の手持ちの画像枚数が数百枚あったりするとき、寝る前にこれを押しておくと、朝には一定枚数が自動的にタグ付けされている、ということが可能になります。そういう風になると便利だよなぁ、と思って作ったものなので、基本的に誰かが付けたタグ情報は自動的に共有されるような仕組みになっています。少なくとも現時点では鯖側では誰がなんの画像になんのタグを付けたかはログ採ってない(といっても本当にそうなっているかは証明できないからアレだけど)です。

その場でタグ定義を追加したい場合、テキストボックス内に

!yomikata : 読み方

という形式(:の前後に半角スペースを1つ)で入力して「Enter」で登録されます(.tagsファイルにも自動的に追加されます)。タグの内包関係は.tagsファイルに書く必要があります。

課題

  1. at_pictureとのデータのやりとりはクリップボードを介してキーイベントをたたき込んでショートカットでやっているため、画面がチラつくし、パフォーマンスの悪いPCだと正常に動作しない可能性が高い。要するにパフォーマンスが悪い。at_picture側でプロセス間通信あたりを実装してもらえると楽になるけど(DLLを介してやろうと思えば自作はたぶん可能)、やっぱりDLLの仕様がよく把握できなかったので現状ではこんな感じ。
  2. 意図しないタグ付けミスや意図的な嘘タグ登録などへの対策は一切採っていない(イタズラされるほどユーザ増えないだろうと想定)上、無料のレン鯖なのでおおよそ2〜3万枚のタグ情報で容量を使い切ると思う。もしそれなりに有効活用されるようならその時にどうするか考えます。
  3. いちいち読み仮名登録めんどくさいしmigemo実装した方が楽、と思って実装はしたけど無茶苦茶重くてちゃんとキャッシュ機構を作らないと使い物にならないことが分かってあとから意図的に外したので、現状ではmigemo対応はしない予定。

インストール方法

  1. ここから落とす
    1. 3月12,13日あたりで次バージョンを出す予定なので現バージョンの使用はお薦めしません
  2. .tagsをメモ帳かエディタで開いて好きに編集する(文字コードSJIS限定)
  3. picdb.exeを起動する
  4. at_picture.exeを起動する

アンインストール方法

  1. picdb.exeと.tagsと.tags.cache(自動生成されるキャッシュ)を削除する
  2. レジストリは使っていません