Ubuntu Weekly Recipe

第162回Shotwellで写真管理をはじめよう(前編)

本連載74回でRAW画像の現像について紹介したのでご存知の方もいるかもしれませんが、筆者の趣味のひとつにカメラがあります。こう言うと驚かれるのですが、筆者はカメラは好きなものの写真にはそれほど興味がなく[1]⁠、デジタルカメラで撮影した写真はファイルサーバにまとめて保存してそれっきりだったりします。

ですが、たまに過去の写真を参照する必要が出てきます。ファイルサーバにはカメラのSDカードの中身をそのままバックアップしているのですが、はっきり言って検索不能です[2]⁠。筆者のファイルサーバには現在約3,000枚ほどの写真が整理されないまま溜めこまれていますが、このままではいけないと一念発起し、Shotwellでアルバム管理をすることにしました。

そこで今週のレシピは筆者のShotwell導入話を交えつつ、Ubuntuの標準写真管理ソフトであるShotwellを紹介します。

図1 ⁠どうしてこんなになるまで放置してたんだ!」と言いたくなるほど、ひどい状態な筆者のファイルサーバ(の一部⁠⁠。ちなみに玄箱ProとDebian Lennyで動作している
図1 「どうしてこんなになるまで放置してたんだ!」と言いたくなるほど、ひどい状態な筆者のファイルサーバ(の一部)。ちなみに玄箱ProとDebian Lennyで動作している

Shotwellとは

ShotwellはUbuntu 10.10で標準採用されている写真管理ソフトウェアです。Shotwellは従来のF-Spotを置き換える形で採用されました。イベント単位での写真の分類、写真のサムネイル表示、写真の簡易編集、Webアルバムへのアップロードなどの機能が搭載されています。機能的には従来のF-Spotとほぼ同等ですが、F-Spotよりも高速に動作するのが特徴です。これはF-SpotがC#とMonoを利用していたのに対し、ShotwellがValaで実装されていることに由来します[3]⁠。

写真をインポートする

Shotwellで写真を管理するためには、まず写真をカメラからインポートし、Shotwellの管理下に置くという作業が必要です。デジタルカメラや写真を保存したSDカードなどをUbuntuに接続して、Shotwellを起動しましょう。Shotwellがカメラやカードといったデバイスを認識すると、左ペインにデバイスが表示されます。また、右ペインには撮影済の写真のサムネイルが表示されます。

次に、右ペインでインポートしたい写真を選択し、⁠Import Selected」をクリックしてください。すべての写真をインポートしてよい場合は、⁠Import All」をクリックしても構いません。なお、既にインポート済みの写真がデバイス内に残っている場合は、⁠既にインポートした写真を隠す」にチェックを入れておくことで、サムネイル一覧から重複する写真を隠蔽することができます。ちなみにインポート済みの写真を再度インポートしてしまったとしても、自動的にスキップされるので特に問題はありません[4]⁠。インポートを行うと、ホームの「画像」フォルダ以下に「撮影年/月/日」という名前のサブフォルダが作成され、その中にファイルがコピーされます。

Shotwellのカメラの認識や写真のインポートにはgPhoto2という、USBマスストレージやPTPのようなプロトコルを利用して、デジタルカメラへアクセスするためのライブラリが使用されています。gPhoto2は現在約1300種類ほどのデジタルカメラに対応しており、これらのカメラであればShotwellから直接写真のインポートが可能というわけです。もし手持ちのカメラがgPhotoでサポートされていない場合は、SDカードリーダなどを別途利用する必要があるでしょう。

図2 カメラを接続して写真をインポートする。インポート先は「編集⁠⁠->「設定」で変更することもできる
図2 カメラを接続して写真をインポートする。インポート先は「編集」

Shotwellの設定フォルダ

インポートした写真は画像フォルダ以下、あるいは設定した任意のフォルダにコピーされますが、それとは別に ~/.shotwell にShotwellが使用するデータベースと画像のキャッシュが作成されます。~/.shotwell フォルダのサブフォルダには次の表のようなものがあります。

表1 Shotwellのデータ
dataShotwellの管理している画像、タグなどの情報が格納されたSQLite3形式のデータベース、photo.dbが保存される
mimicsRAWデータから作成したフルサイズのJPG画像が保存される[5]
thumbs右ペインに表示するために、サムネイルの画像ファイルが保存される

フォルダからインポートする

筆者は写真資産をファイルサーバ上に持っているため、改めてカメラからインポートするわけではありません。このような時のため、Shotwellには既存のフォルダからのインポート機能があります。メニューの「ファイル⁠⁠->「フォルダからインポート」を開き、インポートしたいフォルダを選択しましょう。ただし、カメラからのインポートと違い、写真を個別に指定することはできず、フォルダ内の全ファイルが対象になってしまいます。

余談ですが筆者はShotwellで写真を管理しようと決めた際に、⁠アルバムで管理するならファイルは一箇所にまとめておいたほうが便利だろう」と考え、すべての写真を一つのフォルダにマージしたのですが、このインポートの仕組みに気づき、慌てて元に戻しました。過去に撮影したすべての写真が同じフォルダに存在したとすると、新しい写真を追加でインポートする際に相当な時間がかかってしまいます。このようにフォルダからインポートする場合は、K20Dのように撮影日ごとにフォルダ分けをしてくれるタイプのデジカメは相性がいいようです[6]⁠。

図3 フォルダを選択すれば、サブフォルダも含めてすべての写真をインポートしてくれる
図3 フォルダを選択すれば、サブフォルダも含めてすべての写真をインポートしてくれる
図4 既にインポート済みの写真は自動的にスキップされるため、深く考えずに全部をインポートしてしまってもよい
図4 既にインポート済みの写真は自動的にスキップされるため、深く考えずに全部をインポートしてしまってもよい

ファイルをコピーせずにインポートする

前述のように、インポートした写真はホームの画像フォルダにコピーされます。しかし筆者の場合は、オリジナルのファイルは撮影した時の状態のままサーバ上にのみ保存しておき、Shotwellはサーバ上の写真の一覧を見る「カタログ」として使いたいので、ファイルをコピーしたくありません。Shotwellはフォルダからインポートをする場合に限り、写真を画像フォルダにコピーするか、オリジナルのファイルへのリンクを作成するかを選択することができます。そこで今回はこの機能を利用することにしました[7]⁠。筆者のファイルサーバはファイル共有にNFS[8]を使っていますので、Shotwellを動かすデスクトップ機でNFSフォルダをマウントし、ここからインポートを行いました[9]⁠。

例えばサーバの/shareを、192.168.1.0/24のIPアドレスを持つLAN内で共有するには、次のように設定します。

NFSの設定:サーバで実行
$ sudo apt-get install nfs-kernel-server          >= NFSサーバに必要なパッケージをインストール
$ sudo vi /etc/exports
/share 192.168.1.0/24(rw,sync,no_subtree_check)   >= エクスポートするフォルダと、接続を許可する相手を指定
$ sudo exportfs -ar                               >= /etc/exports の設定を反映
$ sudo exportfs                                   >= エクスポートされているフォルダを確認
/export       192.168.1.0/24
NFSフォルダのマウント:デスクトップで実行
$ sudo apt-get install nfs-common                 >= NFSのマウントに必要なパッケージをインストール
$ sudo mount 192.168.1.xxx:/share /mnt/server     >= サーバのIPアドレスと共有フォルダ、ローカルのマウントポイントを指定する
図5 写真を画像フォルダへコピーするほか、リンクだけを作成することが選べる。サーバ上のオリジナルはそのままに、Shotwellを管理UIとしてのみ使いたい筆者のような用途には丁度いい機能だ
図5 写真を画像フォルダへコピーするほか、リンクだけを作成することが選べる。サーバ上のオリジナルはそのままに、Shotwellを管理UIとしてのみ使いたい筆者のような用途には丁度いい機能だ

写真の閲覧

インポートした写真は「イベント」という単位に分類されて管理されています。イベントは写真の撮影日と同義です。Shotwellはインポート時に写真のメタデータに含まれる撮影日を調べ、写真が時系列に並ぶようにアルバムを作成するというわけです。イベントは年/月/日という階層構造になっているため、すばやく目的の写真へアクセスすることが可能になっています。

写真を閲覧するには、見たい写真のサムネイルをダブルクリックします。この時点でオリジナルのファイルが読み込まれ、フルサイズのイメージが表示されます。初期状態ではウィンドウのサイズに合わせて縮小して表示されていますが、Ctrl+1キーを押すことで、100%の倍率で表示させることができます[10]⁠。

図6 約3,000枚のインポートが完了して、イベントごとに整理された状態。サムネイルのキャッシュはローカルに作成されているため、一覧表示はスムーズ
図6 約3,000枚のインポートが完了して、イベントごとに整理された状態。サムネイルのキャッシュはローカルに作成されているため、一覧表示はスムーズ
図7 サムネイルをダブルクリックすると、フルサイズの写真を表示することができる。詳細情報を見ると、ファイルのパスからマウントしたNFS上にあるのがわかる
図7 サムネイルをダブルクリックすると、フルサイズの写真を表示することができる。詳細情報を見ると、ファイルのパスからマウントしたNFS上にあるのがわかる

次週予告

ここまでの作業で、とりあえず写真のインポートと表示ができるようになりました。

来週はタグや評価を使って写真をフィルタするといった高度な閲覧機能や、Shotwellの持っている簡易編集機能と実ファイルの関係、外部エディタを使った本格的な編集、Webアルバムとの連携といった、Shotwellをより深く使いこなす方法を紹介します。

おすすめ記事

記事・ニュース一覧