概要
- WYSIWYGエディタの複雑さ に不満を持ち、独自のシンプルなMarkdownエディタ開発を決意
- Markdownの可読性の低さ とクライアントの使い勝手の課題を解決したい動機
- テキストエリアとプレビューの重ね合わせ による新しい編集体験の発想
- 技術的課題と解決策 を経てOverTypeを完成
- パフォーマンス・シンプルさ・使いやすさ を両立したエディタを公開
WYSIWYGエディタへの不満とMarkdownの課題
- WYSIWYGエディタの重さ・複雑さ に対するフラストレーション
- 軽量かつシンプルなスタイル付きテキスト入力 の実現を目指す開発動機
- Markdownのままでは見た目が悪く、クライアントに不向き という現実
- ContentEditableの限界 や既存ソリューションへの再考
- Ghostの分割画面型エディタ (左:Markdown、右:プレビュー)に感銘
新しいMarkdownエディタの発想
- プレビューをtextareaの背後に重ねる というアイデアの誕生
- 完璧に重ね合わせることで、リッチテキスト編集のような体験 を実現
- モノスペースフォント・同一フォントサイズ・Markdown記法の表示 というトレードオフ
- シンプルさとパフォーマンスを重視した割り切り
技術的課題とその解決
-
リストの整列問題 :箇条書き記号で文字幅がズレる問題をHTMLエンティティ(•)で解決
-
モノスペースフォントの落とし穴 :太字や斜体で幅が変わるフォントに注意
-
親ページからのCSS継承問題 :margin, padding, line-heightのズレで整列が崩壊
-
徹底した正規化 による解決策の採用
- textareaとプレビューレイヤーの完全な重ね合わせ
- textareaの背景・文字色を透明化し、カーソルのみ表示
- 入力イベントでプレビューを即時更新&スクロール同期
OverTypeの誕生と特徴
- GitHubの<markdown-editor>要素 の発見と活用
- OverType(https://overtype.dev) として公開
- テキストエリアのネイティブ機能(undo/redo、モバイルキーボード、アクセシビリティ、パフォーマンス) をそのまま享受
- 45KBの軽量パッケージ で動作
- クロスブラウザ・モバイル対応のリッチMarkdownエディタ を実現
今後の展望とフィードバック募集
- 全プロジェクトでの利用を計画
- シンプルさとミニマルさの維持を重視
- ユーザーからのフィードバック・改善要望を歓迎
- デモ&ドキュメント: https://overtype.dev
- GitHubリポジトリ: https://github.com/panphora/overtype