Ribbit works
記事のトップ画像

IE廃止時代のKintoneカスタマイズ

JavaScriptKintone

last modified date2021-12-25

publish date2021-12-21

> Internet Explorer は無効になります。

この1文が何人のウェブエンジニアを歓喜させたでしょうか。

今までChromeがIEのシェアを超えても、EdgeのレンダリングエンジンがChroniumになっても、 日本においてIEユーザーは根強く一定割合残り続けていました。

そのIEユーザーに対応するため、便利な新しい機能を使えず苦労された開発者の方は多いはずです。

kintone.Promiseというオブジェクトも、サイボウズがIE環境で非同期処理が動くよう対応したものです。

更にネット上にはIEに対応するための古い記述方法と、IEを無視した新しい記述方法の情報が混在し、JavaScript初学者の大きな壁となっていました。

今回はIEが廃止されることがKintoneに与える影響と、今後のコーディングで注意する点をいくつかお話したいと思います。

完全に使えなくなるわけではない

従来の Internet Explorer ベースの Web サイトやアプリケーションに直接アクセスできる「Internet Explorer モード (IE モード) 」を搭載した Microsoft Edge をご利用ください。

IEがシステムから完全になくなるというわけではないようです。

ただ従来のIEユーザーは恐らくですが「インターネットはIEを使うもの」という旧OS時代から続く考えからIEを利用されていて、「IEじゃないといけない」というわけではないと思います。

このことから、わざわざEdgeを開いたうえでIEモードを使用する、という方は大きく減少するはずです。

IE11のサポートも2022年内で終了するそうなので、ない物として考えて問題ないと思います。

Kintone開発に与える影響

Kintoneは特性上アップロードしたJavaScriptがコンパイル等されることなくそのまま実行されるため、Node.jsなどの開発環境を利用しない限り、記述段階でIEを意識する必要がありました。

今後その必要がなくなります。

レンダリングエンジンがブラウザによって異なる以上、「クロスブラウザ対応」という言葉は残り続けると思いますが、「IEとそれ以外」と比べれば大したコストではないでしょう。

では今後コーディングはどうするかについてお話します。

varは使わない

varは非常に柔軟で、言ってしまえば自由自在です。

定義前に呼び出しても状態を巻き上げ、再定義してもエラーとなりません。

この柔軟性は、「想定できない」という意味でプログラムにエラーを起こしかねません。

これからJavaScriptを学ぶ方は、「変数定義にvarは存在しない」という認識でも全く支障は出ません。

varは使用せず、代わりにletとconstを使うべきです。

さらに言えば、ほぼ全ての変数定義はconstで代替できるはずです。

const { record } = kintone.app.record.get();

for (const [code, field] of Object.entries(record)) {
  console.log(`フィールドコード${code}の内容は`, field);
}

非同期処理にasync/awaitを使う

Promiseによるメソッドチェーンは、コードの可読性を低下させます。

また、try-catchを使ったエラー処理が実装できないのも不便です。

async/awaitを活用しましょう。並列処理もエラー処理も容易です。

kintone.events.on("...", async (event) => {
  try {
    const [clientRecords, departmentRecords] = await Promise.all([
      kintone.api(/* ... */),
      kintone.api(/* ... */),
    ]);
  } catch (error) {}
  return event;
});

参考:Windows 11 のシステム要件、機能、デバイスの要件について