JavaScript文法(1) 学習環境の構築と基本的な書き方

# 目的と対象

オフラインでの授業に使う補足資料として作成したものが、今回の一連の記事。Javaなど他の言語を学んでいる人に向けた授業のため、記事の内容も、それを前提としている。

# 目次

(1) 学習環境の構築と基本的な書き方 **<-- この記事の内容**
(2) [変数とデータ型](http://qiita.com/azk0305/items/d78d744dff9656b22dd0)
(3) [演算子および配列](http://qiita.com/azk0305/items/748f4afadcfa5350a552)
(4) [制御構文と関数](http://qiita.com/azk0305/items/ed943040a8f7140d5a48)
(5) [関数の応用1](http://qiita.com/azk0305/items/f7e0653b20425fdb9f1b)
(6) [関数の応用2](http://qiita.com/azk0305/items/0fd54f9c66f726443dd6)
(7) [オブジェクトの基礎](http://qiita.com/azk0305/items/0d2018a1c6e547b7f65a)
(8) [JavaScriptのオブジェクト指向プログラミング1 概要](http://qiita.com/azk0305/items/1e1bd10522927eaddd6a)
(9) [JavaScriptのオブジェクト指向プログラミング2 オブジェクトの作り方と継承](http://qiita.com/azk0305/items/386b3a2ac41caf3101e1)
(10) [JavaScriptのオブジェクト指向プログラミング3 多態性](http://qiita.com/azk0305/items/1c713562f6f842dcf1dc)
(11) [JavaScriptのオブジェクト指向プログラミング4 カプセル化](http://qiita.com/azk0305/items/914f6e447b41d4ced25e)
(12) [ES6の新機能について](http://qiita.com/azk0305/items/ebfb43c088101f7138f9)

# この記事の内容

* Firefoxに搭載されている簡単な学習環境の使い方
* `Hello, world!` を表示する

# JavaScriptの概要、および歴史

JavaScriptでできること・できないこと
[http://www.atmarkit.co.jp/ait/articles/0904/20/news124.html](http://www.atmarkit.co.jp/ait/articles/0904/20/news124.html)
JavaScriptを中心としたWebアプリ開発の栄枯盛衰まとめ
[http://www.atmarkit.co.jp/ait/articles/1507/15/news023.html](http://www.atmarkit.co.jp/ait/articles/1507/15/news023.html)

こちらの記事に詳しく紹介されている。
簡単にまとめると：

* JavaScriptは、ブラウザの表示内容を動的に制御するための言語（クライアントサイドの言語）
* 昔はブラウザソフトごとに独自の言語名（仕様）で実装されていた
    * 「JavaScript」という言語名は当初はNetscape（Firefoxの前身）のものだった
        * 「Java」と「JavaScript」は言語仕様上は無関係！
* ブラウザソフトごとの差異を埋めるために標準化が進められた結果できたものがECMAScript（ECMAScriptのことを指してJavaScriptと言われることもある）
    * 2015年6月にECMAScriptのバージョン6が制定された
* JavaScriptを利用した技術の一例
    * Ajax：ページ遷移なしでサーバとの通信が可能な技術
    * jQuery：JavaScriptのコーディングが簡単になるライブラリ
    * Node.js：サーバサイドのシステムをJavaScriptで作るためのアプリケーション
    * PhoneGap（Cordova）：スマホアプリをJavaScriptで作るためのフレームワーク
    * altJS：コンパイルするとJavaScriptのソースコードを出力してくれる独自言語の総称

# 学習環境の構築
基本的にはブラウザと適当なテキストエディタがあれば、すぐにでも始められる。さらに、Firefoxのブラウザがあれば、標準機能の「スクラッチパッド」を利用することで別途テキストエディタを用意する必要がなくなる。しばらくはFirefoxのスクラッチパッドを利用する形で話を進める。

まずはFirefoxの最新版をインストールする。

インストールが完了してFirefoxを起動したら、画面右上にある三本線マークのボタンをクリックし、「開発ツール」→「スクラッチパッド」を選択。

![2016-08-08_11h53_03.png](https://qiita-image-store.s3.amazonaws.com/0/21867/096e8dfb-ccd3-fc73-dd05-6524fb0ba5a3.png)

このようなウィンドウが出る。これがスクラッチパッド。ついでに、同じ「開発ツール」の一覧にある「ブラウザコンソール」のウィンドウも出す。

![2016-08-08_11h54_46.png](https://qiita-image-store.s3.amazonaws.com/0/21867/1fca6f99-7ad1-7b4c-ed55-c3bbcc90355f.png)

これで学習を進める。

# 基本的な書き方

## コメント

先に「コメント」について。スクラッチパッド起動時の1行目から8行目がコメント。

```js
/*
 * この画面は JavaScript スクラッチパッドです。
 *
 * JavaScript を入力して、右クリックまたは [実行] メニューを選択してください。
 * 1. 実行: 選択したコードを実行します。(Ctrl+R)
 * 2. 調査: 実行結果をオブジェクトインスペクタで表示します。(Ctrl+I)
 * 3. 表示: 選択したコードの後ろに、実行結果をコメント形式で挿入します。(Ctrl+L)
 */
```

複数行のコメントをしたい場合が `/* */`で挟む形。1行分のコメント `//` も用意されている。

```js
// コメントです。
```

## Hello, world!

とりあえず「Hello, world!」を表示させてみる。

スクラッチパッドの1行目から8行目までのコメントは消去し、以下のように記述する。

```js
console.log("Hello, world!");
```

![2016-08-08_12h00_32.png](https://qiita-image-store.s3.amazonaws.com/0/21867/8e87dc0a-3ef6-299f-412c-eb09211d622e.png)

このように記述し、「実行」ボタンを押すと、ブラウザコンソールのウィンドウに`Hello, world!`と表示される。

![2016-08-08_12h02_20.png](https://qiita-image-store.s3.amazonaws.com/0/21867/313cac64-9156-1584-f04f-38818b44a8bc.png)

JavaScriptにおける、Javaの「System.out.println」、C言語の「printf」に該当する命令が「console.log」。これにより、ブラウザコンソールに情報を表示できる。

なお、簡素ではあるものの、もう一つ、表示する命令として「alert」がある。

```js
alert("Hello, world!");
```

このように記述して実行すると、小さなポップアップが表示され、その中に指定した文字列が表示される。

![2016-08-08_12h07_19.png](https://qiita-image-store.s3.amazonaws.com/0/21867/6ef55a11-360f-e866-b3c5-52300ddef5f4.png)

あくまで簡単な確認手段のため、デバッグ用途としては「console.log」の方が望ましい。

※補足：「せっかく記述したJavaScriptのコードを保存しておきたい」という場合は、スクラッチパッドの「名前をつけて保存」で拡張子「.js」のファイルで保存できる。

※補足：JavaScriptにはmain()関数は無い。そのため、スクラッチパッドに記載したコードは、1行目の記述内容から順次、処理が実行される。

# 次回予告

変数とデータ型