小説執筆ソフトの比較
- Gamita Novelistでは様々な小説執筆ソフトを研究、参考にしています。今回はその違いと、Gamita Novelistがどう考えて実装しているのかご説明したいと思います。
Wordは世界で一番使われている執筆ソフトです。出版社に提出したり、コンテストでもWordファイルを渡します。
ではなぜ、Wordだけではいけないのでしょうか。
Wordはアウトライン表示で章管理を行います。章の入れ替えなどもできますが、あくまで「章や節」が対象となります。思いつきのアイデアや、短い文章単位で入れ替えることはできず、あくまでビジネス文書に特化したソフトになります。こういった小さな単位をページといいます。Wordはページ単位ではなく、「章や節」単位となるため、使いにくいのです。
Notion,Ulyssesはどうでしょうか? 両方とも大人気のエディタであり、さきほどの「章や節」単位から、ページ単位になっています。これらは小説ソフトというより、断片が大きく整理が必要な「資料」を扱うのに適しています。
私もUlyssesで小説を執筆していました。とても気に入っていましたが、キャラクター設定などを扱うことが多かったように思います。単位が大きすぎるため、どんどん細かくページが増えていき、小説ファイルとしては扱いづらかったのです。
そして、大本命のScrivenerです。日本でも愛好家が多く、使い方を説明する書籍も発売されています。 私が長く小説を書き続けられたのはScrivenerのおかげです。
Gamita Novelistの開発が始まったのは、Scrivenerのちょっとした使いづらさです。
本当に些細なことが気になってしまったのです。例えばルビ表示。日本独自の文化です。難しい漢字の読み方を簡単に伝える技術です。要望はたくさんありましたが、実装はされませんでした。
実はScrivenerで書き出されるファイルをみると、複数のリッチテキストによって構成されます。リットテキストというのは、太文字やカラーリングができる機能です。これらをMacやWindowsの標準的な機能を使って使いやすくしているのがScrivenerの仕組みです。このおかげで大量の文章を開いても、OSネイティブの技術を使うので高速に表示されますし、WindowsやMacの違いも最小限に抑えられます。
しかしながら、このルビというのはリッチテキストにはありません。サポートしようと思うと、ルビというたった一つの機能のために、大幅な変更が求められます。
さて、ページのお話に戻りましょう。Scrivenerにもページを管理する機能があります。これをバインダーと呼びます。Gamita NovelistはScrivenerを参考にしているので、バインダー、マルチバインダー、メインバインドという独自の呼び方があります。
混乱を避けるために、バインダーで説明しますね。
Scrivenerはコンパイルという機能があり、ページに見出しをつけたりすることで、「どのページを見出しにするのか」設定することができます。
つまり、Notionが適当にページを作れるのに対して、Scrivenerは作ったページに対し、見出しを設定することで小説に必要な章立てを出力することができるのです。
これは便利である一方、かなり複雑な設定になります。
そこでGamita Novelistはリッチテキストなどの既存技術はしようせず、独自のプロジェクトファイルで柔軟に対応できるよう設計しています。このファイル形式は世界的に見ても変わっており、特殊なものになっています。

たとえばtestとTest2がありますよね。それぞれがページになっており、完全に分けられたファイルです。
Test2のページを、testの下にドラッグすると?

このように階層の関係になり、章や節といったまとまりになります。(Test2の色がおかしいのは開発中により、一時的なものです)
このような入れ子機能はごく一般的です。Scrivenerにもあります。
Gamita Novelistが特殊なのは、どのページを見出しにするか、簡単に設定できるからです。
例えば入れ子にしたTest2を章にすることもできますし、節にすることも可能です。
これにより、「H1やH2が設定されたものが見出し」というルールに縛られず書き出しを行うことができます。
マルチバインド(バインダーマネージャー)機能について。

Scrivenerは一つのお話しか管理できません。つまり、「本番用に書いているけれど、サイドストーリーも書きたい」という願望があったとします。
具体的には、出版社に企画を伝えるとき、プロット1からプロット4まであったとして、それぞれを別に管理したい場合です。もっと厄介なのは、第一章は共通だけれど、第二章からはプロットごとに異なるという作りです。
ミステリー作品やSFなど、大規模で壮大な場合はよくあることだと思います。
Gamita Novelistを開発するとき、この機能は当初から考えていたものです。長編作品を書く人が満足する機能を提供したかった。そこでこのようなアイデアが生まれました。
まだお見せできませんが、バインダーにはゴースト(仮称)があり、さきほどの「第一章は共通している」など、書き換えはしたくないが、表示させる(つまり、読み込み専用でページを差し込む)機能があります。
ほかにもNotionの記事を読み取り専用で小説の一部として差し込むなど、面白い使い方ができるようになります。
最後に速度のお話をしましょう。
Gamita Novelistは他の執筆ソフトに比べて高速に動作します。技術的な話になりますが、SIMD命令を使用して高速な並列処理を実装し、バックグラウンドで処理を行っています。GPUアクセラレーションを利用して、UIは高画質で綺麗なフォントが表示できます。
Gamita Novelistはライセンス方式を採用しており、無料ユーザーであってもライセンス認証が必須になります。このライセンス認証にかかる時間を考慮しても、起動時間は1〜2秒以内になる見込みです。
さらに、1つのページ(1画面で執筆できる量)で打ち込める量も最適化しています。
開発段階ですが、1ページあたり15万文字程度が安定して動く文字数になっています。もちろん、これは極端な利用方法なので、ページを分ければ全く問題ありません。設計上、いくらページを増やしても動作負荷は変わりません。