好きなことだけして生きてみることにした 第6回

この当時、私の趣味の執筆活動において効率化したいと思っていた願望(イコール要求)は、次のようなものだ。

  1. 多数の登場人物の情報をデータを網羅するのが大変なので、(エクセルとかではなく)参照しやすい形でデータベース化したい。
  2. 各人物ごとの行動履歴を時系列でサマリーするのが面倒なので、複数人物の行動履歴をタイムライン的に一望したい。
  3. 各人物の位置情報も時系列で把握しておきたい。できれば地図上でビジュアル的に観たい。
  4. 登場人物の相関関係も時系列で移り変わるので、その辺も把握できないものか。
  5. 人物に関連するキーワードなどもフリーフォーマットでまとめておきたいので、別途データベース化できればなおよし。

──こんな感じで、まぁ、あらためて眺めてみても強欲な要望である(苦笑)。でも、これが実現できれば、私にとってはすごく嬉しいし、遅筆な創作活動も捗るようになるのではないか…と思っていた(これは、今でも思っている)。

さて、この要求仕様を受けて、ITシステム開発的に要件定義をしてみると次のようになる。

  1. データベースに独自のテーブルを作成して、複数の人物情報を格納できる仕組みを作る(登場人物管理テーブル)。
  2. 人物の行動履歴を格納できる独自テーブルを作成し、個々の行動履歴は1.の人物管理テーブルの人物と紐づける(リレーショナル行動履歴テーブル)。
  3. 人物の行動履歴と同時に位置情報も登録できるようにする(GoogleMaps等の位置情報サービスと連携させたインターフェースの実装)。
  4. 人物同士の関係性を格納できる拡張テーブルを作成して、1.の人物管理テーブルおよび2.の行動履歴テーブルと紐づける(リレーショナル人物関係テーブル)。
  5. 人物に関するメタ情報を格納する独自テーブルを用意して、1.の人物管理テーブルと紐づける(リレーショナル人物メタテーブル)。

テーブル構造は未定だが、独自のデータベースを準備してそこにデータを蓄積していけるような仕組みが必要な感じだ。テーブル設計も結構フレキシブルに変えて行くことになりそうで、全体システムとして見た時に、相当なボリュームのある開発になりそうである。

このシステム、簡単に云えば、

自分の小説の登場人物専用ブログ

──と云える。そして、それぞれの人物に成り代わって作者がそのブログを書いていく…みたいな感じかな。まぁ、面白い仕組みではある。

既存のサービスでもやろうと思えば、WordPressをマルチサイト型でインストールして、自分の小説の登場人物をユーザーとして登録していく…みたいな感じで実現できそうでもあるが、現実のユーザーと同じように架空の人物たちがサービスへのログイン情報などを持つことになってなんか違和感がある。そのうえ、いちいち架空の人物に成り代わってブログにログインして…とか、そんな運用はやってられない。

なので、まずサービスの利用者は一人である必要がある。その一人が自分の好きなように人物(小説の登場人物)を登録して、その人物たちの行動履歴を書きまくることができる。そして、書きまくった登録情報に応じて自動的にデータは連携されて、いつでも参照できる。これが、理想である。

自分のためにもこんなシステムを作り上げたい。そして幸いなことに、私には作れるのだ。

さて、この私にとって夢のようなシステム。開発ボリュームのヘビーな部分は、データベース部分である。流動的になりそうなデータベースのテーブル設計部分を、可変的に制御しながら開発を行っていく必要が出てくるのだ。

ちなみに、このシステム、普通に自分の勤めている会社でシステム・インテグレートした場合、おそらく受注から納品までの工期は3ヶ月ぐらいで、数百~一千万程度の開発費用になるだろう(開発者は2~3人ぐらいが妥当かな、実際はそんなにアサインしてくれないだろうけど…(苦笑))。

しかし、これは私一人で作らねばならない…。今のところこれは私利私欲のシステムだからだ。

光明…という名の墓穴!?

ヘビーなデータベース部分の開発を補うリソースが私にはあった。去年2014年に公開したWordPressプラグイン「CustomDataBaseTables」だ。
このプラグインを使用すれば、WordPressのデータベース内に独自テーブルを自由に作ることができる。テーブルさえ作ってしまえば、自動でデータ入力フォームやデータ閲覧ページを作成してくれるというものだ。
我ながら、なんて良いものを作っていたんだ…と、ひとりほくそ笑んでいた(笑)。

よし、ではこのプラグインを基礎にして新たなシステムを開発しよう。

──ここまでは、グッドチョイスだった…。しかし、

今のプラグインには機能不足なところもあるし、今後必要になってくるから、この機に全面的にプラグインも改修してしまおう!

──これが、今回掘った墓穴である。

開発者の性(さが)と云うべきか、その当時、このプラグインに対してのこうして欲しいああして欲しいという利用者の方々の要望も多くて、それにも応えられるようなプラグインにしたいという私の承認欲求的なものが確実にあった。そんな情況の中で、「改修するんなら今後の拡張を見越して徹底的にリファクタリングしてしまおう」と決断してしまったのは、致し方ない面もある。

まぁ、プラグインを利用してくださっている方々にとってはけっして悪いことではないはずだ。ただ、私的にはこのリファクタリングに予想以上に時間を取られることになってしまった(9月の今現在でもリファクタリング中なのだ…とほほ)。無駄ではないので、今はやりきるしかないのだが…。

しかも、このプラグイン改修に取り掛かった時期に被るように、勤務している会社でも新規開発案件(担当技術者は私一人のみ)を振られ、さらにそちらの開発はとある外部サービスのSDKを利用するシステムのため、ちょっと学習もしながらじゃないと開発が難しいものだった。この時期は、会社では勉強&開発、帰宅後はプラグインのリファクタリング…と、かなり疲弊しながら開発三昧の日々を送っていた。

開発が好きじゃなきゃ、とうにめげていただろうな…とか思う今日この頃である。

──そんなこんなで、開発で忙殺されているうちに二ヶ月なんかはあっと云う間に過ぎ、念願の「起業家セミナー」が始まるのだった。