面倒解決エンジニアの森田ユウゴです。
台湾からお届けする「#kintone100日チャレンジ」のDay 5。
チャレンジを開始して5日目の日曜日は、完全に自分の時間を取れない中、朝早めに作成を始めました。
本日は、kintoneアプリの管理者・開発者・SIer向けの「kintone Config Exporter(アプリ設定情報一括取得 Chrome拡張機能)」を開発しました!
「kintone Config Exporter」について
🎯 なぜ開発したか?(現場の課題とベネフィット)
- 現場の「不」: 納品したkintone環境で、後日「突然動かなくなった!」と連絡を受けることはありませんか?調べてみると、お客様自身が知らないうちにフィールドコードや設定を変えていた……という「あるある」。2026年2月のアップデートでkintone本体にもアプリ変更履歴は搭載されましたが、設定の"中身"の詳細な差分までは追いきれません。
- 導入後の世界(ベネフィット): この拡張機能を使えば、アプリのあらゆる設定情報(フィールド、レイアウト、一覧、権限など)をワンクリックでJSON化してZIPでダウンロードできます!アプリの「コード化(Configuration as Code)」を実現し、変更前後の差分をGitなどで管理可能に。「納品時から〇〇の設定を変えられましたよね?」と、事実に基づいた前向きなコミュニケーションができ、開発者自身とアプリを守ることができます。
✨ これで出来ること(機能概要)
まずはこちらをご覧ください。
- 設定情報のワンクリックZIP出力: フィールド情報、フォームレイアウト、プロセス管理、通知、アクセス権など、必要な項目をチェックして実行するだけで、一括でJSONファイルとしてZIPダウンロードできます。
-
動的値(revision / fileKey)の除外機能: 意図しない差分(Modify検知)を防ぐため、保存のたびに変わる
revisionやfileKeyを自動的に(動的な値なため省略)というプレースホルダーに置換して取得します。 - テスト環境(プレビュー)の取得対応: 本番運用前のテスト環境(プレビュー環境)の設定も取得可能。厳密なリリース管理や、テスト環境と本番環境の差分チェックにも活用できます。
課題
現時点では下記のような課題が残っています。
-
差分確認までのステップが多い
現在の仕組みだと、「ダウンロード → ZIPを解凍 → 所定のフォルダに上書き → コードエディタ(VS Code等)で差分を確認」という一連の手間が発生します。何度も繰り返すには少々面倒です。
Chrome拡張機能という実行環境の限界もあるため、将来的にはCI/CDのように、WEBサービスから直接GitHubへ連携する仕組みへの昇華を検討しています。 -
一般管理者向けの差分UIの欠如
出力されるのが生データのJSONファイルであるため、コードエディタに慣れていない一般のアプリ管理者には変更内容が分かりづらいです。誰が見ても「どこがどう変わったか」が一目で分かるような、リッチな差分表示UIの構築が今後の課題です。 -
AIとのバイブスコーディングの泥臭さ(
window.kintoneへのアクセス)
Chrome拡張機能特有の「世界(World)の壁」にAIがドハマりしました。最初はISOLATEDワールドでwindow.kintoneオブジェクトを呼ぼうとしてエラーを連発。「いやいや、kintoneのAPIを叩くならMAINワールドにスクリプトを注入(chrome.scripting.executeScript)しないとダメだよ」とインフラSEとしての知識で軌道修正。パラメータの受け渡しもDOMのdatasetを経由する泥臭いブリッジ処理を組むことで、無事にJSZipを使ったクライアントサイドでのZIP生成を実現しました。
さいごに
明日もお楽しみに!
下記のブログもご覧ください!
👉 【#kintone100日連続チャレンジ】AIにkintoneカスタマイズを100%任せたらどこまでいけるか?現役フリーランスの「100 Days of kintone Hacks」始動!
👉 ココナラで「kintone有資格者が導入や運用の相談にのります」サービスを開始します!
2026/4/15追記…下記の通り、ソースコードとプロンプトについては公開を停止します。
#kintone100日チャレンジ 方針変更
— 森田ユウゴ@マジナライフ (@majinalife_blog) April 15, 2026
Githubの公開を停止します。
免責に書いてきた「ほぼ100%AI生成」のリスクが伝わらず、いつの間にか本番適用される危うさを察知しました。
また、私が100%AIで納品する人材だと思われるのも本意ではないので…
詳細は記事にて!👇https://t.co/5etpecPA8A
