<   2006年 06月 ( 7 )   > この月の画像一覧

JavaScript の秘密

JavaScript はどうやら、「オブジェクト指向プログラムもできるスクリプト言語」ではなくて、Rubyと同じように「本質的にオブジェクト指向のスクリプト言語」のようだ。

JavaScriptでは、オブジェクトも配列も、本質的にはハッシュなのだ。また、関数もハッシュの要素として扱うことができる。言い換えると、JavaScriptは本質的にハッシュだけを操作している言語といえるかもしれない。Lispがリストを操作する言語なら、JavaScriptはハッシュを操作する言語なのだ。

オブジェクトとして扱われるさまざまな構造のあるデータを、すべてハッシュとして統一して扱うことで、記述が簡潔で可読になる。また、インスタンスのプロパティを後で追加できるなど、今までのオブジェクト指向言語にない融通性をも身に着けてしまった。

JavaScript は、仕様の固まった枯れた言語などではなく、すべてをハッシュとして扱うことで、プログラミングの新しいスタイルを引き出すかもしれない、発展途上の言語なのかも知れない。
[PR]
by tnomura9 | 2006-06-28 20:51 | JavaScript | Comments(0)

JavaScript コンソール

JavaScript ターミナルでスクリプトを作って実行してみると、バグがあったときにうんともすんとも言わなくなってしまうのが面倒だ。

そういう時は、Firefox の URI 窓に、javascript: と入力して移動ボタンをクリックすると、JavaScript コンソールが現れる。コンソールには、javascript を実行したときの様々なメッセージを表示できるので、Javascript ターミナルに記入したスクリプトのバグを見つけるのに便利だ。

JavaScript ターミナルを IE から使うと、外部ファイルを読み込んで使うようなスクリプトは実行できない場合がある。そんなときは、URI 窓の、console.html をサンプルスクリプト名に変更してブラウザの移動ボタンをクリックすれば実行させることができるが、Firefox ならそんな面倒なことはいらないので、最終的にはクロスブラウザなスクリプトを書くにせよ、JavaScript ターミナルを使う場合は、Firefox を使うのが便利だ。
[PR]
by tnomura9 | 2006-06-24 07:14 | JavaScript | Comments(0)

プロとアマの差

JavaScript ターミナル(JavaScript と Ajax の勉強がお手軽にできます。)

プロとアマの差は、お金を貰うか貰わないかの違いだそうだ。

Google map に刺激されて、Ajax関連の情報をインターネットで調べまわっていたが、あまりの情報量の多さにめまいがしてきた。Google のような検索エンジンが発達したおかげで、コンピュータのプログラミングの技術のようなものは素人でもどんどん入手することができる。

管理人も、非同期 HTTP 通信がどんなものか体験できるようにまではなったが、そこで、息切れをしてしまった。Ajax 関連の記事を書き始めてから、アクセス数がやや増えてきたのがうれしくて、この一週間というもの、JavaScript ターミナルの改造にかかりっきりだった。

ひとに発表するものだから、できるだけよいものにしたい、バグも早急に改善しなくてはなどと、一人合点して一生懸命やったが、もう限界だ。疲れ果てた。お金ももらえないのにこんなことはやっていられない。このブログのプログラム関係の記事もこれで打ち止めだ。

そういうわけで、Ajax ねたはこれで終わり。また、さびしいアクセス数にもどるだろうが、なんかほっとした気分のほうが強い。

結局、「リッチ・インターネット・アプリケーション」の肝は、スクリプトをデータとして送るということなのだ。クライアントサイドにスクリプトを実行する機能があれば、サーバーからスクリプトを送るだけで、ソフトを動かすことができる。しかし、その際に、必ずセキュリティーの問題が発生するので、スクリプトの機能をどう制限するかが肝要になってくる。

JavaScript だって、ブラウザの部品を動かすだけだったらあまり価値がなかったかもしれないが、HTTP 通信ができるようになったり、正規表現が使えるようになったりしたら急に使い勝手がよくなってきた。これからもどんどんいろいろな機能が充実していくだろう。

スクリプト言語は本質的にはグルー言語なのではないだろうか。ソートやハッシュなど基本的な部品をうまく配分して目的のソフトを少ない記述量で、すばやく作成するのだ。その意味で、Perl や Ruby のおかげで、ソフトウェアを記述するときの部品となる機能がだんだんとはっきりしてきたのではないだろうか。また、オープンソースの動きのおかげで、それらの基本部品をそれぞれの言語にり取り入れるのも随分楽になってきている。これからは、どのスクリプト言語も似たものとなっていくような気がする。

また、ソフトウェアがネットワーク型になっていく流れも止まらないだろう。バージョンアップが自動的になるだけでもユーザーは助かる。データのセキュリティー管理の問題もある。その中核となっていくのがスクリプト言語なのかもしれない。
[PR]
by tnomura9 | 2006-06-18 17:12 | Ruby | Comments(0)

JavaScript の再発見

Ajax を解説したホームページをいろいろと漁っていたら、Ajax の革新的なユーザインターフェースは結局 JavaScript の表現力にその大部分を依存しているのではないかと思うようになった。

Ajax の肝とされている非同期XML通信は、数行の簡単な JavaScript のプログラムだ。これは、要するに、単にバックグラウンドでHTTPサーバと情報のやり取りをしているに過ぎない。いままでの、インタラクティブ性の低いブラウザのユーザインターフェースを一新する表現力をこれのみで行えるわけではない。

ブラウザ上でのインタラクティブな操作を可能にしたのは、やはり、JavaScript の力なのだ。JavaScript をブラウザ付属の埋め込み型スクリプトとしてではなく、普通のスクリプトとして捉えると、その力を理解することができる。煩雑なHTMLのタグをはずして、JavaScript を純粋にスクリプト言語として試してみることができるページを作ったので利用してみていただきたい。

JavaScript ターミナル

JavaScript ターミナルにアクセスしたら、まず、例文ボタンをクリックして、例文のスクリプトを表示した後、実行ボタンをクリックすると大体の使い方がわかるはずだ。タグのない JavaScript だけでもウィンドーを開き文字を表示することができる。このスクリプトは eval を使っているので少々危ないかもしれない。このスクリプトを使うことによる被害に対しては無保証である。また、このスクリプトは著作権フリーとするので自由に使っていただいてかまわない。

JavaScript を、GUI の表現力豊かなオブジェクト指向言語としてとらえると。その、プログラム記述能力の高さに気がつくだろう。また、GUIだけでなく、正規表現を取り入れたりと、バージョンアップもだんだん充実してきている。Ruby と JavaScript という二つのオブジェクト指向言語を使いこなすことが、これからのコンピュータライフを刺激的なものにしてくれるのではないだろうか。
[PR]
by tnomura9 | 2006-06-10 22:50 | JavaScript | Comments(0)

Ajax のチェスゲーム

Ajax の世界は日進月歩だ。世界初の JavaScript で書いたチェスの思考エンジンを搭載したページが出現した。次のサイトにアクセスして、シングルプレーヤーモードをクリックすると、コンピュータとチェスを対戦できる。管理人はあっという間に負けそうだったので途中でログアウトした。くやしい。

MORFIK CHESS

Google は、スプレッドシートのネットワーク版を発表するそうだし、Ajax プログラムで一体どこまでできるようになるのか分からない。どうも、JavaScript は意外にまともなスクリプト言語のようだ。

Ajax で JavaScript がこんなに活躍しているのは、JavaScript がブラウザをコントロールできるせいだ。ネットワーク型のアプリケーションの GUI は、すべてブラウザを通じて行われるからだ。

管理人にはできることではないが、誰か、Ruby でブラウザを操作する、BrowserRuby を開発してくれないだろうか。そうすると、HTML埋め込みスクリプトも、サーバーサイドスクリプティングも何もかもみんな Ruby でやってしまうことができる。
[PR]
by tnomura9 | 2006-06-07 17:59 | JavaScript | Comments(0)

JavaScript のオブジェクト

JavaScript はメンバー変数もメソッドも持ったユーザ定義のオブジェクトを扱うことができる。次のスクリプトを見ればその様子がわかる。
d0038298_1113546.jpg

クラス定義は、コンストラクタ関数で代用する。メンバー変数は、thisを利用する。メソッドは別に定義していた関数をメンバー変数に代入する。それだけのことで、ユーザ定義のクラスを作ることができる。Rubyに比べると見づらいが、クラスを定義してしまえば、ほとんど同じように使える。

JavaScript がオブジェクト指向言語であるということがわかってしまえば、DOM を理解するのがそう難しいものではなくなる。DOM の本体が、ノード(節)オブジェクトであることと、それが木構造でつながっていることを理解してしまえば。各ノードの情報は、メンバー変数にアクセスすることで操作することができるし、木構造をたどって隣のノードに移動するには、上下方向には、parent/child、左右には previous/next sibling 関係をたどるメソッドを利用すればよい。また、ノードオブジェクトを挿入したり削除したりする方法も難しくはない。

つくづく、「Ruby を使い慣れていてよかった。」と思った。
[PR]
by tnomura9 | 2006-06-04 01:12 | JavaScript | Comments(0)

Ajax のサンプル

Ajax のプログラムは、管理人が考えなくてもどこかにあるはずだと思っていたら、あった。

dhtmlgoodies.com のページがそれ。

英語だけど、demo をクリックすると試してみることができる。なんで、こんなことができるんだというデモが満載だ。

JavaScript が使いたくなって、HTML をやり直したい人には、

TAG index

DOM 入門は、

はじめての DOM

DOM Level 1 Core/HTML の日本語訳は、

DOM 第一水準仕様書
[PR]
by tnomura9 | 2006-06-03 11:41 | JavaScript | Comments(0)