開発期間10年以上! 個人開発のモチベーションを「三次元空間で文字を書くVR/AR対応テキストエディタ」の開発者に聞く

仕事とは違い、作りたいものを好きなように作れるのが個人開発の魅力のひとつ。どこまで時間をかけるのかも、細部に凝るかも、すべては自分次第です。ただその一方で、完成までモチベーションを保つことに苦労される方も少なくないのではないでしょうか。

個人開発者のmitomasanさん(@mitomasan)は、趣味の一環としてテキストエディタ「炊紙(かしきし)」を開発しています。その開発期間は、なんと10年以上。「三次元空間で文字を編集する」というコンセプトを追求し続けているのです。

「炊紙」とはどんなテキストエディタなのか。そしてmitomasanさんが個人開発を続けるモチベーションは。mitomasanさんに話を伺うと、個人開発を楽しむヒントが見えてきました。

文章を三次元空間に浮かべて編集するテキストエディタ

――まずはmitomasanさんが開発されている「炊紙」について教えてください。画面を見たところ、シンプルなテキストエディタのように思えますが……。

実はこのテキストエディタは、文字を三次元空間上に配置しています。一文字一文字をオブジェクトとして扱っていて、打ち込んだ文字をアニメーションさせたり、縦書き横書きをスッと切り替えたり、文字のサイズや間隔をスムーズに変更できたりするんです。

画像はGitHubから引用(以下同)

――テキストエディタなのに、文字が滑らかに動きますね……!

VRやARグラスにも対応していて、仮想空間上で目の前にエディタを開いて編集することも可能です。左右に目線を移せば前後のページを確認できますし、1ページの文章量が多いときは、スクロールさせる代わりに、上下に目線を動かすことで文章全体を眺めることができます。目の前に文章が漂っているようなイメージですね。

――まさに三次元空間に文章を浮かばせて、閲覧や編集ができるわけですね。でも、VRゴーグルをかぶると、手元のキーボードが見えないのでは……。

そこは「手元は普通見ないでしょ」というハードコアな考えの元に設計しています(笑)。

――理解しました(笑)。それにしても、いったいどのような経緯で「炊紙」を作られたのでしょうか。最初に普通のテキストエディタを作られて、それを三次元化されたとか?

いえ、そうではないんです。もともとEmacsやxyzzyといったテキストエディタが好きで、文章を書くぶんにはそれで満足していました。ただ、文章といっても元は0と1からなる一次元のデータですし、それを映し出すのは二次元の画面です。いわゆるプレゼンテーション層の部分は、紙の時代からそれほど進化していないな、と思ったんですね。

VRをはじめ、時代がいろいろと進歩していくなかで、文章のレイアウトにおいても何かしら質的な進化があるのではと。以前から自作テキストエディタには興味があったし、このコンセプトを取り入れたら面白くなりそうだな……と、自分で作り始めたのがきっかけです。

――なるほど。最初から三次元というコンセプトはあったんですね。

こういうことを考えていても、話すだけではあまり伝わらないんですよね。実際に作ってみることで、意図したコンセプトがどういうものなのか分かってもらえるし、実際に使いやすいものか確かめることもできる。プログラミングは、自分の世界観を表現できる手段であると思っています。

10年後20年後に「普通」になるようなものを目指して

――実現したいテキストエディタのコンセプトが生まれたあと、実際に開発がスタートしたのはいつのことでしょうか。

2013年です。もう10年以上経ちますね。三次元空間を扱うプログラミングはほぼ未経験だったので、最初は苦労しました。思い通りに文字をアニメーションさせるために、数学の本を買って勉強したりもしましたね。当初はJavaとOpenGLで作っていたんですが、使っていたライブラリが開発終了するなどいろいろあり、最終的にRustとWebGPUで実装しています。

――当初から今のような動きをイメージされていたのでしょうか。

そうですね。当時はオブジェクト指向プログラミングに傾倒していたころで、その考え方がすごく好きだったんです。あるとき、文字もそれぞれ状態を持ったひとつの“オブジェクト”だと思ったんですね。それらが調和して、ひとつの文章を形作っているのだなと。

だったら、文字ひとつひとつがどう動くべきかを考えて、プログラミングとして表現してみよう。たとえば「A」という文字を打ったら、単に「A」が出るだけではなくて、呼ばれた「A」がピョンと飛び出てくるような……と、そんなことを考えながら作っていました。

サイケデリックモード。文字ひとつひとつが自由に動くことを示す技術デモとして作った

――ただ、この10年でVRやARを取り巻く状況も大きく変わったのではと思います。開発中に方針を変えたことなどはありましたか?

そこまで大きな変更はないですね。自分の開発スピードが遅いのはわかっていたので、「いいものができるまで10年20年はかかるだろう」と最初から思っていました。10年後にはVR技術がもっと成熟して、普段からヘッドセットをかぶるようになるはず。そうなったとき、いま自分が考えているものがうまくハマったらいいな……と、ある意味、希望を込めて作りはじめた感じです。

――そういえば、「炊紙」はコードを書くというより、文章を書くためのエディタですよね。mitomasanさんがお好きなEmacsやxyzzyともまた違うタイプですが、これにはどういった思いがあるのでしょうか。

仰る通り、開発をするのであればVSCodeのようなプログラミング向けの機能が充実したエディタを使う方が向いていると思います。ですが、私的なアイデアや小説のようなテキストを書く場合は、また別の取り組み方があるのではと考えました。たとえば、macOS向けに「stone」というテキストエディタがあるのですが、ご存じですか?

――はい、集中して日本語を書くことに特化したエディタですよね。真っ白な紙に文字を綴るような、機能を極力削ぎ落としたシンプルな画面が印象に残っています。

そうですそうです。あの感じで、書くことにストイックに向き合えるタイプがいいなと思ったんです。文字や文章の肌触りのようなものを大事にできるテキストエディタにしたいなと。「炊紙」と名付けたのも、お米を炊くことを「炊ぐ(かしぐ)」と呼ぶことにならって、文章に潤いを与えられる道具になれたらという意味を込めています。

――そうだったんですね。では「炊紙」は、どのような人に使ってもらいたいですか?

文章を磨き上げたい人、じっくり推敲したい人に使ってもらいたいですね。横書きを縦書きに変えたり、行間や文字間を変えてみたりすると、文章から受ける印象が変わるので、手を入れたい箇所が見つかったりするんです。向きや行間を簡単に変えられるテキストエディタは少ないので、そうした人に便利に使ってもらえるものを作れたらと思っています。

「出オチ」のコンセプトでも追求すれば別の世界が見える

――ところで、mitomasanさんは普段どのようなお仕事をされているのでしょうか。

ソフトウェア開発会社でバックエンドエンジニアとして働いています。サービス提供側の基盤開発に携わっていて、基本的にAWSやKubernetesを触っていることが多いですね。

――趣味のプログラミングとまったくレイヤーが違いますね!

そうですね(笑)。プログラミングは学生時代からの趣味ですから。この趣味を仕事にしようと思って、新卒でWeb系の開発会社にプログラマーとして入社したのがキャリアのスタートです。その当時も、趣味でWebサービスを作ってみたり、自作OSや自作CPUの勉強をしてみたり、手を動かしているのが好きでしたね。

――開発はお一人で進めているのでしょうか。たとえば個人開発のコミュニティなどで活動されることはありますか?

以前はコミュニティに顔を出していたんですが、結婚して子どもが生まれてからは全然行ってないですね。生活の優先度がどうしても変わってしまうので……。なので、基本的には1人でコツコツ進めています。

こうしたライフイベントで個人開発から離れてしまう人もいるでしょうね。あとは、マネジメント職になったことで、コードを書かなくなってしまう人も多いと思います。自分の場合は、就職する前からずっと趣味でコードを書いていたので、仕事とは切り離して続けられているのかもしれません。

――とはいえ、同じものを10年以上も開発し続けられる人は多くないと思います。mitomasanさんが開発を続けられたモチベーションは、どこにあるのでしょうか?

三次元のテキストエディタは、アイデアレベルで辞めてしまう人が多くて、ちゃんとしたレベルまで作り込んだ例がほとんどないんです。いわゆる「出オチ」になりやすいコンセプトなので、「わーすごい」で終わってしまうというか。いろいろ探してみると類似のテキストエディタも見つかるのですが、その後も途絶えてしまっていますし。

ただ、「出オチ」で終わりそうなコンセプトでも、しっかり追求すれば別の世界が見えてくると思うんです。ですので、誰も実現してくれないなら、自分がやるしかないんだという気持ちが大きいですね。

あとは、自分が思いついたことをソースコードの形で残すことで、将来の誰かの役に立てたらという思いもあります。同じようなことを考えた誰かが見つけてくれて、最終的にコンセプトを実現してくれたら、それはそれで嬉しいですから。

個人開発は、自分が考えた世界観を作り出す手段

――「炊紙」の現在の開発状況はいかがでしょうか。

2024年中に満足いくものがリリースできれば……と思っています。既に自分の業務ではメモ帳としてだいぶ使いこなせているんですが、Emacsをベースにした操作体系にしているので、Emacsを知らない人には難しいと思うんです。知らないとカーソルも動かせませんから……。

なので、今は「Emacsを知らない人をどこまでケアしたらいいか」に悩んでいる感じですね。Emacsには初心者向けのチュートリアルがあるので、それを参考にしてマニュアルを書き始めているところです。

――いよいよ「炊紙」が完成に近づいているわけですが、この先やりたいことはありますか?

炊紙もまだまだブラッシュアップできるところが多いと思いますが一区切りついたら、次は自作言語を作ってみたいですね。プログラミングには、テキストプログラミングやビジュアルプログラミングなど、さまざまな形がありますが、それらとはまた違う表現の仕方があるのではないかと思うんです。たとえば表形式のデータは、CSVのようなカンマ区切りのテキストや、JSONによる記述、あるいはExcelのシートのような表現手段もあります。

プログラミング言語も同じように、もっと見せ方にバリエーションがあり、その中にもっと良いプログラミング言語や環境があるかもしれないと。

ただこれも、思っていることを話すだけでは人に伝わらないと思うんですね。やっぱり作ってみないと、他の人と世界観を共有できませんから。

――まさに「炊紙」を作ろうと思ったときと同じですね。

はい。個人開発は、自分が考えた世界観を作り出す手段のひとつだと思っています。自分の考えた世界観をコンピューター上に持つことができて、実際に動かしたり、シミュレーションしたり、それを他の人に使ってもらって世界観を理解してもらうこともできる。他のメディアともまた違うレイヤーで世界観を表現ができるところに、プログラミングの魅力を感じます。

――最後に、個人開発をされている方に向けて、伝えたいことはありますか?

同じ世代に理解者が現れなくても、10年前20年前の世代で同じようなことを考えている人がいたり、それとは逆に、10年後20年後に同じことを考える人が現れたりするものです、と伝えたいですね。同世代の横の広がりで同志が見つからなくても、縦に見渡すと見つかることがありますから。ニッチな考え方、レアな世界観でも自信を持って突き進んでもらっていいと思います。

あとは、とにかくプログラミングを楽しんでほしいですね。スキルアップとか、就職に有利とかだけではなく、純粋に自分が楽しんだり、自分の考えを表現したりする手段として、コンピューターを使ってもらえたら。プログラミングを楽しい思ってくれる仲間が増えたら、とても嬉しいですね。