プログラマーが小説を書くとき

私は作家としては駆け出しもいいところだが、プログラマーとしては職歴が長く、もうかれこれ十三年ほどこの仕事をやっている。

プログラムと小説、ともに何かを書く仕事ではあるが、実際にやってみると真逆の仕事と言える。
プログラムの場合は、複数のプロジェクトで利用できるように、共通系の処理などは使いやすいようにクラス化してストックしておく。小説でそれをやると、使い回しになる。
プログラムの場合は、オープンソースのコードもどんどん取り入れていく。WAFなどを使っている場合は、プロダクトの半分以上は他人の書いたソースとなることが珍しくない。小説でそれをやると、盗作になる。

なるべく少ない手間で仕様の実現を目指すプログラムと、手間をかけないとどうにもならない小説。両者は性質の全く違う仕事と言えるが、それでも応用できるところはある。私の執筆環境も、幾つかのプログラムが支えている。今回はそれを紹介します。

進捗の可視化:count.php

進捗の可視化はプロジェクトの基本ということで、最も使っているプログラム。機能はこちら。

  • ベンチマーク機能。その日に執筆した文字数を算出し、目標までの文字数をカウント。執筆ペースはデータベース(MySQL)へ保存され、参照できる。
  • バックアップ機能。count.phpを頻繁に実行しているので、そのタイミングで原稿をバックアップ。バックアップ先は、デスクトップ、SDカード、Dropbox、Github、さくらVPSの五箇所。これで突然マシンが壊れても、原稿は安全に保たれる。
  • ついでにモチベーションの上がる格言を表示。

以前はベンチマークは原稿用紙換算で表示していたのだが、会話文を書いている部分と、地の文を書いている部分では、同じ一枚でも文字数が全く違うので、文字数換算で結果を出したほうが安定的に執筆できる。実行するとこのようになる。

f:id:kotobaproject:20160928182454p:plain

時間の確保:stop.php

私はパソコンで執筆しており、常時ネットに接続されている。なので、ついついネットで無駄な時間を潰さないことが必要になる。人間の意志というのは薄弱なものなので、根性ではなくシステムで対応する。

  • OS Xのcronから、スーパーユーザ権限で毎分実行
  • /etc/hostsを書き換える
  • Twitter、Facebookなどの何時間でも滞在できるサイトを、0.0.0.0へ飛ばす

平たく言うと、私のパソコンからtwitterやfacebookにはアクセスできない。これを解除するプログラムもあるのだが、一時間に五分しか解除できないように制限している。

仕組みの話を。少し技術的な内容になるが、インターネットの世界にはドメインというものがある。
現実の世界では、位置の情報を表すのに、主にふたつの方法がある。「住所」と「緯度・経度」だ。国会議事堂の住所は「東京都千代田区永田町1丁目7−1」だが、緯度経度で示すと「北緯35度40分33.2秒・東経139度44分41.9秒」になる。圧倒的に正確なのは後者のほうだが、人間の脳は、このような意味のない情報を記憶しにくい。そこで、我々の社会生活のなかでは主に住所が使われる。

ドメインとはネット上の「住所」であって、「緯度・経度」にあたるのはIPアドレスと呼ばれる。例えばツイッターは、ドメインで言うと「twitter.com」、IPアドレスで言うと「104.244.42.193」になる。stop.phpでは、この紐づけを強制的に破壊して、twitter.comへアクセスしても0.0.0.0という存在しないIPアドレスに飛ぶようにしている。

雑用プログラムで業務効率化

ほかにも幾つかあるのだが、とりあえずこの辺で。小説を書くこと自体をプログラムを使って短縮することは現状では不可能(将来的にAIの技術が発達したらできるようになるかも)なのだが、それ以外の部分、ルーチンワークの効率化、作業環境の整備などにはプログラムはかなり力を発揮する。プログラマーで作家 or 作家志望のかたも大勢いるかと思いますので、ご参考いただけたら嬉しいです。小説を書かないプログラマーも、雑用ロボットをたくさん作ることで色々捗るかもしれません。

最後に宣伝。
『虹を待つ彼女』という小説が、9/30にKADOKAWAより出ます。横溝正史ミステリ大賞受賞作。
人工知能をテーマにしたミステリで、プログラマーも多々出てきますので、技術者のかたもぜひお読みいただけると嬉しいです。技術的な内容はかなり噛み砕いてありますので、ITに疎いかたで問題なく読めるというご感想をいただいております。書店で見かけたらぜひ手に取ってくださいませ。お近くに書店がないかたは、ネットでもご予約可能です。

f:id:kotobaproject:20160907225219j:plain
prtimes.jp
www.kadokawa.co.jp