Perlを使って簡易Markdownビューアを作ってみた

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

初めまして、岩崎(@gch0929)です。普段はRubyを書いています。Perl入学式のAdvent Calenderがある!ということで思い切って参加してみました。

昨日は@q_gomaさんの「サポーター入学式」でした。教える側に立って得られる経験も多いですよね。楽しく読ませてもらいました。

自分は去年のPerl入学式の卒業生で、@htk291さんと同じく入学式をきっかけにWebエンジニアに転職した中の一人です。入学式にはとってもお世話になりました。

今日はPerl入学式で教わった知識を生かして以前作ったMarkdownビューアの話をしたいと思います。

作ったもの

M2Hというものを作りました。GitHubからクローンしてインストールスクリプトを実行するとMarkdownファイルをHTMLに変換するm2hコマンドが使えるようになります。

git clone https://github.com/yuzoiwasaki/M2H
cd M2H; sh ./install.sh
m2h README.md

実行するとブラウザとコンソールにHTMLに変換されたファイルが表示されます。

なぜMarkdownビューアなのか

せっかくPerlを学んでいるのだから何か作ってみたかった、というのが作った理由です。車輪の再発明ではあるんですが、やはりコードを書かないと身につかないし、楽しくないので。あとはエディタとかの環境に依存しないやつがほしかったというのもあります。

コード解説

基本的にはText::Markdown::Discountというモジュールを使ってMarkdownをHTMLに変換し、ブラウザで出力しているだけです。モジュールが豊富にあるのはPerlを書く喜びの一つですね。

一箇所ややトリッキーな部分としては「\$/」を使ってファイルを一気に読み込むということをしています。

my $contents = do {
  local $/;
  open my ($fh2), '<', $file or die qq{Can't open Markdown file.};
  <$fh2>;
};

「\$/」は特別な変数で、ファイルを読み込む時のセパレータになる値(¥n)が入っています。こいつを「local \$/;」で局所的にundefとすることで一気に読み込むことができるわけですね。

まとめ

以上、拙作ツールの紹介でした。今ならもっとこうしたいと思うところがなきにしもあらずですが、「初心者は初心者なりのコードを書けばよい」というのがPerl文化の良さの一つであると思うので、とりあえずこのままにしておきます。

Perl入学式について

自分はもともとインフラエンジニアで、Perl入学式と初めて出会ったのは去年のYAPCでした。初めて来たYAPCは発表どれもレベル高いなーという印象しかなくて、なんだか場違いなところに来てしまったと思いました(笑)。その中でビギナー向けらしいPerl入学式をちらっと覗いてみたときに、@note103さんに声をかけられたことが今自分がここにいるきっかけです。

それからPerl入学式に定期的に参加するようになって、吉祥寺.pmなどの他のコミュニティにも行くようになりました。初心者LT全然オッケーだよ!と言ってくれる@magnolia_k_さんの存在もあり、恥ずかしながらほぼ毎回LTさせていただきました。GitHubにアカウント作ってWebアプリを作ったりしてるうちに、Webエンジニアに転職が決まりました。それからCPAN Authorになって、今こうしてAdvent Calenderを書いていると思うととても不思議な感じがします。

Perl入学式は本当に素晴らしくて、いつまでも続いてほしいと思いますね!サポーターになる受講生が多いのもわかる気がします。

さて、明日は自分の人生を変えた@note103さんで「卒業後のお勧め言語について」です。文才のある方なので楽しみですね!Rubyは出てくるのだろうか、、!?

この投稿は Perl入学式 Advent Calendar 201516日目の記事です。