Google Docs等オンライン上で共同編集できるワープロ類は多く、個人的にも作ってみたいので比較。
結果
実装 | 描画部分 |
---|---|
Google Docs | DIV → Canvasに移行予定 |
Microsoft Office online / Office 365 | DIV 内の P |
Apple iCloud Pages | SVG 内の G 内の TEXT |
なんとiCloudのPagesがSVGベースという驚きの結果。。TeXのような既存のタイプセッタとの統合を考えると、地味に有力な選択肢な気がしないでもない。
Wordは比較的HTMLに素直な実装。
Google Docsは中間的。まぁコンテキストを保持しないといけないようなシチュエーションでも無いので、DIV
とSPAN
でどうにかする方向性もそれほど間違っては居ないんじゃないだろうか。 追記: Google DocsはCanvasに移行予定 https://workspaceupdates.googleblog.com/2021/05/Google-Docs-Canvas-Based-Rendering-Update.html
ToDo
- Libreoffice Online / Collabora Online
- NextCloudか何かファイル管理部分が無いと使えないので保留 https://nextcloud.com/collaboraonline/
- Onlyoffice
- 手元で試したけど認証が通らず上手くいかなかった。 https://qiita.com/yhornisse/items/cd320745454998484dac
Onlyofficeはreadonlyのオンラインデモを見る限り描画面やカーソルが <canvas>
で描画されており興味深い。いやまぁ AGPL3 なんだし実装読めば良いんだけど。 https://github.com/ONLYOFFICE/DesktopEditors
実装比較
Google Docs
- https://www.google.com/intl/ja_jp/docs/about/
- 公式の説明ページ
- https://workspaceupdates.googleblog.com/2021/05/Google-Docs-Canvas-Based-Rendering-Update.html
- Canvasへの移行計画を説明したページ
日本語化されてないんだっけ?普通の実装と言える。
編集pingは特になく、Google Analytics同様表に表示する等のimpressionのトラッキングを行っている。OPTIONS等のHTTP語彙も使用する。OfficeやiCloudに見られるような長期pollingも無い。帯域に配慮?
Microsoft Office Online
- https://products.office.com/ja-jp/office-online/documents-spreadsheets-presentations-office-online
- 公式の説明ページ
名前がひらがななのは、漢字にすると何故か"不適切な名前"と怒られるため。バルガリティフィルタに引っ掛るような名前に産まれたつもりは無いんだけど。。
MS Wordの再現性が地味に高い。MSはいわゆるAJAXを生んだXMLHTTPRequest
(XHR)実装の本家でもあり、XHRはOffice Onlineの先祖にあたるOutlook WebAppで使うために作られた。Outlook WebAppも登場当初からそれなりに再現性の高い実装をWebブラウザ上で実装していた。
なぜか編集中のpingアドレスは OneNote
になっている。長期pollingは30秒程度。
Apple iCloud Pages
- https://support.apple.com/kb/PH14665
- 公式サイト ..? iCloudが使えるAppleIDを持っていれば、 https://www.icloud.com/ でログインすることで使うことができる。
- 2000年代前半にAppleIDを取得した場合、ドットや他の特殊文字をIDに入れることができてしまったためiCloudが使えないことがある。
編集面はSVGで実装されており、カーソルも普通にSVG的なRectで描画され、点滅は visibility: hidden
の切り替えで行っている。ただし、右ペインの編集コントロールは普通にDIV
等のHTML語彙で描画されている。
テキストの編集を開始すると、自動的にText要素は分割される。つまり、 contenteditable
的な意味で編集しているオブジェクトは常に空か、IME的なpreeditの内容だけということになる。リガチャ等は欧文固有の事情で、欧文ではキータイプ毎に変更が即反映されるのでこのデザインによって見た目が損われることは無い。(Zapfinoのような大きなフォントで f とか fi を入力してみるとわかりやすい。内部的には fi のようなUnicode合字に自動的にcomposeされる。)
通信には1分ものlong pollingが有る。用途は謎。