
IE廃止時代のKintoneカスタマイズ
2021-12-25
2021-12-21
この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;
});