Movatterモバイル変換


[0]ホーム

URL:


KEY, PPTX2,875 views

いまさらJavaScript

Embed presentation

Download as KEY, PPTX
いまさらJavaScript 2012/09/10, DT Corp  Naomichi Yamakita
アジェンダ-   JavaScriptの概要と歴史-   2012年のトレンド-   最後に二言くらい
JavaScriptの概要と歴史
誕生秘話 1/3-       インターネット初期(1995年)    -    アムラー、DA・YO・NE時代-       当時、ダイナミックなコンテンツを作るには、CGIやActiveX Control、        JavaAppletが必要だった    -    これらの技術は初心者に敷居が高かった
誕生秘話 2/3     Netscape Communications「もっと手軽に、インタラクティブな機能を持たせたいことはできないか」
誕生秘話 3/3-       Netscape Communications社によってLiveScriptが開発される    -     当時Netscape CommunicationsとSun Microsystem(現Oracle)が          提携していたこと(Javaが流行ってたこと)もあり、名称をJavaScript          に変更    -     Netscape Navigator 2.0で初登場
言語の特性-       インタプリタ言語    -    コンパイルが不要-       構文がJavaに似ている    -    ただしJava != JavaScript    -    未だに「あーHTMLと一緒にJavaも修正しといて」とか言う人がいる-       動的型宣言-       関数型プログラミング-       オブジェクト指向    -    JavaやPHPがクラスベースのオブジェクト指向であるのに対し、         JavaScriptはプロトタイプベースのオブジェクト指向である
プロトタイプベースのオブジェクト指向-   JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト-   全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() {    this.vendor = "Apple";};IPad.prototype = {    name: "iPad",    late: 2011,};var NewIPad = function(late) {    this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini";var newIPad = new NewIPad(2012);console.log(newIPad.vendor); // (1)console.log(newIPad.late);   // (2)console.log(newipad.name);   // (3)
プロトタイプベースのオブジェクト指向-   JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト-   全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() {    this.vendor = "Apple";};IPad.prototype = {    name: "iPad",    late: 2011,};var NewIPad = function(late) {    this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini";                                        Applevar newIPad = new NewIPad(2012);console.log(newIPad.vendor); // (1)console.log(newIPad.late);   // (2)console.log(newipad.name);   // (3)
プロトタイプベースのオブジェクト指向-   JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト-   全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() {    this.vendor = "Apple";};IPad.prototype = {    name: "iPad",    late: 2011,};var NewIPad = function(late) {    this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini";                                        Applevar newIPad = new NewIPad(2012);                                                2012console.log(newIPad.vendor); // (1)console.log(newIPad.late);   // (2)console.log(newipad.name);   // (3)
プロトタイプベースのオブジェクト指向-   JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト-   全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() {    this.vendor = "Apple";};IPad.prototype = {    name: "iPad",    late: 2011,};var NewIPad = function(late) {    this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini";                                        Applevar newIPad = new NewIPad(2012);                                                  2012console.log(newIPad.vendor); // (1)console.log(newIPad.late);   // (2)console.log(newipad.name);   // (3)             iPad mini
プロトタイプベースのオブジェクト指向-   JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト-   全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() {    this.vendor = "Apple";};IPad.prototype = {    name: "iPad",    late: 2011,};                        i が小文字なので                     Uncaught ReferenceError:var NewIPad = function(late) {    this.late = late;                   newipad is not defined でした!};                 (大文字・小文字は区別される)NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini";                                        Applevar newIPad = new NewIPad(2012);                                                  2012console.log(newIPad.vendor); // (1)console.log(newIPad.late);   // (2)console.log(newipad.name);   // (3)             iPad mini
プロトタイプクイズ-   何色になるでしょう?var Container = function(){};Container.prototype = {   color: "red"};var container = new Container();console.log(container.color);         // (1)Container.prototype = {   color: "blue"};console.log(container.color);         // (2)var container2 = new Container();console.log(container2.color);        // (3)Container.prototype.color = "yellow";console.log(container.color);         // (4)console.log(container2.color);        // (5)
JavaScriptが持つwindowオブジェクト-       クライアントサイドJavaScriptはブラウザを操作するAPIを提供している    -    navigator    -    location    -    history    -    screen    -    frames    -    document(DOM)    -    parent, top, self
黎明期(1997年∼)-       Internet Explorer 3.0にJScriptが搭載され、急速に普及が始まる    -     JScriptはMicrosoftがJavaScriptをベースに独自実装した言語-       1997年、Internet Explorer 4.0から本格的なDynamicHTML時代へ突入    -     HTML+CSS+JavaScript(DOM)を使ったダイナミックコンテンツ-       ブラウザ戦争の始まり    -     Internet Explorer vs Nescape Navigator
DOM(Document Object Model)-   JavaScriptからHTMLやXMLを操作するためのAPI-   DOMを使うことで、HTMLに特定の要素や属性を追加したり、既存の属性    を変更することができる-   DOMはJavaScriptのサブセットではない(仕様が独立している)<div id="foo">  <span>a</span>  <span>b</span>  <span>c</span></div><script>  var foo = document.getElementById("foo");  var elements = foo.getElementsByTagName("span");  console.log(elements[0].innerHTML);</script>
イベント(イベントハンドラ)-       ユーザが発生させるイベントに対し、イベントハンドラ(関数)を実行する    -    「送信ボタンが押されたらフォームのデータを検証する」    -    「入力されたキーの文字をチェックする」-       イベントハンドラの種類    -    onclick    -    onkeyup    -    onchange    -    onload    -    onselect ...
イベントハンドラの使い方<script>  function changeGreeting(value)  {    document.getElementById('greeting-message').innerText = value;  }</script><form action="onclick.html" method="post">  <div class="form-field">    <label for="greeting">Your greeting</label>    <input type="text" id="greeting" name="greeting" value=""onkeyup="changeGreeting(this.value)" />  </div></form><p id="greeting-message"></p>
イベント(イベントリスナ)-    何らかのイベントを受け取って処理を実行する-    イベントハンドラは1つの要素に対し1つのイベントしか実行できないが、イ     ベントリスナは複数のイベントを実行することができる<script>  // 同じ要素に複数のハンドラが登録されてる場合、後に指定した方が優先される    window.onload = function() {       console.log(‘Hello!’);    };  window.onload = function() {     conosle.log(‘good bye!’);  };</script>
イベントリスナの使い方<!doctype html><html>  <head>  </head>  <body>    <form action="onclick.html" method="post">        <div class="form-field">          <label for="greeting">Your greeting</label>          <input type="text" id="greeting" name="greeting" value="" />         </div>       </form>       <p id="greeting-message"></p>  </body>  <script>       var greetingMessage = document.getElementById('greeting');      greetingMessage.addEventListener('keyup', function(e) {        document.getElementById('greeting-message').innerText = e.target.value;      }, false);  </script></html>
DHTMLでできることの代表例-   マウスを動かすとポインタに☆がつきまとう-   雪の結晶が降る-   「右クリック禁止です!!!」とアラートを出すことができる
氷河期の到来-       各ブラウザベンダーは独自の仕様を拡張するため、ブラウザ間の互換性は高        いものとは言えなかった    -        一つの処理を実行したいだけなのに、ブラウザごとにコードを分岐して             記述することもあり、数多くのバッドノウハウを生む結果に    -        セキュリティホールもたくさん!    -        「JavaScriptはオンは情弱の極み!」    -        雪が降るサイトが増え、地球の気候が長期に渡って寒冷化         -    氷河期時代へ-       1997年、ECMA-262(標準化規格)が公開される
2000年代中盤 AJAXの登場-       Web技術や通信回線の発展により、本格的にWebアプリが普及し始める    -     Web 2.0-       AJAX(非同期制御)が登場    -     DHMTL + XMLHttpRequestを組み合わせた技術    -     Google Mapsの登場-       XMLHttpRequest    -     JavaScriptのHTTP通信機能を用いて、動的ファイルを読み込むAPI    -     クロスドメイン制約により、外部サーバのファイルを読み込むことはで          きない(ただしJSONPを使えば読み込み可能)
2000年代後半 AJAXライブラリの登場-       AJAXライブラリが続々と登場し、再びJavaScriptが脚光を浴び始める-       代表的なライブラリ    -    prototype.js、YUI、jQuery-       機能    -    クロスブラウザ対応    -    AJAX機能    -    セレクタを使ったDOM操作    -    リッチUI、UXの提供
jQueryのサンプルコード<!doctype html><html>  <head>    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>    <script>       $(document).ready(function(){         $('#greeting').keyup(function(e){            $('#greeting-message').text(e.target.value);         });       });    </script>  </head>  <body>    <form action="onclick.html" method="post">        <div class="form-field">           <label for="greeting">Your greeting</label>           <input type="text" id="greeting" name="greeting" value="" />         </div>       </form>       <p id="greeting-message"></p>  </body></html>
ブラウザ戦争再び-       REST APIの利用が流行り始める         -    facebook、Twitter、amazon、mixi...-       Mozilla FoundationによるJavaScriptのパフォーマンス改善-       JavaScriptの高速化競争(短期リリースサイクル)が始まる    -        HTML5やCSS3の実装も着々と進行中-       各ブラウザが搭載するJavaScriptエンジン         -    Chrome: V8         -    Firefox: JägerMonkey         -    Internet Explorer: Chakra
2012年のトレンド
2012年はJavaScript MVC時代の幕開け-       AJAXライブラリが登場したおかげでフロントエンドの開発は楽になった-       今後JavaScriptを使う場面はますます増えてくるであろう    -    HTML5、CSS3、REST API…-       複雑化するコードに対応するためJavaScriptにもMVCの波がきた!
MVCフレームワークの比較-   続々とMVCフレームワークが登場している                   The Top 10 Javascript MVC Frameworks Reviewed                   http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/
主要フレームワーク-   有力候補はBackbone.js-   最近GoogleがリリースしたAngularJSも注目株
AngularJSのサンプルコード<!doctype html><html ng-app><head>  <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script></head><body>  <form action="onclick.html" method="post">    <div class="form-field">       <label for="greeting">Your greeting</label>       <input type="text" ng-model="yourName" placeholder="Inputgreeting!">    </div>  </form>  <p>{{yourName}}</p></body></html>
AngularJS デモンストレーション-       UIバインディング    -     http://phpunit/angularjs/ui_bindings/-       コントローラを使う    -     http://phpunit/angularjs/loop_filter/-       Twitter APIの利用    -     http://phpunit/angularjs/twitter/
これからのJavaScript-   サーバサイドJavaScript(Node.js、Google Apps Script等)の利用-   クライアント/サーバサイド全てをJavaScript化することも可能
最後に二言くらい
JavaScript超イイじゃん!-       フォームのデータチェックはJavaScriptに一任しよう!    -    危険。JavaScriptは無効にできることを忘れてはならない    -    サーバサイドで検証していないと、思わぬセキュリティホールを突かれ         る可能性がある    -    サーバサイドの検証を必須とし、JavaScriptの検証はあくまで補助的な         ものと考えるべき-       PC、スマートフォン、ガラケーに対応しちゃおう!    -    残念ながらガラケー(ヒューチャーフォン)はJavaScriptに非対応    -    日本は未だガラケーが7割!
JavaScriptの開発テクニック-       ソースコードの圧縮-       CDNの利用-       デバッグ構文の利用-       デバッグ、プロファイリングツールの利用    -    Chrome: デベロッパーツール    -    Firefox: Firebug-       テストツールの導入    -    QUnit    -    Jenkins
Web技術は進化が早い!-       技術の変化に取り残されないよう、常に新しい情報を把握しておく    -    全てを知る必要はないが、要点は押させておくこと

Recommended

PDF
Backbone.js入門
PPT
Spring3.1概要 データアクセスとトランザクション処理
PPTX
今からでも遅くない! React事始め
PDF
backbone.jsの使用例 その1
PPTX
HTML5最新動向
PDF
Start React with Browserify
PPTX
忙しい人のためのBackbone.jsとAngular.js入門
PDF
Angular js or_backbonejs
PDF
Ajax basic
PDF
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
PDF
イマドキの現場で使えるJavaライブラリ事情
PDF
Xamarin で ReactiveUI を使ってみた
PDF
iOS WebView App
PDF
めんどくさくない Scala #kwkni_scala
PDF
WKWebViewとUIWebView
PPTX
Web Intents入門
PPTX
Androidで使えるJSON-Javaライブラリ
PDF
20160215 04 java ee7徹底入門 jbatch
PDF
5分でわかる?Backbone.js ことはじめ
PPTX
HTML5&API総まくり
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
PDF
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
PDF
はじめてのVue.js
KEY
Kawaz的jQuery入門
PDF
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
PDF
sbt, past and future / sbt, 傾向と対策
PDF
Backbonejs @BuildInsiderOffline #1
PDF
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
PDF
Ajax 応用
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

More Related Content

PDF
Backbone.js入門
PPT
Spring3.1概要 データアクセスとトランザクション処理
PPTX
今からでも遅くない! React事始め
PDF
backbone.jsの使用例 その1
PPTX
HTML5最新動向
PDF
Start React with Browserify
PPTX
忙しい人のためのBackbone.jsとAngular.js入門
PDF
Angular js or_backbonejs
Backbone.js入門
Spring3.1概要 データアクセスとトランザクション処理
今からでも遅くない! React事始め
backbone.jsの使用例 その1
HTML5最新動向
Start React with Browserify
忙しい人のためのBackbone.jsとAngular.js入門
Angular js or_backbonejs

What's hot

PDF
Ajax basic
PDF
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
PDF
イマドキの現場で使えるJavaライブラリ事情
PDF
Xamarin で ReactiveUI を使ってみた
PDF
iOS WebView App
PDF
めんどくさくない Scala #kwkni_scala
PDF
WKWebViewとUIWebView
PPTX
Web Intents入門
PPTX
Androidで使えるJSON-Javaライブラリ
PDF
20160215 04 java ee7徹底入門 jbatch
PDF
5分でわかる?Backbone.js ことはじめ
PPTX
HTML5&API総まくり
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
PDF
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
PDF
はじめてのVue.js
KEY
Kawaz的jQuery入門
PDF
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
PDF
sbt, past and future / sbt, 傾向と対策
PDF
Backbonejs @BuildInsiderOffline #1
Ajax basic
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
イマドキの現場で使えるJavaライブラリ事情
Xamarin で ReactiveUI を使ってみた
iOS WebView App
めんどくさくない Scala #kwkni_scala
WKWebViewとUIWebView
Web Intents入門
Androidで使えるJSON-Javaライブラリ
20160215 04 java ee7徹底入門 jbatch
5分でわかる?Backbone.js ことはじめ
HTML5&API総まくり
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
はじめてのVue.js
Kawaz的jQuery入門
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
sbt, past and future / sbt, 傾向と対策
Backbonejs @BuildInsiderOffline #1

Similar to いまさらJavaScript

PDF
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
PDF
Ajax 応用
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
PDF
最強オブジェクト指向言語 JavaScript 再入門!
PDF
ちょっと詳しくJavaScript 第3回【prototype】
PDF
TypeScript 勉強会
PDF
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
PDF
JavaScript.Next
PDF
JavaScript.Next Returns
PDF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
PDF
Java scriptの進化
PPT
20090121 J QueryからはじめるJava Script~初級編~
PDF
JSer Class #3
PDF
クライアントサイドjavascript簡単紹介
PDF
Web development fundamental
PPTX
Javascriptのデザインパターン【勉強会資料】
ODP
webを飾る技術
PDF
JavaScript ライブラリーを使い倒そう #buildinsider
PDF
JSer Class #1
KEY
春のJavaScript祭り
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Ajax 応用
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
最強オブジェクト指向言語 JavaScript 再入門!
ちょっと詳しくJavaScript 第3回【prototype】
TypeScript 勉強会
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
JavaScript.Next
JavaScript.Next Returns
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Java scriptの進化
20090121 J QueryからはじめるJava Script~初級編~
JSer Class #3
クライアントサイドjavascript簡単紹介
Web development fundamental
Javascriptのデザインパターン【勉強会資料】
webを飾る技術
JavaScript ライブラリーを使い倒そう #buildinsider
JSer Class #1
春のJavaScript祭り

いまさらJavaScript

  • 1.
  • 2.
    アジェンダ-JavaScriptの概要と歴史- 2012年のトレンド- 最後に二言くらい
  • 3.
  • 4.
    誕生秘話 1/3- インターネット初期(1995年) - アムラー、DA・YO・NE時代- 当時、ダイナミックなコンテンツを作るには、CGIやActiveX Control、 JavaAppletが必要だった - これらの技術は初心者に敷居が高かった
  • 5.
    誕生秘話 2/3 Netscape Communications「もっと手軽に、インタラクティブな機能を持たせたいことはできないか」
  • 6.
    誕生秘話 3/3- Netscape Communications社によってLiveScriptが開発される - 当時Netscape CommunicationsとSun Microsystem(現Oracle)が 提携していたこと(Javaが流行ってたこと)もあり、名称をJavaScript に変更 - Netscape Navigator 2.0で初登場
  • 7.
    言語の特性- インタプリタ言語 - コンパイルが不要- 構文がJavaに似ている - ただしJava != JavaScript - 未だに「あーHTMLと一緒にJavaも修正しといて」とか言う人がいる- 動的型宣言- 関数型プログラミング- オブジェクト指向 - JavaやPHPがクラスベースのオブジェクト指向であるのに対し、 JavaScriptはプロトタイプベースのオブジェクト指向である
  • 8.
    プロトタイプベースのオブジェクト指向-JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト- 全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() { this.vendor = "Apple";};IPad.prototype = { name: "iPad", late: 2011,};var NewIPad = function(late) { this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini";var newIPad = new NewIPad(2012);console.log(newIPad.vendor); // (1)console.log(newIPad.late); // (2)console.log(newipad.name); // (3)
  • 9.
    プロトタイプベースのオブジェクト指向-JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト- 全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() { this.vendor = "Apple";};IPad.prototype = { name: "iPad", late: 2011,};var NewIPad = function(late) { this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini"; Applevar newIPad = new NewIPad(2012);console.log(newIPad.vendor); // (1)console.log(newIPad.late); // (2)console.log(newipad.name); // (3)
  • 10.
    プロトタイプベースのオブジェクト指向-JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト- 全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() { this.vendor = "Apple";};IPad.prototype = { name: "iPad", late: 2011,};var NewIPad = function(late) { this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini"; Applevar newIPad = new NewIPad(2012); 2012console.log(newIPad.vendor); // (1)console.log(newIPad.late); // (2)console.log(newipad.name); // (3)
  • 11.
    プロトタイプベースのオブジェクト指向-JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト- 全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() { this.vendor = "Apple";};IPad.prototype = { name: "iPad", late: 2011,};var NewIPad = function(late) { this.late = late;};NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini"; Applevar newIPad = new NewIPad(2012); 2012console.log(newIPad.vendor); // (1)console.log(newIPad.late); // (2)console.log(newipad.name); // (3) iPad mini
  • 12.
    プロトタイプベースのオブジェクト指向-JavaScriptが持つ全てのデータは(プリミティブ型を除き)オブジェクト- 全ての関数オブジェクトはprototypeプロパティを持つvar IPad = function() { this.vendor = "Apple";};IPad.prototype = { name: "iPad", late: 2011,}; i が小文字なので Uncaught ReferenceError:var NewIPad = function(late) { this.late = late; newipad is not defined でした!}; (大文字・小文字は区別される)NewIPad.prototype = new IPad();NewIPad.prototype.name = "iPad mini"; Applevar newIPad = new NewIPad(2012); 2012console.log(newIPad.vendor); // (1)console.log(newIPad.late); // (2)console.log(newipad.name); // (3) iPad mini
  • 13.
    プロトタイプクイズ-何色になるでしょう?var Container = function(){};Container.prototype = { color: "red"};var container = new Container();console.log(container.color); // (1)Container.prototype = { color: "blue"};console.log(container.color); // (2)var container2 = new Container();console.log(container2.color); // (3)Container.prototype.color = "yellow";console.log(container.color); // (4)console.log(container2.color); // (5)
  • 14.
    JavaScriptが持つwindowオブジェクト- クライアントサイドJavaScriptはブラウザを操作するAPIを提供している - navigator - location - history - screen - frames - document(DOM) - parent, top, self
  • 15.
    黎明期(1997年∼)- Internet Explorer 3.0にJScriptが搭載され、急速に普及が始まる - JScriptはMicrosoftがJavaScriptをベースに独自実装した言語- 1997年、Internet Explorer 4.0から本格的なDynamicHTML時代へ突入 - HTML+CSS+JavaScript(DOM)を使ったダイナミックコンテンツ- ブラウザ戦争の始まり - Internet Explorer vs Nescape Navigator
  • 16.
    DOM(Document Object Model)- JavaScriptからHTMLやXMLを操作するためのAPI- DOMを使うことで、HTMLに特定の要素や属性を追加したり、既存の属性 を変更することができる- DOMはJavaScriptのサブセットではない(仕様が独立している)<div id="foo"> <span>a</span> <span>b</span> <span>c</span></div><script> var foo = document.getElementById("foo"); var elements = foo.getElementsByTagName("span"); console.log(elements[0].innerHTML);</script>
  • 17.
    イベント(イベントハンドラ)- ユーザが発生させるイベントに対し、イベントハンドラ(関数)を実行する - 「送信ボタンが押されたらフォームのデータを検証する」 - 「入力されたキーの文字をチェックする」- イベントハンドラの種類 - onclick - onkeyup - onchange - onload - onselect ...
  • 18.
    イベントハンドラの使い方<script> functionchangeGreeting(value) { document.getElementById('greeting-message').innerText = value; }</script><form action="onclick.html" method="post"> <div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" id="greeting" name="greeting" value=""onkeyup="changeGreeting(this.value)" /> </div></form><p id="greeting-message"></p>
  • 19.
    イベント(イベントリスナ)- 何らかのイベントを受け取って処理を実行する- イベントハンドラは1つの要素に対し1つのイベントしか実行できないが、イ ベントリスナは複数のイベントを実行することができる<script> // 同じ要素に複数のハンドラが登録されてる場合、後に指定した方が優先される window.onload = function() { console.log(‘Hello!’); }; window.onload = function() { conosle.log(‘good bye!’); };</script>
  • 20.
    イベントリスナの使い方<!doctype html><html><head> </head> <body> <form action="onclick.html" method="post"> <div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" id="greeting" name="greeting" value="" /> </div> </form> <p id="greeting-message"></p> </body> <script> var greetingMessage = document.getElementById('greeting'); greetingMessage.addEventListener('keyup', function(e) { document.getElementById('greeting-message').innerText = e.target.value; }, false); </script></html>
  • 21.
    DHTMLでできることの代表例-マウスを動かすとポインタに☆がつきまとう- 雪の結晶が降る- 「右クリック禁止です!!!」とアラートを出すことができる
  • 22.
    氷河期の到来- 各ブラウザベンダーは独自の仕様を拡張するため、ブラウザ間の互換性は高 いものとは言えなかった - 一つの処理を実行したいだけなのに、ブラウザごとにコードを分岐して 記述することもあり、数多くのバッドノウハウを生む結果に - セキュリティホールもたくさん! - 「JavaScriptはオンは情弱の極み!」 - 雪が降るサイトが増え、地球の気候が長期に渡って寒冷化 - 氷河期時代へ- 1997年、ECMA-262(標準化規格)が公開される
  • 23.
    2000年代中盤 AJAXの登場- Web技術や通信回線の発展により、本格的にWebアプリが普及し始める - Web 2.0- AJAX(非同期制御)が登場 - DHMTL + XMLHttpRequestを組み合わせた技術 - Google Mapsの登場- XMLHttpRequest - JavaScriptのHTTP通信機能を用いて、動的ファイルを読み込むAPI - クロスドメイン制約により、外部サーバのファイルを読み込むことはで きない(ただしJSONPを使えば読み込み可能)
  • 24.
    2000年代後半 AJAXライブラリの登場- AJAXライブラリが続々と登場し、再びJavaScriptが脚光を浴び始める- 代表的なライブラリ - prototype.js、YUI、jQuery- 機能 - クロスブラウザ対応 - AJAX機能 - セレクタを使ったDOM操作 - リッチUI、UXの提供
  • 25.
    jQueryのサンプルコード<!doctype html><html><head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script> $(document).ready(function(){ $('#greeting').keyup(function(e){ $('#greeting-message').text(e.target.value); }); }); </script> </head> <body> <form action="onclick.html" method="post"> <div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" id="greeting" name="greeting" value="" /> </div> </form> <p id="greeting-message"></p> </body></html>
  • 26.
    ブラウザ戦争再び- REST APIの利用が流行り始める - facebook、Twitter、amazon、mixi...- Mozilla FoundationによるJavaScriptのパフォーマンス改善- JavaScriptの高速化競争(短期リリースサイクル)が始まる - HTML5やCSS3の実装も着々と進行中- 各ブラウザが搭載するJavaScriptエンジン - Chrome: V8 - Firefox: JägerMonkey - Internet Explorer: Chakra
  • 27.
  • 28.
    2012年はJavaScript MVC時代の幕開け- AJAXライブラリが登場したおかげでフロントエンドの開発は楽になった- 今後JavaScriptを使う場面はますます増えてくるであろう - HTML5、CSS3、REST API…- 複雑化するコードに対応するためJavaScriptにもMVCの波がきた!
  • 29.
    MVCフレームワークの比較-続々とMVCフレームワークが登場している The Top 10 Javascript MVC Frameworks Reviewed http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/
  • 30.
    主要フレームワーク-有力候補はBackbone.js- 最近GoogleがリリースしたAngularJSも注目株
  • 31.
    AngularJSのサンプルコード<!doctype html><html ng-app><head> <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script></head><body> <form action="onclick.html" method="post"> <div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" ng-model="yourName" placeholder="Inputgreeting!"> </div> </form> <p>{{yourName}}</p></body></html>
  • 32.
    AngularJS デモンストレーション- UIバインディング - http://phpunit/angularjs/ui_bindings/- コントローラを使う - http://phpunit/angularjs/loop_filter/- Twitter APIの利用 - http://phpunit/angularjs/twitter/
  • 33.
    これからのJavaScript-サーバサイドJavaScript(Node.js、Google Apps Script等)の利用- クライアント/サーバサイド全てをJavaScript化することも可能
  • 34.
  • 35.
    JavaScript超イイじゃん!- フォームのデータチェックはJavaScriptに一任しよう! - 危険。JavaScriptは無効にできることを忘れてはならない - サーバサイドで検証していないと、思わぬセキュリティホールを突かれ る可能性がある - サーバサイドの検証を必須とし、JavaScriptの検証はあくまで補助的な ものと考えるべき- PC、スマートフォン、ガラケーに対応しちゃおう! - 残念ながらガラケー(ヒューチャーフォン)はJavaScriptに非対応 - 日本は未だガラケーが7割!
  • 36.
    JavaScriptの開発テクニック- ソースコードの圧縮- CDNの利用- デバッグ構文の利用- デバッグ、プロファイリングツールの利用 - Chrome: デベロッパーツール - Firefox: Firebug- テストツールの導入 - QUnit - Jenkins
  • 37.
    Web技術は進化が早い!- 技術の変化に取り残されないよう、常に新しい情報を把握しておく - 全てを知る必要はないが、要点は押させておくこと

Editor's Notes

  • #2 \n
  • #3 \n
  • #4 \n
  • #5 \n
  • #6 \n
  • #7 &amp;#x30FB;Netscape&amp;#x304B;&amp;#x3089;&amp;#x73FE;&amp;#x5728;&amp;#x306E;Mozilla Foundation&amp;#x304C;&amp;#x751F;&amp;#x307E;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;\n
  • #8 \n
  • #9 \n
  • #10 \n
  • #11 \n
  • #12 \n
  • #13 http://phpunit/simple_js/prototype2/\n
  • #14 \n
  • #15 \n
  • #16 \n
  • #17 \n
  • #18 http://phpunit/simple_js/onclick.html\n
  • #19 \n
  • #20 http://phpunit/simple_js/event_listener.html\n
  • #21 \n
  • #22 \n
  • #23 \n
  • #24 \n
  • #25 &amp;#x30FB;http://phpunit/simple_js/jquery.html\n&amp;#x30FB;jquery&amp;#x306F;&amp;#x30BB;&amp;#x30EC;&amp;#x30AF;&amp;#x30BF;&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x8981;&amp;#x7D20;&amp;#x306B;&amp;#x30A2;&amp;#x30AF;&amp;#x30BB;&amp;#x30B9;&amp;#x3059;&amp;#x308B;\n
  • #26 \n
  • #27 \n
  • #28 &amp;#x30FB;http://my-coorde.net/common/js/contents/thread_edit_form.js\n
  • #29 \n
  • #30 \n
  • #31 \n
  • #32 \n
  • #33 &amp;#x30FB;MongoDB&amp;#x306E;&amp;#x7D39;&amp;#x4ECB;\n
  • #34 \n
  • #35 \n
  • #36 \n
  • #37 \n

[8]ページ先頭

©2009-2025 Movatter.jp