(非推奨)kintone Java SDK

目次

caution
警告

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

はじめに

2018 年 12 月にリリースされた、「kintone Java SDK」について紹介します。
今回リリースされた「kintone Java SDK」を使うことで Java でバッチプログラムやモバイルアプリ作成する際に簡単に REST API を実行できます。
すでに公開されている「 kintone API SDK(β) for Java (External link) 」とは別の新しいライブラリとなっています。

また、「kintone Java SDK」は以前リリースした「kintone Node.js SDK」や同時期にリリースされている「 kintone iOS 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 で動作を確認しています。