『DOM Scripting 標準ガイドブック』を読んだ (4)

2009-01-17 11:45

まえに人におすすめされて少しだけ借りて読んだ DOM Scripting: Web Design with JavaScript and the Document Object Model という本があって、それの日本語訳の『DOM Scripting 標準ガイドブック』が売っていたので買って読んだ。初版が2007年6月なので、最近出た本じゃないです。

文法まわりは微妙

2章の JavaScript の文法に対する記述はあんまりうなづけないところがある。変数名が snake_case なのは趣味の問題だけどたぶん lowerCamelCase のほうが多数派。

配列を

var beatles = Array("ジョン", "ポール", "ジョージ", "リンゴ");

とするほうが [] より「良い」(p.33) とも思えないし、連想配列がほしいときに {} じゃなくて

var lennon = Array();
lennon["name"] = "ジョン";
lennon["year"] = 1940;
lennon["living"] = false;

としているのも、厳密にはまちがいじゃないのかなー。push, pop とかしないものを Array にしても、とは思う。

あ、クラスっぽいものを定義 (function の prototype をどうこう) したりには踏み込みません。それは正しい判断だと思う。

HTML と JavaScript のつきあわせかた

5, 6章と、8, 9 章にある DOM まわりのはなしはかなり良い。4, 5, 6 章では

<a href="images/fireworks.jpg" title="打ち上げ花火">

みたいなリンクのリストからインラインで画像が切り替わるページを、8章では abbr から dl, dt, dd のリストを、blockquote の cite 属性からリンクを、accessskey 属性からまたリストを生成、9章では table にストライプをつけたりしている。

10章は DOM の要素を変数置き場にしてるのがあんまり

var elem = document.getElementById(elementID);
if (elem.movement) {
  clearTimeout(elem.movement);
}

好きじゃないな。

で、Web で JavaScript を書くときに考えなきゃいけないことは3つあると思う。

ひとつはプログラミング言語一般のこと。適切に関数なりクラスに処理をまとめたり、スコープを狭く保ったり、ループの中で getElementById しなかったり。これは、プログラマならわかることだ。

次に、クロスブラウザ間での差異のこと。これは複数のブラウザで動作確認すればわかる。センスじゃなくて努力でなんとかなる。(User-Agent を見て分岐するなメソッドの有無を見ろ、というのはこの本だと p.98 にあります)

最後が、HTML と JavaScript のつきあわせかただ。なぜ href=”photo.jpg” を href=”javascript:openPhoto()” や onclick=”openPhoto()” href=”#” と書き換えるべきではないのか。「Lightbox で開くからユーザービリティが高い」というのは全然わかっていない。この種の書き方は HTML から意味を剥奪しているという点で間違っていて、その間違いは「Googlebot がリンクをたどってくれない」「真ん中のボタンでクリックしてもタブで開けない」といったかたちで運営者や利用者にはねかえってくる。

じゃあどうするの、というところがこの本にはちゃんと書いてある。「HTML と JavaScript のつきあわせかた」という問題に「ちゃんとマークアップされた文章に対して段階的強化 (progressive enhancement) として振る舞いを追加する」という解をだし、その実現方法を丁寧に説明しているところが素敵だと思います。

mrmt

どうでもいいすが s/lenon/lennon/

kzys

おお、なおしました。本じゃなくて自分のまちがいでした。

Oogatta

Jerreymy さんは特にプログラマじゃなくて、考え方の人ですもんね。
昨年のWeb Directions Eastに来日していてワークショップまで受けたんですが、
「自分では、AJAXアプリケーションをあんま業務で実際に作ったことはないんだ」って正直に話してて、逆に、
ゼネラリストだからこそ見える「イイコト」を胸はってみんなに伝えるんだオレは、という姿勢が好印象でした!

kzys

来日してたのは知らなかったです。ワークショップいいなー。
http://east08.webdirections.org/profiles/keith/

「ゼネラリストはこう良いことをいっていて、今回はそれをこう実装してみました」みたいなはなしが外向きに出来るようにしたいです。いまはまだ…

Leave a Reply