{希哲15年4月8日の開発}{修正済み}{希哲15年4月8日の進捗時限}{希哲15年4月8日}{希哲15年4月8日の進捗}{埋め込み装体書}{進捗記録}{進捗時限記録}{進捗時限}{gzip 圧縮}...=}(16)
{共有用 URI}{埋め込み交度}{注意表示}{希哲15年3月14日の進捗時限}{希哲15年3月14日の進捗}{希哲15年3月14日}{Dex}{allow-scripts}{スクリプト禁止}{自輪郭}...=}(49)

{希哲15年3月14日4歩 K#F85E/A-E74C-7B1F}

デラング整備HTML タグ切り替えについて再検討

iframe 要素sandbox 属性を使い,自輪郭については allow-scripts を加えてスクリプトもある程度使えるようにし,他輪郭についてはスクリプト禁止しつつ注意表示をした上でタグを有効化出来る,という方向で考えていた。

ただ,自輪郭はこれでいいとして,他輪郭については用合いとして少し煩雑かという気もしていた。例えば,ちょっとしたタグが1つ使われているだけでも切り替えて見なければならない。読み手にとってはもちろん,柔軟表現のためにタグを使いたい書き手にとっても好ましい用合いではない。

そもそも HTML安全性についていちいち検査したくない,というのが動機だったが,Dex によってそれも大した問題ではなくなってきた。

他輪郭についても,ある程度制限はした上で安全なタグは普通に利用出来るように軌道修正することにした。


YouTubeTwitter 等の埋め込み交度にもある程度対応することにした。

これも検査が面倒という点で避けていたが,よく考えると,それらしい入力から最小限パラメーターだけ拾って,予め用意しておいたテンプレート置換して出力すれば安全性は容易に担保出来る。

共有用 URI の先頭に + を付けるだけという渡括記法もあった方が良いが,慣れない人は埋め込み交度を貼り付けてくる可能性が高い。

可読性を考えると,描出時に渡括記法に置換してしまうのが良さそうだ。

=}
{KNEST::}{HTML}=}(2)
{希哲15年3月12日の開発}{縦線}{C 部区込め言}{利用頻度}{HTML 込め言}{全角アスタリスク}{台録記法}{strong 要素}{em 要素}{希哲15年3月12日の進捗時限}...=}(60)

{希哲15年3月12日6歩 K#F85E/A-E74C-114F}

デラング整備記法選定で終了。

細々とした記法について進展


強調については,Markdown 式のアスタリスクを使った方法を採用する。

ただ,欧文和文斜体位置付けが異なるといった問題があるため,アスタリスク1つで em 要素による「軽い強調」,2つで strong 要素による「重い強調」とし,表示については場合とフォントによる,としておくことにした。斜体どころか太字に対応していないフォントもあるため,ここは割り切る

斜体を表現するために Org-Modeスラッシュによる記法導入も検討したが,台録記法などいくつか干渉する可能性があるため見送り

ここで,全角アスタリスク重い強調に使えるようにすることを思い付く。

もともと DIL 0.2 では半角・全角のアスタリスクで囲んだ文字列を strong 要素にする機能があり,和文中で適度に目立つという理由で個人的にはよく全角を使っていた。これなら自然に和文での斜体を避けられる。


下線については アンダースコアを使った方法が分かりやすいので Org-Mode 方式を採用する。


込め言については HTML 込め言を採用する。

Org-Mode のようにハッシュを使った記法は利用頻度に対して混同可能性が高い。

多少冗長でも明確な方がいいということで C 部区込め言の採用を検討したが,HTML が使えるのだから HTML 込め言十分だろう。


定表記法については,どの言語も整列の指定方法があまり美しくないので,独自記法を考える。

左寄せなら左縦線にくっつけ,右縦線との間に1つ以上のスペースを空ける,右寄せならその反対,中央寄せなら両側に1つ以上のスペースを空ける,という記法考案した。

{通注}{希哲15年3月5日の開発}{kbd 要素}{希哲15年3月5日の進捗時限}{希哲15年3月5日の進捗}{希哲15年3月5日}{@tip}{四辺}{2px}{1px}...=}(21)

{希哲15年3月5日5歩 K#F85E/A-E74C-1ACF}

通注 @tipHTML を使えるようにし,「[Ctrl] + ダブルクリック / [Enter] で描き出す」などと表示していたのを kbd 要素 で「Ctrl + ダブルクリック / Enter で描き出す」とした。

ただ,通注では一箇所でも 2px 以上のがあると無駄に注意を奪われるため,四辺 1px装体にし,文字の太さも標準にした。

ちょっとしたことだが直感的に読みやすくなり,少しお洒落な感じにもなったので満足した。

=}(1){所感}
{希哲15年2月28日の開発}{実装方針}{allow-scripts}{ブラウザ対応状況}{スクリプト禁止}{予約接頭子}{on- 属性}{自輪郭}{他輪郭}{HTML タグ切り替え}...=}(59)

{希哲15年2月28日2歩 K#F85E/A-E74C-D345}

少し忘れていたが,第三次宣伝攻勢を始める前にもう一つやっておくべきこととして,HTML タグ切り替えがあったため再検討この描出を見て必要性再認識した。

考えてみれば,HTML タグを使うつもりがなくても引用で入ってしまう可能性がある。誤った HTML放置されていれば用者にとってはもちろん SEO 上の障害にもなる。

基本的な方針はデライト公式で書いた通りだが,実装にあたっては若干の課題も残っていた。

他輪郭描写原則として HTML タグ無効化するとして,有効化した際にスクリプトだけ無効化するというのは意外に難しい

script 要素禁止するだけでは十分でなく,on- 属性iframe 要素等の抜け道も塞がなくてはならない。

on- 属性 に関しては,on で始まる属性を一律削除するか non- にでも置換してしまうことを考えたが,そもそも on- が HTML において予約接頭子なのかよく分からない。

いずれにせよ,HTML拡張性や近年の仕様変更の激しさを考えると,ブラックリスト的な検査は避けたい。

ここで iframe 要素sandbox 属性が使えることに気付いた。これならスクリプト禁止意図明示出来る。ブラウザ対応状況も悪くない。

スクリプトのみならず,iframe なら誤った HTML によってページ全体の領当てが影響を受けることも簡単に避けられる。自輪郭では allow-scripts を加えるだけでスクリプトを許可出来る。

いっそのこと全ての描写部砂房にして原則タグ有効に出来れば話は簡単だが,iframe 要素は色々な意味で重くSEO にも向かない。タグを悪用した迷惑行為フィッシング等の可能性が完全になくなるわけでもなく,iframe 以前にタグの処理は重いのでやはり原則無効化,有効化時のみ iframe に置換するというのが現実解だろう。

これで実装方針は固まった。実装自体は半日もあれば出来るだろう。