このウェブサイトについての技術文書

この文書の役割は,このサイトの管理者のためのメモ書きとしてが 71.4% です。

主に,サイト全体で働いているコンテントネゴシエーションの仕組みとユーザーナビゲーションの使い方について書いています。

アウトライン

アウトラインナビゲーションを3種類実装。どのタイプでも,項目をクリックすればその箇所へ飛ぶ(ただし id が付けられてない見出しもあるかも,ごめん)。

ツリー展開型

ページのアウトラインをツリー型で一覧表示。 [+] と [-] をクリックすることによって,ツリーの枝の 広げる / 畳む ができる。 Windows のエクスプローラなどのツリー型 UI と同様の使用感。

x キーを押すことにより,アウトラインナビゲーションの表示/非表示が切り替えられる。 また,アウトラインナビゲーション右上の [x] をクリックしても非表示にできる。

階層メニュー型

ページのアウトラインのうち最上位のものが一覧され, その下位のアウトライン構成は各項目へカーソルを持っていったときにポップアップメニューとして表示される。

「ツリー展開型」と同様,x キーでの表示/非表示の切り替え,[x] のクリックでの非表示ができる。

階層メニュー型(スクリプトなし)

上記「階層メニュー型」と同じメニュー型だが,スクリプトを使わず,アウトライン生成をサーバ側で行っている。 従ってスクリプトを利用しない設定にしていてもアウトラインナビゲーションが利用可能。

x キーでの表示/非表示の切り替えはできない。[x] のクリックは「アウトラインナビなし」ページへのリンクになっている。

なし
アウトラインナビゲーションを伴わないコンテントを得ることもできる。 ただし,長いページにおける閲覧上の利便性はよくない。

ブラウザのスクロールが重くて困るようなら,アウトラインナビゲーションを一時的にでも非表示にするとよい。

ページコンテントの一番上と一番下にナビゲーションバーが配置される。 インデクスページや他の版などへのリンクが並ぶ。これは,そのページの link 要素の情報を反映している。

次のような種類が用意されている:

文書

XHTML

文書リソースは,特殊な事情がない限り, HTML4.01, XHTML1.1, ISO-HTML (ISO/IEC 15445:2000), HTML5, XHTML5 の 5 版が提供可能。 デフォルトでどの版が得られるかは,コンテントネゴシエーションの対象になっている。 たいていの現代的なブラウザでは XHTML1.1 版。

特殊な事情とは,例えば,ISO-HTML ではスクリプトが使用できないため,スクリプトを使ったウェブ UI 関係は動作しない。

文書によってはDocBook, PDF の 2 版も提供され 7 種対応。

Internet Explorer に対しては特別な XHTML 文書を返す。

Internet Explorer 用の XHTML の相違点
通常IE
XML宣言ありなし
スタイルシートxml-stylesheet処理命令link要素
XML名前空間埋め込み要素にデフォルト名前空間ルート要素で名前空間を指定
スクリプトのtypeapplication/ecmascript, application/javascripttext/ecmascript, text/javascript
スクリプトのdeferdefer, async を適宜使用defer の順序が保証されないため async の場合以外は defer を削除

数式

数式表現のため MathML を使用。 Gecko 系ブラウザ (Firefox, Netscape, SeaMonkey, Camino, etc.) ならば, 数式用フォント をインストールされたし。 Internet Explorer ならば,MathPlayer プラグインをインストールすれば表示可。

対応していないブラウザ向けには次の代替策が用意されている。

ベクターグラフィックス

コンテンツ用のグラフィックスは基本的に SVG を使用。 XHTML に埋め込んでいる。 埋め込みに対応していない UA 向けに,object 要素による外部 SVG ファイルの参照も使用。

ベクターグラフィックス

スタイル

CSS 2.1 を用いてページスタイルを調整。 現状,一部に少しだけ各ブラウザ専用の記述を入れてある (これはコンテントネゴシエーションによって切り替わる)。

代替スタイルシートを複数用意。

メタ情報

セマンティックウェブの実験をかねて,DCRDF にもとづいたメタ情報記述を試験的に導入。

http://purl.org/net/ns/metaprof を利用。

コンテントネゴシエーション

このサイトで提供されるリソース(特に文書リソース)については基本的にコンテントネゴシエーションが行われる。 使用している次元は以下の通り。

文書のデフォルトが XHTML であるか HTML であるかも,コンテントネゴシエーションで決まる。

クエリによる強制

コンテントネゴシエーションに使用される次元に関して対応するクエリを付加することで, 強制的に特定の様式のドキュメントを得ることができる。 例えば,http://x-n.io/technical-note について http://x-n.io/technical-note?lang=en とすることで 英語版の文書を得ることができる(もし提供されていれば,の話。実際,このページの英語版はまだ提供されていてない)。

中でも,ドキュメントタイプの指定だけは特殊な扱いが許されており,クエリだけではなく拡張子の指定を理解する。 例えば,http://x-n.io/technical-note について http://x-n.io/technical-note.html とすることで HTML版の文書を得ることができる。http://x-n.io/technical-note.xhtml とすると強制的にXHTML版になる。

以下,クエリの項目名と可能な値の一覧。

doctype

ドキュメントタイプを指定。

可能な値
説明
xhtmlXHTML1.1文書
htmlHTML4.01文書
isohtmlISO-HTML文書
html5HTML5文書
xhtml5XHTML5文書
mime

文書の MIME タイプ。これに指定した値はブラウザが渡す Accept を上書きする。

可能な値
HTTP の Accept ヘッダの仕様に準拠した MIME 指定。
lang

文書の言語。これに指定した値はブラウザが渡す Accept-Language を上書きする。

可能な値
HTTP の Accept-Language ヘッダの仕様に準拠
math

数式の表現方法を指定。

設定値
主値説明
b:mathmlMathML
b:mathtexmathTeX
b:mimetexmimeTeX
b:asciimathASCIIMathML ソース
b:texTeX ソース
b:fallbackfallback (スクリプトで UA の機能を判断して切り替え)
b:googleGoogle Chart API
オプション説明
a:asciimathalt に ASCIIMathML
a:texalt に TeX
t:asciimathtitle に ASCIIMathML
t:textitle に TeX
c:asciimathコメント に ASCIIMathML
c:texコメント に TeX
プリセット説明
mathmlMathML with ASCIIMathML (annotation)
mathtexmathTeX with ASCIIMathML (alt)
mimetexmimeTeX with ASCIIMathML (alt)
mathjaxMathJax ( experimental *1 )
googleGoogle Chart API ( experimental *2 )

*1 数式の量が多い一部のページでは MathJax での数式表示は重すぎてブラウザが止まるかもしれませんのでご注意下さい.

*2 Google Chart API での数式表示は, 入力長の制限によって一部の数式が表示できません.

outline

アウトライン要素の表示形式を指定。

設定値
説明
noneなし
fold折りたたみツリー型
menuメニュー型
cssメニュー型スクリプトなし

使用例

http://ofmind.net/?lang=en-US

http://ofmind.net/doc/anova-note?math=mathml

http://ofmind.net/?doctype=isohtml&outline=css

引継ぎ

クエリによってネゴシエーションの値を明示的に指定し強制した場合, サイト内の他のページへのリンクにもそれが反映され,強制指定が自動的に引き継がれる。 例えば,一度 ?outline=menu を指定したページを開くと,そのページから他のサイト内ページをたどって行ってもずっと ?outline=menu が付いてくる。

ただし,クッキーなどの使用は避けているため,他のサイトへの移動してからリンクをたどることでこのサイトへ戻ってきても強制指定は持続していない。

その他

その他使用している特徴的な技術。