Weitere ähnliche Inhalte Ähnlich wie おっさんES6/ES2015,React.jsを学ぶ (20) Kürzlich hochgeladen (11) おっさんES6/ES2015,React.jsを学ぶ3. 主な業務経験
2002 2004 2008 2010
VC++
富士フイルム
ソフトウエア OPT Become Bizreach
C#
Perl
PHP
Java
インフラ
Java
Scala
在籍企業
2015 2016
インフラ
JSJS
言語
マネジメントとかで
ほとんど開発してない期間
14. JavaScriptの歴史 誕生
• 1995年-誕生
• 12月,Netscape Navigator 2.0に,ブレンダン・アイク(Brendan
Eich)が開発した『LiveScript』が実装されるNetscape Navigator社
とSun Microsystems(現Oracle)は当時提携関係にあり,Javaの勢いに
便乗しようとLiveScriptから『JavaScript』に改名.
• こんな名前にしたせいで多くの混乱と誤解を生む
• 1996年
• MSはIEにJavaScriptを搭載しようとしたが,NN社はライセンスを供
与しなかった.そのため,Javascriptに似た言語として『JScript』と
いう言語を開発・・ 部分的に互換があったりなかったり
• 開発者泣かせの状態に(ブラウザ依存はずっと開発者泣かせだけど
ね!)
15. JavaScriptの歴史 標準化へ
• 1997年
• JscriptとJavascriptというブラウザ互換性のない状態を解決しようと
NN社は,Javascriptを標準化しようと画策し,ECMAという標準化機
関にJavascriptの標準化を依頼.
• 1997年6月ECMA-262 初版ができる.世界に平和が訪れた!
16. JavaScriptの歴史 標準化したものの・・
• 1998年 ECMA-262 第2版、1999年 ECMA-262 第3版までは標
準化は順調に進む
• ECMA-262 第4版のときに4版をおすAdobe,Mozira(旧NN社)と
3.1版をおすダグラス・クロックフォード(Douglas Crockford)、
MSやYahoo!で意見が別れて最終的には第4版は破棄
• その後第5版がリリースされるのは10年後の2009年である
• (あとで詳しく語ります)
17. JavaScriptの歴史 暗黒期2000年代前半
• 2000年代前半
• JSはOFFにするのがセキュリテーを守る意味でわりと一般的
だった。エンジニアはOFFにしてたような・・(登壇者肌感)
• ブラウザ側もセキュリティへの考慮が不十分で,Javascriptの
脆弱性をつくウィルスが登場したり,ブラウザに無理に負荷を
かける通称「ブラクラ」が作られていた。
• 動的なベージはFlashを使ったサイトが全盛
• JSこのまま歴史に埋もれた言語となるかと思われた!!
18. JavaScriptの歴史 Ajax登場JS復権へ
• 2005年2月8日 Google Map登場 日本版は7月14日
• Gmail、GoogleサジェストなどでもAjax技術が使われる
• Ajaxとうい概念が誕生( AjaxはAsynchronous JavaScript +
XML の略で、2005年2月18日に米国のインフォメーションアー
キテクトであるJesse James Garrettにより名付けられた)
• JavaScriptが再評価される
20. JavaScriptの歴史 V8エンジン
• 2008年にGoogle chromeが公開、V8 JavaScriptエンジンが搭載
される
• V8エンジンはJIT(Just in time) Virtual Machine型の
JavaScript実行エンジン,JSが高速に動作した。
• 当時のJavaScriptは遅いという常識を覆しプラウザ環境を根底
から変えていく
• 補足:Firefoxはインタープリタで実行して、統計情報をとって、まず中間コードに変換し、その上
でJITコンパイルするが、V8では、中間コードもなく、インタープリタも搭載せずに最初の実行時
からコンパイルする。
24. JavaScriptの歴史 altJS
• AltJS(Alternative JavaScript)とは、その名の通りJavaScript
の代替言語
• 複数人数開発をするに伴い問題になってきた、言語仕様の柔軟
性(悪く言えば適当さ)を解決するために登場
• →動的型付けによりバグの混入 Classが無い等ため仮想的に
class概念を作ったりするなど。
• AltJSをコンパイル(トランスパイル)することでJavaScriptを
生成し、言語仕様が柔軟なJavaScriptの持っている問題を解決
します。
• JSを生成する言語という昔のおっさんにはびっくりな世界に
25. JavaScriptの歴史 altJS
• 2009年 CoffeeScript (Railsに標準でサポート)
• 2011年 Dart Google製
• 2012年10月 TypeScript マイクロソフト製
• ES6のスーパーセット
• いまはTypeScriptが主流な模様
26. EcmaScript ES5
• 2009年 ES5 10年ぶりの仕様更新
• ES4とES3.1の対立を長らく続けていたがES3.1をベースとする
ことで調整、実質的な初もESメジャーバージョンアップ
• ES4は破棄、ES3.1をES5としてリリース
27. EcmaScript - ES2015/ES6
• 2015年6月にリリースされたECMAScript 6th edition
• コードネームは「harmony」ES3.1とES4の対立を調和させた
らしい。
• 当初はES6という名称だったがこれ以降は1年毎にリリースして
いく計画となったためES2015が正式名称となった
• 今後の名称はES2015, ES2016,ES2017とうい名称になるとのこ
と
48. Babelデモ
class Person {
constructor(name) {
this.name = name;
}
hello() {
console.log('My name is ' + this.name);
}
}
const alice = new Person('kotaro');
alice.hello()
https://babeljs.io/repl/ に上記を貼り付ける
49. ECMAScript
Edition 公開日
1 1997年6月 初版
2 1998年6月 EditionはそのままISO/IEC 16262 international standardへの対応
3 1999年12月 正規表現、よりよい文字列の取り扱い、新しいコントロール構文、
try/catch例外処理、より厳格なエラー処理、数字のその他の書式化フォー
マット
4 廃棄 政治的な理由により廃棄
5 2009年12月 10年分の負債の精算 "strictモード"、初期化時に発生しがちなエラーを回
避するための追加仕様の追加。多くの曖昧な部分、および仕様に準拠しつ
つも現実世界の実装の融通の利く振る舞いを明確にした。いくらかの新機
能、getterやsetter、JSONライブラリのサポート、より完全なオブジェク
トの属性のリフレクション
5.1 2011年6月 ISO/IEC 16262:2011への対応
6/2015 2015年6月 クラス、モジュール、イテレータ、for/ofループ、Pythonスタイルのジェ
ネレータ、アロー関数、2進数および8進数の整数リテラル、Map、Set、
WeekMap、WeekSet、プロキシ、テンプレート文字列、let、const、型
付き配列、デフォルト引数、Symbol、Promise、分割代入、可変長引数
2016 2016年6月 冪乗演算子、Array.prototype.includes
2017 策定中
51. use strict
• “use strict”; と宣言することで使用可能に
• 具体的には次ようなミスがエラーとして処理されます
• 宣言されていない変数への代入
• 書き込み不可変数・getterのみの変数への代入
• 削除できないプロパティのdelete
• 引数名の重複
• 8進数表記
• with構文
66. React
• ReactはFacebookの社員が作ったイケてるJSライブラリ
• 公式サイトに、「A JavaScript library for building user
interfaces」とあるように、React.jsはUIを構築するためのライ
ブラリ、フレームワークでなくあくまでUIを構築するだけのラ
イブラリで、MVCでいうところのVのみの機能を提供します。
• ー>なのでフレームワークではない
• Facebook InstagramはもちろんYahooやAirbnbなどでも使われ
ている
• 現状のJSフレームワークだと圧倒的1位 (弊社ワカモノ談)
67. React x Flux
• Reactと一緒にFluxについてよく語られますが今回は割愛
• Flux
• Architecture
• MVCのような設計手法
• 以下の4つからなる
• ActionCreators
• Dispatcher
• Store
• View (Reactはここを担当)
73. DOM(Document Object Model)
• W3Cから勧告
• HTML文書やXML文書をアプリケーションから利用するための
API
• DOMツリーと呼ばれるツリー構造として扱う事ができる
• JSで言うところのdocument.getElementById(“jid_xx”)
92. Functional and Class Components
https://facebook.github.io/react/docs/components-and-props.html#functional-and-class-components
コンポーネントは
classでもかける
102. Lists and Keys
• Listなどでデータとしては必要ないがKeyを指定する必要があ
る
• IDを割り当てることで変更や追加削除などDomの変更を最小限
にすることが出来る
• 指定しないと警告が出る
109. まとめ(UI/UX GUI)
• 個人的にReactを触る中で感じたことは、
Visual C++/C#/BasicあたりのGUIアプリ開発に考え方がにて
いると思った点(コンポーネント、イベントハンドラとか)
• Webに求められるUI/UXが「ページ」ではなく「アプリケー
ション」になってきている。
• 今までのページとしての発想でなく、GUIアプリなどで使って
いた概念が取り入れられているような印象を受けました。(コ
ンポーネントとかイベントハンドラとか)
• このあたり新しいけど古いみたいな
113. まとめ(JSの開発環境 ビルド周り)
• JSの開発環境 ビルド周りはちょっと複雑化しすぎ
• JS/CSS/HTML含めて複雑化してきている。
• 弊社でもビルド職人と呼ばれる人が一手にやっているらしい
• ただ現状のビルド周りの複雑化は過渡期なのかとも感じる
(Javaとかの歴史と一緒)もう少し待てばベストプラクティス
というか環境は整ってくると思う。
• とりあえず昔みたいにJQuery読み込んでちょっといじるとかそ
ういう感じではない