読者です 読者をやめる 読者になる 読者になる

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

本が出ます。9/30『虹を待つ彼女』

9月30日(金)に、私の処女小説『虹を待つ彼女』がKADOKAWAより発売されます。第36回横溝正史ミステリ大賞へ応募し、大賞をいただいた作品を改題・改稿しての出版です。

f:id:kotobaproject:20160907225219j:plain

ゲームプログラマーの女性が、自作のオンラインゲームとドローンを連携させ、渋谷でテロ事件を起こし……という冒頭からはじまるミステリです。人工知能をテーマにした小説ですが、ITに疎いかたでも問題なく楽しめるというご感想をいただいております。来週末から順次書店に並びますので、ぜひお探しくださいませ。

www.kadokawa.co.jp

今年は4月に受賞の連絡をいただいてから、この作品の刊行に向けて延々とブラッシュアップをやってきました。

小説を書くというのは個人的な仕事のように見えますが、本質的には全くのプロジェクトワークです。
作家の作業量が多いので私の名前が表に出ていますが、作品の裏には、物語のポテンシャルをぐぐっと引き出してくれる編集者さんがいて、細部をものすごい精度でチェックしてくれる校正者さんがいます。
装画のloundrawさん、装丁の鈴木久美さんには本当に素敵なカバーを作っていただきました。作中少しだけ出てくる方言のチェックは、京都在住の友人に骨を折ってもらいました。多くの資料にお世話になりましたし、広報、宣伝、その他私には見えない現場で大勢のスタッフがこの作品に関わっているはずです。
この作品は私のなかから出てきたものではありますが、そういったチーム、プロジェクトの産物でもありますので、作家としても、チームの一員としても、ぜひお手に取っていただけると嬉しいです。よろしくお願いします!

prtimes.jp