カスタマインでアプリ管理

この記事は[Customine Advent Calendar 2024](https://qiita.com/advent-calendar/2024/customine "") 19日目の記事です。 

19日目の記事を書かせていただきます、しろと申します。
私の会社では、2023年の9月頃から本格的にkintoneを使い始め、
2024年の12月から正式に有償プランを契約させていただきました！

導入の決め手はカスタマイン１つで非常に多くのカスタマイズができることはもちろん、
アプリ・カスタマイズそれぞれの管理面で優れていると思ったからです。

ユーザーが便利にkintone使えるようになり業務の効率化をすることはもちろんですが、
それと同等かそれ以上にアプリ開発者の負担を少なくすることが大切だと考えます。


# カスタマインからドキュメントを出力
カスタマインには[作成したカスタマイズを仕様書としてエクセルで出力すること](https://support.gusuku.io/ja-JP/support/solutions/articles/36000476588)
ができますし、カスタマイズファイルだけでなく
[kintoneのアプリ設計情報もエクセルファイルとして出力](https://support.gusuku.io/ja-JP/support/solutions/articles/36000378820)が可能です！

とりあえず、これだけ保存しておけば「仕様書作ってます！」と言えます。
複数のプラグインを入れてしまうとそれぞれの設定情報の管理に悩んでいたのですが、
慣れた人が見ればそのまま使えるドキュメントが出るのは本当に便利です！

カスタマイズファイルのエクセルは
ページ数が多くなったカスタマイズを探すときにも便利ですね！
私はページ分けが下手で変更したいアクションがどこのページだったかすぐ見失ってしまいます😂
ブラウザではページを跨いで検索ができませんがエクセルに落としてブック全体を検索すればすぐ見つかります！
これで心置きなくページ分けしてダラダラと繋げてしまうことを予防できますね！
<br>

![検索用としても使えるエクセル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/0b168c9e-2e49-b2e8-7a62-b002786d8299.png)

実際にカスタマイズを作る際はアクショングラフがあるので
１ページが長くなっても何とかなりますが、
ドキュメントとして残すのであればできる限り細かくページ分けをした方が
特に、引継ぎで自分以外の人が見る場合は良いのではと思います。


# アクセス権限設定、アプリ管理するための専用のやること
現在のkintoneの標準機能ではアプリ毎にプラグインの利用許可設定はできますが、
ユーザー毎の制御ができないところも悩ましいところがあります。
そのアプリにプラグインは必要だからプラグインは私が設定して、
標準機能の部分だけ他のメンバーに設定してもらうということができません。

カスタマインでは[カスタマイズのアクセス権限設定](https://support.gusuku.io/ja-JP/support/solutions/articles/36000325690)もアカウント毎に制御ができるので
まず標準機能だけ使わせたいときも設定が容易でした。

Job Runnerのやることに
「[アプリ管理アプリのレコードを更新する](https://docs-customine.gusuku.io/ja/job/actions/record/update_app_management_app/)」
があるのでこれで作成したアプリに少し手を加えて制限をかけるのがお勧めです！
「[カスタマイズ管理アプリのレコードを更新する](https://docs-customine.gusuku.io/ja/job/actions/record/update_workspace_management_app/)」こちらも
一緒に設定してアプリと一緒にカスタマイズの管理もしています。


<br>
<br>
このあたりの設定方法を少しだけ紹介させていただきます。

# アプリ管理アプリの作成
まず、アプリ管理アプリから作成します。
カスタマイズにアクセス権限設定を行う場合、アプリ管理アプリに追加したフィールドで
カスタマイズの編集権限・閲覧権限を制御します。
そのため私はアクセス制限を掛けたにも関わらずちゃんと準備していなかったせいで
カスタマイズ管理を実行したときに何度もエラーにしてしまいました😂

アールスリーさんからとっても分かりやすい動画が公開されているので
この通りにやればOKです！

<iframe width="560" height="315" src="https://www.youtube.com/embed/1KmTUFjuLlU?si=uDsGfoZoG_jQ7W_p" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

<br>
<br>

この時点でこの後カスタマイズ管理アプリのレコードをJob Runnerで追加するときに備えて
IDに−１（マイナス１）と−2（マイナス2）のレコードを追加しておくと良いと思います。

![スクリーンショット 2024-12-16 21.22.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/85bf005d-5745-d70f-2816-44f4e7b9cd17.png)

-1はポータルのカスタマイズに対する権限を、
-2は定期実行タスクに対する権限の設定となり、
後ほどこちらのレコードにカスタマイズ管理アプリのgusuku APIキーを
グループ登録することでアプリに紐づかない
ポータルのカスタマイズや定期実行タスクも実行できるようになります。

[こちらのドキュメント](https://support.gusuku.io/ja-JP/support/solutions/articles/36000327991)に他の特殊な権限設定について記載があるので
一読しておきましょう！



# カスタマイズ管理アプリの作成
ドキュメントにも記載されている[テンプレートアプリをダウンロード](https://docs-customine.gusuku.io/ja/app-templates/ccm-template-1.0.0.zip)してアプリを作成しておきます。

今回は、さらに２つのフィールド
「対象アプリID（文字列１行）」と「カスタマインURL（文字列1行）」を追加しました。

![スクリーンショット 2024-12-16 21.53.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/cb00ffdf-4488-2b4d-d4fb-50dc514048d3.png)

対象アプリIDは、基本的にカスタマイズを適用しているアプリがあるはずなのでそのアプリIDを入力するフィールドです。

アプリ管理アプリに関連レコード一覧を追加、
アプリID同士を紐づけてアプリ管理画面でもカスタマイズ状況を確認できるようにしました。

![スクリーンショット 2024-12-16 21.58.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/d12146d4-d5b9-7d22-661b-0594b8dbc483.png)

「カスタマインURL（文字列1行）」は自動計算にしており、
"https://app-customine.gusuku.io/index.html?workspace="
の後にカスタマイズIDが入力されてカスタマイズ画面に一発で飛べるリンクになります。

こちらは直近の[akaneさんの９日目の記事](https://www.r3it.com/blog/customine-adventcalendar-20241209-akane)を参考に追加させていただきました！
めっちゃ便利です！ありがとうございます😄
（今のところカスタマイズ画面に入りたい人はカスタマイズをする人なので読み取り専用URLのフィールドはありません！）


アプリができたらJob Runnerの設定です。
アクション２つだけのとっても簡単な設定なのでこれも[ドキュメント通り](https://support.gusuku.io/ja-JP/support/solutions/articles/36000437222)に設定すればOKです。

強いて言えばアクセス権限設定をしたので、Job Runner実行前に
ここで設定したgusuku APIキーをアプリ管理アプリに追加する必要があります。
権限は表示のみ可能ユーザーでOKです。

![スクリーンショット 2024-12-16 22.31.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/5cc47e71-942b-b9bc-26a2-179d8ef491bb.png)


横着して直接APIキーを登録してみましたがどうやらそれでは権限はつかないようです。
グループアプリを作成してAPIキーを登録したグループに権限設定を行いました。

![スクリーンショット 2024-12-19 8.41.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/ae1794b6-274e-98e5-ac46-c5d2654676d2.png)
メンバーにはgusuku APIキーをコピペしています。

このとき、ポータルのカスタマイズや定期実行タスクでエラーにならないよう
先ほど追加したID-1と-2のレコードにもグループを忘れずに追加しましょう。
私はここでハマって定期実行タスクにカスタマイズ権限がないエラーを連発させてしまいました😇😇😇
もし、エラーになってカスタマイズIDが定期実行タスクやポータルのカスタマイズのものだった場合は確認してみてください！

また、追加した後gusuku共通管理画面の
「kintoneアプリと同期する」も忘れずに行います！同期しないと有効にならないようです。
私はここでもハマってエラーを連発させてしまいました😇😇😇

![スクリーンショット 2024-12-16 22.40.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/a1dd6f96-8969-4dec-6da1-0e2f4c854e14.png)

これでカスタマイズ管理のJob Runnerを実行すると上手くいくはずです！

# アプリ管理アプリで管理
現在はまだまだ管理が必要なアプリは少ないのでアプリ管理アプリ内で関連レコードとしてカスタマイズは管理、
アプリ自体の変更履歴はテーブルとダウンロードしたエクセルファイルを残す形で運用を開始したところです。

細かい部分はご自身の環境に合わせていただければと思います。
ぜひ、こんな項目を入れて管理すると良いというものがあったら教えていただけると幸いです！
（この記事を書いていて思いましたがアプリの変更履歴も別アプリを作って関連レコードの方が良いかもです🧐）

![スクリーンショット 2024-12-17 20.37.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2944549/6cf4e993-c8e7-08bb-846e-2c194cbc9dc5.png)



# 最後に
Cybozu Days 2023ではじめてカスタマインを見て、そのときからすでに導入したかったのですが具体的な費用対効果を上手く示して上長を説得することができませんでした。
社内でkintoneの活用も進み、管理面のメリットを訴えたことでカスタマインの導入を認めてもらうことができました！！


世の中が変われば業務も変わっていつかkintoneじゃない別の方法にした方が良いときが来るかもしれません。
それがいつになるかは分かりませんが
「何故、このフィールドがあるのか？」
「何故、このカスタマイズをしているか？」
「そもそも、何のためにこのアプリを作成したのか？」

将来のためには設定情報だけでない、大事な情報も残していきたいと思います。


最後までご覧いただきありがとうございました！！