なぜネイティブアプリなのか
Kosshi は Apple のフレームワーク—— SwiftUI、AppKit、UIKit——を使って構築されています。 ブラウザ上で動く Web アプリではなく、 Web アプリをデスクトップアプリとして包んだものでもありません。
この記事では、ネイティブアプリであることが 実際にどういう意味を持つのか、 そしてアウトライナーにとってなぜ重要なのかを説明します。
「ネイティブ」とは何か
ネイティブアプリは、OS と直接やり取りします。 テキストの描画、スクロール、キーボード入力は、 OS 標準のアプリと同じ経路を通ります。 メモ、リマインダー、Xcode はすべてこの方式です。
Web アプリはブラウザエンジンの中で動作します。 Electron のようなツールでデスクトップアプリとして配布する場合でも、 内部にブラウザエンジンが存在します。 入力はまずブラウザを通り、 画面表示もブラウザが担います。
違いは、操作がどれだけ直接的に画面に届くかです。
テキスト編集ツールにおける遅延
キーを押してから文字が表示されるまでには、 わずかな遅延があります。 HCI(ヒューマンコンピュータインタラクション)の研究によると、 100 ミリ秒以下の応答を 人間は「即座」と感じます1。 それを超えると、もたつきを感じ始めます。
多くのアプリではこの閾値を満たすのは難しくありません。 しかしテキスト編集ツール—— 何分もキーを打ち続けるツール——では、 速度のわずかな差が使用感に影響します。
ネイティブアプリでは、 キー入力が OS のテキストエンジンに直接渡されます。 Web アプリでは、 ブラウザのイベント処理、描画エンジン、表示パイプラインを経由します。 各層は単体では高速ですが、積み重なると遅延になります。
1 回のキー入力では差は気づきにくいかもしれません。 しかし入力を続けるうちに、 その差がツールの使い心地を左右します。
アウトライナーが異なる理由
アウトライナーでの作業は、テキストを打つだけにとどまりません。 インデント、インデント解除、行の上下移動、 折りたたみ、展開、ズームイン—— 数秒の間に何度も繰り返します。 それぞれがツリーの構造変更であり、 アプリは画面をそれに合わせて更新する必要があります。
ネイティブアプリは、 画面の変わった部分だけを更新できます。 1 行を動かしたなら、 その行と周辺だけが再描画されます。
ブラウザは汎用の表示エンジンです。 1 行だけ動いたことを知らないので、 より広い範囲を再計算することがあります。 1 回の操作では差は小さくても、 行を動かすショートカットを 5 回連打したとき、 ツールがついてくるかどうかの違いとして現れます。
滑らかな動きの手触り
応答の速さだけが操作感を決めるわけではありません。 画面がどう動くかも重要です。
アウトライナーでセクションを折りたたむと、 下の行が上に繰り上がります。 展開すれば下に広がります。 行を移動すれば、周囲がそれに合わせて動きます。
ネイティブアプリは、 OS のアニメーション機構を使えます。 ディスプレイのリフレッシュレートに同期して動くので、 行がその位置にすっと滑り込みます。 瞬間的に切り替わるのではなく、 自然な動きとして目に映ります。
ブラウザでは、 アニメーションは JavaScript とブラウザの描画タイミングに依存します。 滑らかに見えることも多いですが、 入力と動きのつながりはより間接的です。
折りたたみと展開を頻繁に行うアウトライナーでは、 この動きの質がツールへの信頼感を左右します。
Kosshi の実装
ネイティブであるだけでは、操作感は決まりません。
OS 標準のテキスト編集コンポーネントは 連続した文書を前提に設計されており、 アウトライナーの行単位の構造には合いません。 前述の応答速度と滑らかさを実現するために、 Kosshi は描画エンジンを一から自前で構築しています。 OS がテキスト描画のために裏側で行っていることを、すべて自前で引き受けています。 見た目はシンプルですが、この土台がなければ今の操作感は成り立ちません。
このエンジンの上で、 テキスト、Markdown の書式、画像を統一的に扱っています。 編集ロジックと描画は macOS と iOS で共通のコードベースで動いており、 Mac で加えた機能や修正は iPhone にもそのまま反映されます。
トレードオフ
Apple のネイティブアプリであることは、 macOS と iOS でしか動かないことを意味します。 Windows、Android、Linux のユーザーは使えません。
Web アプリはブラウザがある全プラットフォームで動きます。 クロスプラットフォームでのアクセスや リアルタイムの共同編集が必要な場合、 Web ベースのツールが現実的な選択です。
Kosshi がネイティブを選んだのは、 個人の思考ツールにとっては 操作の応答速度と滑らかさが プラットフォームの広さより重要だと判断したからです。 これは設計上のトレードオフであり、普遍的な正解ではありません。 ツールの選び方についてはアウトライナーの選び方をご覧ください。
Kosshi について
Kosshi は macOS / iOS 向けのネイティブアウトライナーです。 折りたたみ、行の移動、構造の変更がキーボード操作に対して遅延なく応答します。 iCloud で Mac と iPhone 間を同期します。 買い切りで、サブスクリプションはありません。
基本操作についてはアウトライナーとは?を、機能の詳細はガイドをご覧ください。
7 日間無料で試すFootnotes
-
Miller, R. B. (1968). Response time in man-computer conversational transactions. Proceedings of the Fall Joint Computer Conference, 33, 267–277. 応答時間の研究により、100 ミリ秒以下のシステム応答は即座に感じられることが示されています。 ↩