メイン開発機のMacOSをアップデート したら Dropbox無料版の接続デバイスの台数制限に引っかかてしまいました。そこで自作アプリ TodoAndNote をDropboxベースからGoogleDriveベースに変更する事にしました。 しかし思った以上にたいへんだったので苦労した点を書いておきます。
苦労した点
公式ドキュメントにはiOS APIの説明が無い
Google Driveの公式ドキュメントを見ると iOSのAPIは説明されていません、しかしGitHubには Googleの作ったiOS用APIがあるのでこれを使いました。しかし使い方の良いサンプルが少なくAPIの設計思想を理解するのに時間を使いました。
権限で手間取る
GoogleのAPIはOAuthで認証しますが、その際に権限(どのサービスを使うか)を設定し、API用のトークンを生成します。 見ていたサンプルコードは ファイルのメタ情報を読む という狭い権限を設定していたので既に存在するGoogleDrive上のファイルが読めず、かなりの時間悩み続けました。
削除済みファイルが一覧に表示される
Google Driveでは削除されたファイルはメタ情報に trashed 属性が付くようになっていますが、最初はこれに気が付かず削除されたファイルが一覧に表示され悩みました。
この考えが判ってからは、高機能なAPIのおかげで実装は簡単に出来ました。
ファイルIDでアクセスは少し面倒
DropboxもiCloudもファイルはフルパスで指定しますが、Google Drivedeでは各ファイルがファイルID属性を持っていて、ファイルの読書はファイルID指定になります。このアプリでは最初に Notes/TODO.md ファイルを表示するのですが、 1) まずファイル名で検索しファイルIDを取得、2) ファイルIDでファイルを読込と2ステップ必要になるので、やや面倒でした。
Node.js用ライブラリーが大きい
このアプリでは、AWS Lambdaを使い決まった日時実行すべきTODOタスクをTODOファイルに書いているのですが、AWS Lambdaで使う Node.js用ライブラリー が大きすぎて Lambdaのインラインコード編集が表示されなくなり、少し不便です。
動作はするのですが、いずれは何とかしたいです。
出来ました
このような苦労はありましたが、なんとか GoogleDriveベースの TodoAndNote は動作するようになり実際に使っています。
まだ情報取得等で遅い部分があります、APIの呼出回数が多い部分があり時間を見つけて改善して行きたいと思います。その改善が終わったらソースコードを公開したいと思います。