Notion Offline mode リリースポスト(Notion & Ivan) : hkob の雑記録 (234)

はじめに

hkob の雑記録の第234回目は、8/19 (日本では8/20)にリリースされた Notion のオフラインモードに対する X のポストをまとめてみようと思います。ちなみに、私の一般アカウントの方にもちゃんとオフラインモードが来ていました。

オフラインモードの紹介ダイアログ

Notion オフィシャルからのポスト

日本時間の 8/20 0:01 にユースケース映像がポストされました。

オフラインモードの導入。

あなたの最高のアイデアはWi-Fiを待ちません。今、Notionも待ちません。

さらに1時間後、こちらがポストされました。

オフライン、とうとう

さらに2時間後、さらにポストがありました。

あなたが見逃した場合: オフラインモードを出荷しました

Ivan さんのポスト

そして、Ivan さんも動画でポストしています。これはかなり珍しいものです。ここから連続ポストになっていました。

5年間、「オフライン」が最も多くのリクエストをいただいてきました。

今日、エンジニアリングチームの粘り強い努力のおかげで、Notion がついにオフラインで動作します。あなたのアイデアはWi-Fiがなくても存在できます!

Notionコミュニティの皆さん、この機能を正しく構築する間、辛抱強く待ってくれてありがとう。

これは一つの旅です。この実現のために私たちが何を発明する必要があったのかを共有したいと思います... 1/n

二つ目はこちらです。確かに、プライベートでローカルデバイスで動作する Apple Notes のように簡単ではいかないですよね。

なぜオフラインがこんなに時間がかかったのか?とあなたは尋ねるかもしれません。

Notionはユニークです。Apple Notesのようなプライベートで最初にデバイスに保存される製品とは異なり、Notionはコラボレーティブです — 何千人もの人々がいるワークスペース間で同期する必要があります。2/n

三つ目はこちらです。Notion の場合には、ブロックベースで互いにリンクし合うグラフデータであるので、Google Docs などに比べると同期することは難しいですね。

そして、Google Docsとは異なり、Notionは単なるページではありません。タスクがデータベースにリンクし、ナレッジベースにリンクする、相互に接続されたブロックのグラフです。

だから、私たちは存在しないものを発明し、100M以上のユーザーを舞台裏でゼロダウンタイムで優雅に移行する必要がありました。3/n

四つ目はこちらです。同じコンテンツを複数人が同時に編集した時にうまくいくのかというのが一番心配なところでした。

最も難しい部分:複数の人がオフラインで同じコンテンツを編集する際の衝突を解決すること。

私たちのチームは、最大規模のプロダクションCRDTシステム(衝突のない複製データ型)の一つを構築しました。チームメイトの一人はそのことについて博士論文まで書きました! 4/n

五つ目はこちらです。さらにデータベースはかなり困難があったようです。とりあえずオフラインの時には50行だけ読み込むようです。今後、v2 ではさらに追加していくとのこと。

データベースはまた別の怪物でした — 各セルは無限に深いページにリンクできます。このv1では、オフライン時にデフォルトでデータベースごとに50行から始めます。(v2でさらに追加予定!)

5/n

六つ目はこちらです。そういえば昨年の Make with Notion で予告していましたね。なんとか今年のイベントまでに間に合いました。

私たちのコードはかつて、どこでも接続が可能だと仮定していました。何千もの機能を監査して、何が壊れるのか、どのように修正するか、あるいは優雅に機能を落とせるかを学びました。Notionのすべてのエンジニアリングチームが関与しています。

数ヶ月にわたる移行作業(そして前回のMake with Notionカンファレンスでの予告)の後、ついにNotionオフラインモードが登場!

6/n

最後はこちらです。Ivan さんの手書きのメッセージがいいですね。

そしてこれがバージョン1です。私たちは引き続き改良とリリースを続けます。

目標はシンプルです:どこでも使えるNotionを、あなたが考えることなく提供すること。

これまでのご辛抱に感謝します。またオフラインでお会いしましょう!

さらに別のポストで今回のオフラインモードの牽引となった論文がこちらで紹介されています。

ローカルファーストのオタクや inkandswitch のファンのために:

これは sliminality, geoffreylitt, pvh, Martin Kleppmannが共著した論文です

https://inkandswitch.com/peritext/

ブロックベースのリッチテキストCRDTの技術的基盤を世界に提供してくれてありがとう。

inkandswitch の記事はこちらからアクセスできます。

www.inkandswitch.com

こちらからもリンクされていますが、CSCW 2022 で受理された論文は ACM digital library で読むことができます。

Peritext: A CRDT for Collaborative Rich Text Editing | Proceedings of the ACM on Human-Computer Interaction

おわりに

Ivan さんがビデオで紹介するというサプライズがあり、これだけで一日分の記事になってしまいました。明日はそれ以外のポストを追っかけてみます。

hkob.notion.site