1. kintoneと外部サービスの連携の流れ


kintoneと外部サービスを連携するシステムを開発する際、まず分かることは、どういった汎用の流れで処理を進めるのかということです。連携の基本となる流れは以下のようなものになります。



1. ユーザー操作:外部APIを叩く際のトリガーをユーザーから受け取る。
2. kintoneから情報取得:kintone上のデータを外部API用のフォーマットに変換して外部サービスに送信する。
3. 外部サービスから情報取得:外部サービスからレスポンスを受け取り、kintoneに反映する。



2. その際のプログラミングポイント


その際のプログラミングを行う際に気を付けるべきポイントは、以下の3点です。



1. kintoneのデータをモジュール化する:kintoneの情報取得において、取得範囲やフィールドの制御をモジュール化して行うことが望ましいです。
const range = kintone.api.range('A1:D10');
const fields = ['name', 'address', 'tel', 'mail'];
kintone.getRecords(range, fields).then((data) => {
  console.log(data);
});


2.トリガー・対応するエラーロジックなどを組み込む:外部サービスを叩く処理を行う際のトリガーや、叩いた際にデータの不整合があった場合の処理を行う際は必ず組み込むようにしましょう。
const triggerData = {
key: 'apiKey',
value: 'apiValue'
};

const logErrorEvent = (data, err) => {
console.error(`${data.name}: ${err.message}`);
}

kintone.api.triggerEvent(triggerData, data, logErrorEvent);


3. レスポンスを可読性のある形式にする:レスポンスの情報がkintone側で扱いやすい形式になっているのかを必ずチェックしておきましょう。
const data = {
name: 'John',
address: 'America',
tel: '123-4567',
mail: 'john@example.com',
};

const responseData = {
name: data.name,
addr: data.address,
tel: data.tel,
mail: data.mail
};

console.log(responseData);


3. テストの点検と効率化


テストの点検を行ない、うまい具合に効率化していく必要があります。効率的な開発を行うためには以下の3つが重要なポイントとなります。

1. テストを自動化する:テストを自動化する際は再現性の高いものを利用しましょう。例えば、Vue.jsを使うなどが挙げられます。
mounted() {
axios.get('/api/user')
.then((response) => {
this.userName = response.data.name;
});
}


2. テストを実行しやすくする:ユーザーが実行しやすいようにテストプログラムを組み込みます。例えば、PHPUnitなどが挙げられます。
public function testSort()
{
$data = ['test1', 'test2'];
$this->tester->assertEquals(['test1', 'test2'], $data->sort()); //文字列を並び替える
}


3. ドライラン等を利用:1で自動テストを行った際、ドライラン等の可視化ツールを使いテストの有効性を行うことができます。例えば、CI/CDにJenkinsを利用するなどが挙げられます。
$ bower install jenkins
$ bower install jenkins-cli
$ bower install jenkins-api


4. 注意点


最後に、開発時には常に注意が必要となるポイントがあります。

1. 実装する際は、kintone内のAPIの仕様を正確に把握する:kintoneのAPI仕様を正確に把握し、実装するようにしましょう。間違えると予期せぬ挙動を起こしてしまう可能性があります。
let triggers = kintone.api.getTriggers([eventName]);
triggers.forEach((trigger) => {
let eventName = trigger.name;
let targetApp = trigger.appId;
let events = kintone.getEvents(eventName, targetApp);
events.forEach((event) => {
let record = event.record;
// 中略
});
});


2. 実装せずにテストを行う:実装を行う前に基本的なテストを行ない、実装の有効性を確かめることが必ず行うようにしましょう。
const validateData = (data) => {
const valid = {
name: /^[a-zA-Z ]+$/,
address

投稿者: systemreach_engineer