KosshiKosshi

Markdown によるテキスト書式

Kosshi はテキストの書式に Markdown を採用しています。 **太字***斜体* のように、 記号でテキストに書式をつける記法です。

アウトライナーのすべてが Markdown を使っているわけではありません。 リッチテキストを採用しているものもあれば、 書式機能自体を持たないものもあります。 この記事では、 アウトライナーにおける Markdown の役割と、 Kosshi がどのように Markdown を扱っているかを説明します。

アウトライナーと書式

アウトライナーの中心にあるのは構造の操作です。 項目の親子関係と順序を変えることで、考えを整理します。 テキストの書式——太字、斜体、リンクなど——は 構造とは別の、副次的な機能です。

このため、書式へのアプローチはアウトライナーごとに異なります。

Bike はテキスト編集に特化した設計で、Markdown を採用していません。 OmniOutliner はリッチテキストを使います。 WorkFlowy と Kosshi は Markdown を採用しています。

どれが正しいということではなく、 書式に何を求めるかによって選択が変わります。

構造と書式の役割分担

一般的な Markdown ドキュメントでは、 # 見出しが構造と書式の両方を担います。 # を書くことで文章の階層を作り、 同時にそれが見出しとして表示されます。 構造を変えたければ # の数を書き換える必要があります。

アウトライナーでは、この構造の役割をツリーが担います。 親子関係とインデントが、そのまま情報の階層です。 # を書いて構造を作る必要はありません。 構造を変えたければ、行を動かすだけです。

つまりアウトライナーにおける Markdown の役割は、 文章全体の構造化ではなく、 行の中のインライン書式だけを担います。 **太字** でテキストの一部を強調する、 [リンク](URL) でリンクを張る、 `コード` でコードを示す—— こうした行内の表現を Markdown が担います。

このため、Kosshi では # 見出し記法をサポートしていません。 ツリーがすでに階層を表現しているところに # による階層を重ねると、 2 つの構造が競合します。 行の深さと見出しのレベルが食い違ったとき、 どちらが正しい構造なのかが曖昧になります。

# が使われるのはエクスポート時です。

Kosshi でアウトラインを Markdown 形式でエクスポートする際、 見出し変換を有効にすると、 子を持つ行は # 見出しに変換され、 末端の行は本文になります。 ツリーの深さがそのまま見出しの階層に対応します。

  • プロジェクト計画 → # プロジェクト計画
    • 設計フェーズ → ## 設計フェーズ
      • 要件定義が完了した → 本文
      • 技術選定を進めている → 本文

ユーザーがアウトライナーの中で # を書くことはありません。 見出しの階層は、ツリーの構造から自動的に導かれます。 アウトライナーでは構造をツリーとして操作し、 ドキュメントとして必要になった時点で # に変換します。 構造の操作と文書の出力を分けることで、 それぞれに適した形式を使えます。

プレーンテキストと互換性

Markdown は記号でテキストに書式をつけるので、 書式つきのテキストをそのままテキストエディタで開いても内容を読めます。 **太字** と書いても、 テキスト自体は「太字」という文字列のままです。

リッチテキストでは、 書式情報はテキストとは別のレイヤーに存在します。 アプリ間でコピー&ペーストしたときに 書式が崩れたり意図しないスタイルが混入するのは、 この仕組みに起因します。 Markdown ではテキストそのものが書式を含んでいるので、 こうした問題が起きません。

また、Markdown はブログ、GitHub、Wiki、ドキュメントツールなど 多くのツールが対応する記法です。 Kosshi のアウトラインを Markdown でエクスポートすると、 そのまま他のツールで使えます。

Markdown 記号の表示

Markdown の記号をどう画面に表示するかには、 複数のアプローチがあります。 ソースとプレビューを左右に並べる方式、 ソースを常に見せる方式、 カーソル位置に応じて切り替える方式です。

Kosshi は 3 つ目の方式を採用しています。 カーソルがある行では Markdown の記号が現れ、 テキストを直接操作できます。 カーソルを離すと記号が消え、 書式が適用された状態で読めます。

Typora、Bear、Obsidian など 多くの Markdown エディタがこの方式を採用しています。

なお、設定で「Markdown シンボルを常に表示」をオンにすると、 記号を常に表示する方式に切り替えることもできます。

トレードオフ

Markdown はすべての書式を表現できるわけではありません。 文字色やフォントサイズの変更、 複雑なレイアウトには対応していません。

Kosshi が対応しているのは、 太字、斜体、取り消し線、インラインコード、 リンク、チェックボックス、引用、コードブロックです。 文章を書くのに必要な基本的な書式に限定しています。

リッチテキストは表現力が高い一方で、 書式の管理が複雑になります。 Markdown は表現力を限定する代わりに、 テキストの可読性と可搬性を維持します。

また、Markdown の記法に馴染みがない場合、 リッチテキストのツールバーの方が直感的です。 ただし、ライブプレビュー方式であれば 入力結果がすぐに書式として表示されるため、 記法は使いながら覚えられます。 Kosshi ではキーボードショートカット(Cmd+B で太字、Cmd+I で斜体)にも対応しているので、 記法を使わずに書式を適用することもできます。

詳しい使い方はMarkdown ガイドをご覧ください。

Kosshi について

Kosshi は macOS / iOS 向けのネイティブアウトライナーです。 Markdown によるインライン書式とアウトライナーのツリー構造を組み合わせて、テキストの書式と情報の構造を同時に扱えます。 iCloud で Mac と iPhone 間を同期します。 買い切りで、サブスクリプションはありません。

基本操作についてはアウトライナーとは?を、機能の詳細はガイドをご覧ください。

7 日間無料で試す