FileMakerエンジニア
FileMakerで画像や動画を
オブジェクトとして保存すると、
容量の増加や他者との共有において
課題が発生しやすくなります。
そこで、
外部のシステムを利用する方法が有効となりますが、
今回はドロップボックスを活用した
APIでの保存方法について解説します。
目次
DropBoxとは?
ドロップボックスは、
クラウド上でファイルを
保存、管理、共有できるサービスです。
簡単に言えば、
インターネットを通じて
データを保存する場所を提供してくれる
ツールで自分のパソコンやスマートフォンに
保存しているファイルを、
ドロップボックスにアップロードすることで、
どこからでもアクセスできるようになります。
これにより、
物理的なハードディスクの容量を気にすることなく、
データを保存・共有できるという
大きなメリットがあります。
さらに、ドロップボックスは複数のデバイス間でデータの同期が可能です。
たとえば、
会社のパソコンで作業したドキュメントを、
家のパソコンやスマートフォンでもすぐに確認できるので、
作業効率が向上します。
また、
共有機能を使えば、
他の人とファイルを簡単にやり取りできるため、
チームでのコラボレーションやクライアントとのファイル共有もスムーズに行えます。
無料プランでも一定の容量が使えますが、
さらに大きなデータを扱う場合は有料プランを選ぶことができます。
FileMakerと組み合わせることで、
より効率的にデータ管理やファイル共有を行うことが可能です。
無料プランと有料プランの違い
ドロップボックスにはいくつかのプランがあり、
プランによって使用できる機能や
容量が大きく変わってきます。
どのプランでも、
APIの利用は可能ですので、
ひとまず試してみたいという方は、、
無料プランでお試しください。
Basic
無料で利用できるプランです。2GBのストレージ容量を利用できます。
Plus
月額1,500円(年間払いだと1,200円)で利用できるプランです。2TBのストレージ容量を利用できます。
Essentials
月額2,000円(年間払いだと2,400円)で利用できるプランです。3TBのストレージ容量を利用できます。
Business
1ユーザーあたり月額1,800円(年間払いだと1,500円)で利用できるプランです。
3ユーザー以上から利用が可能です。
チーム全体で9TBのストレージ容量を利用できます。
Business Plus
1ユーザーあたり月額2,880円(年間払いだと2,400円)で利用できるプランです。
3ユーザー以上から利用が可能です。
チーム全体で15TBのストレージ容量を利用できます。
PlusとEssentialsは個人利用向けBusinessとBusiness Plusは
チーム向けとなっています。
※料金に関しては2024/10/11時点の情報になります。
DropBoxのAPIを使用するには
Dropboxのアカウント作成
まずDropboxをGoogleで調べましょう。
おそらく一番上に表示されていると思いますので、
こちらを開きましょう。
開くとDropBoxのHPが開かれます。
右上にある[利用を開始]をクリックします。
すると料金表が表示されますので、
今回はその中の[Basicで利用する]を選択します。
すると登録の画面が表示されますので
Googleアカウント、Apple、メールアドレスのいずれかで登録します。
登録時、もう一度料金表が表示されますので
下部にある
[2GP DropBox Basic プランを継続する]
をクリックしましょう。
最後にデスクトップアプリをインストオールするか
確認されますがこれはお好きな方をお選びください。
今回はAPIを利用するのでWebアプリで使用しています。
登録が完了すると以下の画像のような画面が表示されるはずです。
APIを利用する準備
登録ができましたらAPIを利用するための準備を行います。
再度GoogleでDBX Platformと調べてみてください。
するとデベロッパーのためDBX Platformが一番上に表示されるはずです。
これをクリックすると最初のホームと同じような画面が表示されますが
[無料トライアル]だった部分が[アプリの作成]
になっていると思います。
このアプリ作成をクリックします。
いくつか項目がありますので確認し入力していきます。
1. Choose an API
こちらは現在は一つしかありません。
2. Choose the type of access you need
「指定のフォルダのみ」のアクセス
「ドロップボックス内全部」のアクセス
を選択してください。
今回は指定のフォルダのみのアクセスにしています。
3. Name your app
アプリの任意の名前を入力してください
(アプリ名は使用されていると確定ができません)
選択、入力ができましたらCreate Appをクリックします。
問題がなければ設定画面が表示されると思います。
APIを使用するための設定
APIの利用にはトークンというのが必要になります。
設定画面のPermissionsの中にあるIndividual Scopesを設定します。(必要な個所だけ)
ここの設定はファイル内の読込みや書込みの設定になります。
今回は全て許可していますが
要件にあった設定に変更してください。
API KeyとSecretの取得
自動で生成されています。
Settingsの中にある
アプリの権限付与
次にApp Keyを下記リンクに入れてアクセス(Individual Scopesを設定しておかないとアクセスできなかったりする)
作成したURLにアクセスすると以下の画像のような画面になります。
続行をクリックすると
アプリに権限を許可するか聞かれますので
許可をクリックします。
その後にアクセスコードが生成されますので
こちらをメモしておきましょう。
※注意
今回は説明ようにアクセスコードを公開していますが、
不正利用などの原因にもなりますので
このアクセスコードは絶対に公開しないでください。
また、このアクセスコードも
現在は利用不可になっています。
FileMakerで使用できるようにする
まずはファイルを作成し設定テーブルを作成し
先ほど取得したAPI KeyやSecret、アクセスコードなどを入れておく場所を作成しましょう。
システムの要件によっては、
設定テーブルではなくスクリプトや別ファイル、
また、暗号化などしても良いかもしれません。
では、先ほどの情報を使用し
アクセストークンを取得していきます。
ここからはDropBoxのAPIを使用していきますので
ドキュメントも合わせてご確認ください。
では、FileMakerで
以下の画像のようにAPIを叩いてみます。
このAPIを叩くと以下のJSONが結果として
返ってくると思います。
また、2回目以降のcurlは有効期限切れが返ってくるので注意して下さい。
アクセストークンの取得
refresh_tokenだとDropBox自体にはアクセスできないので
今度はaccess_tokenを取得していきます。
ここまでで随分長い
と感じているかもしれませんが
もう一歩です。
最後にアクセストークンを取得すると
DropBoxのAPIが利用できるようになります。
画像をよく確認してくれた方は
気づいているかもしれませんが
実はrefresh_tokenを取得したタイミングで
access_tokenは取得できています。
ではなぜ、再度取得するのかというと、
access_tokenの有効期限は4時間ですので
今後使用する場合はrefresh_tokenより取得して使用するためです。
先ほどとほとんど同じ内容になりますが
今後はこちらのスクリプトを使用していきます。
こちらを実行すると以下のようなJSONが
返ってきますので
この中のaccess_tokenを利用していきましょう
FileMakerでDropBoxにアップロード
今回の解説ではアップロードをしますが
DropBoxにはさまざまなAPIがあり
ファイルアップロード
ファイルのダウンロード
フォルダの作成
URLの取得
などがあります。
詳しくはドキュメントをご確認ください。
アップロード手順
ドキュメントの
サイドバーから /upload を選択
APIを叩くためのURLは
URL STRUCTUREの
https://content.dropboxapi.com/2/files/upload
だということがわかります。
cURLは
EXAMPLEの
curl -X POST https://content.dropboxapi.com/2/files/upload \
--header "Authorization: Bearer " \
--header "Dropbox-API-Arg: {\"autorename\":false,\"mode\":\"add\",\"mute\":false,\"path\":\"/Homework/math/Matrices.txt\",\"strict_conflict\":false}" \
--header "Content-Type: application/octet-stream" \
--data-binary @local_file.txt
を使用すれば良いことがわかります。
cURLは
<get access token>
access_tokenに書き換えて
/Homework/math/Matrices.txt
はDropBoxのpathに書き換えます。
例)/アプリ名/保存したいファイルの名前
ファイル名はbinaryデータで送信するので拡張子まで指定する必要があります。
最後に
–data-binary @local_file.txt
@local_file.txtに送信したいデータを入れます。
送信をすると下記のJSONが返ってきます
{
"name": "test.png",
"path_lower": "/FileMaker-241011/test.png",
"path_display": "/FileMaker-241011/test.png",
"id": "id:t_sD6o11HM4AAAAAAAAACA",
"client_modified": "2022-11-18T01:40:51Z",
"server_modified": "2022-11-18T01:40:51Z",
"rev": "015edb4cbbf10f50000000285e9df10",
"size": 0,
"is_downloadable": true,
"content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
もしくは id、rev
があれば今後APIからダウンロードやURLの再発行等が行えますので
このいずれかをFileMakerのフィールドに入れておくと良いでしょう。
またオブジェクトはおいておかず
Webビューアで表示させることで
無駄な容量も削減できます。
また、取得したURLを外部に共有することで
FileMakerにログインの権限がなくても画像や動画をDropBox経由で
閲覧、ダウンロードなどできるようになります。
まとめ
オブジェクトの保存場所は
ファイルの速度や外部保存のリンク切れなど色々な課題が出てきます。
これを外部のツールに保存することでファイル容量や速度、
リンク切れになってしまっても再取得などが可能になります。
しかし、DropBoxなどのAPIは少し難しく
難易度が高いために諦めてしまう人も多いと思いますので
DropBoxの連携をしてみたい、
また、DropBox以外でもAPIの連携を断念したなどあれば是非ご相談ください。
また、株式会社ブリエではFileMakerを使った業務改善を行なっており
APIをつなげてほしい、業務改善がシステムでできないかを検討している、
などあれば是非一度お問い合わせください。
多岐にわたる業種での経験を経て、現在はFileMakerを中心に活躍中のエンジニアです。ローコード開発を得意としながらも、Django、React、Flutterなどの技術にも挑戦し、幅広い開発スキルを習得。常に自分の技術を磨き、より良いソリューションを提供できるよう、継続的にスキルアップを図っています。多彩な技術を駆使して、クライアントのニーズに応える柔軟性と、迅速かつ効果的な開発力が強みです。