そのプリミティブなAPIはインターネット上でのスケジューリングを可能にし、そのクライアントは抑制の傑作です。
Google Calendarの仕組みと、エンジニアとして学べること。
フロントエンドフレームワーク: なし(!)。認証や共有ユーティリティなどのための社内ライブラリがいくつかあるだけ。
フロントエンドスタイリング: CSSクラス名、JSで呼び出し。
フロントエンドストレージ: Cache Storage、IndexedDB(オフラインモード)、CDN(画像とフォント)。
APIストレージ: Spanner DB。
外部API: Google Meet、Google Contacts、Google Auth。
サービス: heartbeat、eventing、notifications。
その他: JSのダウンロードと実行を高速化する社内コンパイラ。
興味深い課題
確かに、カレンダーは一つの大きなCRUDアプリです。しかし、それに惑わされてはいけません。解決しなければならない多くの厳しい技術的課題がありました。
はい、HTMLの構造化は実際に興味深いものです!カレンダー表示はコンテンツが豊富なため、要素が分離されていないと大きなパフォーマンス問題が発生します。
最も重要なHTMLレイヤー:
各カレンダークライアントにはいくつかの重要なアルゴリズムがあります
// overlapping events logic if start or end of targetEvent overlaps with any(events): if start and end of targetEvent = start and end of any(events): orderEventsAlphabeticallyByTitle() if start of targetEvent = start of any(events) and end != end of any(events): orderByDuration() //longest events go behind shorter events if start or end of targetEvent != start or end of any(events): if targetEvent overlaps multiple events: targetEventGoesInFrontOfEvents() else: orderEventsByStart() //events that start earlier go behind
\
これらのアルゴリズムの完全な実装については、Compassリポジトリを参照してください。
これらは、クライアントコードをシンプルで信頼性の高い状態に保つ外部の働き者です
[
\
グローバル規模のCRUDアプリの構築は、アーキテクチャ図からは単純に見えるかもしれませんが、そのシンプルさには依然として高いレベルの実行が求められます。
規模の要求を考えると、単に何もしないことで自分の生活を楽にすることができます。
人生と同じように、製品をリリースする際には自分自身を知ることが重要です。
Google Calendarは、エグゼクティブアシスタントが1日に40の会議をスケジュールするために使用する最新のアプリになろうとはしていません(それはVimcalの役割です)。
Google Calendarは、20億人のユーザーの誰もが手取り足取り教えなくても操作できるシンプルなアプリを目指しています。アクセシビリティのスコアは88/100です。UIは変わりません。ダウンしませんし、もしダウンしてもオフラインサポートがあります。
ただ動くのです。
それで十分です。
これらの詳細な分析をメールで受け取るには、私のニュースレター「Fullstack Engineer」を購読してください。
\


