小説執筆用のWebアプリケーション「Inditer」を作りはじめました
(2026/10/20 19:23追記:スマホ向けの画面はまだ全然つくっていません。しばらくお待ちください。)
昨日くらいから、小説執筆用のWebアプリケーション「Inditer」を作りはじめました。「インダイター」と読むつもりです。
α版として公開していて、すでに使えます。良かったら使ってみてください。ただし、まだα版なので、予告なく破壊的な変更を加える可能性があります。それでも大丈夫なテキストだけを置くようにしてください。
これまでもtadeku-toolsで様々な小説執筆向けのWebアプリケーションを作っていて、いつかは統合的な環境を作りたいなと思っていました。先行するプロダクトで言うと、Nolaが近いでしょうか。最近だと、Rikuなんかがクローズドβで開発されていますね。ネイティブアプリとしては、作家の藤井太洋さんが開発されているwithなんかもあります。
それぞれのプロダクトの良さはありつつも、自分で使うとなると、ちょっと複雑度が高いなと感じる部分が多かったです。そこで、自分が使いやすい小説執筆用のWebアプリケーションってどういうものだろうと思って、作りはじめてみました。
実はこれまでも統合執筆環境的なものを作ろうと思ったことはあって、実際に作ってみていたのですが、なんだかあまり良い感じにならなかったんですよね。しかし、今回は作りはじめてみると何だかいい感じに進んできたので、とりあえずα版として公開して、難しいことは後から考えてみよう、と思っています。
Inditerとは?
Inditeは、古い英語で「詩や文章を書く」という動詞なのだそうです。それの-er形ということで、「Inditer」という名前にしてみました。
Inditerでは、ひとつの小説作品を「プロジェクト」という単位で扱います。短編でも長編でも、1つの作品は1つのプロジェクトを作って管理していくイメージです。
今のところ、プロジェクトは以下の4つのリソースを持ちます。
- 原稿
- メモ
- 人物
- 用語集
それぞれのリソースについて、少し詳しく説明します。
「原稿」とは?
原稿は、その名の通り、作品を書いていくメインのワークスペースになります。このリソース内のアイテムに書いていったテキストが、そのまま「作品」となります。
「原稿」では、複数のファイルを作成・編集することができます。このファイルは、新規作成すると下に並んでいき、ドラッグ&ドロップで自由に並び替えが可能です。
典型的には、「第1章」「第2章」などと作っていくことを想定しています。原稿のタイトルとして、小タイトルを入力しても良いでしょう。
短編小説の場合は、原稿ファイルは1つで十分な場合も多いでしょう。その場合、たとえばプロジェクト名と同じタイトルを原稿アイテムのタイトルとすることをおすすめします。
「メモ」とは?
メモは、作品にまつわる構想などを書き留めておくための場所です。
たとえば、その小説についての構想などを走り書きしたり、あるシーンを試しに書いてみたり、といったことに使っていただければと思っています。
メモでは、Markdown記法を使うことができます。そのため、たとえば箇条書きなどでアイディアを書き下すのにも向いています。
「人物」とは?
人物は、小説の登場人物の情報をメモするための場所です。
小説において「人物」というのは大きな要素だと思ったので、「メモ」や「用語集」とは別の形で管理できるようにしました。
人物を作成すると、デフォルトでテーブルが作成されます。項目は以下の通りです。
- 性別
- 年齢
- 職業
- 外見
- 一人称
項目は、自由に追加・削除できるようにしたいと思っています。また、デフォルトで表示する値も、設定で変更できるようにしたいです。
テーブルの表示のほか、Markdown形式でメモを追加することもできます。
また、[]で文字をくくることで、人物・用語集アイテムへのリンクを作ることができるようにしています。ちなみに、まだページが存在しない文字をくくった時にどのような挙動にするかはまだ考えられていません。そのうち考えます。
「用語集」とは?
メモは気軽に書き散らしていくことを目的にしていますが、用語集は、確定した情報を格納することを目的としています。
人物と同じように、Markdown形式でメモを書いていくことができ、[]形式でページ内リンクを付与することができます。
まだ実装できていないのですが、用語集ということなので、読み仮名を入れてそれでソートできる機能とかあった方が良いのではないかなと思っています。
開発に向けて考えていること
Inditerを開発するにあたって、いくつかの方針めいたものがあります。ただ、それは自分の中で曖昧模糊としている部分もあるので、ここで考えていることを書くことによって、その輪郭を少しはっきりさせたいと思います。
タブベースでリソースのアイテムを開く
プロジェクト内の全てのアイテムは、タブで開くようにしています。また、タブの表示エリアは、分割することが可能です。左右に分割できるほか、上下にも分割できます。
また、アイテムの他に、「設定」や「統計」といったものもタブで開くようにしています。
これは、Visual Studio CodeやCursorといった、いわゆるIDE(統合開発環境)と呼ばれるものの挙動を参考にしています。
既存の小説執筆アプリケーションは、執筆エリア上に一つの原稿しか開けないようなものが多いように感じています。しかし、第1章を見ながら第2章を修正する、みたいなこともあるんじゃないかなと思っています。また、メモを2種類表示しながら本文を書く、みたいなこともある気がしていて、そういう要望に応えるためには、タブを複数開けるようにして、執筆画面に表示するアイテムを柔軟に変えられるようにするのが良いのではないかなと考えました。
設定や統計もタブで表示するかについては、今後考える余地はあるかなと思いつつ、一旦はタブとして他のアイテムと同様に表示するようにしてみています。設定とかについては、設定画面を見ながら、たとえばフォントサイズなどを変更した時に、どのように変わるかをリアルタイムで見ることができて便利だなと感じます。
サイドバーでのリソースの表示について
リソースは、デフォルトでは以下のように配置しています。
- 左側:原稿
- 右側:メモ、用語集、人物
ただ、これはドラッグ&ドロップで自由に配置を変えられるようにしたいと思っています。デフォルトの配置を記憶して、他のプロジェクトにも適用できるようにすると便利なんですかね? 人によって最適な配置がある気はしつつ、プロジェクトによって頻繁に位置を変更するものでもないような気がしているので、ここはちょっと考えたいと思います。
プロット機能について
このプロダクトに入れるかどうか悩んでいます。別にいらないような気もしていて……。プロットは別で作ってもらって、それをプロジェクトのメモとかにコピーして使ってもらうのが良いかなあと今のところは思っています。
ただ、なんか良い案があれば、プロットもこの中に入れたいと思っています。
タスク管理・進捗管理について
そのうち入れたいなと思っています。しかし、メインの機能ではないので、まあそのうちかなという気持ちです。
統計機能について
どれくらい原稿を追加・削除したのかを統計情報として表示したいなと思っています。ざっくり実装してみていますが、まだ表示を整理していないので、これは今後の課題です。
メモ機能について
メモは、プロジェクトに紐づかないメモも作成・管理できるようにしたいと考えています。
というのも、ふとしたアイディアを書き留めたいだけの時に、プロジェクトをわざわざ作るのもだるいですよね。また、書くかどうかも分からない小説のメモのためにプロジェクトを作ったとしても、プロジェクトが無駄に増えて邪魔なだけです。
そこで、プロジェクトに所属しないメモを管理できる画面を作って、プロジェクト化したい時に、そのメモとプロジェクトを紐付けられるような仕組みを作りたいなと思っています。
アーカイブ機能について
もう使わないが残しておきたいメモとか原稿とか人物とか用語集とかあるな〜という気がしているので、それはアーカイブして、一覧からは非表示にできる機能を作りたいと思っています。
GitHub連携について
プロジェクトのバージョンを管理する機能を作りたいなと考えているのですが、全部のスナップショットを残しているとDBの容量が大変なことになりそうなので、GitHub連携機能を作ろうかなと考えています。変更があった時に、自動的にmainにpushするみたいなことができれば良いのかなと考えているのですが、実際そういうことができるのかどうかはまだわかっていません。
アウトライナー的な使い方について
原稿は、「ファイル」と「階層」の2種類の表示を用意しています。
「階層」を選択すると、箇条書きでガンガン書いていくことができます。一番上のレベルの箇条書きは、それがそのままファイル名になります。
また、インデントをつけて書いていくと、ファイル名の中に、見出し要素として記述されていきます。
これをアウトライナー風に使うことで、プロット機能の代わりにできないかなと考えています。ただ、アウトライナーの使い方がいまいち自分の手に馴染んでいないということもあるので、ここら辺の使い心地は、既存のツールを使いながら研究したいなと考えています。
よろしくお願いします
というわけで、小説執筆用のWebアプリケーション「Inditer」について、思っていることをちょっと書いてみました。
頑張って開発していきたいと思いますので、興味のある方はInditerを使ってみていただけると嬉しいです! よろしくお願いいたします!!