2010年5月20日木曜日

マークアップ言語の視点からEvernote文書を見る

mehoriさんの記事を見てから、Evernote文書をマークアップ言語の視点から解析してみようと思っていた。

Evernoteはクラウド上だけでなく手元のパソコンにもデータを保存しているが、これはENML(Evernote Markup Language)という形式のXML文書が主になっている。一つのEvernoteのノートが一つのENML文書になっていると考えてよい。

基本的には、ENMLはHTML/XHTMLをベースにしたマークアップ言語であり、タグセットがほぼHTML/XHTMLのサブセットになっている。極めておおざっぱに言えば、body要素の内容からいくつかのタグを取り除いたものがENML文書になると言える。ただし、XML名前空間によってタグセットが共有されているわけではなく、厳密に言えば、単にタグ名が同じであるに過ぎない。また、一部、ENML独自のタグが導入されている。

Evernoteでは、Webページをクリッピングすると、そのページの内容がテキストベースで取り込まれる。内部的には、この動作は、WebページがUTF-8のXHTML 1.0 Transitionalの文書とENML文書で保存されることに相当している。XHTML 1.0 Transitionalとして妥当でない文書でもHTML5文書でも、クリッピングするとXHTML 1.0 Transitionalになるみたいである。CSSはどうなるかというと、スタイルを保存するために新たなdiv要素やspan要素が追加され、この要素のstyle属性に展開されて、EvernoteのXHTML文書とENML文書の両方に書き込まれている。こういう振る舞いを総合すると、ブラウザ上のDOMをなんらかの方法でシリアライズして保存しているのかな、と想像している。

また、Evernoteからノートを書き出すと、単一のEvernoteエクスポート形式の文書が得られる。これもXMLであり、元々保存されているENML文書の他、ページを構成する画像その他の部品がすべてBase64形式で符号化され、単一パッケージ(単一文書)になったものである。

ENMLではスキーマをどう扱っているか。なんとDTDなのである。これは今に到るまで変わっていない。いったんDTDベースでシステムを構築してしまえば、Relax NGやXML Schemaを導入する必要性がない、ということなのだろうか。あるいはHTML/XHTMLベースなので、XHTMLのDTDをそのまま借用している、ということなのだろうか。このDTDを眺めていると、パラメータ実体や外部パラメータ実体が使われていて、なんだか一昔前にタイムスリップしたような感覚になってくる。

ENMLのDTDは途中で大きく変わっている。ENML 1.0(DTDへのリンク)とENML 2.0(DTDへのリンク)である。切り替わったのがいつか正確には分からないが、ENML 2.0のDTD中にあるCopyright表示が 2007-2009 になっているし、タイムスタンプ(これはCVSのもののように見えるが…)が 2007/10/15 になっているから、この辺に切り替わったのかもしれない。

ENML 1.0の文書モデルはXHTML 1.0 Transitionalの文書モデルと非常に似ている。各要素の内容モデルがDTDレベルで厳密に決められているし、インライン要素やブロックレベル要素など、XHTML 1.0で行われていた要素の分類を引き継いだDTDになっている。一方、ENML 2.0の文書モデルはかなりルーズであり、どの要素の内容にどの要素が出現してもよい。要するにこんな感じである(説明のため、ENML 2.0 DTDの記述を意訳?している):

<!ELEMENT a (#PCDATA | a | abbr | .... | var)*>

ところで、ENML 2.0 DTDの冒頭に面白いコメントが書いてある。

This is based on a subset of XHTML which is intentionally broadened to reject less real-world HTML, to reduce the likelihood of synchronization failures.  This means that all attributes are defined as CDATA instead of more-restrictive types, and every HTML element may embed every other HTML element.

現実のHTMLをなるべく排除しないように、またその結果として同期の失敗の可能性を減らすために、内容モデルを広げた、という感じだろうか。

あんさん、そら、アタリマエでんがな。みんながみんな、文書をDTDどおりに書いてくれるなんて、大間違いや。文書のココロが分かってへん。まあ確かに、なんでもタグを許したら収拾つかんようになるさかい、制限したい、ゆーのは分かるんやけど、DTDつこたらあかんわ。well-formed で我慢しとき。

本: 一澤信三郎帆布物語

一澤信三郎帆布物語 (朝日新書)
菅 聖子
朝日新聞出版
売り上げランキング: 169767

中学から大学院まで足かけ15年も京都に通っていたためか、一澤帆布の鞄にはずっと憧れていた。自分のお金で最初に買ったのは、白いショルダーバッグだったように思う。汚れが目立ってくる度に手間をかけて洗い、裾がほつけてくるまで使ったような覚えがある。その後も一澤帆布の鞄にはずっとお世話になってきた。

基本的に京都ローカルの小さな商店、でも個人的にとても愛着のあった一澤帆布が、よりによってお家騒動で一気に有名になってしまったときには、複雑な気分であった。そのときには京都を離れてしまっていたので、一澤帆布にも信三郎帆布にも立ち寄る機会がなく、ようやく店を訪れることができたのは2007年。信三郎帆布もかなり軌道に乗ってきたように感じられる時期であった。品物を実際に見れば、どちらに義があるかは明らかだった。信三郎帆布が往年の一澤帆布の丁寧なモノ作りを受け継ぐ一方で、一澤帆布は手抜きが目立った。正確には、職人の技量が足りず、妥協したモノ作りをせざるを得なかった、ということなのだろう。マスコミの報道なんかより、品物こそがはるかに雄弁に真実を語っていたように思う。

この本が書かれたきっかけは、もちろんこのお家騒動であったろう。しかし実際の文章からは、お家騒動の話よりも、信三郎氏と職人さん達の真摯で手抜きのない、しかしあそびのあるモノ作りが印象に残る。タイトル通り、一澤信三郎さんのドキュメンタリーである。

モノ作りや商売の視点から見ても、信三郎氏のアプローチは実に興味深い。金具一つに至るまでこだわる姿勢はアップルのそれに通じるところがある。クチコミをベースとしたスモールビジネスに徹するのも、何となく今風である。しかし商売のテンポは、インターネットのスピード感とは無縁の、ゆったりとしたものだ。何十年経っても、やっぱり東山の地で同じようにいい鞄を作ってくれているに違いない。そんな気持ちにさせてくれる。実に京都らしい商売の仕方やなあ、と、京都出身の私は思うのである。

2010年5月6日木曜日

IKEA初体験

IKEA @ Port Island, Kobe

IKEAポートアイランド店に行ってきました。デザインや音楽を通して北欧、特にスウェーデンに関心を持っている私にとって、IKEAは一度行ってみたい店の一つでした。関西に戻ってきて、手軽に行けるようになったのは幸いでした。

今回の目的は、自宅のワークスペース用の机や椅子を揃えることでした。主な居室が畳からフロアリングに変わって、これまで使っていたロータイプのデスクが使いづらくなった上に、椅子が娘のお気に入りになってしまい、娘に分捕られてしまったのです。お蔭で今は、フロアリングに座布団を敷いて正座をしながらパソコンを使う有様です。どういうワークスペースにするか、ようやくアイデアが固まってきたので、いざIKEAへ! という次第でした。

印象は、というと、とにかくでかかった。建物も、ショールームも、レジも、レストランも、とにかく何もかも… アメリカタイプのショッピングセンターに慣れていれば当たり前なのかもしれませんけど。とにかくスペースが非常に広いので、展示も比較的ゆったりしてるように思いますし、入り口からレジにたどり着くまで結構時間がかかります。でもそのおかげで、なんとなく買い物がゆったりできました。ショッピングに行くと、あとでどーっと疲れが出るんですが、それが比較的なかったなあ、と。この後、三宮の繁華街に出たんですけど、時間的には短いのに、そっちのほうが疲れが大きかったです。このゆったり感は、たぶん、照明やBGMが抑えてあることも要因になっているように思います。

商品は豪華ではないけれど、ちゃんと作ってあるという感じを受けました。そういうところも北欧らしいなあ。インテリアもいいものがいろいろあったし、また来てみようと思いました。

もう一つ面白かったのが、最寄りのポートライナー南公園駅です。写真をご覧あれ。

dalahäst @ Port Liner, Kobe

どこの外国の駅でしょう? という感じの装飾なんですね。ちなみに写真の dalahäst というのは、スウェーデンに古くから伝わる装飾つきの馬(の玩具?)のことです。もっとも、下の説明も英語だから、大半の日本人は「きれいな装飾」くらいにしか思わないんでしょうねえ。文化交流を意識してるのであれば、日本語で説明を書いた方がよいのではないのかなあ。

ちなみに、買ったものは下記の構成です。居室が4畳半なので、なるべく重厚にならないようにして、圧迫感を出さないように心がけました。まあ、さんざん迷った割には割と普通の構成ですね…