SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
jQueryの仕組みを完璧に理解する
2014/08/02 サッポロクリエイティブキャンプ2014	

Jun Futakawa
!
• FaceBook:: Jun Futakawaで検索	

• twitter:: J2kawa	

• ActionScript, PHP, MySQL,JS etc.	

• 音極道の中の人	

• 勤務遍歴:富士通

クリプトンフューチャメディア

インフィニットループ etc.	

• 株式会社アトラクト 代表取締役
自己紹介
アジェンダ
• jQueryの概要と利用状況	

• なぜjQueryが選ばれているのか	

• jQueryオブジェクトって何?	

• セレクタエンジン『Sizzle』(シズル)を理解する	

• jQueryメソッドについて	

!
jQueryの概要と利用状況
jQueryの概要
・米国のプログラマ John Lessig が開発したJavaScriptライブラリ。	

・2006年8月Version 1.0 リリース。最新Ver.は1.11.1 / 2.1.1。	

・MITライセンスのオープンソースライブラリ。	

・主にDOM操作において豊富で優れた機能を提供する。	

・派生プロジェクトとして、

 jQuery UI (ユーザインタフェース系拡張フレームワーク)	

 jQuery Mobile (モバイルに最適化したUIフレームワーク)	

 QUnit (JavaScriptにおける単体テスト自動化フレームワーク)	

がある。
jQueryの利用状況
・世界中の全WEBサイト中、60.3%のサイトが

 jQueryを使用している。
・JavaScriptライブラリを一切使用していないサイトは
全体の35.9%。
・JavaScriptライブラリにおける、jQueryのシェアは実に

 94.1%に達する。
(出典:W3Techs http://w3techs.com/technologies/overview/javascript_library/all)
<2014/7/10 付けデータ>
なぜjQueryが選ばれているのか
jQueryの特長(1)
強力なセレクタエンジン Sizzle を採用
CSSセレクタ書式 および その独自拡張書式により 極め
て容易かつ柔軟にDOM要素の検索、抽出が可能
jQueryの特長(2)
メソッドチェーンによる容易な連続操作
コード量を少なく、かつわかりやすく、かつ処理を高速化
できる
メソッドチェーン
[処理の連鎖をdot[ . ]で繋げていく]
$( div ).text( Thank you! ).addClass( note )…..
jQueryの特長(3)
シンプルかつ柔軟なプラグイン機構を持つ
・大量のプラグインが開発されるので必要な機能が手に入
 りやすい
・必要なプラグインのみ導入できることから、結果として
 軽量化に寄与
・公式のプラグインリポジトリがあるため、プラグインの
 流通・開発促進が活発化
jQueryオブジェクトって何?
…の前に、DOMって何?
Document Object Model の略。
HTML文書やXML文書をアプリケーションから利用するためのAPI。
プログラマ以外の方が、上の様な説明を理解するのは大変困
難だと思います。このセミナーにおいては、とりあえず以下
の様に大雑把に理解してください。
!
[DOM / DOMツリー]
jQueryを使おうとしている対象のWEBページ全体。
[DOM要素]
そのWEBページ内の、任意のHTMLタグで囲まれた部分。
専門用語に気をとらわれ過ぎない
「最初から、 WEBページ , HTMLタグ  って呼んだ方がわかりやすいの
に。なんで DOMとかDOM要素とか言っちゃうわけ?だからプログラミ
ングの解説って嫌い。」
と思ったそこのあなた。
わかります。
でも、こういう風に理解してください。
人も、場所や状況によって、いろいろな呼び方をされます。
病院では「患者さん」、お店では「お客様」、スポーツ大会では「選手」
などなど。
DOM や DOM要素 という言葉を使うことによって、「今
プログラミングという観点から見ているよ」という事を明確
に伝える意図を含んでいます。判ってしまえばどうってことはな
いので、言葉が判りづらいからといって、必要以上に「難し過ぎる」
と思わないでください。
jQuery関数とは
jQueryライブラリは、jQuery() という名前のグローバル関
数を1つだけ定義します。この関数は、何度も何度も使うこ
とになるので、ショートカットとして $ というグローバル
シンボルも定義しています。
グローバルな名前空間にjQueryが定義するのは、この2つの
シンボルだけです。
(O Reillyジャパン 『JavaScript』<第6版>より)
jQuery() もしくは $() 関数
jQueryの中心となる問い合わせ関数。この関数から返される値
は、0個以上のDOM要素群を表すオブジェクトで、このオブ
ジェクトをjQueryオブジェクト と呼ぶ。
セレクタエンジン

『Sizzle』(シズル)を理解する
jQueryの原理
「少ないコードで多くのことを行う」のがjQueryの原理である。こ
の原理はさらに3つの概念に分解することができる。	

!
・(CSSセレクタを通して)要素を検索し、	

 (jQueryメソッドを通じて)それらを使って何かを行う。 	

・要素セットで複数のjQueryメソッドを連鎖させる。	

・jQueryラッパーを使って暗黙的にやりとりする。	

(O Reillyジャパン 『jQueryクックブック』より)
(CSSセレクタを通して)要素を検索  という機能を担っているのが
『Sizzle』(シズル)と呼ばれるセレクタエンジン
Sizzleの概要
・DOM要素を、CSSセレクタの記法を用いて選択する為の	

 JavaScriptライブラリ。	

・jQueryのVersion 1.3 から、jQuery 内に統合された。	

・開発には、jQuery開発者のJohn Lessigが統合以前から参	

 加。	

・単にCSSセレクタ記法を用いることができるだけでなく、	

 独自実装による優れたオプション指定ができる。
DOM要素の選択記法(1)
CSSセレクタ記法をそのまま用いる
Sample.	

jQuery(‘#logo_image’) or $(‘#logo_image’)	

jQuery(‘.clearfix a’) or $(‘.clearfix a’)	

jQuery(‘div’) or $(‘div’)
DOM要素の選択記法(2)
要素の順番に基づいて選択する
Sample.	

jQuery(‘li:first’) or $(‘li:first’)	

jQuery(‘li:eq(0)’) or $(‘li:eq(0)’)	

jQuery(‘tr:even’) or $(‘tr:even’)	

:first 最初の要素
:last 最後の要素
:even 偶数番目の要素
:odd 奇数番目の要素
:eq(n) インデックス(n)の要素
:lt(n) インデックスが(n)より

    小さいすべての要素
:gt(n) インデックスが(n)より

    大きいすべての要素
DOM要素の選択記法(3)
属性に基づいて選択する
Sample.	

jQuery(‘a[href=http://google.com]’) or	

$(‘a[href=http://google.com]’)	

jQuery(‘a[title][href]’) or $(‘a[title][href]’)
[attr] 指定された属性を持つ要素
[attr=val] 指定された属性に特定の値が

       設定されている要素
[attr!=val] 指定された属性に特定の値以外が

       設定されている要素
DOM要素の選択記法(4)
可視性に基づいて選択する
Sample.	

jQuery(‘div:hidden’) or $(‘div:hidden’)
:hidden 非表示状態の要素
:visible 表示状態の要素
DOM要素の選択記法(5)
フォーム要素の種類に基づいて選択する
Sample.	

jQuery(‘:text’) or $(‘:text’)
:text input type=text
:password input type=password
:radio input type=radio
:checkbox input type=checkbox
.etc…
jQueryメソッドについて
jQueryの原理(再掲)
「少ないコードで多くのことを行う」のがjQueryの原理である。こ
の原理はさらに3つの概念に分解することができる。	

!
・(CSSセレクタを通して)要素を検索し、	

 (jQueryメソッドを通じて)それらを使って何かを行う。 	

・要素セットで複数のjQueryメソッドを連鎖させる。	

・jQueryラッパーを使って暗黙的にやりとりする。	

(O Reillyジャパン 『jQueryクックブック』より)
それら(検索したDOM要素)を使って何かを行う  という機能を担っているの
jQueryメソッド。
jQueryメソッドの概要
・jQueryメソッドとは、jQueryオブジェクトに定義され、dot(.)指定で	

 呼び出せるメソッド(処理)	

・jQueryメソッドは、戻り値に必ずjQueryオブジェクトが設定される
ため、呼び出しを連鎖させることができる。	

・以下のカテゴリ群がある。
1. Core    核となる基本機能
2. Selectors   DOM要素選択(補助)
3. Attributes DOM要素の属性
4. Traversing DOM要素の走査
5. Manipulation DOM要素の操作
6. CSS css、styleの処理
7. Events イベント関連の処理
8. Effects 視覚効果・演出
9. Ajax Ajax関連
10.Deferred Deferredオブジェクト関連処理
11.Data Data関連処理
12.Callbacks コールバック関数の管理
13.Utilities ユーテリティ
jQueryメソッドによる処理の実例
Sample	

$(‘div’).css(‘border’,‘1px solid red’);
■CSSを書き換える
Sample	

$(‘div#main’).fadeOut(0.5);
■フェイドアウト効果を施す
Sample	

$(‘div’).remove(‘a’);
■DOMから要素を削除する
上記はほんの一例で、他にもさまざまなことができます。
jQueryリファレンスを見て、その「できること」の幅広さを確認してください。
公式サイトリファレンス(英語): http://api.jquery.com
Qrefy(日本語リファレンスサイト): http://s3pw.com/qrefy/
readyメソッドについて(1)
みなさんが、実際のWEBサイトで必ずといっていいほど最初に	

目にするjQuery構文は
$(function(){ …… <書式A>
というものではないでしょうか。よく見ますね。この構文。	

しかし、ここまでの説明だけだと、この構文理解できません。	

この構文は、多くの記述が省略されているので、すべてを	

省略せずに書いてみましょう。
jQuery(document).ready(function(){ … <書式B>
この様になります。一番左は何度も繰り返しお伝えしているので	

もうお分かりだと思いますが、エイリアスとして’$’を使うことが	

できます。さらに、このjQuery関数のパラメータを省略すると	

デフォルトは document になります(文字列でないので注意!)
readyメソッドについて(2)
このようになります。だいぶ短くなりました。
$().ready(function(){ …… <書式C>
--readyメソッドについて--
ここでreadyメソッドについて説明しておきます。
readyメソッドは、jQueryメソッドの1つで、イベント系メソッ
ドにカテゴライズされるものです。
『ready状態』とは、すべてのDOM要素が生成され、かつ画像等の
ロードが完了していない状態 です。
 これは、JavaScriptのwindow.onLoadイベントに替わるもの
であり、onLoadより少ない待ち時間で処理を開始することができ
ます。
※ちなみにjQueryにもonLoadイベント相当の、loadメソッドがあります。
jQuery関数をエイリアス表記に、さらにパラメータを省略すると
readyメソッドについて(3)
$(function(){ ……
このreadyメソッドコールは、その記述自体を省略可能です。省略
すると次の様になり、よく見る最初の<書式A>になります。
ぜひとも、全てを省略せずに記述する書式<書式B>をいつでも思い
出せる様にしてください。ここにはjQueryの 仕組み を理解する
ヒントがたくさんあるのです。
最後に
今回のセミナーの内容は、極めて基本的な内容でありながら、その
一方で、かなり深いjQueryの本質について取り上げたつもりです。
この資料の内容を何度も繰り返し読み、吟味して、より深い理解に
繋げていただければ幸いです。
!
今まで、中身を理解しないままコピーペーストで済ませていた方も
これを機会に、ソースをよく読んでみてください。
過去に自分が納品したサイトのソース, 気になるサイトのソースな
ど、あらためて見てみてください。
以前と比べて、きっと内容が判る様になっているはずです。
そのような理解の一助にこの講義がお役に立てれば、こんなうれし
いことはありません。

Weitere ähnliche Inhalte

Was ist angesagt?

LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
bleis tift
 

Was ist angesagt? (20)

2022のShowNetに向けて_ShowNet2021_conf_mini_5_2022_stm
2022のShowNetに向けて_ShowNet2021_conf_mini_5_2022_stm2022のShowNetに向けて_ShowNet2021_conf_mini_5_2022_stm
2022のShowNetに向けて_ShowNet2021_conf_mini_5_2022_stm
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
Hyper v ネットワークの基本
Hyper v ネットワークの基本Hyper v ネットワークの基本
Hyper v ネットワークの基本
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
自己組織的なScrumチームの目指し方
自己組織的なScrumチームの目指し方自己組織的なScrumチームの目指し方
自己組織的なScrumチームの目指し方
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
 
FlutterでBLEを
いい感じにする
FlutterでBLEを
いい感じにするFlutterでBLEを
いい感じにする
FlutterでBLEを
いい感じにする
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
第一回Web技術勉強会 efkスタック編
第一回Web技術勉強会 efkスタック編第一回Web技術勉強会 efkスタック編
第一回Web技術勉強会 efkスタック編
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
 
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 

Andere mochten auch

メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
Atsushi Tadokoro
 

Andere mochten auch (8)

ノンプログラマーのためのjQuery入門
ノンプログラマーのためのjQuery入門ノンプログラマーのためのjQuery入門
ノンプログラマーのためのjQuery入門
 
2時間で学ぶjQuery
2時間で学ぶjQuery2時間で学ぶjQuery
2時間で学ぶjQuery
 
WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。
 
jQueryで気をつけてほしいこと
jQueryで気をつけてほしいことjQueryで気をつけてほしいこと
jQueryで気をつけてほしいこと
 
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
 
Angular1&2
Angular1&2Angular1&2
Angular1&2
 
漢は黙ってjQuery
漢は黙ってjQuery漢は黙ってjQuery
漢は黙ってjQuery
 

Ähnlich wie Scc2014 :jQueryの仕組みを完璧に理解する

今度こそ始めるjQuery超入門
今度こそ始めるjQuery超入門今度こそ始めるjQuery超入門
今度こそ始めるjQuery超入門
西畑 一馬
 
2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rb2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rb
Ueki Kouji
 
Createjsについて@jsCafe20
Createjsについて@jsCafe20Createjsについて@jsCafe20
Createjsについて@jsCafe20
佐藤 俊太郎
 

Ähnlich wie Scc2014 :jQueryの仕組みを完璧に理解する (20)

20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)
 
挫折した人のための、初心者速習html+css【JQueryでTOP画像がクルクル動くようにしてみよう編】 先生:田中 晶子
挫折した人のための、初心者速習html+css【JQueryでTOP画像がクルクル動くようにしてみよう編】 先生:田中 晶子挫折した人のための、初心者速習html+css【JQueryでTOP画像がクルクル動くようにしてみよう編】 先生:田中 晶子
挫折した人のための、初心者速習html+css【JQueryでTOP画像がクルクル動くようにしてみよう編】 先生:田中 晶子
 
【再放送】生放送の前にJQueryについて復習しよう!
【再放送】生放送の前にJQueryについて復習しよう!【再放送】生放送の前にJQueryについて復習しよう!
【再放送】生放送の前にJQueryについて復習しよう!
 
Riot.jsに触れてみた話
Riot.jsに触れてみた話Riot.jsに触れてみた話
Riot.jsに触れてみた話
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamental
 
今度こそ始めるjQuery超入門
今度こそ始めるjQuery超入門今度こそ始めるjQuery超入門
今度こそ始めるjQuery超入門
 
2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rb2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rb
 
JavaScript04 jquery プラグインを使おう
JavaScript04 jquery プラグインを使おうJavaScript04 jquery プラグインを使おう
JavaScript04 jquery プラグインを使おう
 
jQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScriptjQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScript
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
 
HTML5時代のフロントエンド開発入門
HTML5時代のフロントエンド開発入門HTML5時代のフロントエンド開発入門
HTML5時代のフロントエンド開発入門
 
挫折した人のための、初心者速習html+css【JQueryで商品画像をポップアップさせよう編】 先生:田中 晶子
挫折した人のための、初心者速習html+css【JQueryで商品画像をポップアップさせよう編】 先生:田中 晶子挫折した人のための、初心者速習html+css【JQueryで商品画像をポップアップさせよう編】 先生:田中 晶子
挫折した人のための、初心者速習html+css【JQueryで商品画像をポップアップさせよう編】 先生:田中 晶子
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
 
jQuery MobileとHTML5
jQuery MobileとHTML5jQuery MobileとHTML5
jQuery MobileとHTML5
 
Createjsについて@jsCafe20
Createjsについて@jsCafe20Createjsについて@jsCafe20
Createjsについて@jsCafe20
 
osc_tokyo20091030
osc_tokyo20091030osc_tokyo20091030
osc_tokyo20091030
 
Scc2015 SNS Tech
Scc2015 SNS TechScc2015 SNS Tech
Scc2015 SNS Tech
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScript
 

Mehr von Jun Futakawa (6)

Scc2017 youtube creator
Scc2017 youtube creatorScc2017 youtube creator
Scc2017 youtube creator
 
Scc2016 you tube
Scc2016 you tubeScc2016 you tube
Scc2016 you tube
 
Scc2015 you tube
Scc2015 you tubeScc2015 you tube
Scc2015 you tube
 
Scc2014 sound
Scc2014 soundScc2014 sound
Scc2014 sound
 
Scc2013 sound
Scc2013 soundScc2013 sound
Scc2013 sound
 
Scc2013 air
Scc2013 airScc2013 air
Scc2013 air
 

Scc2014 :jQueryの仕組みを完璧に理解する