LINEの写真を自動的にGooglePhotoに自動でアップロードする仕組みを作りたかった

はじめに

昨年子供が生まれ子供の写真を撮る機会がすごく増えました

それと同時に撮った写真を嫁さんに LINE で送ったり、嫁さんが撮った写真を送ってもらったりということも増えました

個人の写真の管理にはGoogle Photoを使っています

送ってもらった写真を都度 LINE からダウンロードすれば Google Photo アプリがバックグラウンドで同期してくれるので問題ないのですが

というオペレーション上の悩みがありました

なので、LINE に投稿された/した写真やアルバムを自動で Google Photo にアップロードすれば悩みも解消されると思いやってみる事にしました

が、しかし

タイトルから察した方もいるかもしれませんが、当初やりたかった

は最終的に実現することが出来ませんでした

理由としては

という 2 点です

Google Photo API が Service Account に対応していない

Service accounts

The Library API does not support service accounts. Your application must use the other OAuth 2.0 flows available such as OAuth 2.0 for web server applications or OAuth 2.0 for mobile and desktop apps.

https://developers.google.com/photos/library/guides/authentication-authorization#service-accounts

プライベートな情報も多いので仕方ないのかもしれないですね…

LINE のアルバムが作成/更新されたイベントは Webhook で取得することが出来ない

API Documentを見ても

メッセージの内容を含むオブジェクト。メッセージには以下のタイプがあります。
  テキスト
  画像
  動画
  音声
  ファイル
  位置情報
  スタンプ

とあり、アルバムは取得することが出来きません

残念ですが、2017 年 7 月時点のコメントではロードマップにも無いようです…

(現時点ではどうか分かりません)

lp2gd

出来ないのはしょうが無いので、実現できる範囲内でやってみました

結論としては、

というところに落ち着きました

コードはこちらです

Konboi/lp2gd

流れとしてはこんな感じです

LINE から Webhook を受けて Google Drive にアップロードするまでを 1 つの Function にしてお良かったのですが Pub/Sub を使ってみたかったというのもあり

と処理を分けてみました

これといって工夫したところも無いですが、きちんと deploy task を用意したのは良かった点かなと思います

(あまり触ってないプロジェクトだと、どうやって反映してたっけ…? となるので w)

さいごに

当初想定していたような機能は満たせなかったですが、ある程度使えるところに着地させたので及第点かなと

今後 LINE の API や Google Photo の API が更新されたらまたチャレンジしたいと思います

クラウドエンジニア養成読本[クラウドを武器にするための知識&実例満載! ] (Software Design plusシリーズ)
佐々木 拓郎, 西谷 圭介, 福井 厚, 寳野 雄太, 金子 亨, 廣瀬 一海, 菊池 修治, 松井 基勝, 田部井 一成, 吉田 裕貴, 石川 修, 竹林 信哉
技術評論社
売り上げランキング: 144,038