curlコマンドでプラグインを運用する方法

目次

はじめに

2024年7月版のアップデートで、プラグインに関するAPIが追加されました。
プラグインをアプリに追加する際、これまではkintoneとアプリの両方の管理画面を開いて作業する必要がありました。
しかし、APIを使うことで、ほとんどの操作を画面を開かずにcurlのみで実行できます。
curlコマンドでkintone REST APIを実行してみよう

また、cronやタスクスケジューラを活用すれば、指定した時間に自動でプラグインのアップデートを行うこともできます。
今回は、curlを使ってプラグインを運用する方法について紹介します。

下準備

顧客リストアプリの追加

kintoneのアプリストア画面で、左上の検索窓に『顧客リスト』と入力して検索します。
表示された検索結果から『顧客リスト』の『このアプリを追加』をクリックして、アプリを追加します。

バージョンの異なる2つのプラグインファイルと秘密鍵を作成する

当サイトで公開されている入力値チェックプラグインを利用します。
入力値チェックプラグイン

次に示す手順に従い、異なるバージョンのプラグイン2つと秘密鍵を作成します。 入力値チェックプラグインのzipファイルを以下のリンク先からダウンロードしてください。
SAMPLE_checkvalue_plugin_v2.3.3.zip

(1)ver2.3.3のzipファイルを準備する
  1. SAMPLE_checkvalue_plugin_v2.3.3.zipを解凍します。
    PUBKEYSIGNATUREファイルは使わないので削除します。
  2. contents.zipをコピーしてcontents_v2.3.3.zipに名前を変更します。
    コピー元のcontents.zipはver1.0.0を作成するときに使います。
(2)ver1.0.0のzipファイルを準備する
  1. contents.zipを解凍します。
  2. contents/manifest.jsonを開き"version": "2.3.3""version": "1.0.0"に変更して保存します。
  3. contentsフォルダーをzipで圧縮して名前をcontents_v1.0.0.zipにします。
(3)ver1.0.0のプラグインファイルと秘密鍵を作成する
  1. Web版のプラグインパッカーを開きます。
    プラグインパッカー (External link)
  2. 左側の枠にcontents_v1.0.0.zipをドラックアンドドロップします。
  3. 「作成する」をクリックします。
  4. contents_v1.0.0.[プラグインid].plugin.zipcontents_v1.0.0.[プラグインid].private.ppkのリンクが表示されます。
    それぞれクリックして中身を保存してください。
(4)ver2.3.3のプラグインファイルを作成する
  1. プラグインパッカー画面で「リセットする」をクリックします。
  2. 左側の枠にcontents_v2.3.3.zipをドラックアンドドロップします。
  3. 右側の枠にcontents_v1.0.0.[プラグインid].private.ppkをドラックアンドドロップします。
  4. 「作成する」をクリックします。
  5. contents_v2.3.3.[プラグインid].plugin.zipのリンクが表示されます。
    クリックして中身を保存してください。
    contents_v2.3.3.[プラグインid].private.ppkのリンクも表示されますが、
    contents_v1.0.0.[プラグインid].private.ppkと中身が同じですので、保存の必要はありません。

これで、v1.0.0とv2.3.3の2つのプラグインファイルと秘密鍵が完成しました。

curlを使ったプラグインの運用方法

では、curlを使ったプラグインの運用方法について以下の流れで説明します。

  1. プラグインをインストールする。
    v1.0.0のプラグインをインストールします。
  2. アプリにプラグインを追加する。
    インストールしたプラグインを顧客リストアプリに追加し、設定します。
  3. プラグインを更新する。
    v1.0.0のプラグインをv2.3.3に更新します。
  4. プラグインをアンインストールする。
    プラグインをアンイストールします。
    information

    • プラグインをインストール、更新、アンインストールするアカウントは、kintoneシステム管理者権限が必要です。
    • 認証方法として、今回はパスワード認証を使います。パスワード認証は次のページを参照してください。
      パスワード認証

1.プラグインのインストール

新規にプラグインをインストールする際は、まずプラグインファイルを一時保管領域にアップロードします。
アップロードが完了したら、そのファイルキーを使用してプラグインをインストールします。

(1)プラグインファイルをアップロードする

ファイルをアップロードするAPIでcontents_v1.0.0.[プラグインid].plugin.zipを一時保管領域にアップロードします。
ファイルをアップロードする

1
2
3
curl -X POST 'https://sample.cybozu.com/k/v1/file.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)' \
  -F 'file=@contents_v1.0.0.[プラグインid].plugin.zip'

アップロードが成功すると、以下のようにレスポンスとしてfileKeyが表示されます。
fileKeyは後で使用しますので、メモに控えてください。

1
{"fileKey":"b80a4e9f-837d-48ce-b30c-14712f395952"}
(2)プラグインを読み込む(インストール)

アップロードしたプラグインファイルを読み込み(インストール)します。
プラグインを読み込む

1
2
3
4
curl -X POST 'https://sample.cybozu.com/k/v1/plugin.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)' \
  -H 'Content-Type: application/json' \
  -d '{"fileKey": "(メモしたfileKeyの値)"}'

読み込みに成功すると、プラグインidとバージョンが出力されます。
プラグインidはプラグインファイルや秘密鍵のファイル名のプラグインidと一致します。

1
{"id":"lckkahmekfcjioncompafcpdohdgmbam","version":"1.0.0"}
(3)インストール済みのプラグインの一覧を取得する

ここでインストール済みのプラグインの一覧を取得するAPIを使って確認してみましょう。
インストール済みのプラグインの一覧を取得する

1
2
3
4
curl -X GET 'https://sample.cybozu.com/k/v1/plugins.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)' \
  -H 'Content-Type: application/json' \
  -d '{"offset": 0}'

インストール済みプラグインのリストがjson形式で表示されます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "plugins": [
    {
      "id": "lckkahmekfcjioncompafcpdohdgmbam",
      "name": "入力値チェックプラグイン",
      "isMarketPlugin": false,
      "version": "1.0.0"
    }
  ]
}

先ほど読み込んだプラグインが表示され、インストールされていること確認できます。

2.アプリにプラグインを追加する

(1)アプリにプラグインを追加する

プラグインがインストールされていれば、アプリに追加できます。
APIを使用して、プラグインの追加します。
アプリにプラグインを追加する

それでは、顧客リストアプリに入力値チェックプラグインを追加しましょう。
追加には、アプリIDとプラグインIDを使用します。

1
2
3
4
5
6
7
curl -X POST 'https://sample.cybozu.com/k/v1/preview/app/plugins.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)' \
  -H 'Content-Type: application/json' \
  -d '{
        "app": "(kintoneのアプリid)",
        "ids": ["(プラグインid)"]
      }'

追加に成功すると、アプリ設定を変更した際のリビジョン番号が表示されます。
このリビジョン番号は、次のステップで設定を運用環境へ反映する際に使用します。

1
{"revision":"12"}

この段階では、まだアプリにプラグインが反映されていません。

(2)アプリの設定を運用環境へ反映する

現在はプラグインの追加設定のみが行われており、アプリにはまだ反映されていません。
インストールを運用環境に反映するには、アプリ設定を運用環境へ反映するAPIを使用します。
アプリの設定を運用環境へ反映する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
curl -X POST 'https://sample.cybozu.com/k/v1/preview/app/deploy.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)' \
  -H 'Content-Type: application/json'  \
  -d '{
       "apps": [
         {
           "app": "(kintoneのアプリid)",
           "revision": "(アプリにプラグインを追加するAPIのレスポンスのrevision)"
         }
       ],
       "revert": false
     }'

これで、アプリにプラグインが反映されました。
次に、kintoneの顧客リストアプリの設定画面を開き、プラグインの項目を確認しましょう。

入力値チェックプラグインがたしかに追加されていることを確認できました。
さて、アプリの画面を開いた際に、次のメッセージが表示されたはずです。

設定が必要なプラグインを追加すると、このメッセージが表示されます。
表示された場合は、プラグインの設定画面で設定してください。

設定画面を開くと、左側にプラグインのバージョンが表示されています。
ここで、追加されたプラグインのバージョンを確認できます。

設定画面での説明は省略します。

3.プラグインを更新する

入力値チェックプラグインをv1.0.0からv2.3.3にバージョンアップします。
プラグインの更新手順も、追加時と同様に、まずプラグインファイルのアップロードから始めます。

(1)プラグインファイルをアップロードする

ファイルをアップロードするAPIでcontents_v2.3.3.[プラグインid].plugin.zipを一時保管領域にアップロードします。
プラグインファイルのアップロード手順にしたがって、ファイルをアップロードし、filekeyを取得してください。
プラグインファイルをアップロードする

(2)プラグインを更新する

プラグインを更新するAPIを使用します。
プラグイン追加時のAPIとは異なる点に注意してください。
プラグインを更新する

1
2
3
4
5
6
7
curl -X PUT 'https://sample.cybozu.com/k/v1/plugin.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)' \
  -H 'Content-Type: application/json' \
  -d '{
      "id": "(プラグインid)",
      "fileKey": "(手順(1)のfileKeyの値)"
  }'

更新が成功すると、プラグインIDと新しいバージョンが表示されます。

1
{"id":"lckkahmekfcjioncompafcpdohdgmbam","version":"2.3.3"}

これで、プラグインのバージョンアップが完了しました。

4.プラグインをアンインストールする

(1)プラグインをアンインストールする

プラグインをアンインストールする場合は、以下を実行します。
プラグインをアンインストールする

1
2
3
4
5
6
curl -X DELETE 'https://sample.cybozu.com/k/v1/plugin.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)' \
  -H 'Content-Type: application/json' \
  -d '{
      "id": "(プラグインid)",
     }'

成功した際は、空のオブジェクトが返ります。

1
{}

このAPIを実行すると、プラグインのアンインストールは行われますが、アプリごとのプラグイン設定は残ります。
該当アプリのプラグイン利用を解除するには、以下の手順を実行してください。

  1. kintoneのシステム管理画面からプラグインのページを開く。
  2. インストールが必要なプラグインのリストで、アンインストールされたプラグインの行を確認する。
  3. プラグインが適用されているアプリの名前をクリックし、管理画面を開く。
  4. プラグインの設定画面で、利用を解除するプラグインの行にある青い丸の「×」アイコンをクリックする。

番外編.他ドメインで設定済みプラグインを含むテンプレートを読み込んだ場合

他の環境でプラグインが設定されたアプリをテンプレートとして読み込む際、読み込み先の環境にプラグインがインストールされていない場合は、インストールが必要です。
このとき、必要なプラグインの一覧を取得するAPIを使用することで、インストールすべきプラグインを確認できます。
インストールが必要なプラグインの一覧を取得する

1
2
3
4
5
6
curl -X GET 'https://sample.cybozu.com/k/v1/plugins/required.json' \
  -H 'X-Cybozu-Authorization: (パスワード認証の値)'  \
  -H 'Content-Type: application/json' \
  -d '{
    "limit": 100
  }'

成功するとインストールが必要なプラグインを取得できます。

1
2
3
4
5
6
7
8
9
{
  "plugins": [
    {
      "id": "lckkahmekfcjioncompafcpdohdgmbam",
      "name": "入力値チェックプラグイン",
      "isMarketPlugin": false
    }
  ]
}

おわりに

いかがでしたでしょうか。
プラグイン管理APIを活用すれば、運用の大部分を画面を開かずにcurlだけで効率的に行うことができます。
ぜひ、皆さんも活用してみてください。

information

このTipsは、2024年8月版kintoneで動作を確認しています。