アウトライナーは、コンピュータサイエンスの集合体だった
- 公開日
Kosshi を作り始めたばかりの頃、もともと Mac/iOS の開発にそこまで慣れていなかったこともあって、まずは「アウトライナーを作るには、どの機能を組み合わせればいいんだろう」と、Apple のドキュメントをかなり探していました。 でも、これを使えば近いところまで行ける、というものが、なかなか見つかりません。試しに使ってみても、どこかでうまくいかない。
プログラミングの仕事は、基盤になるようなものはたいてい世の中にすでにあって、それをいかにうまく使うのか、というのが大半です。 これまで自分が作ってきたものも、Web サービスにしても普通のアプリにしても、既存のフレームワークやライブラリを組み合わせて、その土台の上に積み上げるような作り方でした。アウトライナーも、最初は同じ感覚で作れるものだと思っていました。
いろいろ検討しているうちに、これはもう少し根本的なところから組み立てていかないとダメなんだな、ということが、だんだん分かってきました。
正確に言うと、アウトライナーとして動作するものなら、Apple の標準フレームワークだけでも、多分作れます。 リスト表示があって、字下げができて、行を折りたためる。それくらいならフレームワークが揃えてくれるので、最初は自分もそのつもりで触り始めました。
ただ、そうやって作っていくと、昨今の高度なアウトライナーを使い慣れている人が期待する挙動にするのは難しいです。 標準のリストやテキストビューは、もともとアウトライナーを作るために用意されたものではないので、その上に積み上げていくやり方ではどうしても限界があるんですよね。
触りながら、これはもう一段下から書かないと無理だな、と感じてきました。 結果として、Kosshi はもう少し下のレイヤーから直接組み立てる方向に倒しました。普通なら Apple の高レベルなフレームワークが提供してくれる挙動も、Kosshi ではほぼ自前で書いている、ということです。
それに加えて、もうひとつ内部で大変なところがあります。 大量の行があっても、快適に動くようにする、という話です。
自分はメモをわりと消す方なので、自分のアウトラインはそこまで大きくなっていません。 ただ、アウトライナーのユーザーを調べてみると、何年分ものメモやタスクをひとつのファイルに溜め込んで、十万行規模で使っている人もそれなりにいるようでした。
なので Kosshi では、10 万行を超えるような大量の行でも動作することを目標にして開発しています。 中心になっているのは SumTree というデータ構造で、Zed という高速なテキストエディタが内部で使っているものを参考にしています。ざっくり言うと、行を一列に並べて頭から数える素朴な作りをやめて、行を木のかたちにまとめて、必要な位置だけを少ないステップで取り出せるようにしています。 (参考: Kosshi が大規模でも高速な理由)
すでにいくつかフィードバックをいただいているのですが、「なんでいつものこの操作が Kosshi だと効かないんだろう」と思われることがあるかもしれません。Kosshi はほとんどの挙動を自前で書いているので、自分が普段使っていない機能だと実装が漏れてしまっていることがあるんです。
アウトライナーの開発を続けているうちに、思うようになりました。
アウトライナーって、見た目から想像するよりもずっとコンピュータサイエンス寄りのソフトウェアだったんだな、と。
普通のユーザーから見たら、ただ箇条書きを書けるアプリなのですが、データ構造、計算量、アルゴリズムと、内部では意外と込み入ったことをやっているソフトウェアです。
新卒で検索システムのバックエンドエンジニアをやっていた頃、こういうアルゴリズムが関わる仕事がやってみたい、と思っていた時期がありました。ある意味で花形というか、憧れがあったんですよね。
でも、普通の Web サービスやシステム開発の仕事は、たいてい既存の技術を組み合わせるところで成立します。基本的には地味な技術の組み合わせなんですよね。そうでないと、安定したソフトウェアを作るのはなかなか難しいです。
作りながらだんだん分かってきたのは、こういうコンピュータサイエンス寄りの仕事が必要になるのは、ユーザーの手元の挙動を内側から組み立て直さないといけないときと、普通ではない量を捌かないといけないとき、くらいなのかもしれない、ということでした。 Kosshi はそのどちらも必要になっていて、最初に思っていたよりずっと骨の折れる作り方になっています。
新卒の頃に憧れていた仕事が、まさかひとりで作っているアプリの中で出てくるとは思っていませんでした。 腰を据えて作らないといけないし、思うように進まない日もありますが、こういうものを自分の手で作れているのは、なかなか幸せなことだな、と最近は思っています。
関連記事
Kosshi を出すまで4年かかった
会社を辞めたのは2021年の年末でした。その前は何人かの同期と一緒に、勤め先で新規事業のアプリを作っていました。 結果としてそのサービスはうまくいかなかったのですが、ゼロからプロダクトを立ち上げる感覚が忘れられず、フルコミットで自分のアプリでやっていこうと決めて退職しました。 とはいえ収入をいきなり0にするのは難しいので、数年はフリーランスで仕事を受けつつ、隙間で個人のアプリを進める、という二段構えで動いていました。そのとき、最初に作ろうとしていたのが Kosshi です。当時は別の名前にしていましたが、2022年の年始ごろの構想でした。 ところが、フリーランスとアプリ開発の二段構えは、口で言うほど綺麗には回りませんでした。仕事を複数並列で抱えていると、当然スケジュールに押されて、気付くと会社員のときより
ロボットが欲しいのか分からなくなってきた
さんこめという小さなロボットを作るぞ、と何度か言ってきたのですが、最近になって少し困ったことに気づきました。 もしかすると僕は、ロボットそのものが欲しかったわけではないのかもしれない。 これはけっこう困ります。 自分で作るぞと言っていたものを、自分が本当に欲しいのか分からなくなってきたからです。 僕は、長らく自分で何かを作って、世に出して、それで食べていきたいと思っていました。 だけど、何を作ればいいのか、どういう軸で活動するのがいいのかは、ずっとはっきりしませんでした。
記事の更新があった場合のみ、週に1度まとめてメールでお知らせします。
いつでも配信解除できます。