[改訂新版]Emacs実践入門を執筆しました。

[改訂新版]Emacs実践入門

いよいよ夏が終り、本格的な秋の始まりを感じだしてきた今日この頃ですが、みなさんいかがお過しでしょうか?

気がつけば1年ほどブログを書いておりませんでしたが、この度、9月22日に僕の3冊目の自著となる[改訂新版]Emacs実践入門が発売されたので、久しぶりのブログ更新となります。

昨年はAtom実践入門を上梓しておりますので、これで自身初の2年連続の出版となります。今回も色々と大変だったのですが、それ以上に今回もお世話になった技術評論社の池田さんは、おそらく僕以上のご苦労があったのではないかと思いますので、改めてお礼申し上げます。

なお、電子版をご希望の方は、PDF/EPUB形式がGihyo Digital Publishingから購入できます。

Emacs実践入門の改訂は約束された未来でした。

さて、昨年僕がAtom実践入門を出版したとき、多くの人から驚きの声を聞きました。そして、おそらく多くの人が、僕が再びEmacsの本を書いているとは思っていなかったのではないかと思います。

実を申せば、Atom実践入門を執筆するとき、Emacs実践入門の改訂はすでに約束された未来だったのです。そして、AtomEmacsという順番はEmacsのバージョンアップのタイミングによって、決められていたのです。

メジャーバージョン対応への思い。

Emacs実践入門の改訂を行ないましょうという企画が持ち上がったタイミングは、たしか2015年の初頭でした。その時のEmacsのバージョンは24.4で、25のリリースが近付いているという噂がありました(実際にその後リリースされたのは24.5で、25.1がリリースされたのは2016年7月でした。)。

以前、執筆したときはの対応バージョンは23.4で、その後、わりとすぐに24.1がリリースされ、24の目玉機能であるELPAについて触れていたものの個人的はメジャーバージョンが変わってしまい、書籍の宿命とはいえ、少しだけ悔しい気持ちがありました。

そのため、次は少しでも長い期間メジャーバージョンに対応したいという思いがあり、まず、Atom実践入門を執筆し、その後、リリースされているであろう25に対応した形でEmacs実践入門を改訂したいと申し出ました(しかし、実際には執筆を開始したときにはまだリリースされていませんでした。)。

そして紆余曲折を経て、Emacs 25.1がリリースされ、万全の体制で25に対応した形で改訂を行なったのが本書になります。

22年前の脆弱性により、発売直前にマイナーバージョンが上がる。

そんなこんなで執筆が完了し、2017年4月にリリースされた25.2でバージョンをフィックスし、校正などもすべて終えて印刷所への入稿が終った9月11日、その事件は起きました。なんと、143日で25.3がリリースされてしまったのです。しかも、その理由が22年からあった脆弱性が原因だという話です。

Emacs Release Date Diff

書籍あるあるな出来事とは言え、何とも神の悪戯のような出来事でしたが、気を取り直し、発売までにEmacs25.3でも本書の内容がすべて動作することを確認して、サポートページの補足情報での告知を行なってもらいました。

ちなみに、Emacs実践入門の初版が出たあとにリリースされた24.1も、リリースまで133日とかなり早く、Emacs実践入門を執筆すると、Emacsがリリースされるというジンクスがあるのかもしれません。

Atomから得たフィードバックによる改訂への影響。

さて、書籍出版に関する裏話はこのくらいにして、次は改訂について僕がどのような考えをもって行なったのかを具体的に語ってみたいと思います。

本書の改訂にあたって2つのエディタを本格的に学ぶことで得た知見は,本書の改訂にも存分に活かされています。と触れていますが、具体的には『7.5 プロジェクトベースの編集──projectile』の追加が最も大きな点です。

Atomはプロジェクト(リポジトリと置き換えても構いません)という概念があり、プロジェクト毎にウィンドウを作成してコードを編集するスタイルを推奨しています。かたや、Emacsはひとつのウィンドウですべてのファイルを開いて編集を行います。Atomを本格的に使ってみるまでは、これはあくまでスタイルであり、それぞれ善し悪しがあると考えていました。

しかし実際に、Atomを使ってみると、現代における開発環境の上では、プロジェクトベースの管理の方がより大きなメリットがあることに気付かされたのです。

具体的なメリットは、本書でも述べていますが、フレームワークの一般化による同一ファイル名の増加により、絞り込みが機能低下を起してしまったことが、その最たるものでしょう。

その他、大きな変更。

上記以外の初版からの大きな変更は次の通りです。

  • 拡張インストールをpackage.el (ELPA) に全面書き換え
  • Anything から Helm へ
  • Flymake から Flycheck へ
  • Egg から Magit へ
  • 『web-mode』の追加
  • 『コードの実行(quick-run)』の追加
  • 『差分の表示──git-gutter』の追加
  • 『テスティングフレームワークとの連携(phpunitrspec-mode)』を追加

特に[改訂新版]Emacs実践入門を読んだにも書かれている通り、package.elの全面書き換えは非常に効果が大きく、基本的に解説を追加している(目次の項目は増えた)にも関わらず、総ページ数が減少したという事実は、原稿を書いているときには気がつかず、本になってページ数が確定して初めて気がつきました。

プログラミングでいうところの、リファクタリングがすすんだ結果、コード行数が減少したと考えれば、素晴しいことです。

また、サポートページでダウンロードできるサンプルコードも、そのまま追加すると、拡張が自動的にインストールされるようになり、簡単に設定を試すことができるようになったことも大きいです。

Emacs実践入門 出版記念イベント開催決定。

10月28日にPixivさんに会場をお借りして、Emacs実践入門 出版記念イベントを開催します。

残念ながら、ありがたいことに、すでに参加枠が埋まってしまっているようですが、もしかすると増枠の可能性もあるかもしれませんので、興味がある方はぜひお申し込みください。僭越ながらサインもします(Atom実践入門でも良いですw)。

参加者のみなさまは、当日はどうぞ宜しくお願い致します。

おわりに。

初版である『Emacs実践入門』から早5年、AtomやVSCなどの新しいエディタが誕生するなど、思いの外、大きな変化があったエディタ界隈ですが、元祖OSSであるEmacsも負けじと進化を続けておりますので、もしEmacsに興味を持たれた方は、ぜひ本書を手にとってみてください。