# 2016-03-24 Meeting Notes

- [@azu](https://github.com/azu)
- [@kahei](https://github.com/kahei)
- [@vvakame](https://github.com/vvakame)
- [@lacolaco](https://github.com/lacolaco)

@ ドイツ料理のお店

## 対象

- 読者対象はIT企業に入社する人がが独習するような内容
- 他の言語を書いたことある人
- CLI(黒い画面)に対して抵抗が少ない人
- if文とか変数とかの説明は省略しても問題ない人

## 内容の方針

- kahei: やはりユースケースを出していって、幾つかのユースケースを元に話を進める内容がいいのではないか。
- ユースケースを元に以下を学べると予定
    - テスト
    - 実装
    - デバッグ
- どのようなユースケースがあるのか
- azu: ユースケースを元に話を進めるなら、やはりライブラリのようなものがでてきてしまう可能性は高い
- kahei: ライブラリを出す場合は、なぜそのライブラリを選んだのか、どういう判断基準で選んだかということが一緒に書かれていると良い
- どのようなライブラリが登場するだろうか?
    - ライブラリは流行り廃れがあるため必然性があるライブラリ
- vvakme: moment.jsのような日付処理のライブラリは必然的にでてくるのではないか
- [TODOアプリ](https://github.com/js-primer/js-primer/issues/4 "TODOアプリ")以外にどのようなユースケースがあるか?
- azu: Node.jsのCLIアプリとか
    - ライブラリを扱うなら必然的にNode.js/npmがツールとして登場する
    - なのでNode.jsを使った何かを作るというのは学ぶ上のステップとして必要になりそう
    - 序盤(TODOアプリの前後)にでていると後半の説明がやりやすい
    - Node.jsならCommonJSの世界が自然に出てくる
- 章の流れの案
    1. 最初にTODOアプリをベタ書き
    2. Node.jsでCLIやモジュールについて学ぶ
    3. TODOアプリをモジュールで分割してリファクタリングする
        - そうしないとテストが無理だねという話
        
### ユースケースでの懸念

- azu: ユースケースをベースとした進行の場合、話の質がユースケースに左右されやすい
    - 良いユースケースが作れるなら、良い話になる。逆なら逆になる
    - また、ユースケースでは全ての言語機能はカバーしにくい
    - ライブラリで必要になる言語の機能など
- kahei: ユースケースで紹介しきれないものは付録的なAppendixでまとめてしまうとか
- ライブラリ特有で必要なる機能はどんなものがありえるのか
    - `Object.defineProperty`、`Object.create`
- `Object.create(null)` と prototype
- vvakame: prototypeの説明はいるのか?
- `class`であっても中身はprototypeなので、なぜその機能が動くのか説明しようと思ったら必要
    - `class`の説明時に一緒にprototypeの説明が必要かというとそうではない

## ツール/AltJS

- lacolaco: ツールの解説はいるのか?
    - Babelは不要かもしれないで、ブラウザで動かすならBrowserifyやwebpackのようなbundlerは必要になるのでは
    - azu: Agree
- lacolaco: AltJSについて触れるのか?
    - 現状のAltJSはTypeScriptぐらいしかない
    - そのためAltJSというくくりで触れる必然性は薄い

## ECMAScript

- ECMAScriptの策定プロセスのような話はいるのか?
    - 言語よりの話をするなら必要そう
    - ライブラリの選び方とにような話
    - 策定プロセスという一つの基準があるのでわかりやすい

## Ajax

- AjaxはJavaScriptの楽しさを伝えるために必要な気がしている
- StableなAPIとして何があるのか
- lacolaco: Wikipedia
- azu: https://httpbin.org/
- Ajaxの説明をするなSOPの話は一緒にしないとハマってしまう
    - `file:///`で動かない問題
    - なぜそのようなエラーがでてしまうのかは話すべき
- エラーとスタックトレース
    - どこかでエラー/スタックトレースの読み方は伝えることが必要そう

## 次回の課題


- 何を解説しないといけないかを考えて、それをユースケースにしてみること
- 次にミーティングにそれを話し合う
    - @ 会議室

