2026年4月4日

Mac/iOSアウトライナー『Kosshi Outliner』をリリースしました

Mac/iOSのアウトライナーアプリ『Kosshi Outliner』をリリースしました。

Kosshi Outlinerのスクリーンショット

経緯

2022年にアウトライナーを作り始めていたのですが、 仕事が忙しくなったり他のことを始めてしまったりで、プロジェクトが頓挫していました。

その後、久々にアウトライナーに熱中する時期が来て、プロジェクトが復活しました。 そこからはわりと集中して開発できて、最終的にKosshiとしてリリースすることができました。

どんなアプリか

階層構造を持つ箇条書きで文章を書いていくことができる、いわゆるアウトライナーのアプリです。 アウトライナーは、通常のメモアプリに比べて、まとまった文章を作る必要がなく、行単位で構造を変えやすいので、ガシガシと文章を書いていくのに向いています。

アウトライナーは、記事など文章を書く用途で使うほか、普段の仕事でもタスクの整理や設計をまとめる際などにもよく使っています。 既存のアウトライナーも十分便利ではあるのですが、自分のユースケースに完全に合ったアウトライナーは世の中に存在しておらず、 自分で理想のアウトライナーを作ることにしました。

Kosshiは、MacとiOS専用のアウトライナーアプリです。 ネイティブアプリとして実装しているので、操作感が良いのが特徴です。 MacとiOSでコードベースを共有しているので、両方のプラットフォームで同じように使うことができます。

また、もう一つの特徴は、Markdownで文章の装飾を書けることです。 ソフトウェアエンジニアだと、基本Markdownで文章を書いていくことが多いので、Markdownをそのまま貼り付けて管理できるのは便利です。 一方、現状はMarkdownで書ける前提のUIになっているので、Markdownを知らない人には少し敷居が高いかもしれません。

他には、MacとiOSの同期にiCloud (CloudKit) を使っているのも特徴です。 CloudKitを使うと、AppleのアカウントでユーザーのiCloudスペースでデータを管理できるので、 ユーザーは運営者が管理するサーバーにデータを預ける必要がなくなります(データはAppleのiCloudサーバーに保存されますが、アプリの運営者はアクセスできません)。

メモアプリには運営者のサーバーにデータを預けるタイプのものがありますが、プライバシーやセキュリティの面で気になることが出てきます。 運営者がデータを読み取れないようにするには、E2E暗号化などの対策が必要になってきますが、実際にはそこまで対応されているサービスは多くないと思います。 私個人としても、プライベートなメモやノートは、万が一の漏洩などが起こるとかなり悲惨なことになるので、 データを置くのに運営者のサーバーを介さない方が安心できると思っています。

またCloudKitを使うと、ユーザーはログインや会員登録をする必要がなく、 Apple純正のNotes.appと同じように、Appleアカウントでデータが同期できます。 これは使う側にとっても楽だと思います。

技術的な話

技術選定

最初はMac/iOS専用で作っていて、途中からやっぱりクロスプラットフォームで行こうかなとTauriで作ってみたりして、色々と試行錯誤していました。 が、結局、ある程度作ったもの同士で比較してみるとネイティブで作った時の操作感が明らかに良かったので、今の形に落ち着きました。

アウトラインエディタ

CoreTextでアウトラインのエディター部分を自作しました。

カーソル、選択、Markdown装飾、折りたたみ、ドラッグ&ドロップなど、 だいたい全部自前で実装したので、エディター部分だけで25000行くらいあります。 ここは一番こだわったところです。

コア部分はMacとiOSで共有していて、パフォーマンスも意識して作りました。

同期機構の実装

同期の実装は、 ローカルのSQLiteデータベースとCloudKitのレコードをCKSyncEngineで同期しています。

最初の頃はMacとiOSで同期ミスが結構発生してしまっていて、自分のメモも何度も吹っ飛んでしまいました。

流石に仕事のメモが吹っ飛び続けるのはまずいので、オートバックアップの機能なども入れました。 今は安定していますが、同期周りは一番苦労したところかもしれません。

テスト基盤

今回のプロジェクトでは、かなりテストに力を入れました。

テストは4種類用意しています。 ユニットテスト、スナップショットテスト、パフォーマンステスト、E2Eテストで、 全体で約2,000件くらいのテストケースがあります。ユニットテストが95%くらいです。

パフォーマンステストでは、大量行の操作で遅くなっていないかをチェックしています。 ベースラインを決めておいて、それを超えたら警告、さらに超えたら失敗するようにしました。

パフォーマンスに関しては、まだ改善できそうではあるので、このテスト基盤を使って引き続き改善していきたいと思っています。

最後に

App Storeからダウンロードできます。1週間の無料トライアル付きです。

現在、$25で提供していますが、日本の方にはドル換算だと高くなってしまうので、1ドル=100円換算の2,500円で提供しています。サブスクではなく買い切りなので、一度購入すればずっと使えます。

App Storeからダウンロード