JavaScriptで大規模なシステムを構築する際の注意点を説明しよう。注目すべきはJavaScriptの言語仕様である。1人で小さなアプリを開発する際は柔軟でいいのだが、この柔軟さは、大規模開発では仇となる。

 「JavaScriptはデータ型を明示的に指定しなくても動作するため、想定しない動作をすることがある」と、サイボウズの天野祐介氏(グローバル開発本部 開発部)は話す(図1の上)。

図1●JavaScriptの特徴が大規模開発では仇となる
図1●JavaScriptの特徴が大規模開発では仇となる
[画像のクリックで拡大表示]

 JavaScriptでは、「var a = 1」と記述すれば数字の「1」が代入され、「var a = "1"」と記述すれば文字列の「1」が代入される。変数aで「a + a」を実行した場合、数字の「1」なら「2」、文字列の「1」なら「11」が出力される。

 変数aを数字とみなしていた開発エンジニアから見ると、「11」は想定と異なる結果だ。ミスした箇所を特定して修正する必要があるが、JavaScriptはコンパイルを実行しない。ミスした箇所は自分で特定するしかない。コード量が膨大だと探すのは一苦労だ。

 柔軟さが仇になるケースはほかにもある。企業向けチャットサービス「ChatWork」を提供するチャットワークの山本正喜氏(専務取締役)は、「JavaScriptはコードの書き方が自由なので、複数人で開発すると統一性がなくなる」と指摘する(図1の下)。

 開発エンジニアごとに書き方が異なると全体の見通しが悪くなったり、同じような処理が繰り返し出てきたりする。そうなるとコード全体を把握しづらくなり、エラー発生時の原因特定や稼働後の保守などで苦労する。