ふんわりした生活

本を読んだり仕事でやってみたことなどの日常から、ふんわりと気づきなどを書いていきます

こんな本が書きたい:すごいHaskellたのしく学ぼう!

f:id:m0t0k1m0t0k1:20150907095428j:plain

まだ土曜日に届いたばかりなので、ほとんど中身を読んでいません。 しかし、こういう感じに書きたいなーと思ったのでそのままの勢いでこの投稿をしています。

何の本なのか

ご存知の方もいらっしゃるとおもうのですが、これは純粋関数型プログラミング言語Haskell(はすける)についての入門書です。3年くらい前に出版されてまして、当時はプログラマのみなさんが「すごいH本」と呼んでこぞって購入されていたのを記憶していました。

でもですね、「純粋関数型」とか言われましても意味わからないですし縁がないだろうと思ってわたしは買いませんでした。

心境の変化

ではなぜに入手したのか、なんですが実はPowerShell電子書籍を書いていまして。
PowerShellがなんなんだという方もいらっしゃるかもしれませんので簡単に言いますと、Windowsを操作するための命令を集めたもの、なんです。 この電子書籍を書いているのに、どうしてHaskell?と思うかもしれません。

それは、電子書籍を書くときに採用している手法が最終的にHaskellに結びつくからです。

原稿自体はマークダウンという、このはてなブログでも使うことができる書式で執筆しています。 しかしこれでは電子書籍(ePub3という形式)にはすることができません。 ここで登場するのがPandocというドキュメント形式を変換してくれるコンバータツールです。

このPandocというツールを使うにはググればわかるのですが、Haskellの環境が必要になります。 つまりPandocはHaskellで作られたプログラムだということです。

とりあえずPowerShellHaskellは繋がりましたが、それでも今回話題にしている書籍の出る幕はありません。 なぜなら、Pandocには日本語に翻訳されたユーザーズガイドがあるからです。 ほぼ、困ることはありません。

しかしわたしは困ってしまったのでその結果としてHaskellに手を染めることにしました。

Haskellに手を染める理由

書籍の中にはPowerShellソースコードを記載していて、これを構文がわかりやすいようにハイライトしたいと思っていました。 しかし、Pandocのユーザーズガイドを見て愕然としました。 ハイライト機能はあるものの、その対象プログラミング言語PowerShellは含まれていないのです。

わたしが書いているPowerShellというのは正式には「Windows PowerShell」というもので、Windowsでしか使うことができません。 そのせいなのかはわかりませんが、Windowsで動作しそうなVisualBasicVBScript、バッチファイル(*.bat)についても同様に対象には含まれていませんでした。 C#Microsoftが開発したプログラミング言語ですが、いまではLinux環境でも動作するからか、これは対象になっていました。

そこで、わたしは当初PowerShellをハイライトすることができるツールを探し出してそれを使っていました。 しかし1冊書いてみてわかったのですが、数10行ありそうなコード片ならまだしも1行程度のコードと呼べないようなものまでひとつずつ別のファイルに書いておいてハイライトし、そのツールスタイルシートを使ってハイライトするという作業は俺はアホかと思わざるを得ないような単調なものでした。

そこでPandocのハイライト機構について調べ始めたのです。 幸いなことにPandocはオープンソースです。また、ハイライトを行っている機能も別のツールhighlighting-kateというものだとウェブ上の記事でわかったのですぐに特定することができました。

そして、ついにPowerShellの構文ハイライトを行うことができるようになったのです。 ですが。

もやもやが消えない

highlighting-kateのGithubリポジトリから取得したコードのうち、構文定義をしているファイルを更新してPowerShellのハイライトをすることができるようになりました。 でも、なにかもやもやが消えません。

そうです。

これがなんなのか、深く理解することなくやってしまっているからです。

そこでもやもやを消したい、きちんと理解してハイライト機構を使いこなしたいと思うようになったのです。

そんななか、Haskellを勉強するにあたりTwitterのタイムラインに流れていた書籍のことを思い出しました。 すごいH本のことです。

中身はまだ詳しく読んでいませんが、なんだか入門書っぽくなくてそこまで敷居が高く感じられませんでした。 わたしがWindows PowerShell電子書籍を書き始めたのも敷居がそれほど高くないPowerShellの本が欲しかったからでした。

大いに参考にさせていただこうと思っています。

入門の敷居が低いとは

電子書籍を書くようになって、どういうのが敷居の低さにつながるのか考え続けています。 ある入門書ではできるだけ情報量を詰め込んでいますが、これは逆に初学者には厳しいですよね。 よくAmazonなどのレビューを見ても似たようなことを書かれているなーと思います。

逆に図解していて大丈夫!怖くないよ!というテイストの入門書ではわかったような気になるだけではないかと思うのが個人の見解です。というのも、それだと有名な「Hello World」をコンピュータに強要するのとさほど違いがないのではないかと思うからです。

わかったような気になった人が次に「よーし、なんか作るぞ」となって挫折するのか、よくわからないままウェブから探してきてコピペするのか(わたしはこれかな?)。これだと門をくぐっただけではないかと。

すごいH本は難しい用語も出てきますが、「まぁこういうことよ」とフランクに説明してくれているので「そっかー」となって気になりません。 こういうタッチで書けるようになりたいな、と思っています。 こうすると、最優先で学ぶべき言語は日本語なのかもしれませんが。

最後に

Haskellのこの本は、一般の方にはオススメしません。 どう考えても人生の間にHaskellに出くわす機会はほとんどないと思います。 興味のある方は読んでみてもいいと思いますが、プログラミングをしない方はお金と時間の無駄なのでゲームのアイテムに課金してたほうが有意義だと思います。

わたしはこれを学んだら再びF#とScalaに再入門したいと思っています。 あまりにも他のものとかけ離れているので、挫折したことがそれぞれ2度ずつくらいあるからです。

そして日本語ももっと学ばなければと思うのでした。