初心者のためのjQuery 第1回 jQueryでできること

普段HTMLやCSSを中心にソースコードを書いていて、JavaScriptなどのプログラムには触れたことのない人を主な対象に、jQueryを解説します。まずは、jQueryでなにができるのか概観してみましょう。

発行

  • 高津戸 壮
  • 外村 奈津子
初心者のためのjQuery シリーズの記事一覧

jQueryでできること

このシリーズでは、普段HTMLやCSSを中心にソースコードを書いていて、JavaScriptなどのプログラムには触れたことのない人を主な対象にしています。

まずはjQueryがどんなことができるのか、簡単なサンプルでみてみましょう。

特定の要素にいろいろできる

ボタンをクリックするとidがhogeの要素に、赤い枠が付いたり、テキストが変わったり、要素が隠れたり、現れたりします。

<div id="hoge">sample</div>
$('#hoge').css('border','3px solid red');
$('#hoge').text('changed!');
$('#hoge').fadeToggle();

プラグイン的な記述で機能を追加できる

あるいは以下のようなプラグインを指定する記述をするだけで、特定の機能を付与することもできます。

$('.rollover').rollover();

上記の記述でメニュ—のタブなどにロールオーバーの機能を付加します。

$('.accordion').accordion();

折りたたみ式のメニューなどに使われるアコーディオンの機能を付加します。

$('.slideshow').slideshow();

画像が一定の間隔で自動的に切り替わっていくスライドショーの機能を付加します。

$('.tooltip').tooltip();

特定の要素にカーソルを合わせると、ツールチップが表示される機能を付加します。

jQueryを使うと以上のようにサイトでよく見かける便利な機能を、簡単な記述で実現することができます。プラグインについてはまた後で詳しく説明します。

jQueryの簡単な説明

さきほど見たデモでは実際なにを行っているかというと、ブラウザで解釈され表示されたHTMLをJavaScriptというプログラミング言語で操作しています。例えば、ある要素を表示したり、非表示にしたり、classを付け替えたりして、特定の機能を実現しています。これらの操作はすべてJavaScriptが行っています。

ところがJavaScriptでそれらのことを行うには、いろいろと面倒なことがあります。面倒なこと——その大部分を占めるのは、ブラウザごとの差に起因するものです。どのブラウザでも動くまともなものを作りたかったら、この面倒なステップを乗り越えなければなりません。

jQueryを使えば、これらのステップを、とても簡単な記述のコードで実現することができます。jQueryは、このように私達のコーディングをとても楽にしてくれる、JavaScriptのライブラリ*です。

*注:ライブラリ

ライブラリとは、プログラムをファイルにまとめたものです。jQueryはJavaScriptを書くときにいろいろと手間のかかることを、jQuery流の方法で手軽に行えるようにした機能群として提供します。jQueryのファイルを読み込むことで、jQueryが用意した機能を利用できるようになります。

jQueryの大まかな機能

jQueryの機能には以下のようなものがあります。

  • DOM(ドム):HTMLを操作する(もっとも重要な機能)
  • アニメーション:要素をアニメーションさせる
  • Ajax(エイジャックス):外部ファイルをダイナミックに読み込む
  • 便利な機能:その他にも便利な機能がたくさん

DOMはDocument Object Modelの略です。これは簡単にいうとHTMLを操作するための仕様で、W3Cが策定しています。jQueryはこの仕様にのっとった上で、要素を簡単に、柔軟に操作する方法を用意してくれています。

アニメーションは、今でこそCSS3でも実現できるようになってきましたが、古いブラウザでは当然利用できない機能です。jQueryはどのブラウザでも動く、昔ながらのJavaScriptの機能であるタイマーを駆使したアニメーションを、手軽に行う方法を用意してくれています。

Ajaxは、外部のファイルをダイナミックに読み込む機能です。これを使えば、1つのページの内容を、次々に新しいコンテンツで置き換えることができます。Google Maps、Gmail、Twitterなどを思い浮かべてください。それらは、別のページに移動することなく、次々と外部のファイルを読み込み、ページの内容をダイナミックに切り替えます。これらはすべて、Ajaxを使った実装がなされています。Ajaxとは、このように「外部のファイルを動的に読み込むテクニック」のことを指します。jQueryを使えば、これを非常に簡単に行うことができます。

その他にも便利がたくさんあります。

jQuery、どこまで使いこなす?

ここまででjQueryってよくわからないけれど、つまり日頃みている「あれら」を実現するもの、という大づかみな理解はしてもらえたと思います。

このシリーズを読んでいる方は、漠然とjQueryがどんなものかを知りたいと思っている方から、実際に作ってみたいものがあるという方までさまざまだと思います。

JavaScriptの会社と自称しているピクセルグリッドのエンジニアの経験からいうと、○○を作りたい→実際にチャレンジしてみる、という過程を経ないとなかなか身に付きません。

そこでjQueryの使いこなしを1〜4までレベル分けしてみました。簡単な使いこなしから難しい使いこなしまでありますが、自分がどのレベルを目標にしているのか考えつつ、読み進めてもらえればと思います。

「JavaScriptができる/できない」という視点で考えると、1か0かのような考えになってしまいそうですが、実際はそういうわけではありません。実現したいことにより、必要とされるスキルもかなり違いますので、そのような点をざっくりと把握してください。

レベル1(簡単):プラグインを使える

これはjQueryのもっとも簡単な使いこなしです。

  1. プラグインをダウンロードする
  2. スクリプトやCSSを読み込む記述をする
  3. 目的の要素に適用するためのjQueryを1、2行書く

上記のような手順を踏めばいいので、HTMLやCSSを日常的に書いている人なら、目的のプラグインを見つけることができれば、ほぼ確実に実装することができます。

以下は「ColorBox」(http://jacklmoore.com/colorbox/)というブラグインを使用した例です。このプラグインはライトボックスの機能を付与することができます。

[dog](dog.jpg" class="colorbox)
$('.colorbox').colorbox();

しかし簡単である一方、既製のプラグインを元にしてもう少し効果を変えたい、となると「それは無理」というのがレベル1です。

レベル2(がんばる):簡単な機能を作れる

さきほど「プラグイン的な記述で機能を追加できる」でプラグインの使用例を紹介しましたが、レベル2はこのような機能を「使う」ではなく「作る」レベルです。ロールオーバー、スライドショー、アコーディオン、ツールチップなどシンプルな機能を持つプラグインが作れるレベルです。

レベル3(難しい):複雑な機能を作れる

レベル2とレベル3はそんなに明確には分けられないのですが、レベル3は同じ機能でも、細かい演出がほどこされているようなものです。

これらはDOM操作やCSS、アニメーションを駆使して作ることが多く、実装には試行錯誤が必要とされることが多いです。

さきほど紹介した「ColorBox」は画像がフェードインするように現われます。デザイン性の高いUI「Lof JSliderNews」などがその例です。

スタイルやアニメを巧みに使ったUI、たくさんの要素が関係するUI、またユーザー側で簡単に細かな設定ができるものや、別の機能と連携可能など付加的な機能があるものは書くのが難しいといえます。

レベル4(かなり難しい):APIと連携しつつ複雑なUI処理を制御

このレベルは私たちが「Webアプリケーション」と呼んでいるものを作れるレベルです。例えばGmail、Googleカレンダーなどをイメージしてください。

Gmailにアクセスするとページ遷移をすることなく、メールを読んだり、ラベルを付けたりという操作ができます。

これらはブラウザがサーバーの用意したAPIと連携しながら、サーバー上のデータを取ってきたり、ローカルでの複雑なUIの処理をコントロールしています。

レベル3では複雑とはいえ単独の機能を実現すればよかったのですが、レベル4になると、複数の機能が連携を取り合い、さらにサーバーとのやり取りも発生します。サーバー側のデータ設計をどうするかなども考えねばなりません。

どのレベルまで使いこなしたいか

大まかに4段階のレベルに分けてみましたが、jQueryを始めるにあたって自分がどのレベルまで到達したいのか、あるいは仕事で要求されるのはどのレベルの話なのかを念頭においておくといいでしょう。

このシリーズでは次回以降紹介・解説する内容は、HTMLとCSSの基本的な知識がある人が、まずはレベル2の入り口に到達することを目的としています。