どうも!実はキントマニア初投稿のBBです!
ちょっと時間が過ぎてしまったのですが、2022年11月にリリースされたcli-kintone v1についてブログにしてみました!cli-kintoneって何?って方もご安心を!裏情報交えて説明を入れたのでぜひご覧ください!
cli-kintoneって何?
まずはここからですね。
cli-kintoneとはサイボウズ社が提供しているコマンドラインツールで、主にエンジニアが扱うツールとなっています。コマンドライン上でkintoneのレコード情報を入出力することができ、レコード一括操作やファイル一括操作、データ移行等に使われていたりします。
■ コマンドライン (CLI)
マウスを使わないでキーボードだけでPCを操作する際の入力画面
つまるところは文字ばっかり出てくるエンジニアっぽいあの画面です 笑
通常このようなツールがない場合でも一からプログラムを作成することで同様の処理を作ることはできますが、cli-kintoneのようなツールがあることでそこのプログラム開発の工数がぐんと下げられるってわけです。
(JavaScriptやPythonならまだしも、コマンドライン(シェルコマンド)をごりごり書けるぜ!って人は最近では珍しく、そういう意味でもツールの価値は高いですね)
このツールの読み方なのですが、サイボウズから公式でふりがなはつけられておらず、界隈では勝手に「クリキントーン」と呼んでいます。「コマンドライン(CLI)でkintoneを扱うツール = cli-kintone」が由来なんだとかなんとか。過去のエイプリルフールのネタでスイーツの方のクリキントンとコラボ?したとかなんとか。
今までのcli-kintone v0と何が違うのか?
ご存知の方もいらっしゃるとは思いますが、実はcli-kintoneは2014年から存在し、今まではずっと v0(開発版)として公開されていました。
そしてそれが晴れて2022年11月、8年の歳月を経てようやくv1(製品版)としてリリースされたわけです!感慨深いですね。
そんなv1ですが、今までのv0とどこが違うのか?が一番気になるところ。触ってみたら結構違うところが多かった印象です。公式ドキュメントに比較記事もありますが、ここではよく使うであろう部分をピックアップしたいと思います。
▼ cli-kintone(v1.x.x)と旧バージョン(v.0.x.x)との機能差異
https://developer.cybozu.io/hc/ja/articles/11564456860825
1. 公式にサポートされている
運用する上で一番大きいのがこれです。
今までのv0は開発版という立ち位置ゆえ、どの程度サポートされているのかわからない部分もありましたが、今回v1の製品版になったことでkintoneと同等のサポートを受けることができます。
(サイボウズのテクニカルサポート(API窓口)が利用できます)
お客様に納品するプログラムなどを考えると、「サイボウズ社のサポートがあるツール」というのは選択する上で大きいと思います。
2. オプション(引数)の書き方
次は中身の機能に関する部分ですが、v0とv1ではアプリ情報や認証情報の書き方(オプションの書き方)が大きく異なっています。
・v0の場合(特定アプリのレコード全件取得)
./cli-kintone -d {subdomain} -a {appId} -t {apiToken}
・v1の場合(特定アプリのレコード全件取得)
./cli-kintone record export --base-url https://{subdomain}.cybozu.com --app {appId} --api-token {apiToken}
オプション名が -a
などから --app
と、多少長くなった代わりに何を指定すべきかわかりやすくなりました。 --base-url
に関しても、他のSDK(rest-api-client)と統一しているようです。
SDK全体として統一感が図られており個人的には好印象です!
3. セキュアアクセスへの対応
これも大きいアップデートです。
v0ではセキュアアクセス環境への実行は不可だったのですが、v1から新しいオプション --pfx-file-path
と--pfx-file-password
が搭載され、セキュアアクセス環境への実行も可能になりました。これでより運用を意識することができて、めちゃくちゃありがたいアップデートです!
ただし、注意点もあります(試す中で見事に引っかかりました 笑)
- –base-urlに記載するURLは https://{subdomain}
.s
.cybozu.comと「.s」をつける - 認証形式はユーザー認証のみ(APIトークン認証は使えない)
1つ目に関してはAPIドキュメントにも書かれていたのでただの見逃しなわけですが、2つ目については軽く調べた限りだと特に明記はなく、、。
でもまぁ個人のセキュアアクセス認証を使うのだからAPIトークンは使えないか、と納得もしています。
4. $idの消滅
v0でレコードのエクスポートを実行するとこの$id
というカラムが取得でき、レコードインポート時にこの$id列
の有無によってレコード新規追加をするのかレコード更新をするのかか判断する動きがありました。
が、めちゃくちゃわかりにくい上に$id
を除外するためにエクスポートしたCSVを加工するのがめんどくさくて厄介だったんですよね。
それがv1では$id
がなくなり、代わりに --update-key
というオプションが搭載され、これを指定することで新規追加か更新か判断するようになりました。
これも他のSDKと合わせた感じで非常に使いやすいです。
(画面のCSVインポートと同様に、更新キーが一致するものは更新、一致しないものは新規追加、とupsertの動きもあります)
5. 隠し機能:envファイルによるオプション指定
公式ドキュメントには載っていないけど使えた機能をご紹介。
cli-kintoneを実際に利用する場合、複数のオプションを駆使してコマンドを作っていくわけですが、認証情報などは環境変数ファイルに入れてまとめて管理したいことがあると思います。
実はcli-kintone v1も他のSDKと同様に環境変数に対応していて、指定のエイリアスで登録しておくと勝手にその値を使ってくれます。
ざっと確認した感じだと下記のオプションは環境変数に対応していました。
- –base-url: $KINTONE_BASE_URL
- –username: $KINTONE_USERNAME
- –password: $KINTONE_PASSWORD
- –api-token: $KINTONE_API_TOKEN
- –basic-auth-username: $KINTONE_BASIC_AUTH_USERNAME
- –basic-auth-password: $KINTONE_BASIC_AUTH_PASSWORD
- –guest-space-id: $KINTONE_GUEST_SPACE_ID
- –proxy: $HTTPS_PROXY
例えば、セキュアアクセスなどが設定されていないシンプルなkintone環境の特定アプリからレコードを全件取得したい場合、
#.envファイル KINTONE_BASE_URL=https://{subdomain}.cybozu.com KINTONE_APITOKEN={apiToken}
# cli-kintone実行コマンド ./cli-kintone record export --app {appId}
とアプリIDだけ指定すれば動きます!
実行ファイルと環境変数ファイルでファイルを分けておくことができれば、GitHubでソースコードを管理したりする場合も不要な認証情報はアップせずに済むので、非常にありがたい機能です!
おわりに
他にも異なるところはありますが、全部書くと上にリンクした公式ドキュメントと丸かぶりするので今回は要所のみのピックアップに留めておきます。
cli-kintoneはv1になってようやく他のサイボウズ社SDKツールと肩を並べた気がしますね。オプションの指定方法などから同じ思想のもとで開発されている感じがします。開発者のDX(Developer Experience)に貢献するツールなのは間違いないです!
cli-kintoneについてもっと詳しく知りたい方はこちらの記事をご覧ください。