この記事では、kintone連携サービスの企画者/開発者向けに、外部連携サービスを開発する前の確認項目を紹介します。
連携サービス認定を取得するために必要な対応や、開発時の注意事項を事前に理解することは、よりよい連携製品の開発につながります。
kintone連携サービスの認定取得に必要なこと
kintone連携サービスの認定取得に必要な対応の一部を紹介します。
詳細は
kintone連携サービス認定基準
を確認してください。
kintone連携サービスの認定を取得すると
連携ソリューションサイト
に製品を掲載できます。
認定を取得するには
kintoneプロダクトパートナー
になる必要があります。
認定を取得しない場合も連携サービスの品質向上のために確認してください。
サイボウズ製品の仕様考慮
kintoneには制限値があります。
また、製品の特性を理解して設計しないとトラブルにつながる可能性が高まります。
次に記載した内容に配慮して設計してください。
非公開(内部) APIは利用しない
cybozu developer networkで公開していない非公開(内部)APIの利用はできません。
DOM操作時におけるトラブル対応策の用意
cybozu.comやkintoneは脆弱性対応や不具合改修のために緊急リリースを実施することがあります。
また、cybozu developer networkで公開していない内容は予告なく変更する可能性があります。
そのため、DOMを参照および操作する場合はトラブル発生時の対応方針や体制の用意をお願いします。
セキュアコーディングガイドラインの遵守
セキュアコーディングガイドライン の内容を遵守してください。
「認証/認可情報」を利用者が閲覧できる場所に保存せざるえない場合、その内容やリスクを利用者に説明することで認定できます。
データの外部送信および外部からのデータ取得を公開
kintone外にデータを送信する場合は、利用者のセキュリティポリシー上の問題となる可能性があります。
製品機能上明らかに利用者が認識している場合は問題ありませんが、実態としては外部に送信している、という状態は認められません。
(プラグイン設定やライセンス認証のしくみに必要な情報(ドメイン名やアプリID)は該当しません)
利用者が登録したデータ(アプリのレコードデータ)を外部に送信もしくは外部から取得する場合、その旨を利用者に公開してください。
(製品機能上明らかな場合を除きます)
kintone連携サービスの開発に役立つもの
kintone連携サービスの開発に役立つものを紹介します。
JavaScriptカスタマイズのプラグイン化
複数のJavaScriptやCSSを1つにパッケージングした「プラグイン」を作成することで機能拡張や他サービス連携を実現できます。
開発手順や効率的にプラグインを開発するための情報は、
はじめようkintoneプラグイン
や
プラグイン開発支援ツール群の案内
を確認してください。
kintoneプラグインのライセンス管理
kintoneプラグインを販売したり、プラグインを利用できるドメインや期間を制限したりするしくみは、各社独自で構築する必要があります。
構築する方法は
kintoneプラグインのライセンスを管理してプラグインの利用ドメインを制限する
を確認してください。
クロスドメイン制約への対応
ブラウザー(kintoneではないドメイン)のJavaScriptからkintone REST APIを実行する場合はクロスドメイン制約を考慮する必要があります。
ブラウザー(kintoneドメイン)のJavaScript(kintone JavaScriptカスタマイズ)から外部のAPIを実行する場合はkintone.proxyを利用することでクロスドメイン制約を回避できます。
詳細は 外部のAPIの実行 を確認してください。
注意
制限事項があるためリクエストの可否については事前に検証してください。
外部APIの実行に必要な認証情報の隠匿
kintone JavaScriptカスタマイズから外部のAPIを実行する場合はkintoneプラグインにすることで次の2つに対応できます。
- 認証情報を隠匿して外部のAPIを実行
- クロスドメイン制約
詳細は kintoneプラグインで秘匿情報を隠す〜隠蔽方法編〜 を確認してください。
注意
制限事項があるためリクエストの可否については事前に検証してください。
kintone REST APIの認証
kintone REST APIでは複数の認証を利用できます。(参考:
kintone REST APIの認証
)
kintone JavaScript APIからkintone REST APIを利用する場合、セッション認証の利用を検討してください。
外部からkintone REST APIを利用する場合は、権限を限定しやすいAPIトークンの利用をおすすめします。
APIトークンの複数指定
kintoneアプリはルックアップ機能によってアプリ間で連携できます。
ルックアップ機能を利用したアプリを操作する場合はAPIトークンをカンマ区切りで複数指定する必要があります。
詳細は 複数APIトークンを使ってできること を確認してください。
1万件以上のレコードを取得する方法
複数のレコードを取得するAPI
のoffsetに指定可能な上限は、1万です。
1万件を超えるレコードを取得する場合は、
カーソルAPI
を利用する必要があります。
詳細は offsetの制限値を考慮したkintoneのレコード一括取得について を確認してください。
サイボウズ株式会社提供のREST API Client
開発言語がJavaScript(TypeScript)やJavaの場合はサイボウズ株式会社が開発、提供しているライブラリがあります。
詳細は いろいろなプログラミング言語でkintone REST APIを実行する を確認してください。
ゲストスペース配下のアプリのREST APIエンドポイント
ゲストスペース配下のアプリと連携する場合はREST APIエンドポイントが変わります。
変わるのはエンドポイントのみでリクエスト内容やレスポンスは変わりません。(参考:
1件のレコードを取得する
)
一覧画面用のカスタマイズ
レコード詳細画面で編集や削除などを制御するJavaScriptカスタマイズを実装する場合は、PC用一覧画面のカスタマイズも必要になる可能性があります。
要件から漏れやすい箇所なのでご注意ください。
モバイル画面用のカスタマイズ
PC用画面でカスタマイズを実装する場合は、モバイル画面(モバイル用のブラウザー画面/アプリ画面)用のカスタマイズも必要になる可能性があります。
要件から漏れやすい箇所なのでご注意ください。
詳細は kintoneカスタマイズにおけるPCとモバイルの違い を確認してください。
IPアドレス制限への対応
cybozu.comではリクエスト元のIPアドレスを制限できます。(参考:
IPアドレス制限
)
連携サービスからのリクエストが固定IPアドレスとなっていれば利用者はより導入しやすくなります。
ユーザーエージェントの設定
kintone REST APIをブラウザー外から実行する場合は、トラブル発生時の調査のためにユーザーエージェント(「User-Agent」ヘッダー)を設定してください。
設定内容は貴社製品と特定できれば良く、フォーマットの指定はありません。
ユーザーエージェントのガイドラインは、RFC 9110の「User-Agent」の項を参照してください。
10.1.5. User-Agent | RFC 9110
Webhookの利用シーン
Webhookにはドメインあたり分間60回という制限があり、超過分はエラーになります。
エラー発生時は利用者では把握・対処できず、管理者対応を必要とする可能性があります。
そのため、重要な処理にWebhookを利用することはおすすめしません。
定期メンテナンスの考慮
日本時間の毎月第2日曜日、午前1時~7時の間に定期メンテナンスを実施するため、リクエストを受け付けられない時間があります。
6時間のうち、メンテナンスに必要な作業時間分サービスが停止します。
そのため、リトライ機能の実装や運用による対応を必要とするケースがあります。
kintoneのドメイン対応
kintoneは海外でも展開しており、日本はsample.cybozu.com、海外はsample.kintone.comというドメインを利用します。
ドメイン全体を入力する設計にしておくと汎用性が高くなります。
注意
仕様や機能に差異があるのでkintone.comでも展開される場合はテストが必要です。
問い合わせ導線の考慮
プラグイン製品の場合、利用者が画面上から問い合わせ先を容易に認識できるよう設計してください。
具体的な対応の例は次のとおりです。
- プラグインの外部リンク設定(manifest.jsonのhomepage_urlパラメーター)に開発元や製品ページのURLを設定する。
(参考: kintoneプラグイン開発手順 ) - プラグインの設定画面内に問い合わせの導線を設置する。
利用者が意図しないデータが公開されてしまう(情報漏洩)リスクの回避
Webサーバーを介してkintoneを操作するサービスを構築する場合は、利用者が意図しないデータを公開しないようにしてください。
情報漏洩リスクの例
- 画面に表示するフィールドは限定されているが、開発者ツールのネットワークタブではすべてのフィールドを閲覧できてしまう。
特にJavaScriptからkintone REST APIを実行する場合に注意が必要です(例:ルックアップフィールド) - 開発者ツール上でリクエストを書き換えることで、別のレコードが閲覧できてしまう。
(リクエストの内容をWebサーバー側でチェックしておらず、書き換えたリクエストがそのままkintoneにリクエストされる)