ジンジャー研究室

長めのつぶやき。難しいことは書きません。

Elm 本書きました

f:id:jinjor:20190225233153p:plain

Elm の本を書いていました。

基礎からわかる Elm

実は 2017 年時点で Amazon に存在していたのですが「出した直後に Elm がバージョンアップして紙くずになりました」という事態をどうしても避けたかったので 0.19 が出るのをひたすら待ってました。0.18 から半年くらいで出るだろうと踏んでいたんですが、蓋を開けたら1年半経ってました。実際バージョンアップで elm-makeelm make に、 elm-package.jsonelm.json に、 elm-lang/*elm/* に、toStringDebug.toStringString.fromInt に、Html.programBrowser.element に、と色々変わってしまったので、あの時点で出していたら本当に紙くずになってましたね。

内容

Elm は公式ガイドがかなりよくまとまっいるし今は日本語訳もある中で、紙の本に何を書いたらメリットが出るかというのはものすごく悩んだんですが、逆に公式がすっ飛ばしている部分をギチギチに埋めていくことにしました。特に ML 系の文法とか型に慣れていないと色々戸惑うことが多いと思っていて、type MyType = Foo | Bar と書けば「この Foo という型はどこに定義されてるんですか」みたいな話になるし、 onInput Input みたいにさらっと部分適用するし、「Html msgHtml Msg の違いは何ですか?」とかも FAQ ですね。Elm は最初とっつきやすい割に途中から「型を見て全てを理解しろ」というノリになってくるところがあって、そこで振り落とされると「サンプルコードがないからわからない」状態になって死にます。なので、この本の目標としては関数型言語の初心者が API ドキュメントの型をスラスラ読めるようになること」です。型が読めれば自力で前に進むことができます。SPA 設計とかについても一応書いたんですが基礎力がないと結局応用できなくて死んでしまうので、最初の方ほど重要度が高いです。ぶっちゃけ Elm やり込んでる人にとっては当たり前のことしか書いてないですが。

あとは紙の本の場合は「それ自身で情報が完結する(self contained)」というところメリットを出さないといけないと思っていて、ネットだとどうしても公式サイトから GitHub 、Qiita 、 Slack と情報が散らばってしまうところを一冊読めば必要な情報は全部網羅できる状態にしたつもりです。 最後には @ruicc @arowM_ の両氏に分担して内容を確認してもらいました。ほとんど時間なかったんですが、的確な指摘をたくさんもらったのでかなり助かりました。🙏

感想

ええと正直ですね、めちゃくちゃしんどかったです。技術書の出版は大したお金にもならないのは知っていたのでそれは別にいいんですが、とにかく時間が削られるので、週末がくるたびに「原稿進めないと」と鬱になっていたし、その間ほかにやりたいことが何1つ進められなくて、それでも勉強になるならいいんですが自分の知ってることを吐き出してるだけなので、本当に割に合わない仕事ですねこれ。 まあこうして形になってみると「本っぽい!本当に技術書っぽい!」という感慨はあるんですが、中を読むと辛い思い出が蘇りそうなので未だに開けずにいます。

でも中身は多分最高なので、ぜひ読んでくださいね!