Ribbit's works

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

#JavaScript #kintone
にメンテナンス済み
記事のトップ画像

> 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 のシステム要件、機能、デバイスの要件について