3畳に足りるか足りないか分からないシェアハウスの個室で、間接照明とディスプレイの明かりを頼りに、 この文章を自作した左右分離式キーボードで書いている。
Emacsで。 厳密に言うと、DOOM Emacsだ。
そんな私がなぜ久々に文章を打っているかといえば、 就業中にわだかまっていた三文小説未満のライトノベルにも満たないプログラミング入門以前物語のそれを書きたくなったり、 書くに至って良いやり方をいろいろ考えていたら、思いついたのでまとめているわけである。
この記事に何らかのきっかけで行き着いた方々には釈迦に説法だとは思うし、 もっとLispを使いこなしているEmacsユーザーに対しては僭越だが、 一応Emacsというエディタについて簡単に自分が今(2019-10-07T22:46)資料を見ないでできる限りの 紹介をさせていただく。
古来(といってもUNIXが生まれてからではあるので、西暦1980年以降である)から存在するテキストエディタであるが、 その拡張性の高さと、拡張性ゆえの可能性の多さから、このエディタのファンは多く、根強い支持を得ている。
とかく書いてる私自身も2年前から少しずつEmacsを触り始めた口で、それまではVimという双対をなすテキストエディタを使っていた。
これら(Emacs, Vim)の特徴としては、ほぼすべてを文字で表現することにある。
ドットインパクトプリンタなどの出力機器しかなかった時代から見るとずいぶんと贅沢かもしれないが、 2000年以降に生まれた若い人たちからすると、ずいぶんと貧相に思うかもしれない。 今日のEmacs, その拡張機能と適切なフォントをインストールすれば、絵文字などを利用して見栄えは良くなる。
とはいえ、EmacsはCtrlやAltなどの装飾キーを酷使し、Vimは3つのモードを把握しなければいけないなどの 参入障壁があり、それ以前におそらく最初の見た目はWindowsのメモ帳と代わり映えしないだろう。
「ダサい」と思われるかもしれない。 しかし本当にダサいのだろうか。
私は憧れる。必要な時に必要な道具をサッと出し、作業に取り掛かり、必要が無くなったらしまう。
それができるのがこれらのエディタの強さである。
とはいえ、テキストエディタが優秀で拡張性に優れているからと言って、自前で執筆に適した拡張機能を作るのは骨が折れる。
ましてや進捗やHTMLファイル(Webブラウザで閲覧できる形式)への変換出力機能も実装するのは、自分のような専門学校卒業程度の、 ほぼ文系コーダーに毛が生えてるか生えていないか程度のプログラマというのもおこがましい劣化知的生命体には無茶な話で、 仕事の余暇に作るなんて、人間の平均寿命から20年ほど引いた年数ではできるものではない (たまにそれを成し遂げる者も居るが、それは天才と言われる超人類にしか当てはまらない)。
今日、オープンソースソフトウェア・フリーソフトウェアという文化が広まり、インターネットにつながるパソコンがあれば、 天才達が考えたプログラムを自由に利用し、技術があれば改造したり、更にその天才が気づかなかった不具合を治すことだってできる。 Emacsの文化から生まれたOrg-modeもその一つだろう。
Org-modeはそのよく考えられたテキストフォーマットと、文字列情報を解析して機能を与えるEmacsが織りなす、
- メモ
- ジャーナル
- 文書
- タスク管理
- プロジェクト管理
上記全て(さらに数個以上)に対応するテキストフォーマットなのである。
MarkdownやreStructuredTextも拡張することでこれらを全て受け持つテキストフォーマットになるだろう。 ただ、Emacs Lispという強力なテキストエディタの拡張性により、テキストエディタとシンプルな軽量マークアップ言語 で実装できたと私は思う。
さて、ここからそんなEmacsとOrg-modeを利用して執筆する方法を見てみよう。
とにかく見出しを作る。
その見出しを細分化する。
アニメの絵コンテの一枠や、マンガのヒトコマくらいに細分化してしまっていい。
更にその見出しを細分化する。段落レベルまで細分化してしまっても良い。
私の様な人間は特に、 「これは5分で書けるだろう」 くらいのレベルまで細分化してしまったほうが良いと思う。
Org-modeのテキストを、Emacsの org-mode
を適応して開いていれば、
キーボード・ショートカットで見出しを一瞬でタスクに切り替えることができる。
この機能を最大限利用し、先程まで書いた見出しを全て TODO
にしてしまおう。
もちろんだが、全ての見出しを TODO
にするスクリプトを書いてしまっても良い。
むしろそうやって積極的に拡張できるのがEmacsの強みだと私は思う。
さあ、何を書きたいか決まった。書こう。
細分化された見出しに答えるように書いていくだけで良いはずだ。
それで筆が進まないのは、もしかしたら細分化が足りない。
どんな風に書くか迷ったら、 #
を行頭につけてコメントアウトしてとりあえず書いてみる。
昨今になってソフトウェア開発の世界で注目されているのが、「テスト駆動開発」という手法だ。
雑に説明してしまうと、 「作ったものの動作が正しく動作するか検証するプログラムを書きながらソフトウェアを作っていく」 という手法だ。
この執筆手法も、このソフトウェア開発手法からヒントを得た。 「自分の書きたいことをある程度ハッキリさせたら筆が進むはず」 という、結構安直な考えである。
この際なのでここに、 「ドメイン駆動設計」 の考え方も混ぜ込みたくもなったが、まだそこまで考えがまとまってないので、後日うっかりひらめいたら。
(ヘルメットを被った猫の絵は省略)
あとは大見出し以外を消すなり、大見出しを書き直したら、大分いい感じになってるはずだ。
とはいえ、書いたテキストを他の人が見やすいフォーマットにできないと、 なかなか見せづらくて寂しいと思われる。
EmacsとOrg-mode標準でもいくつかのファイルフォーマットに出力できるが、Pandocなどのツールを使うと、 更に幅が広がる。
LaTeX形式に一度吐き出して、PDF形式に変換することも可能だ 。
GitとMagitを使って共同執筆する方法についても書きたかったが、私個人の時間切れに付き、ここまで。
Gitを使った執筆活動の方法は他の方も各所で書いているので、興味のある方はぜひ調べてみるといいだろう。
私の眠気もいい具合にキマってきた午前0時40分。
割と思いついたことは書き留めれたはず。
なお、この記事を書くに当たって、八田真行さんの「モーレツ! Org mode教室」を多大に参考にさせていただいた。 ちょっとでもEmacsとOrg-modeに興味を抱いた方は、ぜひ確認していただきたい。
しかしながら、この記事の最初でも記したとおり、Emacsは素のままでは結構難解なテキストエディタである。
そこで、そんなEmacsにパッケージを追加して使いやすくしたEmacs達を紹介して話を締めたいと思う。
- Graphene
- 比較的優しそうな見た目
- Emacs Prelude
- ディストリビューションでは結構人気
- Spacemacs
- ちょっと重くて音沙汰ないけど、元祖Emacs + Vim
- DOOM Emacs
- Spacemacsの意志を受け継いだ? チョットワカル人向け。とはいえ自分みたいなニワカでも割と扱える。
- Emacs
- 弘法は筆を選ぶのではない。作るのだ。
- Vim-Org-mode
- VimでもOrg-mode
- VSCode + VS Code Org Mode
- Visual Studio CodeでもOrg-mode。すげぇな。
このテキストの原稿もOrg-modeで書きました。