『DOM Scripting 標準ガイドブック』を読んだ (4)
まえに人におすすめされて少しだけ借りて読んだ 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/
「ゼネラリストはこう良いことをいっていて、今回はそれをこう実装してみました」みたいなはなしが外向きに出来るようにしたいです。いまはまだ…