キマイラ・サイトは http://www.chimaira.org/です。
トラックバック/コメントは日付を気にせずにどうぞ。
連絡は hiyama{at}chimaira{dot}org へ。
蒸し返し歓迎!
ところで、アーカイブってけっこう便利ですよ。タクソノミーも作成中。
2005-07-28 (木)
コメントアウトはやめてくれ
雑記/備忘 | |
naoyaさんの「そのページが誰のものなのかを示す識別子を埋め込む仕様を考えています」に対する僕の反応の趣旨は、「HTML(XML)コメント内に意味のある情報を記述する」という選択肢は良くない、ということです。PIは「まだしもマシ」と引き合いに出しただけです(特に推奨はしない)。
その後いろいろあって結局、「続々 Hatena ID Auto-Discovery」の最後において、TrackBackTechnical Specificationのコメントアウトに関するくだりを引用した後で:
"This is not a perfect solution, but it works as a temporary fix." だそう。これをよしとするかどうか、ってとこですね
とのこと。また、コメント案がぁー、、、
僕はそれを“よしとしない”わけだけど、現実的な事情からやむにやまれぬ場合でももう一工夫したいところです。
まずは、“よしとしない”理由ですが、コメントというのは、「誰が何のためにどんなフォーマットで何を書いているか」という判断がまったくできないってことです。本来無視されるべき存在だから当然のことです。
もしコメントに有意な情報を埋め込むと、処理系は文書中のすべてのコメントをパーズする必要があります。コメント内部がいかなる構文かは事前に予測できないので、トライアンドエラーで端から調べるしかありません。今回の例なら、コメント内のテキストをXMLパーザーに再度渡して、成功したらそれが目的のXMLデータかどうかを確かめる、ということになります。
「そういう処理をコーディングすりゃいい」「実行時負担はたいしたことない」ってのは、それ自体は間違いではありませんが、そういうアドホックなことをモジャモジャしないために、XML構文や名前空間があるのに、時計の針をまた逆に戻すのかー、と思うとホントに脱力しちゃうよ。
こういうことが続くと、「コメント内部の構文を構造化する」とか「すべての処理系はコメント内をパーズすべし」ってハナシになるんじゃないでしょうか? それって、いったい何なのよ?
もともとの"This is not a perfect solution, but it works as a temporary fix."って事情はよく理解できます。この時点では、「これ良くないよなー、やっちゃいけないと思う。けど、ホントにしょうがないのだ」という後ろめたい気持ちだったと思います。ですが、一度こういうことをやると、最初の「後ろめたい気持ち」は次の人には伝わりません。次の人々は、前例があるからと堂々とやるのですよ、望ましくないことを。
さて、それでも、やむにやまれぬとして許容するとして(許容したくないけど)考えましょう: 要素内容をコメントアウトする前例に、<script>や<style>があります(XMLではなくて古いSGML構文ならこれを合理化することもできます)。この例では、特定要素の内部にあるコメントということで、囲っている要素タグが「誰が何のためにどんなフォーマットで何を書いているか」を伝えています。というわけで、特定囲みタグの内部に限定して内容をコメントアウトして欲しいな。
もっとも、レガシーHTMLが前提だと、囲み要素を新設するのも困難(つうか、それをする意義が疑問)だから、Microformatsの多重マークアップ風に
<span class="embeddedMetainfo"><!-- 有意な内容 --></span>
とかでしょうね。
(次の投稿に続いている)
- 255 http://www.google.co.jp/search?hl=ja&q=コメントアウト&lr=
- 255 http://www.kanzaki.com/memo/2005/07/28-2
- 222 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2005-26,GGLD:ja&q=METAタグ 何のため
- 182 http://www.kanzaki.com/memo/
- 126 http://www.google.co.jp/search?q=コメントアウト&start=0&start=0&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:ja-JP:official
- 82 http://search.yahoo.co.jp/search?p=コメントアウト html&fr=top&src=top
- 73 http://search.yahoo.co.jp/search?p=xml+コメントアウト+<!--&ei=UTF-8&fr=top&fl=0&vc=&x=wrt&meta=vc=
- 72 http://search.yahoo.co.jp/search?p=コメントアウトって&ei=UTF-8&fr=top&fl=0&x=wrt&meta=vc=
- 58 http://d.hatena.ne.jp/naoya/20050728/1122522457
- 51 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=コメントアウト&num=50
Note: because current validators choke on RDF embedded in XHTML, if you want your pages to validate you may wish to enclose the above RDF in HTML comments
が、それがほんとに「やむにやまれぬ」ですか? レガシーHTMLなんか、そもそもがムチャクチャなんだから、いまさらナーニがバリデートなんじゃい、と言いたいですよ。
それと、XHTMLのハナシだとして、確かにstrict版DTDでははじかれてしまいますが、そういう矮小化され教条化、硬直化したバカげたバリデーションこそが、複合XML文書という約束の地への最大/最悪の障害なんです。そんな変なことに気を遣うのは無意味/無駄、無視すべきことだと思います。(ちょっと感情的な物言いでした。)
なので、表向きには Validator がほげほげ、実際には表示されていやだからコメント、っていうことなんじゃないかなと僕も思っています。実際 Acc Auto-Discovery で仕様書書くとしたら、僕もそう書きそう。ブラウザに表示されるとうざいからコメントしてね、ってのじゃちょっと理由にしづらい感じなので。
要はそういう、実装と仕様の落としどころ(妥協点)をどう見つけるかという話だと思うのですよ。
あくまで例え話ですが microformats 的にメタデータを囲む話も、そもそもレガシー HTML でも XHTML でもどうせ一緒に parse することになるし、そしたら XML parser は使えないだろうし結局正規表現で、って話になりますよね。そしたらそこがメタデータであると囲っておく意味合は何、という話もできますよね。
ということで、僕としては極端な話 <!-- id:hatena:naoya --> みたいなのでもいいと思ってるんですが、それじゃ仕様としていくらなんでもあれだろう、というところで妥協点を探している、というところです。
HTMLのmetaタグ、RDF、microformats、他にもTurtle でどうですか、という提案なんかもあるのですが、結局何を採用しても同じような議論になるのではないか、という感じでそろそろ決着をつけたいなと。それなら、前例のあるコメント埋め込みでどうだろう、ってことなんですが。檜山さん的にはそれを前例にする、ってところが一番引っかかるんだと思いますけど(笑)
さて、どうしたもんか。
>僕としては極端な話 <!-- id:hatena:naoya --> みたいなのでもいいと思ってるんですが
極端な話じゃないと思いますけど。この程度なら、*コメントをやめて* PIでもOK。<?jp.ne.hatena id=”naoya” ?> (笑)
>それを前例にする、ってところが一番引っかかるんだと思いますけど(笑)
そのとおりです。僕はたいていのことに寛容なほうだと思いますけど、前例だとか世間体に引きずられて、悪い(あるいはあまり良くない)方法が蔓延していく現象にはどうしても寛容になれないのです。結局、後で誰かがツケを払うことになります。その無駄な“支払い”の総量は、社会的に影響のあるものだと、かなり膨大となります。コメントをパースするような労力手間が義務化されるような世界はイヤ!です。
禍根を残すような方法でなければ、それ以上はトヤカク言いませんし、言う立場でもありません。もう、naoyaさんが白紙で考えてエイヤと決めてしまう、というのも方法かと。多くの意見を参考にするのは大事なことでしょうが、当事者には独断の権利もあると思います(-- ってのは「はてな的」な発想じゃないかもしれないけど)。
<!-- -->を使うのにはやっぱり反対ですけど、後半の意見にはほぼ賛成です。
何も知らない状態で安易な独断では困りますけど、今回の一連の経緯で、naoyaさんには相当量の情報と知識がインプットされたはずです。何が禍根となるかも把握されていることでしょう。だから、座禅でも組んだ後で、やおら実装を公開運用してしまってもいいような気がするのです。cleanで小さな仕様からはじめて、育てていくってことですね。cleanじゃないとうまく育てられないけど。
> メタデータであると囲っておく意味合は何、という話もできますよね。
禍根を残しそうなやり方を避けるという、消極的ながら社会的には大事な意味合いがあるのでは。
naoyaさんの実装が良い(少なくとも悪くない)お手本になればいいのです。
>社会的には大事な意味合いがある
そう、「はてな」はもはや社会的影響力を持っているから、社会的責任もあると思います。だから、禍根を残すようなことをしたり、悪い前例を作って欲しくないですよね。
これ以上のことは、7月29日分の本文のほうに書こうと思います。