SlideShare ist ein Scribd-Unternehmen logo
1 von 37
いまさら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";
                                        Apple
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";
                                        Apple
var newIPad = new NewIPad(2012);
                                                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";
                                        Apple
var newIPad = new NewIPad(2012);
                                                  2012
console.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";
                                        Apple
var newIPad = new NewIPad(2012);
                                                  2012
console.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="Input
greeting!">
    </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技術は進化が早い!


-       技術の変化に取り残されないよう、常に新しい情報を把握しておく

    -    全てを知る必要はないが、要点は押させておくこと

Weitere ähnliche Inhalte

Was ist angesagt?

5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめKohei Kadowaki
 
Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1daisuke shimizu
 
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)Kei Yagi
 
はじめてのVue.js
はじめてのVue.jsはじめてのVue.js
はじめてのVue.jsKei Yagi
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門Kohki Miki
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatchJun Inose
 
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)vsug_jim
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaKazuhiro Sera
 
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策scalaconfjp
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたHironov OKUYAMA
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリYukiya Nakagawa
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
WKWebViewとUIWebView
WKWebViewとUIWebViewWKWebViewとUIWebView
WKWebViewとUIWebViewYuki Hirai
 

Was ist angesagt? (19)

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

Ähnlich wie いまさらJavaScript

SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキングTakashi Okamoto
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.jsHiroki Toyokawa
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI
for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI Osamu Monoe
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Yuji Takayama
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発Daizen Ikehara
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Hiroshi Ito
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうyoshikawa_t
 

Ähnlich wie いまさらJavaScript (20)

SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Jqm20120804 publish
Jqm20120804 publishJqm20120804 publish
Jqm20120804 publish
 
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI
for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 

Kürzlich hochgeladen

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Kürzlich hochgeladen (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

いまさらJavaScript

  • 1. いまさらJavaScript 2012/09/10, DT Corp Naomichi Yamakita
  • 2. アジェンダ - JavaScriptの概要と歴史 - 2012年のトレンド - 最後に二言くらい
  • 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"; Apple var 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"; Apple var newIPad = new NewIPad(2012); 2012 console.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"; Apple var newIPad = new NewIPad(2012); 2012 console.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"; Apple var newIPad = new NewIPad(2012); 2012 console.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> 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>
  • 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
  • 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="Input greeting!"> </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化することも可能
  • 35. JavaScript超イイじゃん! - フォームのデータチェックはJavaScriptに一任しよう! - 危険。JavaScriptは無効にできることを忘れてはならない - サーバサイドで検証していないと、思わぬセキュリティホールを突かれ る可能性がある - サーバサイドの検証を必須とし、JavaScriptの検証はあくまで補助的な ものと考えるべき - PC、スマートフォン、ガラケーに対応しちゃおう! - 残念ながらガラケー(ヒューチャーフォン)はJavaScriptに非対応 - 日本は未だガラケーが7割!
  • 36. JavaScriptの開発テクニック - ソースコードの圧縮 - CDNの利用 - デバッグ構文の利用 - デバッグ、プロファイリングツールの利用 - Chrome: デベロッパーツール - Firefox: Firebug - テストツールの導入 - QUnit - Jenkins
  • 37. Web技術は進化が早い! - 技術の変化に取り残されないよう、常に新しい情報を把握しておく - 全てを知る必要はないが、要点は押させておくこと

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. &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
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. http://phpunit/simple_js/prototype2/\n
  13. \n
  14. \n
  15. \n
  16. \n
  17. http://phpunit/simple_js/onclick.html\n
  18. \n
  19. http://phpunit/simple_js/event_listener.html\n
  20. \n
  21. \n
  22. \n
  23. \n
  24. &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
  25. \n
  26. \n
  27. &amp;#x30FB;http://my-coorde.net/common/js/contents/thread_edit_form.js\n
  28. \n
  29. \n
  30. \n
  31. \n
  32. &amp;#x30FB;MongoDB&amp;#x306E;&amp;#x7D39;&amp;#x4ECB;\n
  33. \n
  34. \n
  35. \n
  36. \n