エディタ

Caliu で一番長い時間を過ごすのはエディタなので、最も手をかけています。アプリごとに、そのプラットフォーム自身のテキスト技術の上に作られた専用のエディタがあり、どれも同じ約束を守っています。保存されるのはプレーンな Markdown で、目に見えるのは、その Markdown が入力と同時にその場で整形されたものです。

1 つのループ、3 つのエディタ

Caliu のエディタはどれも、同じ 3 つのことをしています:

  1. 読む: ノートの Markdown を読み、見出し、リスト、タスク、引用、コード、テーブルといった構造を把握します。
  2. 見せる: その構造を整形されたテキストとして表示し、必要になるまで記法を隠します。
  3. 書く: あなたの編集を Markdown として書き戻します。ほかのどの Markdown アプリでも読める、同じプレーンテキストです。

ノートを開いただけで、ノートが変わることはありません。ノートが変わるのは編集したときだけなので、別のデバイスでノートを読んでも、知らないうちに書き換えられることはありません。

Web では: ProseMirror

Web のエディタは Tiptap の上に作られていて、その Tiptap は ProseMirror の上に乗っています。ProseMirror は、多くの有名な執筆ツールが使っている、ブラウザでのリッチテキスト編集のためのツールキットです。コードブロックは、多くのコードエディタが使っているハイライター Shiki で色付けされます。

iPhone、iPad、Mac では: Apple 自身のテキストシステム

Apple のエディタは、Apple のネイティブのテキストビュー(iPhone と iPad では UITextView、Mac では NSTextView)と、Apple 自身のアプリを支えるテキストエンジン TextKit の上に直接作られています。Markdown は、GitHub と同じ仕様に従う Apple の swift-markdown ライブラリで読み込み、元の書き方をそのまま保って書き戻します。_italic_ ではなく *italic* と書いたなら、そのまま残ります。

ノート全体が 1 つの連続したテキストビューです。だから段落をまたいだ選択、スクロール、編集が自然に感じられます。テーブルやコードブロックのような、プレーンテキストではないものは、テキストの上に重ねた専用のビューとして描かれます。

Android では: プラットフォームのテキストフィールド

Android のエディタは、Android 自身のテキストフィールドの上に作られ、入力に合わせてスタイルが付きます。Markdown は commonmark-java で読み込み、Apple のアプリと同じリファレンスに照らして検証しています。何百ものサンプル文書が、Apple のデバイスと同じように、Android のエディタからも入れたときとまったく同じ形で出てこなければなりません。

ネイティブのテキストが大切な理由

テキスト編集は、アプリがうまくこなすのが最も難しいことの 1 つです。テキストエンジンを一から作り直すのではなく、各プラットフォーム自身のエンジンの上に作ることで、Caliu はデバイスがすでに知っていることをすべて活かせます。自動修正とスペルチェック、音声入力、日本語、中国語、韓国語の入力方式、VoiceOver や TalkBack のようなスクリーンリーダー、そして使い慣れた選択ハンドルとショートカットです。

Markdown を見る

実際に何が保存されているのか見たいときは、ソースモードに切り替えてください。# や * も含めた生の Markdown が表示され、そこで編集することもできます。「ソースモード」の記事をご覧ください。