bz0のにっき

quick and dirty prototype

kintone APIのライブラリを作りました

kintone APIのレコード操作を簡単に行えるライブラリを作ってみました。
github.com

kintone APIの公式ドキュメントは下記です。
kintone REST APIの共通仕様 – cybozu developer network

リクエストボディ

APIリクエストする際、Content-Typeに「application/json」を利用しているが
kintoneではRFC4627の形式に準拠する為、json_encodeで単純に変換すると
「不正なJSON文字列です」とエラーになってしまう事がありました。

配列ではなくオブジェクトとしてJSON変換されてしまう為です。

2016/01/10 の定期メンテナンスにおけるkintone API更新情報 Part1 – cybozu developer network


連想配列でなく、連番の場合は「array_values()」で配列であることを明確にすることで
この点は防ぐことができました。
PHPの配列を安全にJSONシリアライズする - Qiita

kintoneAPI開発での便利ツール

下記使うと楽だった。

HTTP Client Tool for kintone
https://developer.cybozu.io/hc/ja/articles/115001506986

よく分からないところがあれば、コミュニティで過去の質問を漁ってみたり
自分で質問するのもいいかも。

課題

CI

テストコードも、ローカルでのチェック用に申し訳程度に書いたけど
CIに対応しようと思ったら、アプリ生成→テストデータ追加→テスト→アプリ削除という手順を踏む必要がありそうで
非常にめんどくさそう。

ローカルでテスト実施できるだけでも、ちょっと直したときに
影響の有無をチェックできるので、テストコード書くと後が非常に楽だなと実感できたのはよかった。

CIでのAPIトークンってどこに置けばよいか

APIトークンとかbase64化したアカウントをどこに置くのがいいのか。
githubで公開したくないので、どういう風にすべきなんだろう。

調べてたら、下記方法がありそうです。

リクエストをモックに置き換えることで、APIトークンをコード内に含めない
https://github.com/hissy/kintone-php/blob/master/tests/ObjectTest.php

設定ファイル(APIトークン等)を入れたディレクトリをgit管理に含めない。
CIを行う際は、bitbucketなどのプライベートリポジトリを使って行うようにすべきなのだろうなと思います。
https://github.com/wataridori/chatwork-sdk/tree/master/tests