Hatena::ブログ(Diary)

naoyaのはてなダイアリー

March 03, 2013

Markdown to Inao

tl;dr: markdown2inao.pl は今後 https://github.com/naoya/md2inao.pl で管理していくからよろしくオナシャス。Web 版 http://md2inao.bloghackers.net/ も用意したぜ。

"inao"記法

技術評論者の WEB+DB PRESS に原稿を書いたことのある人々には密かに知られていた "inao" と呼ばれているテキストフォーマットがあります。

■見出し
 ここが本文
・リスト1
・リスト2

こんな感じの、ある程度ヒューマンリーダブルな全角文字を主体としたマークアップ。WEB+DB PRESS編集部ではこの記法から InDesign で DTP に変換するというようなことを長らくやっていたらしい。つまり、このフォーマットで書いておくとそこから著者校正用の PDF になる。

markdown2inao.pl

けれども全角ベースのフォーマットはあまりデベロッパーフレンドリーではない感じなので、Markdown で書きたいという人たちが markdown2inao.pl という名前のスクリプトで Markdown から inao フォーマットに変換していた。これが gist に登録されていて、fork されたりなんだり方々で使われていたようです。

なんて blog まであった。

このスクリプトを通すと

# Hello, World

* list 1
* list 2

これが

■Hello, World
・list 1
・list 2

こうなる。*1

ちなみに @yohei さんは漢なので『Webを支える技術』を全編 inao 直打ちで書いてたそうな・・・。

github/naoya/md2inao.pl

自分は過去の WEB+DB 向けの原稿には、特に決まった記法は使っておらず、編集さんから見てここが見出しでここがリストってわかる程度の目印をつけて送っていた。ほとんどの人はおそらくそういうやり方をしていて、後日編集者さんが手で inao フォーマットへの変換を行っていたのではないかと思われます。

さて、ちょっと今回また WEB+DB PRESS にお世話になりそうだし、まあ今原稿書くなら git で管理したいし Markdown が良いよねと markdown2inao.pl を拝借したものの、自分が使った Markdown の記法の一部をサポートしていなかった。なんで改修しようと思ったけどテストがない。

この先のことを考えるとこのままだと破綻するなと思ったので、以下に md2inao としてレポジトリを作りました。

で、テストしやすいように Text::Md2Inao モジュールにリファクタリングして、テストを追加したでござる。件の未サポート記法にも対応済み。案の定、テスト書きながら動作を試していたところバグを発見したのでそれも修正しておいた。

Web版 md2inao

これですっきりと思って編集さんに試してみてもらおうとしたら、使ってるモジュールの関係でうまく実行できないらしい。それもそのはず先方の実行環境は ActivePerl だった。エンジニアはともかく、編集さんのことを考えると環境選ばず実行できたほうがいいかと思って Web 版を作りました。

Text::Md2Inao の最新版をデプロイ済みです。

今後 markdown2inao.pl あらため md2inao.pl をご利用の方で何かしらの修正が必要になった著者の皆様方は issues への登録もしくは pull request でお願いいたします。

えー、そんなわけでだいぶニッチですが Markdown から inao フォーマットへの変換でした。なお、なぜ "inao" なのかというと編集さんの名前が「稲尾 (イナオ)」だからです。世界へはばたけイナオ!

参考文献

*1:何がどうなるかの詳細は https://github.com/naoya/md2inao.pl/blob/master/t/05_basic_synatx.t のテストを見るとわかると思います