UpupuとDavdav: WebDAVを使った写真共有
WebDAVを使って簡単に写真共有できるツール、「Upupu」と「Davdav」を紹介します。
写真共有サービスは今や様々なものがありますが、外部サービスに依存せずにチーム内で簡単に写真が共有できると、ミーティングのログを撮り貯めたりするのに便利です。今回紹介するUpupuとDavdavは、Xcoo, Inc.で開発・公開されているツールで、Xcooの社内ツールとして実際に用いられているものです。オープンソースとして公開されているため、インストールさえできれば、誰でも利用することができます。
Upupuは、WebDAVやDropboxに2タップ(撮影と送信)だけで写真をアップロードできるiOSアプリです。保存ディレクトリ名、ファイル名はアップロードの日時から自動的に生成されます。App Storeで850円で販売されています。また、GitHub上にオープンソースとして公開されているため、ソースコードをダウンロードしてビルドすれば、無料で利用することもできます。 → https://github.com/xcoo/upupu



Davdavは、Upupuを使ってWebDAVにアップロードした写真を、サムネイル付きで快適に閲覧するためのビューアです。Auto Pagerizeにも対応しています。DavdavもGitHub上にソースコードが置かれているので、誰でも利用可能です。 → https://github.com/xcoo/davdav
それでは以下に、UpupuとDavdavをソースコードからビルドし、インストールする方法を説明します。 なお、WebDAVのアップロード先環境は予め用意されているものとします。WebDAVの設置方法は検索すれば多くの説明サイトがありますので、そちらを参考ください。
Upupuのインストール
ソースコードのダウンロード
Gitでcloneしてください。
$ git clone https://github.com/xcoo/upupu.git
もしくは、こちらからzipで圧縮されたファイルをダウンロード・展開してください。
その後、Upupu.xcodeprj
をXcode 4で開いてください。 iPhoneなどを接続して実行すればインストールされます。CertificateやDevice登録などのiOS開発の基本部分はここでは説明しませんので、他サイトを参考にしてください。
Dropboxを使う場合
Upupuでは、WebDAVの他にアップロード先にDropboxを指定することもできます。
Dropboxを利用するには、Dropboxアプリの登録とUpupuの設定ファイルの書き変えが必要です。詳しくはこちらをご覧ください。
Davdavのインストール
ここでは、UbuntuとApacheを用いたインストール方法を説明します。
Python 2.7以上、MySQL 5.0以上があれば、他の環境でも利用可能だと思います。その他の環境へのインストールは、Davdav wikiのInstall manualを参照してください。
ある程度のLinuxの知識があることを前提としていますので、ご了承ください。
1. 関連パッケージのインストール
まず、Ubuntuのapt-getを使ってGit, MySQL, Apache, Pythonのeasyinstallをインストールしましょう。その後、easyinstallを使ってpipを、pipを使ってPythonの依存ライブラリをインストールします。
$ sudo apt-get update
$ sudo apt-get upgrade
# Install Git
$ sudo apt-get install -y git
# Install MySQL
$ sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
# Install Apache2
$ sudo apt-get install -y apache2 libapache2-mod-wsgi
# Install Python libraries
$ sudo apt-get install -y python-setuptools
$ sudo easy_install pip
$ sudo pip install Flask SQLAlchemy MySQL-python PIL configobj
2. Davdav用のユーザの作成
Davdavを動かす用のユーザを作成しましょう。 また、サムネイル画像保存用のディレクトリをここで作成しておきます。
$ sudo adduser davdav
$ sudo -H -u davdav mkdir /home/davdav/thumbnail
3. Davdavのダウンロード
DavdavをGitHubからダウンロードします。 アップデートのしやすさを考えると、Gitでcloneしたほうが良いと思います。
$ sudo -H -u davdav git clone https://github.com/xcoo/davdav.git /home/davdav/davdav
4. MySQLのセットアップ
MySQLにDavdavのデータベースを作成します。 sqlファイルを流し込んでデータベース作成しましょう。
$ cd /home/davdav/davdav
$ mysql -u root -p < db/davdav.sql
5. Davdavの設定
テンプレートをコピーして、設定ファイルを作成します。
$ sudo -u davdav cp config/davdav.ini.example config/davdav.ini
作成したdavdav.ini
を編集して、DBURI, WEBDAVROOTURL, THUMBROOTURL, WEBDAVDIRの値を環境に合わせて書き変えましょう。
DBURIのuser, passwordは、先ほど作成したMySQLデータベースに接続できるユーザ名とパスワードにしてください。WEBDAVROOTURLは、Upupuのアップロード先にしているWebDAVのURLです。THUMBROOTURLは、サムネイル画像を見られるURLです。WEBDAVDIRには、Ubuntu内でのWebDAVディレクトリのパスを指定します。
ここでは、Davdavを表示するドメインはdavdav.example.com
と仮にしています。実際に使うドメインに書きかえてください。
DEBUG=False
TESTING=False
DB_URI='mysql://user:password@localhost/davdav?charset=utf8'
WEBDAV_ROOT_URL='http://webdav.example.com/'
THUMB_ROOT_URL='http://davdav.example.com/thumbnail'
WEBDAV_DIR='/var/www/webdav'
THUMB_DIR='/home/davdav/thumbnail'
NUM_BY_PAGE=10
FOOTER_ENABLE=True
AUTH_ENABLE=False
AUTH_USERNAME='username'
AUTH_PASSWORD='password'
それ以外の設定は、1ページ毎の表示日数やフッターの有無などですが、後でも編集可能なのでここではデフォルトにしておきます。
※Pythonの実行環境としてvirtualenvを使用する場合、config/virtualenv.ini
の設定も必要となります。それについてはこちらのREADMEを見てください。
6. crontabの設定
cronを使って、定期的に新規画像をチェックし、サムネイル画像を生成するようにします。 ここでは、5分毎にチェックするようにしています。
$ sudo -H -u davdav crontab -e /5 * python /home/davdav/davdav/tool/cron.py
生成されたサムネイル画像は/home/davdav/thumbnail
以下に、サムネイルと実画像との対応付け情報はMySQLに保存されます。
7. Apacheの設定
WSGIを使ってDavdavを動かせるように、Apacheの設定を書きます。
ここでは、VirtualHostを使ってdavdav.example.com
に接続したときに動作するようにしています。サムネイル画像もこのドメインから見られるように、Aliasを設定しています。
<VirtualHost *:80>
ServerName davdav.example.com
WSGIScriptAlias / /home/davdav/davdav/app/davdav.wsgi
WSGIDaemonProcess davdav user=www-data group=www-data processes=5 threads=10 home=/home/davdav/davdav/app python-path=/home/davdav/davdav/app
WSGIProcessGroup davdav
WSGIPassAuthorization On
Alias /thumbnail /home/davdav/thumbnail
</VirtualHost>
最後に、Apacheをリスタートして完了です。
$ sudo service apache2 restart
ウェブブラウザでhttp://davdav.example.com
を開いて、実際に動くことを確認してください。