そのカスタマイズ大丈夫? アップデートの影響を受けにくいカスタマイズTips

目次

はじめに

kintoneでは、定期的に機能改善やアップデートが行われます。
このとき、 kintone APIドキュメント に記載していない方法でkintoneカスタマイズを行うと、kintoneの機能追加の影響を受けて、動作しなくなるリスクがあります。
たとえば、直接HTML要素の参照や編集をする「DOM操作」と呼ばれる実装方法などがあります。

そこで本記事では、kintoneのアップデートで動かなくなるリスクがあるカスタマイズの例を紹介します。
例を通じて、アップデートの影響を受けにくいカスタマイズについて考えていきましょう。

具体例

ここからは、具体例を交えて説明します。
回避策がある場合はその内容についても説明します。

DOM操作

HTML要素の参照

kintoneの画面上に要素(ボタンなど)を表示したい場合は、次のような方法で取得したスペース要素にボタンなどの要素を追加してください。

1
2
3
4
5
6
const newDiv = document.createElement('div');
const newContent = document.createTextNode('Hello');
newDiv.appendChild(newContent);

const element = kintone.app.record.getHeaderMenuSpaceElement();
element.appendChild(newDiv);

ID名やClass名の指定は動かなくなるリスクがあります。
たとえば以下のようなコードです。
クラス名のrecordlist-cell-gaiaは変更される可能性があるためです。

1
2
3
4
5
6
const newDiv = document.createElement('div');
const newContent = document.createTextNode('Hello');
newDiv.appendChild(newContent);

const currentDiv = document.getElementsByClassName('recordlist-cell-gaia')[0]; // 推奨しません
currentDiv.appendChild(newDiv);

もちろんjQueryを使ってjQuery('.recordlist-cell-gaia')のように指定するのも同様です。
つまり、APIで取得できる場所以外に要素を追加することは、動かなくなるリスクがあります。

以下のようにHTMLタグを参照するのも同様です。

1
2
const element = kintone.app.record.getFieldElement('文字列1行');
const span = element.querySelector('span'); // 推奨しません
positionを使った要素の配置

スペース要素やメニュー上側の空白要素を取得して、そこにHTML要素を追加するのはAPIドキュメントに準じた方法です。
しかし、positionプロパティを利用して任意の位置にHTML要素を追加する方法は、動かなくなるリスクがあります。
親要素などのスタイルは、変更になる可能性があるためです。
たとえば以下のようなコードが該当します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const element = kintone.mobile.app.getHeaderSpaceElement();

// 推奨しません
const div = document.createElement('div');
div.textContent = 'Hello';
div.style.position = 'fixed';
div.style.top = '80%';
div.style.left = '50%';

element.appendChild(div);
HTML要素の操作

getFieldElement()で取得した要素はスタイル変更のみがAPIドキュメントに準じた方法です。
詳細は フィールド要素を取得する を確認してください。

1
2
const element = kintone.app.record.getFieldElement('文字列1行');
element.style.color = 'red';

スタイル変更以外は動かなくなるリスクがあります。
たとえば以下のようなイベント取得です。

1
2
const element = kintone.app.record.getFieldElement('文字列1行');
element.addEventListener('click', console.log); // 推奨しません

マウスやキーボード入力のイベントを利用したい場合は、以下の手順をおすすめします。

  1. スペース要素を取得する。
  2. スペース要素にテキストボックスなどを追加する。
  3. テキストボックスのイベントを利用する。
  4. 必要なタイミングで入力値を利用する。
    例)レコード保存実行前イベントで入力値をkintoneに反映する。

URLの利用

URLの参照

kintoneのURLは変更になる可能性があります。
たとえば JavaScriptやCSSを使用したカスタマイズ (External link) でURLを参照することにより特定スペースのみでカスタマイズを実行できますが、URL変更により動作しなくなる可能性があります。

URLの指定

同様に以下のようなURLの指定も動かなくなるリスクがあります。

1
window.location.href = '/k/' + kintone.app.getId() + '/';

cybozu developer networkでも、 安全に在庫管理を行うテクニック2 - リビジョンを試そう - などで、直接URLを指定したカスタマイズをしています。

URLパラメーター(クエリ文字列)を利用する

kintoneの画面を開くときにURLパラメーターを使えば外部からkintoneにデータを渡せますが、動かなくなるリスクがあります。
外部のデータを利用するにはレコード表示などのイベントでREST APIを利用してデータを取得してください。

おわりに

今回取り上げた、リスクのあるカスタマイズ方法は一例です。
kintoneのアップデートで影響を受ける可能性のある実装方法のイメージがつかめる内容になっていれば幸いです。

information

このTipsは、2025年8月版kintoneで動作を確認しています。