初心者が知るべきJavaScriptの魅力はたった2つ!

      2017/02/02

JavaScriptの魅力は2つあります。

  1. 構文の魅力
  2. 動作するプラットフォームの魅力

1の構文の魅力は、コードを短く書けるとか、分かりやすく書けるとか、簡単に書けるとか、柔軟な構造を作れる等の機能のことです。JavaScriptの場合、プロトタイプ型オブジェクト指向関数が第一級オブジェクトである等の構文的特徴があります。

2の動作するプラットフォームの魅力は、JavaScriptを動かせる実行環境の多さです。

JavaScriptは現在最も多くの実行環境を持つ言語と言っても過言ではありません。

JavaScriptは当初PCのブラウザ上で動く言語として作られましたが、その後、Windowsのマクロ実行環境であるWSH(Windows Scripting Host)等が出てきて、現在だとスマホブラウザで動くのはもちろんのこと、サーバーサイドでJavaScriptを動かすことが出来るNode.js、JavaScriptでスマホネイティブ開発の出来るPhoneGapやTitanium Mobileなどがあります。IoTの分野でも故人で手軽に扱えるマイコンボードArduinoでもJavaScriptが動かせます。

ここで挙げたのは一例であり、この他にもJavaScriptが動く環境はたくさんあります。

それでは、
1. 構文の魅力
2. 動作するプラットフォームの魅力
について、詳しく紹介します。

1. 構文の魅力

プロトタイプ型オブジェクト指向とは?

プロトタイプ型オブジェクト指向はJavaやRubyのようなクラス型オブジェクト指向とはオブジェクトのつくり方が異なります。

以下のサンプルコードではゲームのプレイヤーオブジェクトを作成しています。

プロトタイプ型オブジェクト指向言語のすごい所は、実行時にオブジェクトのメンバーを追加できることです。
例えば、プレイヤーのヒットポイントを保存する必要があったら、あとからメンバ変数(フィールド、プロパティのようなもの)を実行時に追加することができます。

上記のコードの続きに以下のようなコードが書けます。

JavaやC#の場合、クラス定義時にメンバ変数(フィールド、プロパティ)は定義しなければいけませんが、JavaScriptの場合、オブジェクトをインスタンス化した後にプロパティを追加することができるんです。

関数が第一級オブジェクト

JavaScriptでは関数を変数に格納して受け渡すことができます。変数に格納できるものを第一級オブジェクトと言います。関数が受け取った変数に格納された関数を実行することを高階関数と言います。

「意味わからん?」って思いました?コード例を見てみましょう。

実行結果は、
func1を実行します。
func1だお!
func1を実行しました。
とコンソール出力されます。

同じような処理の流れのコードが多くて、その一部だけを個別のロジックにしたい場合などには高階関数を使うとうまくいきます。

高階関数をサポートしていないオブジェクト指向言語の場合、同じことをするのに、インターフェースを実装したクラスを使ったStrategyパターンというやり方を使います。高階関数があれば、わざわざインターフェースを実装したクラスを作る必要がないので実装がかんたんです。

JavaでStrategyパターンを用いて同じことをしているコード例です。

JavaScriptで数行だったのが、Javaだとこれほど長くなってしまいます。っといってもJava8からはラムダ式、クロージャという高階関数の機能がサポートされたのでJavaScriptに近い書き方が出来るようになっています。

連想配列(ハッシュ)とオブジェクトが同じ

JavaScriptでは連想配列(ハッシュ)とオブジェクトは同じものです。
オブジェクトをハッシュのように操作することもできるし、ハッシュをオブジェクトのように操作することもできます。

これは非常に便利で、RubyやC#等のコードを書いている時もJavaScriptを書いてる時のくせでハッシュをプロパティとして参照するコードを書いて文法エラーになることがよくあります。それくらい便利で素晴らしい記法だと思います。

2. 動作するプラットフォームの魅力

JavaScriptは多数のプラットフォームで動きますが、他の言語と比較してどうなのか検証してみましょう!

言語/Platform PC ブラウザ Webサーバ スマホネイティブ
JavaScript WSH上 全ブラウザ node.js等 PhoneGap, Titunium等
Java JVM × Tomcat等 Androidのみ
Ruby rubyインタプリタ上 × Passenger等 RubyMotion
C# .NET Framework上 × IIS等 WindowsPhone, UnityやMonoでiOSとAndroid

こうして比較してみると、JavaScriptだけ際立って多数プラットフォームで動くというわけでもないようです。が、JavaScriptだけがブラウザ上で動くという点は大きな魅力です。もちろんAltJSと言われるCoffeeScript、TypeScript、Dartなどのようなコンパイル(トランスパイル)するとJavaScriptのソースコードが出力される言語はありますが、直にブラウザ上で動く言語は今の所、JavaScriptだけなのでオンリーワンの魅力があることは間違いありません。

さぁJavaScriptを学ぼう!

そんなわけでJavaScriptを学ぶと多くのプラットフォームで動作するプログラムを作ることができます。

また、JavaScriptはプロトタイプ型オブジェクト指向言語という珍しいタイプの言語なので、他の言語では学べない手法が身に付きます。

なので、ぜひ学んでみることをおすすめします!

プログラミング初心者におすすめのサービス
1. 講師から対面で学びたい派には

プログラマカレッジをおすすめします。ProEngineerという転職エージェントが運営しているプログラミングスクールです。20代限定なんですが、無料で受講できて、修了後、就職支援もしてくれるんです。最高過ぎですよ、これ!!就職の紹介料を企業からもらえるのでスクールを無料にできるんでしょうね。すばらしいシステムだと思います!

30代以上の方には

プログラマカレッジは20代限定なので30代以上の方にはWebスクをおすすめします。受講料の返金保証がついているし、毎日11時〜23時まで通い放題なのでとてもいいと思います!

2. 自宅で学びたい派には

侍エンジニア塾の無料体験レッスンをおすすめします。カリキュラムを自由に選択できるので、自分が教わりたい内容をピンポイントで学ぶことが出来ます。このスクールから33歳でITエンジニアに就職出来た人がいるそうなので、30代の方にもおすすめです。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

 - 技術