kintoneのREST API卒業!?「画面の状態」を即座に知れる新JavaScript APIがアツい理由

開発系AIの進化が早くて付いていくのがやっとで楽しいkintone開発エンジニアのだいもんです。

2025年後半に入ってからのkintoneアップデート、「開発者向け機能」の追加ラッシュがすごくないですか? 毎月のように更新される「kintone API 更新情報」を見ては、「これこれ!これが欲しかったんだよ!」と小躍りしている方も多いはず。私もですが。

ここ数ヶ月のアップデートは、「これまでREST APIでしか取れなかった(あるいはRESTでも苦労した)情報が、JavaScript APIでサクッと取れるようになった」こと、ってまとめても良いのではないでしょうか。

以前、フィールド情報の取得UI表示系については紹介がありましたが、今回はもう少しマニアック、かつ「これができるとロジックの組み方が変わる!」という「状態確認系API」にスポットを当ててみたいと思います。

単に「APIリクエスト数が減らせてハッピー」というだけでなく、kintone開発のパラダイムシフトとも言える変化がそこにありました。

弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

「設定値」ではなく知りたいのは「今の状態」

これまでのkintoneカスタマイズで、例えば「このフィールドは今、ユーザーに見えているのか?(表示権限や設定で隠されていないか)」を知りたい時、どうしていましたか?

REST APIでフォーム設計情報を取得して、アクセス権設定を取得して、現在のユーザーと照らし合わせて…と、計算や判定をする必要がありました。しかも、他のプラグインが kintone.app.record.setFieldShown() で動的に隠しているフィールドなら、REST APIの情報だけでは「現在見えているか」は分かりません。

大抵の場合、本当に欲しかったのは「設定値」ではなく、「今、ブラウザでレンダリングされている最終的な結果」なんですよね。

最近追加された以下のAPIたちは、まさにその「現在の状態」を教えてくれます。

  • kintone.app.record.isFieldVisible()
  • kintone.app.record.isGroupFieldOpen()
  • kintone.app.record.getActionButtonDisplayState()
  • kintone.app.record.getStatusActionButtonDisplayState()

これらが登場したことの意味を、具体的なコード例とともに見ていきましょう。

1. グループフィールドの開閉状態がわかる! isGroupFieldOpen()

「グループフィールドを開閉したタイミング」のイベントは以前からありましたが、「今、どのグループが開いているのか?」を任意のタイミングで調べるのは、実は公式APIでは不可能でした(DOM要素を無理やり見るしかありませんでした…)。

これが kintone.app.record.isGroupFieldOpen('group_code') だけで取得できるようになりました。

これを使うと、例えば「グループAを開いたら、自動的にグループBとCを閉じる」といった、いわゆるアコーディオンメニュー的な挙動が、公式APIだけで安全に実装できます。

// 以前はDOM操作が必要だった処理が、こんなにスマートに!
kintone.events.on([
  'app.record.create.show',
  'app.record.edit.show',
  'app.record.detail.show'
], (event) => {
    // 特定のボタンを押したときに状態チェック
    const myButton = document.createElement('button');
    myButton.innerText = 'グループの状態チェック';
    myButton.onclick = () => {
        const isOpen = kintone.app.record.isGroupFieldOpen('GroupA');
        if (isOpen) {
            alert('グループAは元気よく開いています!');
        } else {
            // 開いていないなら開く処理、などもsetGroupFieldOpenで連携可能
            alert('グループAは閉じています。');
        }
    };
    kintone.app.record.getHeaderMenuSpaceElement().appendChild(myButton);
    return event;
});

「ユーザーが今どういう状態で見ているか」に合わせて、次のアクションを動的に変えられる。これはUI体験の向上に直結します。

2. プロセス管理の「あのボタン」はある?ない? getStatusActionButtonDisplayState()

処理の削減という意味ではこれが一番かもしれません。「プロセス管理のアクションボタンが表示されているかどうか」の取得。

プロセス管理の設定は複雑です。「現在のステータス」だけでなく、「作業者が誰か」「次のステータスの条件は満たしているか」など、変数が多すぎてREST APIの情報から「今、承認ボタンが出ているか」を判定するのはなかなかに面倒でした。

それが、こうです。

// 「承認」アクションのボタンが表示されているかチェック
const isApproveVisible = kintone.app.record.getStatusActionButtonDisplayState('承認');

if (isApproveVisible) {
    // ボタンが出ている=このユーザーには承認権限があり、かつ条件を満たしている
    console.log('承認ボタンが表示されています。ガイドを表示しましょう。');
    // 承認時の注意事項スペースを表示する、などの制御が可能
} else {
    console.log('今は承認できません');
}

「難しい計算はkintone本体に任せて、結果だけもらう」。 これです、これ。 非同期処理(Promise/await)を書かずに、if 文の中にサラッと書けるの、最高です。

まとめ:非同期の「予測」から、同期待機の「確認」へ

今回のAPI追加ラッシュを見て感じるのは、kintoneカスタマイズが「REST APIで裏側の情報を取ってきて推測する」必要があった世界から、「JavaScript APIで目の前の事実を確認する」世界になった、ということ。

  1. APIリクエスト数を消費しない(意外と悩むポイント)
  2. 非同期処理を待たなくていい(コードがシンプル、動作が高速)
  3. 「レンダリング後の現状」がわかる(他のプラグインの影響や複雑な権限設定の結果がわかる)

特に3点目は、堅牢なカスタマイズを作る上で非常に重要です。

「あれ、この機能RESTでやるしか無かったっけ?」と思ったら、まずは最新のJavaScript APIドキュメントをチェックしてみてください。「おっ、いつの間にかできるようになってる!」という発見があるかもしれませんよ。

それでは、良きkintoneライフを!

弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

同じカテゴリーの記事