|
注目フォーラム
【Mailセキュリティ】 出光興産
【Webセキュリティ】 デジタルアーツ
【デベロップメント】 NTTデータCCS |
Part3 JavaScriptに学ぶ「言語の拡張性」
最近,「とんがった」プログラマの間ではJavaScriptがちょっとしたブームです。あちこちの書店で,JavaScriptの書籍を見かけるようになりました。「はてブのホッテントリ」*1にも,よくJavaScriptの記事が入っています(図1)。
その人気を象徴的に示しているが,Shibuya.js*2という団体が開催しているJavaScript関連のイベント「Technical Talk」です。1回目は2006年4月,2回目は6月に開催されましたが,いずれの回も予約が殺到し,たった1日で席が埋まってしまいました。これには「JavaScriptの人気はここまで来ているのかぁ」と,とても驚かされました。 そう,今やJavaScriptは最大のモテ言語なのです。これを勉強すれば,きっとあなたもモテモテ間違いなし。JavaScriptに興味がある方も,ない方も,たった今興味を持ってしまった方も,少しだけお付き合いください。これから,筆者がこれまで学んだJavaScriptのいいところを余すことなく紹介していきましょう。 いいところ その1
|
|
|
| 図2●「<script>alert('Hello World!!');</script>」をWebブラウザで実行した結果,表示されるダイアログ |
プログラミングを学んでいると,すぐにぶつかる大きな壁があります。それは,倦怠期です。使っているプログラミング言語に飽きてくるのです。筆者も,人一倍の飽き性です。しかし,JavaScriptには,にわかプログラマを飽きさせない大きな特徴がありました。
それは,手っ取り早く「それなりにすごいもの」が作れ,しかも,それをすぐに人に自慢できることです。JavaScriptはWebサーバーに置けばすぐに公開できます。直接ファイルとして渡すのも簡単です。作ったものをすぐに友達や気になるあの子に自慢できるのです。
一般に,プログラマは自己顕示欲が強いものです。プログラミング言語の勉強を続けていくには,「人に見られている感」はとても大切な要素だと思います。
Webブラウザのアドレスバー(URLが表示されている個所)に,javascript:と打ち込むと,そのあとに続くJavaScriptのコードをすぐに実行できます。さらに,これをブックマークとして登録しておくと,いつでもブックマークとしてプログラムを呼び出せます。この機能を「ブックマークレット」と呼びます。これにより,JavaScriptをブラウザのインタフェースとして使うことができます。
例えば,あるページにとてもたくさんのチェックボックスがあり,あなたはそのすべてをチェックしたいと思っていたとします(図3左)。しかし,不便なことに「すべて選択」するためのインタフェースはWebページには用意されていません。さて,困りました。ここでブックマークレットの出番です。
|
|
| 図3●チェックリストの多いフォーム(左)もブックマークレットで一発解決!(右) [画像のクリックで拡大表示] |
まず,Webページ内のチェックボックスをすべてチェックするJavaScriptのコードを書きます(リスト1)。次に,このコードを1行にしてブックマークレット化します。(リスト2)。最後に「void(0);」を追加しているのは,ブラウザがjavascript:を評価したときに,最後の1文の評価結果がundefined以外の値だった場合はページが遷移してしまうためです。
|
| リスト1●Webページ内のチェックボックスをすべてチェックするJavaScriptのコード |
|
| リスト2●リスト1をブックマークレット化したもの(実際には1行) |
それではさっそく試してみましょう(図3右)。すべてのチェックボックスが選択されるはずです。どうですか? 便利だと思いませんか? JavaScriptは,使いこなすことで,日々のWebブラウジングを快適にする便利な道具になります。
ここまでJavaScriptの四つのいいところを紹介してきましたが,最大のものがまだ残っています。「拡張性」です。JavaScriptの最大の特徴は,ユーザーがプログラムを通して言語自体を自由に拡張できる点です。
例として,配列のすべての要素を走査するようなプログラムを考えてみましょう。例えば,Perlであれば「foreach」という構文を使って簡単に記述できます(リスト3)。一方,JavaScriptでは,このような処理はforループを使って行う必要があります(リスト4)*3。iというカウンタ変数をインクリメントしながら,すべての要素にアクセスしています。煩雑ですね。
|
| リスト3●配列のすべての要素を走査するPerlのプログラム |
|
| リスト4●古典的な走査を行うJavaScriptのプログラム |
しかし,ここからがJavaScriptのすごいところです。JavaScriptでは,気に入らない点をユーザーが勝手に変えてしまえるのです。リスト5を見てください。「Array.prototype」のプロパティとして「each」という関数を追加しています。するとeachという関数にalert関数を渡して全要素を走査できるようになります。
|
| リスト5●Array.prototypeのプロパティとして,全要素を走査するeach関数を追加 |
何とも不思議な構文だと思いませんか? Array.prototypeというものに「走査」の機能を持つ関数に追加すると,配列で使える関数が一つ増えてしまうのです。関数をいったん定義してしまえば,配列を使うときはいつでもその関数を利用できます。あたかも言語自体を拡張しているかのようです。
この謎を解くには,「プロトタイプ・ベースのオブジェクト指向」と「組み込みプロトタイプの書き換え」というJavaScriptの二つの特徴を理解する必要があります。これら二つについて見ていきましょう。
IE9ベータ版に見るマイクロソフトの“本気度”
9月15日、マイクロソフトから同社のWebブラウザであるInternet Explorer(IE)の次期版IE9のベータ版が公開された。これまでIE6、IE7、IE8と定期的にバージョンアップを進めてきたが、IE9ではこうした一連のバージョンアップとは一線を画す大規模なものとなっている。
ITpro EXPO 2010、注目のフォーラムはコレだ!
10月18日(月)〜20日(水)に東京ビッグサイトで開催する「ITpro EXPO 2010」では、100を超えるフォーラム/セミナーの開催を予定しています。中でも注目は「基調講演」と「ICTパネル討論会」です。既に「満席」、あるいは「もうすぐ満席」のセッションも少なくありません。気になる講演がありましたら、今すぐお申し込みください。
奥井規晶の悩むなら聞け!---キャリア編
「奥井規晶の悩むなら聞け!」では、エンジニアの皆さんが日ごろ感じている悩みにコンサルタントの奥井規晶氏がずばりアドバイス。今回は「キャリア」に関する相談を中心に紹介します。ぜひ参考にしてください。