はじめに
この連載では、僕が作ったkintoneの設計情報管理ツール「Ginue(ギニュー)」の使い方を、チュートリアル形式で書いていきたいと思います。
対象読者は、こんな方々です。
- システムの開発経験
- kintoneでガッツリ作ったことがある人
- これからkintoneに本気出したいSE・プログラマー
- コマンドラインツール(黒い画面)の経験
- 今まで普通に使ってきた人
- 未経験だけど拒否反応はない人
誰でも簡単にシステムが作れるkintoneですが、この記事はそれなりにガチな人をターゲットにしてますので、ご理解ください!
kintoneのつらみ1:アプリの変更履歴問題
kintoneのレコードの変更履歴機能って、超便利ですよね。いつ誰が何を変更したか確認できて、ロールバックまで普通にできてしまう!素晴らしいです。
でもアプリの設定を変更した時は、「アプリの変更履歴」みたいな機能はありません。「この設定っていつ変更したんだっけ?」みたいな設計情報の履歴管理が標準ではできません。
マウス操作でフォームやビューの設定を超カンタンに変更できるのは便利なのですが、重要な設定を軽はずみに変更しちゃって、変更前がどうだったか分からなくなるリスクと隣り合わせでもあります。
壊しちゃったらモウオシマイダー・・・
kintoneのつらみ2:複数環境のデプロイ問題
一般的なシステム開発の場合、開発環境と本番環境のサーバーを分けて、開発環境でテスト完了したら本番環境にデプロイするのが一般的です。
kintoneでは、1つのアプリ内で「テスト環境」「運用環境」というのが分かれていますが、このテスト環境という奴が、まぁ使えない。
手動でのレコード登録はできるけども、APIからのレコード登録は運用環境に行っちゃうし、他のアプリへのルックアップも運用環境の設定を見ちゃうし、上記のような「テスト完了したらデプロイ」みたいな使い方はとても期待できません。
だったらどうするかというと、アプリを完全に分けて「開発用アプリ」「本番用アプリ」を用意する場合がほとんどだと思います。
さて、その時に「開発用アプリで設定変更した内容を、本番用アプリにどう反映するか?」ってのが問題です。初回運用開始時は良いんですよ。テンプレート化すれば良いから。問題は運用後の設定変更なんですよね。レコード更新のようにファイルアップロードもできないし、愚直に2画面を並べてポチポチ反映するのはとても辛い。
kintoneのデプロイAPI
さて、そこで役立つのがkintone REST APIに用意されている、デプロイ系のAPIです。これを使うと、アプリの設計情報をローカルにダウンロードして、それを再度kintoneにアップロードすることが可能です。めっちゃ便利じゃないですか!
developer networkにも、ちゃんとやり方が書いてありました。アプリのデプロイはこれで万事解決ですね!
デプロイAPIを使ってコマンドラインでアプリをコピーしてみよう
・・・
・・・・・・
・・・・・・・・・えーっと、面倒臭くね?
APIコマンドの種類がやたら多いし、リクエストパラメーター作るのも複雑だし、開発環境から本番環境にデプロイするとき毎回こんな準備が必要なの??
大体kintoneの アプリ管理者権限を持ったID/パスワードを平文で入力とか恐ろしいわ! こんなことしたら、ターミナルのhistoryにめっちゃパスワード残るじゃないすか。無理無理無理!!!
あくまで上記記事は「やってみよう」なので、内容をdisる意図はありません。でもこの通りに使うのは、色々な意味で現実的ではないと思います。
「やってみたらできた」と「実務で便利に使える」の境には、かなりハードルがありますよね。
kintone連携サービスでデプロイ
有名なのはR3さんの gusuku Deploitですね。
面倒臭いkintoneのデプロイAPIを、本格的なWebサービスとして普通に使えるようラップしてくれてます。フィールドコードの変更までできたり、いやはや見事です。
しかしねー、せっかく設計情報を取得できるんだから、ローカルにダウンロードして自分でゴニョゴニョとJSONをいじくりたいなーと思うわけですよ。プログラマー的には。gusukuの場合は、Webアプリ内で完結しててそこまでの自由度がないですからね。
誰もやってなかったから、自分でツール作りました
それがkintone hack 2017でお披露目した、オープンソースのコマンドラインツールGinueでございます。
これを使うと、kintoneアプリの設計情報を手元に保存して
- 自分でちょこっと設定を書き換えてデプロイ
- 複数環境のアプリ同士をdiff
- アプリ設定内をgrepして一発検索
- Gitにコミットしてkintone設定の履歴管理
みたいなことが自由自在に、スムーズにできちゃいます!
というわけで、Ginueを作った理由だけでかなり長くなっちまったので、実際の使い方は次回で!