JavaScriptは素晴らしい言語です。Web開発だけにとどまらず、機械学習、ゲーム開発、組み込み系の開発、ブロックチェーンなど、多方面でJavaScriptが力を発揮しています。また、絶えず成長を続けている点もJavaScriptの大きな魅力です。Java Scriptの仕様は、TC39
と呼ばれる技術委員会によって日々活発に議論が行われ、今もなおより素晴らしい言語へと進化しています。
しかし、その一方で、実はJavaScriptは大きな欠陥を持った言語でもあります。その欠陥の最たるものは「高すぎる柔軟性」です。柔軟性という点について、JavaScriptの生みの親であるブレンダン・アイク氏は、Effective JavaScriptという本の序文で次のように述べています。
ファーストクラス関数とオブジェクトプロトタイプという2つの大きな課題をクリアした上で、厳しい要件と短期間でのスケジュールに応えるために私のとった解決策は、JavaScriptを最初から非常に柔軟なものにすることでした。
(Apart from Getting two big things right (first-class functions, object prototypes), my solution to the challenging requirements and crazy-short schedule was to make JavaScript extremely malleable from the start.)
アイク氏によると、JavaScriptは短納期だったという事情も相まって、極端に柔軟に設計されたもののようです。「柔軟」というと聞こえは良いですが、言い換えると「皆が皆、好きなように書けてしまうプログラミング言語」ということです。様々な書き方の違いが生じやすいだと言えます。プロダクトのコード全体を見渡したとき、もし書き方にまったく統一感がないようであれば、それは読みやすいものではありません。それに、三者三様のソースコードは、メンテナンスするにも決して容易ではありません。
そこで、フロントエンドエンジニアはJavaScriptの優れた点を享受していくと同時に、この「高すぎる柔軟性」という問題にも対処していかなければなりません。厳格なルールを持たない柔かすぎるプログラミング言語であるが故に、どのようなJavaScriptの書き方が良いのか、一考してみる必要があります。柔軟さに甘えていると、すぐさま秩序のないコードになってしまうでしょう。
本書では、どのようにJavaScriptを書けば、リーダブルなJavaScriptになるのか考えていきます。もちろん「リーダブル」とは主観的な概念であって、何が読みやすいコードなのかは人によって異なります。これから紹介するJavaScriptのエッセンスも、所詮、私にとってのリーダビリティに過ぎないかもしれません。ただ、もしそうだったとしても、柔軟すぎるJavaScriptに対して、一定の良いパターンを示すことができるのではないかと思っています。