DVDに焼き込んだファイル群の管理を簡単化するVVV
Virtual Volumes View(VVV)はユーザ各自がDVDに焼き込んだデータを管理するためのツールであり、特定のファイルが既にバックアップ済みであるかを確認したり、どのディスクに書き込んだのかを簡単に追跡できることがその特長だ。例えば定期的に多量のデータをDVDにバックアップしているユーザの場合、シリアル番号によるディスク管理が最も手軽な方法となるだろう。そしてDVDに焼き込んでおいた中から特定のビデオや画像が必要となった場合は、VVVの検索機能を用いて該当するディスクの管理番号を検出して、バックアップディスクの山の中から目的のディスクを取り出せばいいのだ。
VVVのパッケージは、Ubuntu、openSUSE、Fedoraのリポジトリには収録されておらず、本稿の執筆にあたっても後述する手順にて、64ビット版Fedora 9マシンを用いたソースからのアプリケーションビルドを行っている。なおVVVのコンパイル手順を解説したガイドには、VVVの依存関係およびKDevelopを用いたビルド法が説明されており、ここでの依存関係を満たすには、GUI構築用のwxWidgetsとwxGTK、DVDインデックス情報の格納用リレーショナルデータベースとして用いるFirebird、ID3情報の抽出とインデックス化をするid3libを別途入手する必要がある。なお私が入手したソースにはVVVのバグフィックスに関係するid3lib 3.8.3のコピーが同梱されていたので、ビルド時にはid3libとのリンクを再設定しなくてはならなかった。またビルド手順の説明によると、静的にリンクされた実行ファイルの作成オプションを用いることで、システムにある他のライブラリ群への依存度を低めることができるそうだ。この方法で作成した実行ファイルの用途としては、VVVをUSBメモリに収めて複数のシステム間で使用するといった場合に適しているだろう。
前述したソフトウェア群のうち、wxGTKそのものがwxWidgetsに依存しているので、依存関係の管理機能を有すディストリビューションであれば、この両者は同時にインストールできるはずだ。wxGTKを入手するには、Ubuntu Hardy用のパッケージ、openSUSE 11用の1-Click Install、Fedora 9用の標準リポジトリのいずれかを利用すればいい。Firebirdについては現在Classicビルド扱いとされているバージョン2.0.xを使うべきで、これはアプリケーションからリレーショナルデータベースを直接開けるよう設計されており、データベースサーバを別途用意する必要がなくなる。またFirebirdを入手するにあたり、Ubuntu Hardy用のパッケージおよびopenSUSE 11用の1-Click Installは用意されているが、Fedora 9のリポジトリには収録されていない。私が入手したのは64ビット版ビルドのFirebirdバージョン2.0.4である。
Firebirdバージョン2.0.4の使用する標準C++共有ライブラリに関しても、必要なバージョンをインストールしなくてはならない。つまり現行のFedora 9は既に/usr/lib64/libstdc++.so.6というように新バージョンに移行しているのだが、前述したFirebirdはlibstdc++.so.5を必要とするのだ。こうした標準C++ライブラリの古いバージョンは、Fedora 9の場合compat-libstdc++パッケージに収録されている。具体的なインストール操作は下記のように進行する(stdc++ライブラリのバージョンがマッチしない場合はエラーメッセージが表示される)。
# tar xzvf /FromWeb/FirebirdCS-2.0.4.13130-1.amd64.tar.gz # cd FirebirdCS* FirebirdCS-2.0.4.13130-1.amd64]# ./install.sh Firebird classic 2.0.4.13130-1.amd64 Installation /opt/firebird/bin/gsec: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory FirebirdCS-2.0.4.13130-1.amd64]# yum install compat-libstdc++ ... FirebirdCS-2.0.4.13130-1.amd64]# ./install.sh ... Please enter new password for SYSDBA user: himitsu Install completed
$ sudo vi /usr/include/wx-2.8/wx/string.h ... about line 822 ... wxChar& operator[](int n) { return wxStringBase::at(n); } // wxChar& operator[](size_type n) // { return wxStringBase::at(n); } src]$ export LDFLAGS="$(wx-config --libs --debug=no) -lid3 -L/opt/firebird/lib -lfbembed " src]$ export CXXFLAGS="$(wx-config --cxxflags --debug=no) -DIBPP_LINUX" src]$ g++ -c *.cpp $CXXFLAGS $LDFLAGS src]$ cd ./data_interface data_interface]$ g++ -c *.cpp $CXXFLAGS $LDFLAGS $ cd ../ibpp/ ibpp]$ cd ./core core]$ vi _ibpp.h /////////////////////////////////////////////////////////////////////////////// #include <string.h> #ifndef __INTERNAL_IBPP_H__ #define __INTERNAL_IBPP_H__ core]$ g++ -c all_in_one.cpp $CXXFLAGS $LDFLAGS core]$ cd ../../ src]$ gcc `find . -name "*.o"` -o vvv $CXXFLAGS $LDFLAGS src]$ mkdir ~/vvv-catalogs src]$ cp -av ./vvv ~/vvv-catalogs `./vvv' -> `/home/ben/vvv-catalogs/vvv' src]$ cd .. VVV-0.9-src]$ cp -av VVV.fbk ~/vvv-catalogs `VVV.fbk' -> `/home/ben/vvv-catalogs/VVV.fbk'
VVVからFirebirdを利用する上での最も簡単な設定は、Firebird側を組み込みモードにセットアップしておくことだ。同モード下のFirebirdは独立したデータベースサーバとしては動作せず、VVVはFirebirdの共有ライブラリを介したデータベースアクセスを行うことになる。この方式の場合、リレーショナルデータベースに対するユーザおよびパーミッションの管理は不要となり、サーバを別途実行させる必要もなくなってくれる。問題は、Firebirdを同モードにて実行させるための設定ファイルがソースには同梱されていないことだが、その1番簡単な対処法はバイナリ版VVVをダウンロードした上で、下記のようにローカルのインストール先にあるFirebirdの共有ライブラリと合わせて、データベース設定ファイルをコピーしてくることだ。
~]$ cd /tmp tmp]$ tar xzf /.../VVV-0.9.tar.gz tmp]$ cd ./VVV* VVV-0.9]$ mkdir ~/vvv-catalogs/firebird VVV-0.9]$ cp -av firebird.log firebird.conf ~/vvv-catalogs VVV-0.9]$ cp -av firebird/security2.fdb ~/vvv-catalogs/firebird VVV-0.9]$ mv vvv vvv.bin VVV-0.9]$ vi vvv #!/bin/sh export FIREBIRD=~/vvv-catalogs $FIREBIRD/vvv.bin VVV-0.9]$ su -l /root]# cd /opt/firebird firebird]# cp -av lib/* bin intl /home/ben/vvv-catalogs/firebird firebird]# chown -R ben.ben /home/ben/vvv-catalogs/firebird
このようにVVVをソースからインストールする場合、非常に煩雑な操作が必要となる。実際、ソースツリーにてmakefile作成を行い、firebird.confとsecurity2.fdbをバイナリディストリビューションから抽出しておくといった手順に気づかないと、何をどうすればいいのか検討もつかなくなるのではなかろうか。またインストールガイドにしても、先の実行例で用いたvvv
スクリプトのようなラッパースクリプトの使用が有用であることや、適切な設定下のFirebird環境変数を用いてVVVを起動させるべきであることが、何も触れられていないのである。
インストール手順に問題がなければ、この段階で~/vvv-catalogs/vvv
の実行および、組み込み版Firebirdを用いたVVVの起動が可能となっているはずだ。先に触れたようにこのセットアップ方式の場合、サーバの起動やデータベースユーザの作成をする必要はない。最初に行うべき操作は、ツールバーにあるNewボタンをクリックして、ディスクのインデックス情報を格納させるVVVカタログを新規作成することだ。このカタログ作成は、VVVから組み込み版Firebirdが使用可能になっていることの証明ともなる。
VVVの多言語対応については、現在サポートが進められている段階である。そのためVVVにて使用したい言語が自動で選択されないかもしれないが、そうした場合はPreferencesウィンドウにて明示的な指定をしなくてはならない。またこのウィンドウには、前回開いていたカタログを起動時に自動オープンさせたり、カタログ作成時にオーディオファイルから抽出するID3タグの指定や、Firebirdをスタンドアローン型サーバとして使用する際のロケーションおよびログイン情報の指定用オプションも用意されている。
Volumesメニューには、カタログへのディレクトリ追加およびそのボリューム名の指定オプションが用意されているが、同じ操作はツールバーのCatalogボタンでも行える。今回1つの試験として、HTMLおよびPDFの両フォーマットにてLinux HOWTOのファイル群(合計のファイル数は8,119でディレクトリ数は313)を格納したディレクトリを1つ追加してみたところ、コールドディスクキャッシュを用いた場合で、このカタログ化には約25秒を要した。
VVVには、Physical、Virtual、Searchという3つのメインビューが存在し、いずれもツールバーから切り換えられるようになっている。掲載した1つ目のスクリーンショットは、先のHOWTOディレクトリに加えて2つのサブディレクトリを個別のボリュームとしてカタログ化した状態のものだ。
特定のファイルを格納しているボリュームを検索するには、ツールバーにあるSearchをクリックすればよく、これにより2つ目のスクリーンショットに示したSearchモードのビューに切り替わる。この物理パス(Physical path)の先頭部に示されているのが、検索にヒットしたファイルを含むボリュームだ。また各列のヘッダ部をクリックすると、当該列の表示に関する降順と昇順が切り替わる。同じく画面右端の説明(Description)列に表示される情報は、個々のファイル別に手動で入力するようになっている。
第3のモードであるVirtualについては、少し説明が必要だろう。これは仮想(virtual)フォルダを用いて、DVDカタログの論理的な整理を可能にするための機能だ。例えばあるユーザが日本旅行にて撮影した多量の写真を6枚のディスクに分けて保存しており、これら全体を“Japan 2008 images”という1つの仮想フォルダ中にてインデックス化していたとしよう。そして後日、この中から赤目現象の生じていた写真を処分し、アップデート版の写真セットを新規のディスクに焼き直したような場合でも、これらの写真は先と同じ“Japan 2008 images”仮想フォルダに追加できるし、仮にこの新規DVD作成までに2年間が経過していたとしても、そうした時間の開きすらも問題にはならないのだ。
ルートとなるフォルダについては、左端のリストを右クリックすることで新規作成できる。同じく仮想ディレクトリにツリーを追加するには、Physicalモードに戻ってからファイルないしディレクトリを右クリックして“Add to Virtual Folder”を選択し、これにより表示されるツリービューにて追加先とする仮想フォルダを選択すればいい。なお仮想フォルダに追加する物理ファイルとディレクトリに関しては、同じものを複数の仮想フォルダに追加できるようになっている。
VVVの特長は、特定ディレクトリのインデックス化が短時間で行えることだ。また“Starts with”および“Contains”という検索モードも用意されているため、目的のファイルを格納したディスクも簡単に見つけることができる。今後の要望としては、上級ユーザ用に正規表現によるファイル検索機能を追加してほしいところである。
Ben Martinは10年以上にわたってファイルシステムに取り組んでおり、博士課程の取得後、現在はlibferris、ファイルシステム、検索ソリューションを中心としたコンサルティング業に従事している。