Perl-Text-Markdownとw3mでEC2上の簡易Markdownビューワーを作る

2017.03.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは植木和樹@上越妙高オフィスです。本日はPerlネタです。

githubとかで公開されているソフトウェアをサーバーにインストールする時は、セットアップドキュメントを読みながら進めるかと思います。この時ドキュメントがREADME.mdINSTALL.mdなどMarkdown形式で tarファイルに同梱されていることが多くあります。

ソースをサーバーにダウンロードするのとは別に、ドキュメント用にローカルにもダウンロードして・・・となると手間なので、ssh先のサーバーで直接Markdownを参照できるようにしてみたいと思います。

環境

  • Amazon Linux AMI release 2016.09
  • bash 4.2.46 (Amazon Linuxに標準でインストール済み)
  • Perl v5.16.3 (Amazon Linuxに標準でインストール済み)
  • Perl-Text-Markdown (MarkdownをHTMLに変換)
  • w3m (テキストベースWWWブラウザ)

セットアップ方法

まずは必要なものをyumでインストールします。

$ sudo yum install perl-Text-Markdown w3m

次にPerlのワンライナーとw3mを組み合わせて、MarkdownをHTMLに変換した後に表示させてみましょう。

$ perl -M'Text::Markdown qw(markdown)' -0pe '$_=markdown($_)' README.md | w3m -S -T text/html

Perlのコマンドラインオプションに-0を指定することで、ファイル全体を読み込んでから変換処理を行ないます。-lだと1行ずつ変換を行なうのでHTMLにした時に表示が崩れる場合があります。

毎回このコマンドを入力するのは手間なのでbash関数に登録しましょう。今回はMakdown Viewerということでmdvというコマンドにしてみました。 (バックスラッシュで3箇所ある$をエスケープしないと正しく設定されないのでご注意ください)

$ echo "function mdv() { perl -M'Text::Markdown qw(markdown)' -0pe '\$_=markdown(\$_)' \$@ | w3m -S -T text/html; }" >> ~/.bashrc
$ . ~/.bashrc
$ type mdv
mdv is a function
mdv ()
{
    perl -M'Text::Markdown qw(markdown)' -0pe '$_=markdown($_)' $@ | w3m -S -T text/html
}

使用方法

mdv コマンドに続けて、見たいMarkdownファイル名を指定すればOKです。

$ mdv README.md

20170323_md_viewer_001

まとめ

今回はPerlのワンライナーとw3mを組み合わせて、簡易Markdownビューワーを用意してみました。EC2にログイン後screenやtmuxコマンドで画面分割した状態で使うといいんじゃないかと思います。

mdvに渡すファイルがMarkdownでなければそのままテキストとして表示されますので、作業中にちょっとドキュメントを確認したい時などに便利かと思います。

なお Text::Markdownでは GitHub Flavored Markdown は正しく表示されないみたいですね。バッククォート3つでコマンドラインシンタックスを表示したい場合は、お好みのPerlモジュールに入れ替えてあげてください。

参考資料