機能価格ドキュメントブログ
moteを入手
← ブログ
デザイン·2026年6月23日·読了まで5分

モードを切り替えても文書は1つ

プレビューを開くとウィンドウが2つに分かれ、モードを切り替えると文書が開き直されるように感じませんか。moteのライブ・ソース・リーディングは同じバッファを見る3つの視点なので、切り替え時に変換も保存も再パースもありません。

m
mote
同じ文書をライブ・ソース・リーディングで並べた画面。左は記号が隠れ、中央はファイルのままで、右は記号が取り除かれたレンダリングです。
同じ文書をライブ・ソース・リーディングで並べた画面。左は記号が隠れ、中央はファイルのままで、右は記号が取り除かれたレンダリングです。

Markdownエディターは通常、画面を2つに分けます。左側で書き、右側で結果を確認します。同じ文書を2回描画するため、スクロールと選択位置を常に合わせなければなりません。

moteは違う作り方をしました。文書は1つだけにして、見方だけを切り替えます。

1つの文書、3つの画面

moteには3つのモードがあります。

  • ライブ(Live):記号を隠し、書式をその場で表示します。
  • ソース(Source):ファイルに保存されている内容をそのまま表示します。
  • リーディング(Reading):Markdown記号を完全に取り除いた結果を表示します。

コアは文書を読み込み、デコレーションの一覧を作ります。種類は3つだけです。どの範囲にスタイルを適用するか、どの範囲を隠すか、どの範囲をウィジェットに置き換えて描画するかです。

3つのモードは、この一覧に異なるフィルターを適用した結果です。モードを切り替えても、文書を開き直したり解析し直したりはしません。ブロックツリーもインラインの結果もそのままに、フィルターだけが切り替わります。

予算にもそのように記されています。モードの切り替えは、1フレームと切り替えアニメーションの間に完了しなければなりません。再パースが入れば違反です。切り替えコストは文書のサイズに比例しないため、大きな文書も同じ速度で切り替わります。

キャレットと選択範囲もそのままです。ソースで入力していた文字はライブでも同じ位置にあり、ライブで選択した文はソースでもそのまま選択されています。

文書の別のコピーへ移動するのではなく、同じ文書を異なる視点で見るわけです。

書いて、確認して、読みます

文章を書くときはライブモードが便利です。画面には内容だけが残り、Markdown記号はキャレットが触れたときに現れます。表や数式、画像はその場でウィジェットとして描画されます。グリッドを見ながらセルの中を修正できます。

記号まで正確に確認する必要があるときは、ソースモードを使います。表のパイプがずれていないか、コードブロックが閉じられているか、行末に空白があるかを確認するのに適しています。

リーディングモードは、最終結果を見る画面です。記号を隠すだけでなく、画面から完全に取り除きます。印刷とPDFもこの画面を基準に作成します。編集はできませんが、選択とコピーは可能で、リンクも開けます。

リーディングモードで開いたリリースノート。Markdown記号なしで、インライン数式とブロック数式がその場に表示されています。
リーディングモードで開いたリリースノート。Markdown記号なしで、インライン数式とブロック数式がその場に表示されています。

リーディングモードを作る過程は簡単ではありませんでした。記号を取り除くと、画面上の位置とファイル内の位置が異なるようになったからです。検索結果が横にずれ、クリックした場所とキャレットの位置も食い違いました。

現在は、コアが取り除かれた文字の位置と長さを一緒に記録します。画面上でクリックした位置を、ファイル内の正確な位置へ戻せます。

読んでいた場所ですぐに切り替えます

ヘッダーで目的のモードを押すか、Ctrl+Shift+123を使えば切り替えられます。

切り替えても、画面の先頭行とキャレットの位置は維持されます。クロスフェードは160msの有限アニメーションなので、終了後に予約は残りません。新しいウィンドウをどのモードで開くかは、設定の編集タブで選べます。

ショートカットでは、小さな試行錯誤がありました。しばらくの間、案内にはCtrl+1/2/3がモード切り替えだと記載されていましたが、実際には見出しを作るショートカットでした。ウィンドウがキー入力を先に受け取るため、モード切り替えのコードは実行されませんでした。

現在は役割を明確に分けています。Ctrl+Shift+1/2/3はモード切り替え、Ctrl+1からCtrl+6までは見出しです。コマンドパレットとショートカット一覧、サイトの文書もすべて同じ内容に修正しました。

フォーカスモードは画面の上にそっと重ねます

F8を押すと、キャレットがあるブロックだけがくっきりと表示されます。ほかの行は、インクのアルファだけが32%に下がります。

色が変わるだけで、文字の位置は動きません。ぼかし効果やアニメーションもないため、段落間を移動するときに画面全体を再計算する必要がありません。

フォーカスモードは4つ目のモードではありません。ライブ画面の上に重ねるオプションなので、有効にしたまま別のモードへ移動できます。

フォーカスモードを有効にしたライブ画面。キャレットがあるリストだけがくっきりと表示され、ほかは同じ位置で薄く表示されています。
フォーカスモードを有効にしたライブ画面。キャレットがあるリストだけがくっきりと表示され、ほかは同じ位置で薄く表示されています。

画面を2つに分けない理由

moteには分割プレビューがありません。

同じ文書を2回描画すると、スクロールを合わせ、選択を移し、2つの画面の状態を管理しなければなりません。moteは最初から、その問題を作らないことにしました。

元に戻す履歴も、選択も、スクロールも1つです。

モードが3つあるのは、文書が3つあるからではありません。同じ文書を見る必要がある場面が3つあるからです。

← 前の記事重さの原因はMarkdownではなくWebエンジンだった次の記事 →1つのRustコアにプラットフォーム別のシェルを載せた理由
RSSで更新を追えます。
書くことだけを残す
日本語
© 2026 mote