views4GCPのストレージサービスについてまとめてみた。Exp:190284普段はGCP専門のエンジニアをやっています。最近は個人的な活動としてGOとswiftでアプリ作ってます。G+TweetShareHatena注意この記事は2017年8月10日に更新されたもので、内容が古い可能性がありますのでご注意ください。Googleドライブは、Googleアカウントさえあれば誰でも利用できるサービスです。通常のGoogleアカウントユーザであれば15GBが無料で利用でき、追加料金の支払い、例えば月に1300円払えば1TBのストレージを利用することができます。Businessを利用する場合はユーザ当たり月1200円を支払えば無制限のストレージを利用することができます(5アカウント以下の場合はユーザ当たり1TBの容量制限あり)。Driveを基盤とするサービスを構築することも可能です。APIは現在v3が最新バージョンとなりますが、deprecateの告知がないため現在もv2を利用しているサービスも多いのではないでしょうか。APIのFiles:getメソッドでフルリソースを取得することができなくなりました。いうことかと言うと、例えば以下のようなDriveのFileオブジェクトを取得するようなコードをJava用のクライアントライブラリを利用して実装したとします。クライアントライブラリでファイルをGETで取得する実装は「service.files().get(id).execute()」の部分です。service.files().get(id).execute();}上記コードに対して以下のテストコードはv2では通るのですが、v3では通りません。それは「field」パラメータでmimeTypeを指定していないからです。id).getMimeType());}v3でテストを通す場合は、以下のように修正します。mimeType”)が修正点となります。この修正によって、レスポンスとしてmimeTypeが取得できるようになるため、先ほどのテストも通るようになります。その他リソースも必要な場合はカンマ区切りでリソースを並べます。mimeType").execute();}(2)ファイル名称のフィールドが「title」から「name」に変更になったFileクラスのファイル名称のフィールド名がv3から変更になりました。この変更はSDKのバージョンをアップデートした時にIDEが検知してくれるので修正は難しくないと思います。1点注意が必要な箇所があるとすると、それはDrive検索のクエリにフィールド名をハードコードしているケースです。Drive上のファイルを検索するためのコードですが、もちろんフィールド名が異なるのでv2では動作しますがv3では動作しないコードになります。title).execute();}v3で動作させるためには以下のようにコードを修正します。name).execute();}このように検索フィールドをハードコードしている場合は注意が必要です。Driveのフォルダを意味し、ファイルに対して親は複数持つことができます。親の設定はv2までは以下のように実装します。ParentReferenceのリストをFileオブジェクトのParentsフィールドにセットしています。pr.setId(folderId);file.setParents(Arrays.asList(pr));v3では親のIDのセットが簡易になりました。以下のようにStringのリストを直接セットすることができます。コードfile.setParents(Arrays.asList(“親のID文字列”));(4)ファイルの実データはexecuteMediaメソッドで取得するv2まではFileオブジェクトのdownloadUrlを利用して実ファイルの取得を行っていました。v3ではFileオブジェクトからdownloadUrlフィールドが削除されたため、別の方法でファイルのダウンロードをおこなう必要があります。resp.getContent();}v3でファイルをダウンロードするコードは以下の通りです。ファイルのメタ情報と同様GETのAPIを利用しますが、実データを取得する場合はaltフィールドに「media」を文字列をセットした上で、executeMediaメソッドでAPIを実行します。resp.getContent();}まとめv2からv3へのマイグレーション対応は、単純に一つ一つチェックするのは非常に大変な作業ですが、テストケースさえ網羅されていれば、後はSDKをアップデートしてテストが通るまでリファクタリングを行うだけの単純作業です。この作業を簡易化するために必ずテストを書くことを心がけましょう。Suiteサービスを利用したシステム開発も得意とする開発会社です。SuiteやGCPについてご相談がある場合は以下URLから問い合わせをおこなってください。APIを使ってGoogleガジェットを作ってみた。