第2章 なぜJavaScriptなのか?
目次
本書を購入する
(広告です。ブロックしないでください。)

第2章 なぜJavaScriptなのか?

世の中には多くのプログラミング言語があります。なぜJavaScriptを使うべきなのでしょうか? この章では、プログラミング言語を選択する際に重要な7つの側面を考察し、JavaScriptが全体的に優れていると主張します。

  1. 自由に利用できるか?
  2. エレガントなプログラミング言語か?
  3. 実際に役立つか?
  4. 優れたツール、特に優れた統合開発環境(IDE)があるか?
  5. やりたいことに対して十分な速度か?
  6. 広く使われているか?
  7. 将来性はあるか?

JavaScriptはエレガントか?

イエスであり、ノーでもあります。私はさまざまなパラダイムの複数のプログラミング言語でかなりの量のコードを書いてきました。そのため、JavaScriptがエレガンスの頂点ではないことを十分に認識しています。しかし、非常に柔軟な言語であり、 reasonably elegant なコアを持ち、オブジェクト指向プログラミングと関数型プログラミングを組み合わせて使用することができます。

JavaScriptエンジンの間の言語互換性はかつて問題でしたが、ECMAScript仕様への準拠をエンジンでチェックするtest262スイートのおかげもあって、今は問題ではなくなりました。一方、ブラウザとDOMの違いは依然として課題です。そのため、通常は、これらの違いを隠すためのフレームワークに頼るのが最善です。

JavaScriptは役立つか?

世界で最も美しいプログラミング言語であっても、必要なプログラムを作成できないのであれば役に立ちません。

グラフィカルユーザーインターフェース

グラフィカルユーザーインターフェースの分野では、JavaScriptはHTML5の一部であることからメリットを得ています。ここでは、HTML5という用語を「ブラウザプラットフォーム」(HTML、CSS、およびブラウザJavaScript API)の意味で使用します。HTML5は広く普及しており、常に進歩しています。フル機能のクロスプラットフォームアプリケーションを作成するための完全なレイヤーになりつつあります。たとえば、Javaプラットフォームのように、組み込みオペレーティングシステムのようなものです。HTML5のセールスポイントの1つは、クロスプラットフォームのグラフィカルユーザーインターフェースを作成できることです。これらは常に妥協の産物です。単一のオペレーティングシステムに限定されない代わりに、品質を多少犠牲にします。かつて、「クロスプラットフォーム」とは、Windows、Mac OS、またはLinuxを意味していました。しかし、現在では、Webとモバイルという2つのインタラクティブプラットフォームが追加されています。HTML5を使用すると、PhoneGapChrome AppsTideSDKなどのテクノロジーを介して、これらのすべてのプラットフォームをターゲットにすることができます。

さらに、いくつかのプラットフォームでは、Webアプリをネイティブアプリとして使用したり、ネイティブにインストールしたりできます。たとえば、Chrome OS、Firefox OS、Androidなどです。

JavaScriptを補完するその他のテクノロジー

HTML5以外にも、JavaScriptを補完し、言語をより便利にするテクノロジーがあります。

ライブラリ
JavaScriptには豊富なライブラリがあり、JavaScriptの解析(Esprima経由)からPDFファイルの処理と表示(PDF.js経由)まで、さまざまなタスクを実行できます。
Node.js
Node.js プラットフォームを使用すると、サーバーサイドコードとシェルスクリプト(ビルドツール、テストランナーなど)を作成できます。
JSON(JavaScript Object Notation、第22章で説明)
JSONはJavaScriptに根ざしたデータ形式であり、Web上でのデータ交換(例:Webサービスの結果)で普及しています。
NoSQLデータベース(CouchDBMongoDBなど)
これらのデータベースは、JSONとJavaScriptを緊密に統合しています。

JavaScriptには優れたツールがあるか?

JavaScriptは、より優れたビルドツール(例:Grunt)とテストツール(例:mocha)を獲得しつつあります。Node.jsを使用すると、これらの種類のツールをシェル経由で実行できます(ブラウザ内だけでなく)。この分野のリスクは、これらのツールが多すぎるため、断片化が起こることです。

JavaScript IDEの分野はまだ初期段階ですが、急速に成長しています。Web開発の複雑さとダイナミズムにより、この分野は革新の肥沃な土壌となっています。2つのオープンソースの例として、BracketsLight Tableがあります。

さらに、ブラウザはますます強力な開発環境になりつつあります。特にChromeは、最近目覚ましい進歩を遂げています。今後、IDEとブラウザがどの程度統合されるかを見るのは興味深いでしょう。

JavaScriptは十分な速度か?

JavaScriptエンジンは、低速なインタプリタから高速なJust-In-Timeコンパイラへと大きく進化しました。現在では、ほとんどのアプリケーションで十分な速度です。さらに、残りのアプリケーションでもJavaScriptを十分な速度にするための新しいアイデアがすでに開発中です。

  • asm.jsは、現在のエンジンで高速に動作するJavaScriptの(非常に静的な)サブセットであり、コンパイルされたC ++の約70%の速度です。たとえば、Webアプリケーションのパフォーマンスが重要なアルゴリズム部分を実装するために使用できます。また、C ++ベースのゲームをWebプラットフォームに移植するためにも使用されています。
  • ParallelJSは、新しい配列メソッドmapParfilterParreducePar(既存の配列メソッドmapfilterreduceの並列化可能なバージョン)を使用するJavaScriptコードを並列化します。並列化を機能させるには、コールバックを特別なスタイルで記述する必要があります。主な制限は、コールバック内で作成されていないデータを変更できないことです。

JavaScriptは広く使われているか?

広く使用されている言語には、通常2つの利点があります。第一に、そのような言語は、より優れたドキュメントとサポートが提供されます。第二に、より多くのプログラマーがそれを知っています。これは、誰かを雇う必要がある場合や、その言語に基づいたツールの顧客を探している場合に重要です

JavaScriptは広く使用されており、上記の両方の利点を得ています。

  • 最近では、JavaScriptのドキュメントとサポートは、書籍、ポッドキャスト、ブログ投稿、メールニュースレター、フォーラムなど、あらゆる形態とサイズで提供されています。第33章では、重要なリソースを紹介します。
  • JavaScript開発者は非常に需要がありますが、その数は常に増加しています。

JavaScriptには将来性はあるか?

JavaScriptには明るい未来があることを示すものがいくつかあります。

  • 言語は着実に進化しています。ECMAScript 6は良さそうです。
  • JavaScript関連の革新がたくさんあります(前述のasm.jsとParallelJS、MicrosoftのTypeScriptなど)。
  • JavaScriptが不可欠な一部であるWebプラットフォームは急速に成熟しています。
  • JavaScriptは、幅広い企業連合によってサポートされています。単一の個人または企業がそれを制御しているわけではありません。

結論

魅力的な言語を作るものの前述のリストを考えると、JavaScriptは非常にうまくいっています。確かに完璧ではありませんが、現時点では打ち負かすのは難しいです。そして、事態は良くなる一方です。

次:3. JavaScriptの本質