オレオレMarkdown

わたしはMarkdownなんちゃらが大嫌い。
そもそも、Markdown記法など、みっともないし綺麗じゃない。宗教上の理由とか生理的嫌悪と同じ。異論は受けつけない。
というのが今回のエントリ。
Markdownという記法で記述されたものはHTMLに変換される…え? だったら最初っからHTMLで書けよ、だ。
シンプルな記号で文章構造(見出し、リスト、強調など)を簡単に表現でき、特別なソフトなしで読み書き可能で、HTMLへの変換も容易なため、議事録、ブログ、仕様書作成など幅広い用途で生産性が向上することです。
ということらしい。
嘘をついちゃいけない。Markdownを覚える学習コストもHTMLを覚える学習コストも大きな差はない。
HTMLは30年以上前に完成された記述方法で今でも使える。これが原点で原典。
仕様やタグが追加されたりしながらも、記述方法そのものは変わらない。
それに対して、MarkdownはHTMLの被せものなので、その書きかたに、いつどんな変更が入るかわからない。
どこかのプラットフォームの都合で使いものにならなくなることが十分考えられる。つまり、今、Markdownに学習コストをかけたところで無駄。
だいたい、テキストを書いていて半角記号が文書構造の一部を指定することになるなんて、見た目からして気持ち悪くないか?
なにその意味不明な「#」「**」「-」
「えぇ…っと、ここでこの半角記号書いちゃっても大丈夫なんだっけ」だよね。
文章、テキストを書いていて余計な気をつかう必要があるってどゆこと?
その点HTMLのタグは「<タグ開始>」テキスト「</タグ終了>」という記述で、タグに記入されている半角英数字は文書指示ですよ、というのが明確。
今日の予定
最優先は 特売の豚こま 忘れないように!
#今日の予定
最優先は **特売の豚こま** 忘れないように!
<h1>今日の予定</h1>
最優先は <strong>特売の豚こま</strong> 忘れないように!
文章、テキストを書いてる時は「書いている内容」に集中したいし、集中できるようになっていてしかるべき。
見た目についても、Markdownを使いこなしてレイアウトデザインも凝った表現ができたとして、それはそれでどうなんだ?
そんなに方眼紙エクセルが好きか?
レイアウトデザインで多彩な表現をしたいならHTMLとCSSを使うべき。
Markdownで書かれたテキストはそのままテキストとしても見える/読める/使える、というメリットがあるらしい。
日本語の文章で? それはない。くり返しになるけど、書いてる時の混乱と同じ。
読む時も「なにその「#」とか「**」とか? タイプミス? 誤植? 校正漏れ?」にしか見えないから使えない。
本文の余計なものを削除する場合。
HTMLのタグなら簡単なのに、Markdownの記号は本文中に紛れこむから面倒なだけ。
書く時も邪魔なら、読む時も邪魔なのがMarkdownというしかない。
↓ Markdownの問題点がわかりやすい
日本語でのマークアップ記法としては「青空文庫記法」が1998年ぐらいからあって、小説などの日本語テキストを書くには、たぶんこれが最強。
https://www.aozora.gr.jp/aozora-manual/index-input.html
日本語の文章に混じりこんでいて「注釈」=意味として成立していて読める。Markdownの半角記号類より違和感も少ない。
てことで? このブログ『ひまつぶし雑記帖』で、入力されたテキストを適当に変換するオレオレMarkdown。
入力されたHTMLタグは素通し。
(フォームデータの入力経路にちょっとした振り分けを仕込んでいて、振り分けられた側の入力データは洗浄してる。そもそもエントリ入力はログイン状態が前提なのでセキュティ的に特に問題はない)
ルールは簡単で
「入力されたテキストは一行ごと(改行ごと)に「pタグ」で包まれる」
だけ。
このルールを適用されると困るものは一時的に退避して復元する。
素通しで入力されるHTMLタグなんかがこの対象。
$to_hexでタグ文字列を16進数に変換して
$to_strで元のタグ文字列に戻す
my $to_hex = sub{ my $s = shift;
return unpack("h*", Encode::encode('utf8', $s));};
my $to_str = sub{ my $s = shift;
return Encode::decode('utf8', pack("h*", $s));};タグを抽出して退避
$flg->{'html-tag'} = ( $body =~ s!<([^>\p{Han}\p{Hiragana}\p{Katakana}]+)>!sprintf(qq{_LT_%s_GT_},$to_hex->($1))!eg );退避されたタグを抽出して復元
if( $flg->{'html-tag'} ){
$body =~ s!_LT_([0-9a-f]+)_GT_!sprintf(qq{<%s>},$to_str->($1))!eg;
}最優先は <strong>特売の豚こま</strong> 忘れないように!
↓タグを退避 ↑タグを復元
最優先は _LT_374727f6e676_GT_特売の豚こま_LT_f2374727f6e676_GT_ 忘れないように!
結局HTMLで書くのが早いし確実。
Markdownで解決/実現できない表示についての対処方法が「生のHTMLを書く」となっているのは何の冗談なんだか。
まずHTMLありき。Markdownが滅んでもHTMLが滅ぶことはない。
とはいえ。
マークアップがどーしたとか言ったところで、肝心の文章がつまらないんじゃしょうがないですね。すみません。


