2007-03-18

Markdown と Textile になんとなく感じたこと

Textile は最初見たとき「なんじゃこりゃ HTML の再発明じゃないか」と思ったが、実際に Markdown で Web ページを書き始めると

  • ID が指定できない
  • ブロック要素を定義できない

など、不便な点がいろいろ出てくる。細かな属性を書きたいわけではないが、div が書けて ID が指定できるくらいの機能がないとさすがに Web ページ全体(サイト全体にあらず)を記述するには力不足を感じる。日記のエントリくらいなら heading が 3つくらい使えればいいけど、ある程度の長さになると意味のある id を付与して URL としても意味を持たせたいし、意味の構造ごとに div で囲めると、デザインのコントロールなどの効果を後から足すことができて嬉しかったりする。

じゃあ Texile かというと、やっぱどーも HTML のまんまな感じがして、例えば普通の人にこれを使ってコンテンツを作ってくれとはさすがに言えない気がする。Markdown くらいならなんとかなると思うけど。バランス的には RedCloth [Textile Humane Web Text for Ruby] は結構好きかも。

======

------

で見出しを書きつつ、

| セル | セル |
| セル | セル |

でテーブルを書けるのはなかなかいい感じ。

ちなみに WYSIWYG で HTML を直接編集させた方がよいという考えもあるかもしれないけど、デザイン的な統一感を維持しつつ、コンテンツの更新コストだけを下げようと思ったときにその方法はあんまり採用したくない。各自が自由気ままに書くためには WYSIWYG の方がいいかもしれないけど、コンテンツを更新しなければいけないというルールが存在する場合は、シンプルで守りやすい制約を与えた方が結果として良い方向に働くことは多いし、コンバータを介してコンテンツを生成した方が HTML は壊れにくい。

話がそれた。

まーとにかくこれらのフォーマットに何らかの不足を感じる人はやはり居るらしく、すでに Markdown にも Textile にもあれこれ拡張バージョンが存在している。特に My Wandering Wiki: MultiMarkdown なんてのはあーやっぱりこういうの欲しくなるよね、と思ってしまった。何がってメタデータを含めることができると、生の Markdown ファイルをデータとしてそのまま利用しながら CMS としてメタデータを活用できるんで、例えば表示期間の制御とか認証関係とか作り込みやすくなるから。まぁ自分がやるなら Markdown 側からは無視される領域ってのを作ってやるだけにしておくと思うけど。そうしたらフォーマッタとメタデータを利用する CMS の部分を分離しやすくなるんで。CMS の側がヘッダを削除してから Markdown に渡す、でもいいんだけど。どっちにしろ Markdown そのものを拡張しちゃうとちょっといじりにくくなるんじゃないかなーと思ったりしている。実際にアプリ書いてないから外れてるかもしんないけど。

今のところの結論としては、自分が使うなら RedCloth、サイトやページの一部をなんにも知らない人が更新するために使うなら Markdown がいいかな。

あと面白いと思ったのは Pandoc. Haskell ってところがネックになるかもしれないけど、Markdown で書いて S5 スライドに変換できるのは便利そげ。まぁ実際にはプレゼンの機会なんて今はもう全然ないんだけど、S5 スライドがサクっと作れるとネタ作りとかにも便利そう。というか S5 いいなーと思いつつ HTML 直書きはもう勘弁と思っていたからこれいいかな、というのが本音。

なんか、「まぁ」が多いよね。まぁいっか。

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm