C#を本業にしているスクリプトキディが思いついた、私史上最強の三文未満小説執筆環境

3畳に足りるか足りないか分からないシェアハウスの個室で、間接照明とディスプレイの明かりを頼りに、
この文章を自作した左右分離式キーボードで書いている。

This is DOOM Emacs.
Emacsで。 厳密に言うと、DOOM Emacsだ。

そんな私がなぜ久々に文章を打っているかといえば、
就業中にわだかまっていた三文小説未満のライトノベルにも満たないプログラミング入門以前物語のそれを書きたくなったり、
書くに至って良いやり方をいろいろ考えていたら、思いついたのでまとめているわけである。

Emacsは最強の執筆環境

この記事に何らかのきっかけで行き着いた方々には釈迦に説法だとは思うし、
もっとLispを使いこなしているEmacsユーザーに対しては僭越だが、
一応Emacsというエディタについて簡単に自分が今(2019-10-07T22:46)資料を見ないでできる限りの
紹介をさせていただく。

Emacsという古来から存在するテキストエディタ

古来(といってもUNIXが生まれてからではあるので、西暦1980年以降である)から存在するテキストエディタであるが、
その拡張性の高さと、拡張性ゆえの可能性の多さから、このエディタのファンは多く、根強い支持を得ている。

とかく書いてる私自身も2年前から少しずつEmacsを触り始めた口で、それまではVimという双対をなすテキストエディタを使っていた。

(ほぼ)文字だけで表現するテキストエディタ

これら(Emacs,
Vim)の特徴としては、ほぼすべてを文字で表現することにある。

ドットインパクトプリンタなどの出力機器しかなかった時代から見るとずいぶんと贅沢かもしれないが、
2000年以降に生まれた若い人たちからすると、ずいぶんと貧相に思うかもしれない。
今日のEmacs,
その拡張機能と適切なフォントをインストールすれば、絵文字などを利用して見栄えは良くなる。

「ダサい」? 違う、洗練されているのだ。

とはいえ、EmacsはCtrlやAltなどの装飾キーを酷使し、Vimは3つのモードを把握しなければいけないなどの
参入障壁があり、それ以前におそらく最初の見た目はWindowsのメモ帳と代わり映えしないだろう。

「ダサい」と思われるかもしれない。 しかし本当にダサいのだろうか。

私は憧れる。必要な時に必要な道具をサッと出し、作業に取り掛かり、必要が無くなったらしまう。

それができるのがこれらのエディタの強さである。

Org-modeは至高の(ドキュメント|タスク管理|プロジェクト管理)テキストフォーマット

執筆に適したテキストフォーマットを作るという行為の非現実性

とはいえ、テキストエディタが優秀で拡張性に優れているからと言って、自前で執筆に適した拡張機能を作るのは骨が折れる。

ましてや進捗やHTMLファイル(Webブラウザで閲覧できる形式)への変換出力機能も実装するのは、自分のような専門学校卒業程度の、
ほぼ文系コーダーに毛が生えてるか生えていないか程度のプログラマというのもおこがましい劣化知的生命体には無茶な話で、
仕事の余暇に作るなんて、人間の平均寿命から20年ほど引いた年数ではできるものではない
(たまにそれを成し遂げる者も居るが、それは天才と言われる超人類にしか当てはまらない)。

巨人の肩に腰を据える

今日、オープンソースソフトウェア・フリーソフトウェアという文化が広まり、インターネットにつながるパソコンがあれば、
天才達が考えたプログラムを自由に利用し、技術があれば改造したり、更にその天才が気づかなかった不具合を治すことだってできる。
 
Emacsの文化から生まれたOrg-modeもその一つだろう。

Org-modeはそのよく考えられたテキストフォーマットと、文字列情報を解析して機能を与えるEmacsが織りなす、

  • メモ
  • ジャーナル
  • 文書
  • タスク管理
  • プロジェクト管理

上記全て(さらに数個以上)に対応するテキストフォーマットなのである。

MarkdownやreStructuredTextも拡張することでこれらを全て受け持つテキストフォーマットになるだろう。
ただ、Emacs
Lispという強力なテキストエディタの拡張性により、テキストエディタとシンプルな軽量マークアップ言語
で実装できたと私は思う。

実際にどう書くのか。

さて、ここからそんなEmacsとOrg-modeを利用して執筆する方法を見てみよう。

とにかく見出しを作る

とにかく見出しを作る。

更に細分化した見出しを作る

その見出しを細分化する。

アニメの絵コンテの一枠や、マンガのヒトコマくらいに細分化してしまっていい。

そのシーンを1行でまとめた描写を

更にその見出しを細分化する。段落レベルまで細分化してしまっても良い。

私の様な人間は特に、 「これは5分で書けるだろう」 
くらいのレベルまで細分化してしまったほうが良いと思う。

見出しを TODO にしてしまう

Org-modeのテキストを、Emacsの org-mode を適応して開いていれば、
キーボード・ショートカットで見出しを一瞬でタスクに切り替えることができる。

この機能を最大限利用し、先程まで書いた見出しを全て TODO
にしてしまおう。

もちろんだが、全ての見出しを TODO
にするスクリプトを書いてしまっても良い。
むしろそうやって積極的に拡張できるのがEmacsの強みだと私は思う。

書け。羅列されたシーンを描写しろ。

さあ、何を書きたいか決まった。書こう。

細分化された見出しはほぼ穴埋めだ。

細分化された見出しに答えるように書いていくだけで良いはずだ。

それで筆が進まないのは、もしかしたら細分化が足りない。

どんな風に書くか迷ったら、 #
を行頭につけてコメントアウトしてとりあえず書いてみる。

余談:テストを行うプログラムから書く「テスト駆動開発」

昨今になってソフトウェア開発の世界で注目されているのが、「テスト駆動開発」という手法だ。

雑に説明してしまうと、
「作ったものの動作が正しく動作するか検証するプログラムを書きながらソフトウェアを作っていく」
という手法だ。

この執筆手法も、このソフトウェア開発手法からヒントを得た。
「自分の書きたいことをある程度ハッキリさせたら筆が進むはず」
という、結構安直な考えである。

この際なのでここに、 「ドメイン駆動設計」
の考え方も混ぜ込みたくもなったが、まだそこまで考えがまとまってないので、後日うっかりひらめいたら。

見出しを消す

よしっ!

(ヘルメットを被った猫の絵は省略)

あとは大見出し以外を消すなり、大見出しを書き直したら、大分いい感じになってるはずだ。

Orgで書いたテキストを変換。

とはいえ、書いたテキストを他の人が見やすいフォーマットにできないと、
なかなか見せづらくて寂しいと思われる。

EmacsとOrg-mode標準でもいくつかのファイルフォーマットに出力できるが、Pandocなどのツールを使うと、
更に幅が広がる。

LaTeX形式に一度吐き出して、PDF形式に変換することも可能だ 。

Git(とMagit)を合わせると鬼に金棒。

GitMagitを使って共同執筆する方法についても書きたかったが、私個人の時間切れに付き、ここまで。

Gitを使った執筆活動の方法は他の方も各所で書いているので、興味のある方はぜひ調べてみるといいだろう。

まとめ

私の眠気もいい具合にキマってきた午前0時40分。

割と思いついたことは書き留めれたはず。

なお、この記事を書くに当たって、八田真行さんの「モーレツ! Org
mode教室」
を多大に参考にさせていただいた。
ちょっとでもEmacsとOrg-modeに興味を抱いた方は、ぜひ確認していただきたい。

Emacsディストリビューション

しかしながら、この記事の最初でも記したとおり、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。すげぇな。

P.S.

このテキストの原稿もOrg-modeで書きました。
GIstに原稿を上げてますRawボタンを見ると、生テキストファイルが見れます。
参考になれば幸いです。

ツイッターでシェア
みんなに共有、忘れないようにメモ

まんじゅ(´ん`)

CoderDojo Sapporo/Sapporo East の駄メンターです。 オープンソースソフトウェア・フリーソフトウェアの布教と、それらを使った創作活動の布教をしています。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント