(非推奨)kintone Java SDK

目次

caution
警告

このツールは、現在推奨されていません。
新しく公開されている kintone Java Clientを利用してください。

はじめに

2018年12月にリリースされた、「kintone Java SDK」について紹介します。

GitHub

https://github.com/kintone-labs/kintone-java-sdk (External link)

ドキュメント

https://kintone-labs.github.io/kintone-java-sdk/latest/ (External link)

今回は、kintone Java SDKの導入方法と実行を、サンプルを用いて説明します。
開発はEclipseで行います。実行できる環境でお試しください。

Eclipse

https://www.eclipse.org/downloads/ (External link)

ご注意事項

  • ソースコードの変更および再配布、商用利用等はライセンスにしたがってご利用可能です。

導入方法

インストール

「kintone Java SDK」はライブラリのインストールをApache mavenを利用して行えます。
またeclipseでのmaven利用にはM2Eclipseというプラグインを利用しています。
Apache mavenおよびM2Eclipseのインストールについては公式サイトを参考にご⾃⾝で設定してください。

mavenおよびM2Eclipseのインストールが完了したら以下の手順にしたがって、mavenプロジェクトを作成しkintone Java SDKを読み込みます。

  1. ~\apache-maven-3.5.0\conf配下にある「setting.xml」に以下を追加

    1
    2
    
    //ローカルリポジトリ設定
    <localRepository>C:/apache-maven-3.5.0/repository\</localRepository>
  2. EclipseでMavenプロジェクトを作成

    • Eclipseの「ファイル > 新規 > Mavenプロジェクト」を選択

    • グループIdに任意の値を、アーティファクトIdに「Sample_project」と入力しそれ以外はデフォルトの値で完了ボタンを押下

    • 任意のパッケージ内に「SampleMain.java」というメインクラスを作成

  3. setting.xmlの読み込み

    • Eclipseの「ウインドウ > 設定」をクリックし「Maven > ユーザー設定」を選択

    • 「ユーザー設定」に1で設定した「setting.xml」を選択し、「適用して閉じる」を押下

  4. 2で作成したプロジェクト内に配置されたpom.xmlを編集

    • pom.xmlの<dependencies>タグ内に以下の内容を追加
      • groupId、artifactIdの値は固定となります。

      • versionの値は今後のアップデートに合わせて適宜変更可能となる予定です。

        1
        2
        3
        4
        5
        
        <dependency>
          <groupId>com.cybozu.kintone</groupId>
          <artifactId>kintone-sdk</artifactId>
          <version>0.2.0</version>
        </dependency>
  5. 2で作成したプロジェクトを右クリックし「実行 > Maven install」を選択

  6. 2で作成したプロジェクトを右クリックし「Maven > プロジェクトの更新」を選択

サンプル

ドキュメントのQuickstartにも掲載されている簡単なサンプルコードを用いて、実行方法とレスポンスについて説明していきます。
サンプルコードでは、kintoneアプリからレコードを1件取得する機能を実装しています。
準備として、kintoneアプリを作成し、下表をもとにフィールド追加、APIトークン(必要なアクセス権=閲覧)を作成してください。

フィールドタイプ フィールドコード
文字列 (1行) text

サンプルコード(ファイル名:SampleMain.java)

次のサンプルコードをコピーし、「sample_project」内の「SampleMain.java」を書き換えてください。
APIトークン、認証情報、サブドメイン、アプリIDはご自身の環境に合わせて書き換えてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
* kintone Java SDK Sample Program
* Copyright (c) 2019 Cybozu
*
* Licensed under the MIT License
* https://opensource.org/license/mit/
*/
package main;

import java.util.HashMap;

import com.cybozu.kintone.client.authentication.Auth;
import com.cybozu.kintone.client.connection.Connection;
import com.cybozu.kintone.client.exception.KintoneAPIException;
import com.cybozu.kintone.client.model.record.GetRecordResponse;
import com.cybozu.kintone.client.model.record.field.FieldValue;
import com.cybozu.kintone.client.module.record.Record;

public class SampleMain {

    public static void main(String[] param) {

        System.out.println("test start");

        final String API_TOKEN = "api_token";

        // Init authentication module
        Auth kintoneAuth = new Auth();
        kintoneAuth.setApiToken(API_TOKEN);

        // Init Connection without "guest space ID"
        final String DOMAIN =  "{yourdomain}.cybozu.com";
        Connection kintoneConnection = new Connection(DOMAIN, kintoneAuth);

        // Init Record Module
        Record kintoneRecord = new Record(kintoneConnection);

        // execute get record API
        final Integer APP_ID = 00;
        final Integer RECORD_ID = 0;
        try {
            GetRecordResponse responese = kintoneRecord.getRecord(APP_ID, RECORD_ID);
            HashMap<String, FieldValue> record =  responese.getRecord();
            System.out.println("record ID :" + record.get("$id").getValue());
            System.out.println("text field :" + record.get("text").getValue());
            System.out.println("test end");
        } catch (KintoneAPIException e) {
            e.printStackTrace();
            System.err.println(e.getErrorResponse().getMessage());
        }
    }
}

実行

Eclipse上で作成したコードを右クリックし「デバック > 2 Javaアプリケーション」を選択してください。

レスポンスの例

リクエストが成功すると、次のようなレスポンスが返ってきます。

サンプルコード解説

Authentication

サンプルコード25〜29行目についての解説です。
この部分では、kintoneに接続するための、認証方法について定義します。

27
28
// Init authentication module
Auth kintoneAuth = new Auth();

Authenticationクラスがあり、パスワード認証、APIトークン認証、Basic認証を設定できます。
認証の優先度は以下のとおりです。
参考: 認証の優先順位

  1. パスワード認証
  2. APIトークン認証

セッション認証はkintone Java SDKでは実装できません。

パスワード認証
1
2
3
final String USERNAME = "username";
final String PASSWORD = "password";
kintoneAuth.setPasswordAuth(USERNAME, PASSWORD);
APIトークン認証
1
2
final String API_TOKEN = "api_token";
kintoneAuth.setApiToken(API_TOKEN);
Basic認証
1
2
3
final String BASIC_USERNAME = "basic_username";
final String BASIC_PASSWORD = "basic_password";
kintoneAuth.setBasicAuth(BASIC_USERNAME, BASIC_PASSWORD);

Connection

31〜33行目のConnectionクラスでは、接続について設定できます。
接続先のドメイン情報と、先ほど作成した認証情報を使ってkintone環境に接続します。

31
32
33
// Init Connection without "guest space ID"
final String DOMAIN =  "{yourdomain}.cybozu.com";
Connection kintoneConnection = new Connection(DOMAIN, kintoneAuth);
31
32
33
34
// for guest space
final String DOMAIN =  "{yourdomain}.cybozu.com";
final int GUEST_SPACE_ID = 0;
Connection kintoneConnection = new Connection(DOMAIN, kintoneAuth, GUEST_SPACE_ID);

Record

最後に、38〜50行目についてです。

38
39
40
41
42
43
44
45
46
47
48
49
50
// execute get record API
final Integer APP_ID = 00;
final Integer RECORD_ID = 0;
try {
    GetRecordResponse responese = kintoneRecord.getRecord(APP_ID, RECORD_ID);
    HashMap<String, FieldValue> record =  responese.getRecord();
    System.out.println("record ID :" + record.get("$id").getValue());
    System.out.println("text field :" + record.get("text").getValue());
    System.out.println("test end");
} catch (KintoneAPIException e) {
    e.printStackTrace();
    System.err.println(e.getErrorResponse().getMessage());
}

この部分は、実際にkintoneのREST APIを実行する処理です。
サンプルでは、レコードを1件取得するために、RecordクラスのgetRecord関数を使用しています。

getRecord(appID, recordID)

パラメーターは次のとおりです。

名称 データタイプ 必須 説明
appID Integer アプリID
recordID Integer レコード番号

Recordクラスには、後述のとおり、レコード1件取得以外にも、さまざまな関数が用意されています。

その他の機能について

Recordクラス

先ほどのサンプルコードで使用した関数が定義されているクラスです。
アプリのレコードに対し、取得、登録、更新、削除、ステータスの変更をする関数や、コメントの取得、登録、削除をする関数が実装されています。
実装されている関数の例として、次の関数が実装されています。

  • getRecord
  • getRecords
  • addRecord
  • addRecords
  • updateRecords
  • deleteRecords
  • updateRecordStatus
  • getComments
  • addComment
  • deleteComment

他にもさまざまな関数が用意されています。
詳細はドキュメントを確認してください。

Recordクラスについて

https://kintone-labs.github.io/kintone-java-sdk/latest/reference/record/ (External link)

BulkRequestクラス

複数のアプリに対して、同時に複数のAPIをリクエストできます。
BulkRequestで使用できる関数は次のドキュメントを確認してください。

BulkRequestクラスについて

https://kintone-labs.github.io/kintone-java-sdk/latest/reference/bulk-request/ (External link)

また、BulkRequestを実行する際は次のことに注意してください。

  • BulkRequestを実行し、レスポンスを取得する際は、 execute (External link) 関数を実行する。
  • 一度に実行できる関数は、excecute関数を抜き、20個まで。
BulkRequestサンプル
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
BulkRequest bulkRequest = new BulkRequest(kintoneConnection);

try {
    bulkRequest.addRecord(APP_ID, addData);
    bulkRequest.addRecords(APP_ID, addDataList);
    bulkRequest.updateRecordByID(APP_ID, updateRecID, updateData, null);
    bulkRequest.deleteRecords(APP_ID, delIdList);

    BulkRequestResponse responses = bulkRequest.execute();
    System.out.println(responses.getResults());
} catch (KintoneAPIException e) {
    e.printStackTrace();
    System.err.println(e.getErrorResponse().getMessage());
}

Appクラス

アプリの情報を取得する関数が定義されているクラスです。
アプリの閲覧権限が必要です。
実装されている関数については次のドキュメントを確認してください。

Appクラスについて

https://kintone-labs.github.io/kintone-java-sdk/latest/reference/app/ (External link)

Appサンプル
1
2
3
4
5
6
7
8
9
App app = new App(kintoneConnection);

try {
    AppModel response = app.getApp(APP_ID);
    System.out.println(response.getCreator().getName());
} catch (KintoneAPIException e) {
    e.printStackTrace();
    System.err.println(e.getErrorResponse().getMessage());
}

型について

kintone Java SDKでは、各APIのレスポンスに独自の型を利用しています。
それぞれコンストラクタや利用できるメソッドが違うのでリファレンスをよく確認して利用してください。

https://kintone-labs.github.io/kintone-java-sdk/latest/reference/model/app/app/app-model/ (External link)

おわりに

Javaを利用したバッチプログラムやモバイルアプリの開発において、kintone REST APIを実行しやすくなりました。
この機会にkintone Java SDKをご活用ください。

information

このTipsは、2019年2月版kintoneで動作を確認しています。