面倒解決エンジニアの森田ユウゴです。
台湾からお届けする「#kintone100日チャレンジ」の72日目。
kintone案件はもちろん、各種業務にAIエージェントを用いていると深刻なトークン不足が…。
学習の面で利用者には不利ですが、お客様作業以外の用途でAntigravityを使ってみることにしました。やっぱりClaudeCodeやCODEXに比べると、同じスキルを読み込んでいるのに残念な印象です。チューニングが必要なのか、エージェントとして未熟なのかわかりませんが…。
少なくとも、AI Proプランの延長で「おまけ」として使うなら良いかもしれません。体感はcursorのComposer 2.5 Fastと同等かそれ以下というイメージです。(Opus4.6使ってるのに…。)
さて、本日のテーマは、kintone管理者・社内広報担当者向けの「ポータル掲示板 from GAS」。ポータルお知らせのカスタマイズ手法や完成度の高いポータルデザインツールは既に多数ありますが、今回は「表示ルールとkintone API呼び出しをGAS側に寄せ、全体カスタマイズJSは薄く保つ」構成に挑戦してみました。
「ポータル掲示板 from GAS」について
🎯 どんな課題に向き合ったか(現場の不とベネフィット) 現場の「不」 : 部署・グループ・個人ごとに出し分けたいお知らせがあるのに、標準のお知らせ掲示板だけでは表現力もターゲティングも足りない。全体カスタマイズで全部書こうとすると、ルール判定・kintone API呼び出し・キャッシュまで1ファイルに詰め込み、保守が地獄になる。
導入後の世界(ベネフィット) : ポータル/スペースポータル上部に、対象ユーザーだけにリッチテキストのお知らせを表示できる。表示ルールの変更はGAS管理画面から行い、kintone側のJS再アップロードは不要。本文はkintoneアプリのリッチテキストフィールドで編集できるので、非エンジニアでも内容更新に参加しやすい。
💡 着想・こだわり
kintoneポータルのカスタマイズ記事や、HTML/CSSベースのポータルデザインツール、アプリでリンク集を管理するテンプレートなど、ポータルをリッチにする手段はすでに豊富です。今回は「新しい掲示板を作った」というより、フロントとバックエンドの責務分離を試したのが本題です。
フロント(kintone全体カスタマイズ)は、portal.show / space.portal.show で配置先を取得し、ログインユーザーの所属情報を kintone.user API で集め、GAS Web AppへPOSTするだけ。
バックエンド(GAS)は、表示ルールJSONの評価、優先順位判定、組織マップ取得、リッチテキストレコードの取得、CacheServiceによるキャッシュを担当。設定UIもGAS管理画面に集約しています。
kintoneレコード取得は表示専用アプリのAPIトークン認証のみ使用。閲覧権限に絞ったトークンを管理画面に登録し、Script Propertiesへ保存。トークン値そのものは画面に再表示しません。
✨ これで出来ること(機能概要) まずはこちらをご覧ください。
VIDEO
ユーザー・組織・グループ別の出し分け : ルールごとに targets を指定。複数マッチ時は priority が小さい1件のみ表示。
ポータルとスペースポータル両対応 : 通常ポータルと space.portal.show の両方で同じ仕組みを動かし、portalId でスペース限定ルールも設定可能。
GAS管理画面でルール保存 : ルールの保存・反映はGAS Web Appの管理画面から。保存時にキャッシュをクリアし、kintone側の再デプロイなしで反映。
課題 現時点では下記のような課題が残っています。
表示ルールをJSONで自分で書く必要がある(専用の記載ツールは未準備)
表示ルールは PORTAL_BOARD_RULES_JSON としてJSON配列で保持されます。次のような形で定義する必要があります。
例)情報システム部向けのお知らせを ORG-1300 所属者にだけ出す場合
ruleId: rule-001 / priority: 100 / enabled: true / portalId: 空(全ポータル) / title: 情報システム部向けのお知らせ / targets.organizations: ["ORG-1300"] / content: appId 508, recordId 1, fieldCode リッチエディター
これは正直、手入力は厳しいです…。
GASのコールドスタートで初回表示が遅い
GAS Web Appはしばらく使われていないとインスタンスが停止し、初回アクセスで起動待ち(コールドスタート)が発生します。体感では数秒〜十数秒かかることもあり、ポータル表示のたびにユーザーが待たされるのは厳しいです。
さいごに #kintone100日チャレンジ として、2026年4月から毎日プラグインをバイブコーディングしています。明日もお楽しみに!
私森田ユウゴはココナラでkintoneに関する各種サービスを出品しております。
SIerの中でもインフラSEとして約10年、特に「運用保守」にはベンダーとして深く携わってきました。
作りっぱなしにしない導入やカスタマイズのご提案が可能です。
お気軽にご相談をくださいませ
→森田ユウゴのプロフィールはこちら👇