今日も知らない街を歩く

雑記に近い形でちまちま書いていきます。

一番最初にすべきことは、道具を磨くこと -書評「Emacs実践入門 思考を直感的にコード化し、開発を加速する」

ようやく「emacs実践入門」読了しました。



Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

文中の設定を写経しながら読みました。ちょうどMacを買ったばかりで、Macの操作やコマンドなどに不慣れな事もあって、読了までかなり時間がかかりました。しかし、写経した甲斐がありましたし、単にEmacsの使い方を学ぶ以上の事を得る事ができたと感じています。

まさに「実践的」な本

本書の目次は以下の通り。

本書に寄せて
はじめに・謝辞
第1章.Emacsの世界にようこそ
第2章.インストール・設定ファイルと画面の構成
第3章.基本的な操作
第4章.設定ファイルの管理方法
第5章.本体の設定
第6章.テキスト編集をさらに効率化する拡張機能
第7章.開発をさらに効率化する拡張機能
Appendix.最新情報を入手するには

第2章と第3章はいわゆる導入部。インストールや有名なキーバインドは、Emacsチュートリアルやネット上にある情報でも補完は効くでしょう。しかし、タイトルに「実践」と銘打つだけあって、うまく使うためのTipsが散りばめられています。最も素晴らしいと思ったのは、3章冒頭の「困った時はC-gでキャンセル」。地味ですがとても助かりました。C-g自体はググれば出てくる有名なキーバインドですが、そもそも初心者はそういう操作があるという発想も無いままチュートリアルなどを進め、キーバインドをミスしてパニクるので(経験談)、これを冒頭に持ってくるという気遣いは素晴らしいです。
ある程度操作を覚え、さてEmacsをどうやって使いこなせばいいのか、という段階まで来たところで第4章以降から設定や拡張機能の解説が本格的に始まります。設定を書くinit.elはどこに置くべきか、各プログラミング言語ごとの拡張機能の紹介、著者のオススメの設定など、これを一通り設定すれば開発作業を行う上で不自由の無いEmacsの環境ができるんじゃないかと思えます。本書のサポートページに紹介された機能も含めた設定ファイルがあるので、これをダウンロードして取り込んでもいいでしょう。*1

エラーが出ると素人は固まりパニクる

ただ、全くの初心者が本書に従って設定をすればうまく行くのか、と言えばそんなことは無いと思います。設定がうまく行くときは問題ありません。問題があるのは、設定がうまく行かなかったときです。何も知らない素人は、エラーが発生した時どうやって切り分ければいいのかわからないからです。例えば単純なタイプミスであれば自力でエラーの原因にたどり着けるかもしれませんが、S式を実行してエラーが発生し、いきなりデバッグバッファが出てきたらおそらくどうしていいか分からなくなります*2デバッグモードの解説は第3章にある事はあるのですが、デバッグモードの抜け方やエラーメッセージでググるなど「エラーが起こった場合の具体的な対処法」はもう少し丁寧に書いて欲しかったです。特に、第5章以降の設定を追加する段になると、タイプミス以外の原因も増えてくる可能性が高いため、どうして動かないのか頭を抱える人は少なくないでしょう。「動かない時にどうすればいいか」は、Emacsに限らず何かを使いこなしていく上で必要になるスキルですが、それだけに「実践」というタイトルであれば詳しい記載が欲しい、と感じました。*3

無限の可能性のあるツール

実のところ、本書を買おうと思ったきっかけは、著者の大竹さんが、僕がいつも利用しているオンライン英会話「ラングリッチ」の人*4だと知り興味を持った、という理由です。なので、積極的にEmacsを使いたかったから、という訳ではありません。本書を買ったときは、Vimチュートリアルをやってたくらいです。しかし、本書を読んでいくうちに僕はEmacsを使いたくなってきていました。
前述したように「エラーの対処法はもっと丁寧に書いて欲しい」など、本書に対して不満が無い訳ではありません。しかし、その事が本書が良書である事を示していると僕は考えています。なぜなら、そういった不満が出るくらい、僕は何とかしてEmacsを使いたい!と思っているからです。もし本書がただEmacsを解説するだけの本だったら、僕は最後まで読まずに途中で挫折しただろうし、こうやって書評を書く事は無かったでしょう。本書は余すところなくEmacsの魅力を伝えています*5
ちなみにこの書評は、途中までEmacsで書いてました。「途中まで」というのは、はてなの下書き保存で書いた方が早いからです。EmacsのC-uの繰り返し機能や各種カーソル移動はとても便利なのですが、google日本語入力が使えないため文章を書くスピードは今のところは劣ります。しかし、あくまで「今のところは」です。少しググったところ、Emacsgoogle日本語入力を使うための設定があるそうです*6。不便な箇所があってもそれを改善するためのツールが揃っている、というのはとても魅力的に見えます。これはEmacsに限った話ではないでしょうが、この事をもっともよく実感できるのはEmacsです。今まで特に深く考えずにEclipseなどのIDEを使っていましたが、もう少し自分が使っているツールや道具に対して不満な点は無いか、それを改善する事はできないのか、という事は改めて考え直さないとなあと思いました*7


1970年代に開発が始まったEmacsは、たしかに設計は古く、ところどころにダサい点も見受けられますが、それでもなお、無限の可能性があります。」(「本書に寄せて」より)


まとめ:身の回りの道具を見直すきっかけになる良書

本書を読んだことで、(図らずしも)コンピューターの話に限らず、これまで自分が使っていたあらゆる「道具」を見直すきっかけになりました。本書はプログラマーなどIT関係の職に就いている方に特に薦めたい本です。Emacsを理解して使うのにとても効果的な本ですし、仮に結果としてEmacsを使わないという結論が出たとしても、自分の使っているテキストエディタIDEなど、何気なく使っているツールなどを見直すきっかけになると考えているからです。
余談ですが、ラングリッチ東京オフィスが設立されるに伴って著者の大竹さんも東京に越されたそうです。というわけで、Emacs勉強会が開催されるのを心待ちにしながらちまちまEmacsをいじることにします。

※反応が知りたいので、はてブやRTなどで感想をいただけるとありがたいです。

それでは、また。

*1:ただ、Emacs初心者の方はやはり写経しながら覚えていった方が良いでしょう。事前に拡張機能をインストールしなければならない、というのもありますが、一つ一つの命令の意味を覚えるためにも。

*2:賢明な方ならお気づきだと思いますが、ここの「何も知らない素人」は私自身のことを指しています。

*3:ちなみに、どうしてもわからなくて、著者の大竹さんにtwitterで質問したのですが、回答をいただきとても助かりました。いずれも凡ミスだったのは情けない話ですが……。

*4:正確には「最高技術責任者」です。

*5:その意味で、本書のコアな部分は、まつもとゆきひろさんの「本書に寄せて」と、著者の「はじめに」だと思います。

*6:こういう時、自分でElispを書く事ができたらいいのですが……。まだまだEmacsを使いこなすまでの道は遠いです。

*7:もちろんEclipseはとても便利なので、使うのを止める気は全くありません。