Skip to content

Commit 6922345

Browse files
author
Kuniwak
committed
Improve doc
1 parent 236b65d commit 6922345

File tree

3 files changed

+106
-58
lines changed

3 files changed

+106
-58
lines changed

README.md

Lines changed: 104 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
JavaScript Training
2-
===================
1+
2日でできる JavaScriptTraining
2+
==============================
33

44
JavaScript 初心者が JS の未来を見据えつつ、
55
基礎をひととおり身に付けるための資料です。
66

77

8+
この README は `npm run presentation`
9+
再生することができます。
10+
11+
812

913
セットアップ
1014
------------
@@ -26,6 +30,8 @@ JavaScriptTraining リポジトリを fork します。
2630

2731
画面右上にある fork ボタンを押してください。
2832

33+
[<img src="http://mixi-inc.github.io/JavaScriptTraining/images/fork-button.png" height="300px" style="background-color: white">](http://mixi-inc.github.io/JavaScriptTraining/images/fork-button.png)
34+
2935

3036
### 3. 必要なものをダウンロード
3137

@@ -165,6 +171,8 @@ Web ページの適当な場所で
165171
この Console から、JavaScript を
166172
実行することができます。
167173

174+
[<img src="http://mixi-inc.github.io/JavaScriptTraining/images/console.png" height="300px" style="background-color: white">](http://mixi-inc.github.io/JavaScriptTraining/images/console.png)
175+
168176

169177
### 3. 何か実行してみる
170178

@@ -188,7 +196,7 @@ foo;
188196
```
189197

190198

191-
### 6. ブラウザオブジェクトをいじってみる
199+
### 6. ブラウザオブジェクトをいじる
192200

193201
ブラウザオブジェクトもいじってみましょう。
194202

@@ -242,12 +250,15 @@ JavaScript に精通していない人に
242250
「どんなツールを使ったらいいですか?」と
243251
聞かれることがよくあります。
244252

245-
私は「構文ハイライトと lint を使うといいですよ」、
253+
私は「構文ハイライトと lint を使うといいですよ」、
246254
と答えることにしています。
247255

248256
[<img src="http://mixi-inc.github.io/JavaScriptTraining/images/syntax-error.png" width="600px">](http://mixi-inc.github.io/JavaScriptTraining/images/syntax-error.png)
249257

250258

259+
ひとつエピソードを紹介します。
260+
261+
251262
JavaScript には静的型検査がないことや、
252263
記号が多い構文や、まずい仕様がいくつもあるので、
253264
ミスを犯しやすい言語の一つです。
@@ -292,10 +303,10 @@ JavaScript には静的型検査がないことや、
292303
なってしまっていたのでした。
293304

294305

295-
このミスは、いわゆる**初見殺し**です。
306+
このエピソードは、いわゆる**初見殺し**です。
296307

297-
「何それどうしてそんな仕様なの&#x1f631;というのが
298-
正常なプログラマの反応だと思います
308+
「何それどうしてそんな仕様なの&#x1f631;
309+
と言いたくなりますね
299310

300311

301312
悲しいことに、このような落とし穴は
@@ -306,8 +317,10 @@ JavaScript の仕様・文化に数多く
306317
防げるのでしょうか?
307318

308319

309-
ESLint や JSHint、 JSLint のような lint を
310-
使いましょう。たとえば、ESLint を実行すると
320+
[ESLint](http://eslint.org/)[JSHint](http://jshint.com/)[JSLint](http://www.jslint.com/) のような lint を
321+
使いましょう。
322+
323+
たとえば、ESLint を実行すると
311324
下のような警告が出されます。これによって、
312325
潜在的な不具合をだいぶ減らせるようになるのです。
313326

@@ -404,19 +417,13 @@ var div = document.getElementById('foo');
404417
```
405418

406419

407-
他にも CSS クラスやタグ名、
420+
他にも CSS クラスやタグ名、その他の属性から、
421+
DOM 要素を取得することができます。
408422

409423
```html
410424
<div class="foo">foo</div>
411425
```
412426

413-
その他の属性から、DOM 要素を取得することが
414-
できます。
415-
416-
```html
417-
<a href="foo">foo</a>
418-
```
419-
420427

421428
#### CSS セレクタについて
422429

@@ -676,8 +683,13 @@ click イベント以外にも多様なイベントがあります:
676683
開発ツールを開き、Elements タブの中段にある
677684
Event Listeners タブを開いてみてください。
678685

686+
679687
[<img src="http://mixi-inc.github.io/JavaScriptTraining/images/chrome-dev-tool-event-debugging.png" height="300px" style="background-color: white">](http://mixi-inc.github.io/JavaScriptTraining/images/chrome-dev-tool-event-debugging.png)
680688

689+
たくさんのイベントが登録されていますね。
690+
691+
では、これらのイベントの使い方を解説していきます。
692+
681693

682694
#### DOM イベント実装編
683695

@@ -721,7 +733,7 @@ button.addEventListener('click', function(event) {
721733
```
722734

723735

724-
しかし、AngularJS という最近の
736+
しかし、[AngularJS](https://angularjs.org/) という最近の
725737
フレームワークでイベント属性スタイルを
726738
積極的に採用する動きもあります。
727739

@@ -752,10 +764,10 @@ button.addEventListener('click', function(event) {
752764
<button><img src="icon.png">Click me</button>
753765
```
754766

755-
この button 要素の click イベントを
767+
この button 要素の `click` イベントを
756768
監視することを考えます。
757769

758-
button 要素に addEventListener すればよいように
770+
button 要素に `addEventListener` すればよいように
759771
見えますが、アイコン画像をクリックされた場合
760772
どうなるのでしょうか?
761773

@@ -766,8 +778,11 @@ button 要素に addEventListener すればよいように
766778
この仕組みが DOM イベントの伝搬です。
767779

768780

781+
[<img src="http://www.w3.org/TR/DOM-Level-3-Events/eventflow.svg" style="background-color:white" height="500px">](http://www.w3.org/TR/DOM-Level-3-Events/#event-flow)
782+
783+
769784
`addEventListener` の引数で
770-
1-2-4 か 1-3-4 を選べます
785+
1-2-4 か 1-3-4 のどちらかを選べます
771786

772787
1. capturing フェーズ
773788

@@ -786,9 +801,6 @@ button 要素に addEventListener すればよいように
786801
リンクなどによる画面遷移がおこなわれる
787802

788803

789-
[<img src="http://www.w3.org/TR/DOM-Level-3-Events/eventflow.svg" style="background-color:white" height="500px">](http://www.w3.org/TR/DOM-Level-3-Events/#event-flow)
790-
791-
792804
先ほどのボタンの例では、img 要素の
793805
click イベントは bubbling によって
794806
button 要素まで通知されるのです。
@@ -820,6 +832,36 @@ button.addEventListener('click', function(event) {
820832
非同期処理のトレーニング
821833

822834

835+
JavaScript の美しい機能のひとつに
836+
非同期処理があります。
837+
838+
下のコードは 1 秒まったあとに
839+
`console.log(1)` を実行するコードです。
840+
841+
```javascript
842+
setTimeout(function() {
843+
console.log(1);
844+
}, 0);
845+
846+
console.log(2);
847+
```
848+
849+
このコードを実行すると、`1``2`
850+
どちらか先に表示されるでしょうか。
851+
852+
853+
答えは、`2` です。`setTimeout` に登録された
854+
関数はいま実行途中のすべての関数が終了してから
855+
呼び出されます([JavaScriptのsetTimeoutを理解する](http://blog.mouten.info/2014/09/20/article/))。
856+
857+
ここでは、関数を実行するタイミングを
858+
後回しにすることによって、待っている間に
859+
別のことができる、ということを覚えてください。
860+
861+
この待ち時間の間に別の処理を実行する
862+
やり方を非同期処理と呼びます。
863+
864+
823865
#### サーバーとの通信
824866

825867
非同期処理の代表例といえばサーバーとの通信です。
@@ -830,7 +872,7 @@ button.addEventListener('click', function(event) {
830872
よって、時間を有効活用することが重要になります。
831873

832874

833-
JavaScript にはサーバーと非同期に通信するための
875+
JavaScript にはサーバーと非同期に通信するための
834876
API が用意されています。
835877

836878
- [fetch API](http://www.hcn.zaq.ne.jp/___/WEB/Fetch-ja.html)
@@ -1008,32 +1050,41 @@ JavaScript は言語機能としてモジュールの
10081050

10091051
#### bower
10101052

1011-
bower は、JavaScript、HTML、CSS等の、
1012-
フロントエンドリソースのエコシステムです。
1053+
bower は、JavaScript、HTML、CSSなどを
1054+
共有して使えるようにするフロントエンドの
1055+
エコシステムです。
1056+
1057+
他の人が作ったモジュールを利用することや、
1058+
自分が作ったモジュールを公開することも
1059+
できます。
10131060

1014-
ただ、モジュールローディングの仕組みを
1015-
もたないため、この部分は RequireJS などの
1016-
外部モジュールシステムに頼ることになります
1061+
ただ、JavaScript の場合モジュールの仕組みを
1062+
もたないため、この部分を RequireJS などの
1063+
モジュールシステムに頼ることになります
10171064
どのモジュールシステムに対応するかという選択は、
10181065
bower によって読み込まれるパッケージ側に
10191066
裁量(責務)があります。
10201067

10211068

1022-
これを、[公式ドキュメント](http://bower.io/#getting-started)は端的に
1069+
この方針を[公式ドキュメント](http://bower.io/#getting-started)は端的に
10231070
言い表しています。
10241071

10251072
> How you use packages is up to you.
10261073
>
10271074
> (どのようにしてパッケージを使うのかはあなた次第です)
10281075
10291076

1030-
bower の使い方は簡単です。
1077+
#### 実習
10311078

1032-
bower で管轄したいファイルのディレクトリを開き、
1079+
まず、bower を実行することを体験してみます。
1080+
bower の設定ファイル bower.json を対話的に
1081+
作成します。
10331082

1083+
cd public/stage6/sample
10341084
bower init
10351085

1036-
です。あとは説明に従って選択していくと、bower の
1086+
1087+
あとは説明に従って選択していくと、bower の
10371088
パッケージ設定ファイル `bower.json` が作成されます。
10381089

10391090

@@ -1154,36 +1205,33 @@ y でレジストリへの公開ができないように設定します。
11541205

11551206
##### bower install
11561207

1157-
あとは、使いたいモジュールを追加していきます
1158-
`--save` はパッケージ設定に依存ファイルを
1159-
追記する効果があります)。
1208+
いよいよ、パッケージを追加していきます。
11601209

1161-
bower install --save fetch
1162-
1163-
このコマンドによって、fetch パッケージが、
1164-
`bower_components` 以下に配置されます。
1210+
パッケージは [Search Bower packages](http://bower.io/search/)
1211+
検索することができます。
11651212

1166-
また、ここで設定に記載されたモジュールは、
1167-
`bower install` で取得することが
1168-
できるようになります。
11691213

1214+
では、試しに [Buttons](https://github.com/alexwolfe/Buttons) パッケージを
1215+
追加してみましょう。
11701216

1171-
今回は、簡単のために script タグで直接
1172-
`bower_components` 以下の JavaScript/CSS を
1173-
読み込みます。
1217+
下のコマンドによって、Buttons パッケージが、
1218+
`bower_components` 以下に配置されます。
11741219

1220+
bower install --save Buttons
11751221

1176-
パッケージは [Search Bower packages](http://bower.io/search/)
1177-
検索することができます。
11781222

1223+
`--save` はパッケージ設定に依存ファイルを
1224+
追記する効果があります(`bower.json`
1225+
内容が変化しているので、見てみてください)。
11791226

1180-
#### 実習
1227+
ここで設定に追記されたパッケージは、
1228+
次回から `bower install` でまとめて
1229+
取得することができるようになります。
11811230

1182-
まず、bower を実行することを体験してみます。
11831231

1184-
cd public/stage6/sample
1185-
bower init
1186-
bower install Buttons
1232+
今回は、簡単のために script タグで直接
1233+
`bower_components` 以下の JavaScript/CSS を
1234+
読み込みます。
11871235

11881236

11891237
今回の実習はテスト駆動形式ではありません。
@@ -1198,13 +1246,13 @@ y でレジストリへの公開ができないように設定します。
11981246

11991247
### ステージ7
12001248

1201-
よくあるイディオムを読み書きするトレーニング
1249+
よくあるイディオムを読むトレーニング
12021250

12031251

12041252
このステージでは、よくある JavaScript の
12051253
不思議な書き方を学びます。
12061254

1207-
なお、今回はヒントがありません!
1255+
なお、今回はヒントがありません!
12081256
ぜひ自分で調べて、結果を確かめてみてください!
12091257

12101258

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"setup": "npm install; (cd public; bower install)",
88
"help": "$(npm bin)/gulp help",
99
"serve": "$(npm bin)/gulp serve",
10-
"presentation": "$(npm bin)/reveal-md README.md --separator '^\\n\\n\\n' --verticalSeparator '^\\n\\n'"
10+
"presentation": "$(npm bin)/reveal-md README.md --theme solarized --separator '^\\n\\n\\n' --verticalSeparator '^\\n\\n'"
1111
},
1212
"repository": {
1313
"type": "git",

public/stage7/tests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ describe.skip('闇', function() {
165165
});
166166

167167

168-
it('with文', function(){
168+
it('with 文', function(){
169169
var obj = { 'foo': undefined, 'undefined': true };
170170

171171
with (obj) {

0 commit comments

Comments
 (0)