Google Drive API v3によるデジタルフォトフレーム作成(1)
Raspberry Pi 3を使ってデジタルフォトフレームを制作中。
概要
クラウドストレージの画像データとローカルの画像データの間で同期を取り、ローカルの画像を逐次表示するというもの。先駆者様(http://www.asahi-net.or.jp/~rn8t-nkmr/family/pic/pf/index.html)がいらっしゃるので基本はこれを参考にさせていただいた。しかし、Dropboxが無料プランで2GBしか使えないのが気になったので、今回は無料で15GB使えるGoogle Driveを利用してみた。
Google APIsの設定
事前準備としてGoogleアカウントを作成しておく(本項では割愛)。ここも下記のページを参考に設定。
yura2.hateblo.jp
まず、下記のページにアクセスしてプロジェクトを作成する。
console.developers.google.com
プロジェクト名はツールとサービス(左上の「≡」) > IAMと管理 > 設定から後で変更可能。
その後、左のメニューの「認証情報」を開き、「認証情報を作成」ボタンをクリック。この時、「OAuth クライアント ID」を選択する。
必要な認証情報の種類を調べる
入力欄は、下記のように設定する。
- アプリケーションの種類: その他
- 名前: <任意の文字列>
入力が完了すると、キーがダウンロードされるので、client_secret.jsonというファイル名で保存する。
最後にOAuth 同意画面の設定を行う。認証情報からOAuth 同意画面タブをクリックし、メールアドレスとユーザーに表示するサービス名を設定する。
以上で、Google APIsの設定は完了。
Google API クライアントライブラリのインストール
今回はデジタルフォトフレームの実装をPythonで試みた。
python.keicode.com
上記の記事の手順に従い、コマンドを実行する。
PyDriveはgoogle-api-python-clientのラッパーライブラリらしいが、APIのバージョンとPyDriveのバージョンの対応やリファレンスがよく分からなかったので今回は使わなかった。
$ sudo apt-get install python-pip
$ pip install --upgrade google-api-python-client
とりあえず、Google Drive API v3を使うための環境構築は以上。
Apache & PHP設定
ブラウザベースのアプリを使っていて、Webサーバ(Apache2)やらPHPの設定とかが変わっていたせいで、うまく動作しなかった時の話。
Macはいわゆる「MAMP」環境の用意が楽で、MySQL以外はプリインストールだったりするんですが、それゆえOSアップグレードの副作用が設定ファイルに出ていました。
Apacheの設定ファイルは「/private/etc/apache2/httpd.conf」をいじくればいいです。個人的にはPHPを使いたいだけなので、「#LoadModule php5_module libexec/apache2/libphp.so」のコメントを解除しました。
アップグレードによりデフォルト設定に戻ってしまった場合には、変更前のファイルが同パスに残っていたりします。
その他、PHPの設定ファイルを「/private/etc/php.ini」に置いておけば、設定をいろいろいじくれます。こちらも似たようなファイルが同パスにあるのでコピペして使えました。
PDFに埋め込まれたフォントの確認方法
ベクトル図形描画(っていうのかな)がやりたいとなると、Microsoft Office Visioが有名どころなんだろうと思うんだけど、MS Office for Macには入ってなかった(というかWindows版も単品でしか売ってないっぽい)ので、代用としてLibreOffice Drawを使って今までやってきました。
ところが、どうもヒラギノフォントを使ってPDFにエクスポートすると、別のフォントで保存されてしまう事象が発生する(バグ?)ため、PDFを印刷するとプリンタによって文字が印字されなかったり、MOTHERの「どせいさんフォント」みたいにフォントが崩れたり、まぁいろいろある模様(Mac標準のPDFビューアやWindows版のAdobe Readerなどで見ても、表示だけは正常なのがまた不思議なんですが)。
PDFに埋め込まれたフォントを確認するための手法をメモしておきます。
続きを読むOS Xのアップグレードに伴うMacPortsの不具合
OS X 10.9(Mavericks)→10.10(Yosemite)のアップグレードでportコマンドが使えなくなってました。
アンインストールするためのコマンドも使えなくなってたので、予め取っておいたバックアップでOSを一旦ダウングレードし、MavericksにてMacPortを一旦撤去する。撤去前に予めインストール済みのソフトウェアの一覧は保存しておく。下記の記事にMacPortsの基本コマンドがよくまとまっており、そちらを参照されたし。
blog.asial.co.jp
で、MacPortsのアップグレード後に再度同じパッケージをインストールし直してみる。
……が、MacPortsのインストールまではなんとかなるものの、今までインストールしていたパッケージの依存パッケージ(cmakeとか)のインストールがどうしても上手くいかない。
$ sudo port selfupdate
とかを実行してもダメ。
で、いろいろ調べてみると、どうもXcode 6.1をインストールしていないといけなかったらしい(自分の環境ではMavericksの時点で6.0.1が入ってた)。App storeでは最新版を入手できず、開発者向けのページ(?)で検索してヒットしたdmgファイルからインストールし、再度portコマンドでパッケージのインストールを試みると、無事にインストールが完了した。
追記:
Migrationを読めば、最新のOSに対応したXcodeとCommand Line Toolsを入れた後に最新版のMacPortsのインストーラ実行すれば、わざわざOSをダウングレードしてMacPortsを撤去しなくてもよかったっぽい(Yosemite→El Capitanで確認)。やっぱりちゃんとこういうのは読まないとダメですね。