2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

29
DataSpider ServistaBoxに接続してみた Lightning Talk @ dstnHUB, Feb 2015 株式会社アプレッソ 開発部 開発1G 陳映融

Transcript of 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

Page 1: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

DataSpider ServistaでBoxに接続してみた

Lightning Talk @ dstnHUB, Feb 2015

株式会社アプレッソ開発部 開発1G 陳映融

Page 2: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

簡単な自己紹介

• 2014年1月 アプレッソに入社(あっという間に一年経った…)

• 台湾出身(寒いのは苦手…)

• 日本語でおk(でもネタ系の言葉は微妙かも…)

2

Page 3: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

Boxについて

Page 4: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

Boxって?

• Box – https://www.box.com/

• エンタープライズ向けのクラウドストレージ

– 個人向けのプランもある

• 海外ではかなりのシェアを占めている

– 日本ではまだ認知度が低め…

4

Page 5: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

Boxを使用するには

• 公式サイト・アプリ

• 開発者向けのREST API

– Box Content API https://developers.box.com/docs/

• ストレージのコンテンツへのフルアクセスを提供

• 他のサービス・アプリのバックエンドとしての使用も可能

– Box View API https://developers.box.com/view/

• ドキュメントをHTML5で表示する機能を提供

• 限定されたコンテンツ管理機能もある

5

Page 6: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

BoxのAPI認証と権限

• Content API

– OAuth 2.0による認証• クライアントID/シークレットはアプリごとで付与される

• アクセス権限はスコープの設定で制御

• View API

– API Keyによる認証• API Keyはアプリごとで付与される

• アクセス権限は該当アプリで作成したリソースのみ

6

Page 7: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

• アプリケーション設定画面 https://app.box.com/developers/services

– 右メニューの「Boxアプリケーションの作成」を押下

APIを使用するための準備 1

7

※作成済みのアプリケーションを削除する手段がないので、作りすぎにご注意を。

Page 8: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

– 使用するAPIを選択

APIを使用するための準備 2

8

※アプリケーションの使用するAPI

を選択後、二度と変更できないので、間違えないようにご注意ください。

Page 9: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

View APIに接続してみる

Page 10: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

View API

• REST API

– DataSpiderのRESTアダプタを使えば大丈夫

• API Keyによる認証

– アプリケーションを登録すれば発行してくれる• アプリケーション設定画面に表示される

– アクセス対象リソースはView API専用• View APIで作成したリソースのみアクセス可能

• BoxのWeb UIからこれらのリソースにアクセスできない

• Boxアカウント容量として計上されない

10

Page 11: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

接続してみる 1

• シナリオ

1. 公開URLでファイルアップロード• http://dataspider.appresso.com/documents/dss_catalogue.pdf

2. ファイルをローカルにダウンロード• /tmp/catalogue.pdf

11

Page 12: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

接続してみる 2

• シナリオ

1. ローカルファイルをアップロード• /data/view_demo2/DS本チラシ.pdf

2. オンライン表示用URL取得

3. URLをブラウザで表示

12

※表示URL取得できるようになるまで待つ

Page 13: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

Content APIに接続してみる

Page 14: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

Content API

• REST API

– DataSpiderのRESTアダプタを使えば大丈夫

• OAuth 2による認証

– OAuth 2の仕組みは?• 去年のLT@dstnHUBで説明したので割愛

• 詳しくはウェブで!(dstnサイトで検索)

– DataSpiderにOAuth 2認証機能はないけど?⇒スクリプトの組み合わせで実現できる!

– アクセス対象リソースはBoxのWeb UIと同じ

14

Page 15: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

BoxのOAuth 2認証実装

• 認可コード・トークンの有効期間

– 認可コード:30秒

– リフレッシュトークン:60日、または初回使用時まで

• 認可コード要求パラメータ

– state

• 指定必須

– redirect_uri

• ローカルホストは開発フェーズでしか使用できない

• ポートとパスは制限なし

15

Page 16: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

• 認可コード待ち受け

OAuth 2認証スクリプト

16

一時ファイルとして保存

Page 17: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

OAuth 2認証スクリプト

• アクセストークン準備

17

認可コード一時ファイルによる連携

Page 18: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

OAuth 2認証スクリプト

18

トークンなし:初回認証リフレッシュトークン期限切れ:再認証

Page 19: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

OAuth 2認証スクリプト

19

アクセストークン期限切れ:アクセストークン再発行

Page 20: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

OAuth 2認証スクリプト

20

トークン有効期間内:保存済みのトークンを使用

Page 21: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

• シナリオ

1. フォルダを作成• [Box] /Uploaded, /Downloaded

2. ローカルファイルをアップロード• [ローカル] /data/content_demo1/* [Box] /Uploaded

接続してみる 1

21

Page 22: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

• シナリオ

1. 検索(オンライン)でヒットした対象をダウンロード• [Box] name=dss_* [ローカル] /tmp/*

2. ダウンロード済みのファイルを特定フォルダに移動• [Box] /Downloaded

接続してみる 2

22

Page 23: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

• シナリオ

1. 検索(キャッシュ)でヒットした対象をダウンロード• [Box] name=dss_* [ローカル] /tmp/*

2. ダウンロード済みのファイルを特定フォルダに移動• [Box] /Downloaded

接続してみる 2’

23

Page 24: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

まとめ

Page 25: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

Boxに接続にあたって

• APIのドキュメントは詳しくて作りやすい

– リクエスト/レスポンスのJSONサンプルはありがたい

• 一部処理の事前状態が整えるまで時間がかかる

– View APIの表示用リンク作成• リモートの状態を仮定せずに事前にチェックするべき

– Content APIの検索処理• フォルダもファイルも反映が遅い

• リストした結果をローカルでキャッシュするべき

25

Page 26: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

DataSpiderで開発するにあたって

• RESTアダプタの秘める可能性

– RESTfulなAPIがあればどんなサービスにもつながる

• 認可コードの取得方法

– 開発フェーズはHTTPトリガーで簡単に取得できる

– 運用フェーズは工夫次第1. 受付用ウェブサービスを別途用意して

⇒ DataSpider@クラウド、独立ウェブサーバ、...

2. DataSpiderサーバで受付用ウェブサービスと連携する⇒ RESTアダプタ、Thunderbus、…

26

Page 27: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

【おまけ】

Page 28: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

全件削除処理

• View API

• Content API

28

Page 29: 2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』

ユティリティ

• ファイルハッシュ計算

FCIV: File Checksum Integrity Verifier (by Microsoft)

http://www.microsoft.com/en-us/download/details.aspx?id=11533

29