kintone 2026年10月アップデート テーブルの[+][-]をJavaScriptで出し分け・AIテキスト生成API
本記事は、kintoneの構築・カスタマイズやプラグイン開発の実務経験を持つ筆者が、サイボウズ公式のアップデート情報とAPIアップデート情報をもとに、2026年10月のkintone(キントーン)アップデートを現場目線で整理したものです。
2026年10月11日のメンテナンスで適用されたアップデートは、テーブル(サブテーブル)をカスタマイズしている人に効く回です。行の[+][-]ボタンを、DOMを触らずに公式のAPIで隠せるようになりました。
この記事を読むと、次のことが分かります。
- テーブルの行追加・削除ボタンを出し分ける新しいJavaScript APIの使い方
- 「明細は5行まで」のような行数の上限を作るサンプルコード(実機で動作確認済み)
- 実機で動かして分かった、ボタンを隠すだけでは足りない理由
- API ラボで始まった kintone AI のテキスト生成APIと、kintone全体検索の表記ゆれ対応
- iPad向けアプリ、ダッシュボード、監査ログの外部連携など管理者向けの変更
まずは全体像です。
| カテゴリ | 主な変更点 | 対象 |
|---|---|---|
| JavaScript API | テーブルの行追加・削除ボタンの表示状態を変更・取得 | 開発者(既定で有効) |
| JavaScript API | kintone.ai.generateText()で生成AIのテキストを取得 | 開発者(API ラボ・要有効化) |
| REST API | kintone全体検索にincludeSynonyms(表記ゆれ・同義語) | 開発者(API ラボ・要有効化) |
| モバイル | ノンデスクワーカー向けiPadアプリ(kintone Touch) | 検討中の新機能・要有効化 |
| 管理 | システム管理に「ダッシュボード」カテゴリを追加 | システム管理者 |
| 管理 | 監査ログをSIEMへ連携(Microsoft Sentinel) | ワイドコース限定 |
本命:テーブルの[+][-]ボタンをAPIで出し分けられる
今回もっとも実務に効くのがこのAPIです。アップデートオプションで無効にしない限り、全テナントで使えます(無効にできるのは2027年2月の定期アップデートまで)。
これまではDOMを直接いじるしかなかった
テーブルの行追加ボタン([+])や行削除ボタン([-])を隠したい場面は、意外と多くあります。明細の行数に上限を設けたい、承認済みのレコードでは行を増やさせたくない、決まった行だけを並べておきたい、といったケースです。
ところが、これまでkintoneにはボタンを操作する公式APIがありませんでした。そのためカスタマイズでは、ボタン要素をクラス名で探してdisplay:noneを当てるといった、DOMに依存する方法が使われてきました。kintone側の画面の作りが変わると、ある日突然効かなくなる書き方です。
追加されたAPIは4つ
PC版の記述は次のとおりです。モバイル版はkintone.mobile.app.recordで同じ名前の関数を呼びます。
| API | 役割 |
|---|---|
kintone.app.record.showAddTableRowButtons(fieldCode, state) | [+]の表示・非表示を切り替える |
kintone.app.record.showDeleteTableRowButtons(fieldCode, state) | [-]の表示・非表示を切り替える |
kintone.app.record.getAddTableRowButtonsDisplayState(fieldCode) | [+]の表示状態を取得する |
kintone.app.record.getDeleteTableRowButtonsDisplayState(fieldCode) | [-]の表示状態を取得する |
fieldCodeにはテーブルのフィールドコードを、stateには'VISIBLE'か'HIDDEN'を渡します。どれもPromiseを返し、取得系は'VISIBLE'か'HIDDEN'で解決されます。使えるのはレコードの追加画面と編集画面だけです。
kintone.events.on(['app.record.create.show', 'app.record.edit.show'], (event) => {
// 明細テーブルの[+]と[-]を両方隠す
kintone.app.record.showAddTableRowButtons('明細', 'HIDDEN');
kintone.app.record.showDeleteTableRowButtons('明細', 'HIDDEN');
return event;
});
実際の画面で見てみましょう。まずは何もしていない状態です。

[+]だけを隠すと、各行の+アイコンが消えて-だけが残ります。

両方を隠すと、ボタンが並んでいた操作列そのものがなくなります。表の右端に空白は残りません。

公式リファレンスには、ほかに次の注意書きがあります。
- テーブル自体の表示・非表示(
setFieldShown)とは別に管理される。テーブルを隠している間はボタンも出ないが、状態の変更や取得はできる - 行が1行しかないときは、
'VISIBLE'にしても[-]は表示されない(最後の1行は消せない仕様のまま) - モバイル版で両方を隠すと、行の操作エリアごと表示されなくなる
サンプル:明細は5行まで(行数の上限)
よくある要望を1つ形にしてみます。見積書の明細を5行までに制限し、5行に達したら[+]を隠す、というものです。
(() => {
'use strict';
const TABLE = '明細'; // テーブルのフィールドコード
const MAX_ROWS = 5; // 行数の上限
// 行数が上限に達したら[+]を隠し、下回ったら戻す
const syncAddButton = (event) => {
const rows = event.record[TABLE].value.length;
const state = rows >= MAX_ROWS ? 'HIDDEN' : 'VISIBLE';
kintone.app.record.showAddTableRowButtons(TABLE, state).catch(console.error);
return event;
};
kintone.events.on([
'app.record.create.show',
'app.record.edit.show',
`app.record.create.change.${TABLE}`,
`app.record.edit.change.${TABLE}`,
], syncAddButton);
// ボタンを隠すだけでは、ほかの JavaScript が足した行は止められない。保存時にも確かめる
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], (event) => {
if (event.record[TABLE].value.length > MAX_ROWS) {
event.error = `${TABLE}は${MAX_ROWS}行までです。`;
}
return event;
});
})();
change.<テーブルのフィールドコード>は、行を追加・削除したときに発生するイベントです。[+]を押して5行目を足した時点で[+]が消え、どれか1行を削除すると戻ってきます。

保存時のチェックを入れている理由は、次の節で説明します。
実機で確かめて分かったこと
当社の検証用環境で、適用後のAPIを実際に動かしました。ドキュメントからは読み取りにくい挙動がいくつかあります。
1. ボタンを隠しても、行の追加は止まらない
隠れるのは画面上のボタンだけです。kintone.app.record.set()でテーブルの値を書き換えれば、[+]を隠している間でも行は増えます。ほかのカスタマイズやプラグインが行を足すアプリでは、ボタンを隠すだけでは上限を守れません。
2. record.set()で行が増えても、テーブルのchangeは発生しない
実際にrecord.set()で6行に増やしたところ、発生したのはテーブル内のフィールド(change.品名)のイベントで、change.明細は発生しませんでした。そのため上のサンプルでも、JavaScriptで6行目が足されると[+]は表示されたままになります。保存時のチェックは、この抜け道をふさぐためのものです。

3. 状態は保存されない。画面を開くたびに設定する
いったん'HIDDEN'にしても、編集画面を開き直すと'VISIBLE'に戻ります。レコードやアプリに記憶されるものではないので、showイベントで毎回設定する前提で書きます。
4. フィールドコードを間違えても、エラーにならない
存在しないフィールドコードや、テーブル以外のフィールドコードを渡しても、エラーは出ず何も起きません。「効かない」ときは、まずフィールドコードを疑ってください。一方でstateに'hidden'(小文字)のような不正な値を渡すと、使い方を示すエラーが投げられます。
5. 詳細画面や一覧画面で呼ぶとエラーになる
対応画面以外では「The specified JavaScript API cannot be executed on this screen.」というエラーになります。詳細画面と共通のハンドラに書く場合は、呼ぶ画面を分けておきましょう。
1行だけのテーブルで状態を取得すると、[-]が画面に出ていなくても
'VISIBLE'が返ります。「画面に見えているか」ではなく「設定した状態」が返る、と考えると分かりやすいです。
既存のカスタマイズやプラグインへの影響
DOMで[+][-]を隠しているカスタマイズは、今回のアップデートで壊れるわけではありません。ただ、kintoneの画面の作りに依存した書き方なので、手を入れる機会があれば新しいAPIへ置き換えておくと安心です。
注意したいのは、同じテーブルを複数のカスタマイズが操作している場合です。片方がAPIで'VISIBLE'に戻し、もう片方がDOMで隠している、といった組み合わせだと、後から動いた方の結果が残ります。どのカスタマイズがどのテーブルを触っているか、一度棚卸ししておくとよいでしょう。
kintone AI:テキストを生成するJavaScript API(API ラボ)
kintone.ai.generateText()で、カスタマイズの中から生成AIにテキストを作らせられるようになりました。API ラボ(試験提供中のAPI)として始まった機能で、使うには次の2つが必要です。
- アップデートオプションで「kintone AI:生成AIでテキストを生成するJavaScript API」を有効にする
- kintone AIを有効にし、利用する機能として選択しておく
モデルはclaude-5-opus-v1、claude-5-sonnet-v1、claude-4-5-haiku-v1などから選びます。messagesにsystem/user/assistantの役割つきでメッセージを渡し、outputにOpenAPI形式のスキーマを指定すると、その形の構造化データで受け取れます。戻り値はPromiseで、解決するとtextStreamとpartialOutputStreamという2種類のストリームが得られます。どちらもfor awaitで少しずつ読み出せます。
// async 関数の中で呼ぶ(戻り値は Promise)
const { textStream } = await kintone.ai.generateText({
model: 'claude-4-5-haiku-v1',
messages: [
{ role: 'system', content: '問い合わせ内容を2文で要約してください。' },
{ role: 'user', content: record.問い合わせ内容.value },
],
maxTokens: 500,
});
let summary = '';
for await (const part of textStream) summary += part; // 差分の文字列が順に届く
この例は公式リファレンスのサンプルをもとにしたもので、当社の環境では動かしていません。
outputでスキーマを指定したときはtextStreamからは何も読み出せず、結果はpartialOutputStreamに届きます。
使える画面は、PCの一覧・追加・編集・詳細・印刷・グラフと、モバイルの一覧・追加・編集・詳細・グラフです。
実務で気をつけたい点は3つあります。
- AIクレジットを消費する。月の上限に達するとエラーになり、別途レート制限もある
temperatureは0〜1で指定できるが、claude-5-opus-v1など一部のモデルでは指定できない。maxTokensは1〜8192- API ラボなので、仕様の変更や提供終了があり得る。使えるモデルの一覧も変わる可能性がある
社内の特定アプリで試すには面白いAPIです。一方で、ほかの環境へ配るプラグインや、止まると業務が回らない処理に組み込むのは、正式リリースを待つのが無難でしょう。
kintone全体検索のREST APIが表記ゆれに対応(API ラボ)
API ラボで提供されている「kintone全体を検索するREST API」(POST /k/v1/search.json)に、includeSynonymsパラメーターが追加されました。trueにすると、表記ゆれ・略語・同義語も検索対象になります。たとえば「苦情」で検索したときに「クレーム」を含むレコードも見つかる、という動きです。
対象になるのは一般的な言葉だけで、製品名や社内の略語までは広がりません。社内用語の揺れを吸収したい場合は、引き続き検索語を自分で並べる必要があります。
iPad向けアプリ「kintone Touch」(検討中の新機能)
現場で使うことを想定した、ノンデスクワーカー向けのiPadアプリが「検討中の新機能」として登場しました。アップデートオプションで「ノンデスクワーカー向けiPadアプリ」を有効にすると使えます。
- ルックアップでQRコードを読み取れる
- ドロップダウンを画像つきや大きなチェックボックスで表示できる
- 数値フィールドに[+][-]ボタンが付く
- 添付ファイルで、撮った写真への書き込みやサインができる
- 1つのアプリにiPad用のフォームを複数作れる
ライトコースでは使えず、日本語のみの提供です。Android版も予定されています。倉庫や工場、店舗など、キーボードを打ちにくい現場での入力を変える可能性がある機能です。
管理者向け:「ダッシュボード」カテゴリと利用状況
kintoneシステム管理の画面に、「ダッシュボード」カテゴリが新しく加わりました。利用状況ダッシュボードなど、状況を確認するための画面へのリンクがここにまとまります。

あわせて、次の変更もあります。
- 利用状況ダッシュボードで、kintone AIの利用状況とAIクレジットの使用量を確認できる(スタンダード・ワイド。画面上は開発中の表示)
- 利用状況・パフォーマンスの各ダッシュボードは、「利用する機能の選択」で有効にしなくても使える。パフォーマンスダッシュボードはワイドコース限定・日本語のみ
AIクレジットの残りを確認する場所ができたのは、generateText()を試す場合にも便利です。
その他の変更点
残りは簡潔にまとめます。
- 監査ログのSIEM連携(ワイドコース限定)。現在はMicrosoft Sentinelに対応し、Splunkは対応予定です。連携用のAPIトークンはcybozu.com共通管理で発行します
- スペース・スレッドの改善。貼り付け時に余分な空行が入る、通知から開くと二重に表示される、同じ内容が二重に投稿される、といった不具合が直り、スクリーンリーダーでのメンションの読み上げも改善されました
- アップデートオプションの変更。今回の「ダッシュボード」カテゴリ、テーブルの行ボタンAPI、AIによるアプリ設定の確認リンクは、無効にするスイッチが用意されています。ポータルとCSVからのアプリ作成画面のフロントエンド刷新は、オプションの内容が変わりました
まとめ:今月押さえる3点
- テーブルの[+][-]をAPIで出し分けられるようになった(追加・編集画面・PCとモバイル)。DOMを触る書き方から置き換えられる
- ただし隠れるのはボタンだけ。
record.set()では行が増え、そのときテーブルのchangeも発生しない。行数の上限を守るなら保存時のチェックを併用する。状態は画面を開くたびに設定し直す - kintone AIのテキスト生成APIと全体検索の表記ゆれ対応はAPI ラボ。試すのはよいが、配布するプラグインや基幹の処理に組み込むのは正式リリース後に
iPadアプリやダッシュボードは、有効にするかどうかを管理者が選べる変更です。現場の端末や運用に合うかを見て、必要なものから試してみてください。
テーブルの「あとちょっと」はプラグインで
行数の上限のように、APIで書けることも増えてきました。とはいえ、アプリごとにコードを書いて保守するのは手間がかかります。テーブルまわりの困りごとは、コードを書かずにプラグインで解決する方法もあります。
テーブルアシスト for kintone(無料)は、テーブルごとに最大行数を決めると、上限に達したときに[+]と複製ボタンを押せなくするプラグインです。行の並べ替えや複製、チェックした行だけの集計にも対応しています。

カスタマイズやプラグイン選定のご相談は、お問い合わせからお気軽にご連絡ください。
関連記事・サービス
- kintoneのテーブルの使い方 — テーブルの設定・集計・できないこと
- kintone 2026年8月アップデート — ルックアップのchangeイベント正式化
- kintone 2026年6月アップデート — kintone AIの正式提供とOR検索
- kintone 2026年のアップデートまとめ — 年間の変更点を一覧で確認
- kintoneプラグイン一覧 — 無料で使えるプラグインをまとめて掲載


