一年間ありがとうございました

f:id:kotobaproject:20161230103035j:plain
(初刷〜四刷の自著群)

2016年もそろそろ終わりですね。皆様本年はありがとうございました。

今年は『虹を待つ彼女』とともに突っ走ってきた感があります。また、長年の夢だった小説の刊行をすることができ、大きな節目の年でもありました。いままでほとんど他人に見せてこなかった自作を多くのかたに読んでいただき、ご感想までいただけるという貴重な体験もいたしました。

小説を読んでいただくというのは本当にすごいことで、あれだけ長いものを読むというのはエネルギーも使いますし、そのお金と時間を使えば、美味しいカレーが食べられたり、スーパー銭湯に行って一日のんびりできたり、高級なボールペンが買えたりと、色々と豊かな体験ができるわけです。そんな無数の選択肢のなかから私の作品を選んでいただき、読んでくださった多くの皆様、本当にありがとうございました。心より感謝申し上げます。

来年は当面、二作目の刊行に向けて粉骨砕身してまいります。来年もよろしくお願いいたします。皆様、良いお年をお過ごしください。

Hello, world!

プログラミングの初心者が最初にやることとして、 "Hello, world!" という文字列を出力する、という課題があります。まだ一行もプログラムを書いたことのない人が、プログラムを通して世界に扉を開くという文化で、とても素敵な慣習です。

小説を出すというのは子供のころからの夢だったのですが、結局叶うまでに二十年以上もかかりました。ある時期からは小説を書くこと自体が全くできなくなり、そうしているうちにプログラマーの仕事をはじめ、もうこっちの仕事一本で行ったほうがよいのかもしれないとも何度か思いました。

それでもなんとか少しずつ書けるようになり、続けているうちにこのたび幸運にも本が出せることになりました。えらく遠回りをしましたが、プログラマー業をやっていなければこの作品は書けなかったか、別のものになっていたはずなので、私の場合は回り道もまたよかったのだと思います。

工藤はこの瞬間が好きだった。新しく生まれた人工知能が、初めて世界に向けて言葉を発する瞬間。

これは自著の抜粋ですが、いまはちょうどそんな気持ちであります。

Hello, world! Hello, world! いよいよです。
ひとりでも多くの皆様に届きますように。

f:id:kotobaproject:20160929224541j:plain
物語のはじまり、渋谷のスクランブル交差点と自著。

www.kadokawa.co.jp

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

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

プログラムと小説、ともに何かを書く仕事ではあるが、実際にやってみると真逆の仕事と言える。
プログラムの場合は、複数のプロジェクトで利用できるように、共通系の処理などは使いやすいようにクラス化してストックしておく。小説でそれをやると、使い回しになる。
プログラムの場合は、オープンソースのコードもどんどん取り入れていく。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