Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web で実用的な縦書きエディタは可能か? ──現在地と普及に向けて

Avatar for kosakin kosakin
September 11, 2026
130

Web で実用的な縦書きエディタは可能か? ──現在地と普及に向けて

#fec_fukuoka

Avatar for kosakin

kosakin

September 11, 2026

Transcript

  1. 自己紹介 と縦 を書 話き すと 機リ 会ッ をチ もテ らキ

    えス てト 嬉エ しデ いィ タ の こ カ ン フ ァ レ ン ス 初 登 壇 ! 得 意 領 域 : リ ッ チ テ キ ス ト エ デ ィ タ 興 味 出 身 所 属 : 開 発 ・ 音 楽 ・ ご 飯 : 札 幌 : サ イ ボ ウ ズ 株 式 会 社 2 6 卒 @kosakin8710 ス ラ イ ド の リ ン ク 色エ んデ なィ 初タ 耳の 学情 を報 届は け世 たの い中 に 少 な い の で 、 好 き な ブ ロ ッ ク : コ ー ル ア ウ ト ・ リ ン ク カ ー ド コ サ キ ン 2
  2. 自己紹介 〜 リッチテキストエディタ(RTE) 〜 • インターン・内定者バイトを経て、チーム配属後も RTE の 刷新に参加 •

    Zenn の WYSIWYG な RTE を非公式で開発 スライドのリンク • RTE に関する記事を継続的に執筆 • RTE ライブラリの Tiptap や Chromium(Blink)に小さく コントリビュート • 最近は Web で WYSIWYG な縦書きエディタを試行中 • ルビや傍点が使える WYSIWYG エディタ「縦筆 Web」を公開。 ブログとして執筆・公開できる • 現在は、汎用的に使える WYSIWYG 縦書きエディタの基盤を 開発中 3
  3. 今回の発表で伝えたいこと • Web の編集技術の仕組み • 横書きの <textarea> や RTE に対して、エディタという抽象的な枠組みから理解をする

    • その上で縦書きと横書き編集の技術的な違い、現状のブラウザで出来ることの整理 • <textarea> と縦書き RTE の両方の観点から見ていく • 開発者が Web サービスに縦書きエディタを組み込みたい場合、実用目線でどの程度可能なのか? 4
  4. 目次 01 1章:Web の編集技術 p06 02 2章:縦書きエディタの現状と特有の難しさ p35 03 3章:Web

    で実用的な縦書きエディタを利用 p53 できる世界にするには 5
  5. Web のエディタは大まかに3種類ある 用途 プレーンテキストエディタ コードエディタ WYSIWYG エディタ (RTE) 解説 通常の装飾がないテキストだけを扱える

    ハイライトなどの高度な装飾をつけられる データはプレーンテキストを扱う 見出しや画像、テーブルなどを見たまま編集できる データは HTML やツリー構造 ※ WYSIWYG … What You See Is What You Get (みたまま編集ができる) 8
  6. Slack (Quill) Closure Library WYSIWYG エディタ • テキスト・装飾・構造などをデータにもつ ©️ Cybozu,

    Inc. • ユーザーが任意の場所にテキスト装飾・ノード追加が可能 11
  7. エディタの4つの構成要素 • 状態 ── 内容と選択範囲を持つ • 構成要素を理解するときの起点となる部分 • 編集操作 ──

    状態を変える。挿入・置換・削除・移動・選択 • 入力の解釈 ── イベントを編集操作に変換する • 状態の反映 ── 状態を画面に反映する。選択とキャレットの位置も含む 16
  8. エディタの4つの構成要素 • 状態 ── 内容と選択範囲を持つ • 構成要素を理解するときの起点となる部分 • 編集操作 ──

    状態を変える。挿入・置換・削除・移動・選択 • 入力の解釈 ── イベントを編集操作に変換する • 状態の反映 ── 状態を画面に反映する。選択とキャレットの位置も含む 17
  9. エディタの4つの構成要素 • 状態 ── 内容と選択範囲を持つ • 構成要素を理解するときの起点となる部分 • 編集操作 ──

    状態を変える。挿入・置換・削除・移動・選択 • 入力の解釈 ── イベントを編集操作に変換する • 状態の反映 ── 状態を画面に反映する。選択とキャレットの位置も含む 18
  10. 例)↓キーを押してみる • OS ── ↓キーが押されたことをイベントにする • ブラウザ ── 移動と解釈し、移動先を求め選択位置を更新し、キャレットを描き直す •

    折り返しの行があった場合は、レイアウトベースで次の選択位置を決定している • 文字列だけでは正しい場所を計算できない 25
  11. Web の RTE は contenteditable で作られている • HTML には contenteditable

    というグローバルな 属性がある • 例えば、<div contenteditable="true"> と 付けると、その中の DOM が編集可能になる • ブラウザが DOM を直接書き換える • これにより、DOM を編集してリッチな見た目の エディタを構築することが可能になる リッチな見た目の例 27
  12. この状態で Enter を押すとどうなる? • 新しい <li> が増える? • テキストノードと <p>

    が同じ親に並ぶ • <ul> や <blockquote> が2つになる? • Enter で割れるのは <p> か、外の <div> か • 箇条書きから抜けて <p> になる? • 「あい」はどの段落に属するのか。 30
  13. しかし、最近はcontenteditableに任せない • 最近は RTE をサービスに導入するときは、大体ライブラリを採用する。 • 主要な RTE ライブラリ(ProseMirror, Lexical

    ...)はどれも contenteditable を描画先としてしか使わない • ① HTML は編集用の文書モデルではない • 汎用の div が何段でも入れ子になり、段落なのか行なのかも決まっていない • 「リスト項目の中に見出しは置けない」のような制約も書けない • ② 編集操作の仕様がない • Enter が作る要素はブラウザごとに違うし、それが求めるものではない可能性が高い。 • ③ 編集操作を差し替えるAPIがない • 止めたら中身は全部自分で書くしかない 部分的に任せる手段がない 32
  14. 第1章まとめ: Web の編集技術 • 編集は4つの構成要素 • 入力の解釈 → 編集操作 →

    状態 → 状態の反映 • textarea は ブラウザ / RTE は JS が実装を持っている 縦書きにしたときに、どの要素が壊れるのか? 37
  15. 縦書きとは • 書字方向が縦方向になったもの • 日本語では右から左の方向に書く(伝統的なモンゴル語では、左から右の縦書き) • CSS では writing-mode: vertical-rl

    で、表示側は10年ぐらい前から対応している • 現代でも 小説 / 脚本 / 新聞 / 教育場面 など、多くの場所で縦書きが現役 39
  16. 縦書きエディタの現状 • ネイティブアプリでは先人の方々が沢山の 実用的な縦書きエディタが公開されている • 一太郎、Word、InDesign、縦式、 TATEditor ... • 最近は小説や脚本エディタのブームなのか、

    自作をしている人を結構観測する • 実は、Web でも既に試みは多数あり、 美しい縦書きエディタが公開されてる • しかし、縦書きでルビや縦中横の WYSIWYG、そのまま組版して PDF / Word / EPUB 出力ができる有名なサービスはなさ 引用:https://note.com/ryuon_novel/n/n4b908d9d6c45 そう 42
  17. 縦書きエディタ特有の WYSIWYG な機能は? • 縦書きでよく使われる機能は、ルビ / 傍点 / 縦中横 /

    正立とか • 行頭・行末禁則 / 追い込み / ぶら下がり / 追い出し / 約物の詰め / 字下げ ... 52
  18. 縦書きエディタの「実用的」ってなんだろう? • 既に縦書きの <textarea> とか使えるよね?Web で縦書きエディタが使える世界は来てるのでは? • 実用的は「機能性」と「使い心地」の両方を満たす。 • 機能性:課題に対して、なんらかの手段で実現することが可能か?

    • 使い心地:いわゆる UX 。ストレスフリーに課題を解決できるか? 用途 縦書きメモ(基本) 欲しい機能 ・<textarea> 縦書きブログ ・ルビ・傍点・縦中横・禁則処理 小説 (Web) ・画像やリストなど、一般的な要素 出版 ・PDF / EPUB / Word の出力 ・ページ分割 / 高度な禁則処理 58
  19. ぶっちゃけ、リッチな文章も <textarea> で十分? 横スクロールの縦書き <textarea> で十分な人は 現段階で実用的 • マークダウンでルビのリッチな表現も可能。 プレビューで確認するタイプ

    • ツールバーとかで、記法の入力とかもできる • PDF / EPUB / Word 出力もやろうと思えばできる • 横書きで縦書きプレビューすればいいという話もある 59
  20. 実用性に WYSIWYG を求める場合は? • 普段使いするレベルに WYSIWYG を求める 場合を考える • 何で

    WYSIWYG ⇨ 成果物のまま編集したい • 推敲と編集が同時にできる • 見たまま編集楽しい! • マークダウンだと見づらい! 60
  21. ブログ・Web 小説縦書きエディタの実用性 良い点 • WYSIWYG 最高!!美しいフォントの縦書きで、リンクや縦中横とかそのまま使えるの良き • ルビはモーダル入力でも意外と困らない。編集は少し面倒。 苦しい点 •

    Chromium は禁則処理のぶら下げができないので、「〇。」が先頭に来るのが気になる。 • ルビや傍点をつけると行間が変わらないようにするために、行間を大きくする必要がある • 行間が左右に均等につくので苦しい • Safari やモバイル対応が、ブラウザ対応状況で苦しい。 64
  22. 小説用の縦書きエディタ • PDF 出力できる小説エディタを作った • いなにわうどんさんが直近で公開した、 組版ライブラリの minitype を活用 •

    RTE が出力する構造化データを、組版用の 構造に変換すれば PDF 出力可能 • ページ分割も気合いで1列実装した 65
  23. 小説用の縦書きエディタの実用性 良い点 • ライブラリのおかげで PDF 出力はできそう。Word と EPUB も恐らくできるかな。。? 苦しい点

    • 小説を執筆するのであれば、編集画面と組版の出力を一致させたいところ。。。 • 苦しい観点は Web ブログと似ている。 • ぶら下げや行間、どうにかしたいなぁ。。。 • ページ分割も一列は可能ではあるが、2列は苦しい。。。技術的にできるのか。。? • 一列でも、スクロールや矢印キー周りの挙動はしっかり考える必要がある 66
  24. 割と Web でも WYSIWYG 縦書き編集ができる! • ブラウザ対応がいい感じになってきたことで、Web でも WYSIWYG な縦書き編集が現実的に

    • 組版ライブラリで PDF 出力とかも対応できそう • ただ、縦書きエディタで細かい挙動は気になる点が多い。。使い心地を考えると微妙。 • クロスブラウザ対応は相変わらず苦しい。 67
  25. もう一つの観点:開発者が「組み込める」 さっきの話は、RTE 詳しい人が縦書きエディタを開発した場合。 専門外の開発者が縦書きエディタをサービスに組み込める必要がある 現状 • <textarea> は、悩みも特になく利用できそう(クロスブラウザ対応ぐらい。。?) • RTE

    文脈は情報が少なく、ちゃんとしたものを開発するにはハードルが高い • 特に RTE は組み合わせ爆発がすぐに起きるので、設計が適当だとバグだらけになる • 単純に実装が難しい機能もある • 周辺の PDF / Word / EPUB 出力周りも情報少なそう 69
  26. 自分は RTE の概念・設計を広める / 縦書きで UX が高い基盤を作る 自分ができそうなのは下の2つ • 設計やノウハウを広める

    • RTE のチュートリアル・設計・ノウハウなどを記事や本などにまとめて出す • この登壇もその一つ • 縦書きエディタの基盤をつくる • 縦書きエディタ基盤ライブラリを実用に足る形にする • JS で解決できない部分は ブラウザへのパッチと仕様に関わっていきたい 72
  27. なぜ Web で縦書きエディタを開発するのか? • いや〜簡単そうで難しい。結論が出ていない • ネイティブで沢山あるから、Web でできる必要ないじゃん! • Web

    アプリの存在が反論になる?Word とかもネイティブから Web でも可能になった • ブラウザの上に構築されているのが嬉しい?インストールいらない・URLで共有・高速なアップデート • Web 小説とかの文化もある。ここで縦書きエディタが組み込める選択肢があっても良くないか • 横書きで書いたものをプレビューすればいいのでは? • 純粋に縦書きは縦書きで書いた方がいい。空行や目線の追い方など異なる部分が多い 74
  28. なぜ自分が縦書きエディタを開発しているのか? • 自分は RTE 芸人。Web での縦書きエディタは、取り組んでいる人も少なそうなので、技術的にもおも ろそう、第一人者になれるかも!みたいなノリだった • 小説を書くから縦書きエディタほしいみたいな需要からではない。。。 •

    自分が RTE 芸人だからこそ、やるべきことは縦書きエディタを求める人々が開発できる知識の提供・基 盤の開発であると思う • 実際の使われ方は小説や脚本を執筆・出版する人に任せ、その声を聞いて基盤や実現方法の考察に関与していき たい • そもそも、RTE 自体の概念・設計の話が世の中に少ないので、その普及からやりたい • RTE を開発するときに、チーム内の共通言語を持つのが難しい 75
  29. なぜ RTE の専門性を高めているのか? • これは自分のキャリア・興味の話になる • 特定分野の専門性を高める方が自分には向いていそう • RTE はツリーの編集という難易度が高くやりがいがある。Web

    標準やブラウザ実装などに関わるきっかけにも • マークダウン / プレビューより WYSIWYG 派閥。書いてて楽しいね • AI 時代で専門性が意味なくなるのでは。。?と思ったけど、AI は今のところ増幅器であるので、本当に その分野に詳しければ価値はありそう。むしろ仕事が捗る感じがある • エディタ自体がなくなるのも、流石に当分先じゃないかな。全部 AI や音声入力は無理がありそう。 • むしろ WYSIWYG + AI はもっと探求したいね 76
  30. 79