サイエンスパーク株式会社

サイト内検索
お問い合わせ
Box(クラウドコンテンツ管理ソリューション)

詳解BoxAPIを使うまで(Java編)

 この記事では、BoxAPIを使用してBoxアプリを開発する手順について詳しく説明します。BoxAPIを活用することで、ファイル共有、ストレージ、コラボレーションなどの機能を柔軟に組み込むことが可能です。また、Boxは開発者向けに豊富なドキュメントやリソースを提供しており、他のアプリやサービスとの統合も容易です。これにより、開発者は迅速にアプリを構築し、既存のシステムとの連携を実現できます。

 ここでは、BoxAPIを利用してBoxとの認証を行い、認証したユーザーの情報(ユーザー名とメールアドレス)を出力するアプリを作成し、実行するまでの手順を一から説明します。今回は無料の開発者向けBoxテナント(Box Individualプラン)を作成されている前提で進めさせていただきます。

目次

・BoxAPIとは
・Boxアプリ作成
・実行環境の構築
・最後に

Box APIとは

 BoxAPIとはBoxでできるユーザやフォルダの作成、更新、削除等の操作をAPI経由で実現できるものです。これによりBoxコンソールからだけでなく既存のシステムに組み込み自動でBoxとの連携を実現することが可能です。

Box アプリ作成

①Boxへログインし、画面左側のメニュー一覧の「開発者コンソール」をクリックします。

②Box開発者専用画面に遷移するため、画面右上の「アプリの新規作成」をクリックします。

③アプリタイプを選択します。アプリタイプには、「カスタムアプリ」、「アクセス制限付きアプリ」、「カスタムスキル」の3種類あります。プロジェクトのユースケースによって、最適なアプリケーションは異なります。詳しくはこちらをご覧ください。
 アプリの種類の選択 – Box Developerドキュメント

 今回は最も柔軟なオプションである「カスタムアプリ」を使用します。

④アプリ名や目的等、必須項目を入力し、「次へ」をクリックします。
今回は以下の設定で作成しました。

アプリ名:sciencepark_test
説明(省略可):詳解BoxAPIを使うまで(java編)
目的:その他
目的を入力:demo

⑤アプリが作成されました。

実行環境の構築

本記事では以下の環境でBoxJavaSDKを使用してBoxAPIを実行します。

項目名バージョン備考
1IntelliJ IDEA2021.2.1 (Community Edition)統合開発環境
2JDKAmazon Corretto version 11.0.12Java開発実行環境
3BoxJavaSDK4.5.0Java用のBoxSDK
4Gradle7.1ビルド自動化システム

①「IntelliJ IDEA」を起動します。こちらのページからダウンロードをすることが可能です。

②IntelliJ IDEA画面の上部のタブより「File -> New -> Project」と遷移します。

③続けて、「Gradle」を選択しProjectSDKに「corretto-11」、Additional Libraries and frameworksに「Java」を選択し「Next」ボタンをクリックします。

④プロジェクトの名前および作成先フォルダを指定し「Finish」ボタンをクリックします。しばらく待つと関連するファイルが作成されます。

⑤「src/main/java」を右クリックし「New -> Java Class」よりクラスを作成します。

⑥ 「build.gradle」を開き、以下の内容に修正します。
コメントを入れている属性値を追加しています。

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
    
    // BoxJavaSDKの参照を追加
    implementation 'com.box:box-java-sdk:4.5.0'
}

test {
    useJUnitPlatform()
}

// アプリケーションプラグインを利用
apply plugin: 'application'

// Mainクラスを指定
mainClassName = 'BoxAPIDemo'

⑦Gradleの変更を読み込みます。

以上でBoxJavaSDKを使用できるようになりました。

⑧ 「src/main/java」へ追加した「BoxAPIDemo.java」を以下のように修正します。
こちらのサンプルプログラムでは現在のユーザの名前とメールアドレスを標準出力へ表示します。

import com.box.sdk.BoxAPIConnection;

import com.box.sdk.BoxUser;

public class BoxAPIDemo {

    // アプリのほうで開発者トークンを発行し貼り付ける

    private static final String DEVELOPER_TOKEN = "";

    public static void main(String[] args) {

        BoxAPIConnection api = new BoxAPIConnection(DEVELOPER_TOKEN);

        BoxUser.Info userInfo = BoxUser.getCurrentUser(api).getInfo();

        System.out.format("Welcome, Name:" + userInfo.getName() + " Mail:" + userInfo.getLogin());

    }
}

⑨ Boxコンソールで作成したアプリを選択します。
選択後に「構成」タブへ移動し「開発者トークンを生成」ボタンをクリックします。

⑩ 有効期限が約1時間の開発者トークンが発行されます。

【ポイント】
今回は、最もシンプルな開発者トークンで認証をしていますが、Boxでは他にも「JSON Web Token(JWT)」や「OAuth 2.0」での認証にも対応しています。

⑪「src/main/java」へ追加した「BoxAPIDemo.java」に開発者トークンをコピーして、Gradleより「Tasks/build/build」でビルドを実行します。

⑫作成したサンプルプログラムを実行できるようにします。
「Run/Debug Configurations」ダイアログを表示します。

⑬「+」ボタンをクリックし「Gradle」のテンプレートを新規作成します。

⑭「Name:」および「Run」に「run」を指定しOKボタンをクリックします。

⑮作成した「run」プロジェクトを実行することでサンプルプログラムが実行され標準出力へ表示がされます。

【補足】
今回実行したBoxAPIについては、下記サイトで概要が記載されています。(2024/04 現在)
BoxAPIリファレンス
https://ja.developer.box.com/reference/get-users-me/
box-java-sdkドキュメント
https://github.com/box/box-java-sdk/blob/main/doc/users.md#get-the-current-users-information

⑯現在のユーザのその他属性の取得仕方はサンプルコード上の「userInfo」を選択した状態で「ctrl + shift + B」を押すことで定義へ飛ぶことで確認できます。

例えば「言語」について表示したい場合は「getLanguage()」関数となります。

サンプルプログラムを修正し「現在のユーザの言語」について表示してみました。

最後に

 今回は、「現在のユーザ」に対する情報取得をBoxAPIで行いましたが、ユーザ、グループ、フォルダなどに対する作成や削除などの処理実行も可能です。もし実行に失敗した場合は、BoxAPIやbox-java-sdkのドキュメントを確認してみることをおすすめいたします。

 また、作成したアプリの「アプリケーションスコープ 」が操作を許可する設定になっていない場合もあります。「アプリケーションスコープ」は作成したBoxアプリの権限を設定する項目です。
 今回はデモアプリのため何でもできる権限を付与しても問題ありませんが、実際に業務で使用するBoxアプリの場合はセキュリティリスクなども考慮し必要最低限の権限を付与することが一般的です。
 Boxテナントで、作成したアプリにアクセスし「構成」タブの「アプリケーションスコープ」より設定を変更できます。

 BoxAPIを活用することで、Boxをファイル保存、共有する場所として活用だけではなく、業務システムなどとの連携でBoxの活用の幅が大きく変わります。
 これまで紙で行っていた外部とのやり取りを専用のWebアプリを開発し、申請からファイルのアップロード、申請状況の管理までをBoxAPIを活用することで実現することも可能です。