Chapter 02

インストールからkintoneの設定ダウンロードまで

Hisaki AKAZA
Hisaki AKAZA
2021.06.23に更新

はじめに

前回はGinueをなぜ作ったか?というお話をしました。
今回から、実際に色々とGinueを使っていきましょう。

https://github.com/goqoo-on-kintone/ginue

以下、macOSのターミナルで操作する前提で進めます。
WindowsのコマンドプロンプトやBash on Windowsでも動作するはずですが、Ginue操作以外のシェルコマンドは適宜読み替えてください。

開発環境のスペースを作成

まずは開発環境を作りましょう。

僕はポータルに直接アプリを作ることはせず、必ずスペースを作ってその中にアプリを作るようにしています。今回は「顧客サポート」というスペースを作って、その中にkintoneアプリストアの「顧客サポートパック」を使って、3アプリを作成しました。

以降はこれを「開発環境」のスペースとして使っていきます。今後「顧客管理業務」に関係のあるアプリが増える場合は、このスペース内にアプリを追加していくのがおすすめ。

シンプルに「環境=スペース」と考えれば、あとは別ドメインに分けても同一ドメインに複数スペース作っても、同じように管理できます。

インストール

事前準備としてNode.jsGitを使えるようにしておいてください。
Yarnも一緒に使うのがおすすめですが、これは必須ではありません。

ターミナルを開いて、以下のいずれかのコマンドでインストールします。

$ npm install -g ginue
 or
$ yarn global add ginue

完了したら、バージョン情報を確認します。2.0.0以上であればOK。

$ ginue -v
Ginue 2.0.0

作業用のディレクトリを1つ作って、その中に入っておきます。

$ mkdir ginue-tutorial
$ cd ginue-tutorial

ginue pullで設計情報取得

ここまでできたら、もう準備完了です。
ginue pullと入力するとプロンプトが表示されて、ドメイン名・ユーザー名・パスワード・アプリIDの順に入力を求められるので、それぞれ入力します。

アプリIDはカンマ区切りで複数入力できるので、先ほど作った「顧客サポートアプリパック」の3種類のアプリIDを全て入れましょう。

確定すると、各アプリの11種類のJSONファイルを一気にダウンロードしてくれます!

$ ginue pull
? Enter your kintone domain: サブドメイン.cybozu.com
? Enter your kintone username: ユーザー名
? Enter your kintone password: [hidden]
? Enter your kintone app: 5,6,7

5/app_form_layout.json
5/app_customize.json
5/app_acl.json
5/app_settings.json
5/app_status.json
5/app.json
5/field_acl.json
5/app_views.json
5/form.json
5/app_form_fields.json
5/record_acl.json
6/app_customize.json
6/app_acl.json
6/field_acl.json
6/app_settings.json
6/app_status.json
6/app_form_layout.json
6/app.json
6/form.json
6/app_views.json
6/app_form_fields.json
6/record_acl.json
7/app_customize.json
7/app_form_layout.json
7/record_acl.json
7/app_settings.json
7/field_acl.json
7/app_acl.json
7/app.json
7/app_status.json
7/app_views.json
7/form.json
7/app_form_fields.json

試しにエディタで「顧客管理」アプリの「form.json」を開いてみましょう。
いい感じで色々と情報が取れていますね。
デプロイAPIのドキュメントはこちら

ginue pullではkintoneからGETしたJSONをほぼそのまんま保存するのですが、唯一revisionプロパティだけは各JSONファイルから自動削除します。

デフォルトでは全JSONファイルにrevisionが含まれてるんですが、何かしらの設定を変更すると、全JSONのrevisionが上がっちゃうんですね。これだと差分管理したいときにノイズが激しいので、削除しています。

その代わり、APIコマンドには存在しないrevision.jsonというファイルを単独で作って、リビジョン情報だけを保存しています。これ、デプロイAPIを自分で叩いたことある人なら「なるほどー!」と思ってくれるはず!

Gitにコミット

Ginueは、Gitの相性が抜群です!ginue pullした内容をgit commitすることで、kintoneアプリのほぼ全部の情報をバージョン管理できちゃうわけです。
(サブコマンドもほとんどGitのパクリですしw)

この時点で、初回コミットしておきましょう。

$ git init
$ git add .
$ git commit -m 'Initial commit'

kintoneの設定を変更

ではここで、kintoneアプリを少しいじってみましょう。

顧客管理アプリの「顧客ランク」というドロップダウンの項目、デフォルトでは「A, B, C」ですが、それを「松, 竹, 梅」に変えてみます。
完了したら、運用環境に反映まで行なってください。

そして、再度ginue pullします。
今度は少し引数をつけて実行してみましょう。
-aオプションには顧客管理アプリのIDを指定します。

$ ginue pull -d サブドメイン.cybozu.com -u ユーザー名 -a 7

すると、パスワードだけを問い合わせてきましたね。
取得対象も顧客管理だけになってます。

domain: "サブドメイン.cybozu.com"
username: "ユーザー名"
app: "7"
? Enter your kintone password: [hidden]

7/app_status.json
7/app_settings.json
7/app_customize.json
7/app_form_layout.json
7/field_acl.json
7/app_acl.json
7/record_acl.json
7/app_views.json
7/app.json
7/app_form_fields.json
7/form.json

さあ、前回Gitにコミットした分との差分をチェックしてみましょう。

$ git diff
diff --git a/7/app.json b/7/app.json
index a8dfcba..bf66c51 100644
--- a/7/app.json
+++ b/7/app.json
@@ -8,7 +8,7 @@
     "code": "xxxxxx",
     "name": "xxxxxx"
   },
-  "modifiedAt": "2018-12-22T15:48:56.000Z",
+  "modifiedAt": "2018-12-22T16:47:09.000Z",
   "modifier": {
     "code": "xxxxxx",
     "name": "xxxxxx"
diff --git a/7/app_form_fields.json b/7/app_form_fields.json
index 0b3dfea..2bac40b 100644
--- a/7/app_form_fields.json
+++ b/7/app_form_fields.json
@@ -123,17 +123,17 @@
       "noLabel": false,
       "required": false,
       "options": {
-        "A": {
-          "label": "A",
-          "index": "0"
+        "梅": {
+          "label": "梅",
+          "index": "2"
         },
-        "B": {
-          "label": "B",
+        "竹": {
+          "label": "竹",
           "index": "1"
         },
-        "C": {
-          "label": "C",
-          "index": "2"
+        "松": {
+          "label": "松",
+          "index": "0"
         }
       },
       "defaultValue": ""
diff --git a/7/app_settings.json b/7/app_settings.json
index 4a2dca0..3f60809 100644
--- a/7/app_settings.json
+++ b/7/app_settings.json
@@ -4,7 +4,7 @@
   "icon": {
     "type": "FILE",
     "file": {
-      "fileKey": "2018122215491095F54C0D9C364D249E88F0D3C9EEB315019",
+      "fileKey": "201812221647080390FBDEDBF745D4BED2C80409346440198",
       "name": "顧客リスト.png",
       "contentType": "image/png",
       "size": "4047"
diff --git a/7/form.json b/7/form.json
index 0eef63c..6d7533f 100644
--- a/7/form.json
+++ b/7/form.json
@@ -87,9 +87,9 @@
       "code": "顧客ランク",
       "required": "false",
       "options": [
-        "A",
-        "B",
-        "C"
+        "松",
+        "竹",
+        "梅"
       ],
       "defaultValue": null
     },
diff --git a/7/revision.json b/7/revision.json
index b4f1daf..74fe92a 100644
--- a/7/revision.json
+++ b/7/revision.json
@@ -1,3 +1,3 @@
 {
-  "revision": "7"
+  "revision": "8"
 }

いいですねー!見事に今変更した分が反映されてます。

ちなみにfileKeyというのは、アプリアイコンのことですね。カスタムアイコンが設定されている場合、ここのfileKeyがちょくちょく変わっちゃうんです。これは原因はよくわからないんですが、気にしなくてOK。

確認したら再度コミットしておきましょう。

$ git add .
$ git commit -m '顧客ランクの表記を変更'

Basic認証対応

もしkintoneにBasic認証がかかっている場合は、以下のように-bオプションを渡すことでBasic認証を通すことができます。

$ ginue pull -d サブドメイン.cybozu.com -u ユーザー名 -a 7 -b Basicユーザー名

プロンプトはこんな感じ

domain: "サブドメイン.cybozu.com"
username: "ユーザー名"
app: "7"
basic_user: "Basicユーザー名"
? Enter your kintone Basic Authentication password: [hidden]
? Enter your kintone password: [hidden]

おわりに

今回はGinueの基本的な機能ginue pullと、Git連携の方法を紹介しました。いかがでしたか?
kintoneの画面上では管理できなかったアプリの変更履歴が、GinueとGitを組み合わせることで、キッチリと管理できるようになりました!

ただ、kintone側を変更するたびにこういうことをするのは冗長なので、ある程度色々と一緒に変えてから「意味のある単位をひとまとめにしてコミット」がおすすめです。キッチリやり過ぎても開発効率が落ちるだけなので、バランスが大事ですね。

とにかくこれで我々は「kintoneアプリの差分管理をしようと思えばできる自由」を手に入れたわけです!これは嬉しい!!!

次回はもう少し便利な使い方、.ginuercという設定ファイルについて紹介する予定です。