kintone(キントーン)素人のJavaScriptカスタマイズは危険?

「自分で勉強してkintoneのカスタマイズをしています」ということをよく聞きます。「Cybozu Developer Networkに掲載されていたサンプルプログラムをコピーして使っています」という話もよく聞きます。

このコラムでは、素人がkintoneのJavaScriptカスタマイズすると危険なのかどうかについてお話したいと思います。

ここでの「素人」は「プログラムを書くことを職業としたことがない」人とします。

kintoneカスタマイズをするにあたって必要なJavaScriptの知識

kintoneはJavaScriptでプログラムを作成することでカスタマイズすることができます。JavaScriptは歴史の長いプログラミング言語で、昔をご存知の方であれば「ホームページでなにか動きのある演出をするやつでしょ?」という認識の方も多いかもしれません。

現代のJavaScriptは変化が激しく、モダンJavaScriptと呼ばれる書き方をする必要があります。kintoneのJavaScriptカスタマイズもいわゆるモダンJavaScriptで書くべきです。

モダンJavaScriptで書かないと、kintone APIの力をスムーズに引き出せないことがあります。また、プログラムの可読性(読みやすさ)や品質(不具合がないかどうか)、セキュリティにも影響を与えます。

モダンJavaScriptの理解に必要なキーワードは何でしょうか?

  • ES2015以降の記法(letやconstなど
  • 非同期処理(Promiseやasync)
  • npm, Babel, webpack等のモダンJavaScriptを支えるツール群

これらの知識がなくてもkintoneのカスタマイズは可能ですが、知っている方が安全で便利なカスタマイズが作成できます。

素人JavaScriptの危険性

一番危険なカスタマイズとは何でしょうか?

それは「何をやっているかわからないけどなんか便利なので入れているカスタマイズ」です。自分のkintoneに自分で入れたJavaScriptの中身で何が行われているか把握できていますか? プラグイン・連携サービス・外部ライブラリなどまで把握する必要はありませんが、自分で作成したJavaScriptファイルの中身は把握しておく必要があります。

なぜなら、そのJavaScriptファイルは誰も面倒をみてくれないからです。 もし、そのJavaScriptのコードの中に、あなたの会社のデータを黙って外部に送信するプログラムが含まれていたらどうしますか?

「それくらいはみればなんとなくわかる」と思う方も多いかもしれませんが、外部に送信していることをわかりにくくプログラミングすることも可能ですので「みればなんとなくわかる」では危険です。

Cybozu Developer Networkにサンプルとして掲載されているプログラムにはさすがにこのような勝手に外部に送信するようなプログラムはありませんが、Cybozu Developer Networkのコミュニティで回答されたプログラムにはこのようなものが含まれていないという保証がありません。(そういうものがあるというわけではありません)

ですので、コピー&ペーストでプログラムをコピーして使うのは危険なのです。どういう副作用があるかわからない薬を毎日飲むのは怖いのと同じようなイメージです。

1年後に見ても意味わかりますか?

「サンプルプログラムの意味はなんとなくわかるので大丈夫」という方、1年後に見たときにでもすぐに同じことが言えますか?なぜ1年後と言うかというと、他の人に引き継げるレベルにするには1年後の自分がみてすぐにわかるというのが1つの基準となるためです。

1年後の自分がみてもすぐにわかるようにプログラム中にコメント入れたりしておかないと、他の人に引き継ぐことになったときにも困ることになります。

素人でもJavaScriptカスタマイズしていいケース

では、素人はカスタマイズしてはいけないのか?という話になると思います。

弊社の立場としては、安全で効率的なカスタマイズができるgusuku Customineを使っていただきたいのですが、自分でJavaScriptを書きたいという方も多いので、そういう方は次のルールに従ってやってください。

  • kintoneの開発者ライセンスを取得して、まず開発用の環境で試す
  • コピペであってもその1行1行の意味がわかるまでは本番に入れない(自分でわかりにくかったところにはコメントを入れる)
  • セキュアコーディングガイドラインに従ってプログラムを作成する
  • セキュアコーディングガイドラインの意味がわからないなら本番にJavaScriptは入れない

厳しいようですが、無用なトラブルに陥らないためには大切なことなので、必ず守ってほしいと思います。

まとめ

kintoneは気楽にカスタマイズすることが可能なプラットフォームです。それがkintoneの柔軟性でいいところではあるのですが、柔軟性と対として存在する危険性も正しく理解して利用しないと、業務に使うシステムに情報漏えいのリスクを入れ込む可能性があります。

そこまでやる自信がないという方は、ぜひgusuku Customineをお試しください。