[フレーム]
BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

InfoQのすべての体験をアンロックして、そのメリットを最大限に活用しましょう

ログインして、InfoQのすべての体験をアンロックしましょう!お気に入りの著者やトピックの最新情報を入手し、コンテンツと交流し、限定リソースをダウンロードできます。

ログイン
または

アカウントをお持ちでない方

登録
  • あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。
  • 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。
  • 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

Topics

地域を選ぶ

AIオールスターズ2025

"AI活用"をキーワードに「AIを使い倒し/使いこなす」企業の最前線をお届けします。

QCon San Francisco - image
QCon San Francisco 2025

Get production-proven patterns from the leaders who scaled a GenAI search platform to millions, migrated a core ML system without downtime, and architected a global streaming service from the ground up.

Early Bird ends Nov 11.

QCon AI New York - image
QCon AI New York 2025

Move beyond AI demos to real engineering impact. Discover how teams embed LLMs, govern models, and scale inference pipelines to accelerate development securely.

Early Bird ends Nov 11.

QCon London - image
QCon London 2026

Benchmark your systems against leading engineering teams. See what really works in FinOps, modern Java, and distributed data architectures to balance cost, scale, and reliability.

Early Bird ends Nov 11.

InfoQ ホームページ ニュース Reddit、モバイルアプリ全体の新しいフィードアーキテクチャにサーバー駆動型UIを採用

Reddit、モバイルアプリ全体の新しいフィードアーキテクチャにサーバー駆動型UIを採用

2023年10月4日 読了時間 3 分

作者:

翻訳者

Redditは、iOSモバイルアプリのフィード機能を改良し、Androidアプリにも導入した。どちらのケースでも、モバイルアプリをリリースすることなくローカライズされたコンテンツレイアウトの変更を可能にするServer-Driven UI(SDUI)をコミュニケーションアプローチとして採用した。

2022年、同社はRedditをより使いやすくすることにコミットし、それ以来、より良い投稿体験、検索可能なコメント、モデレーター・ツールの更新など、いくつかの改善が行われてきた。今年の主な焦点は、より良いユーザーエクスペリエンスを備えたフィードの新設と改善だ。チームは、ゼロから新しいフィードプラットフォームの構築に取り組んだ。この動きは、主に以前のフィード・アーキテクチャで作業することの困難さから、この動きが決定した。

Redditの熟練ソフトウェア・エンジニアであるKirill Dobryakov氏は、以前のフィード実装における課題を次のように語る。

昨年、我々のフィードはかなり遅かった。(中略)フィードのコードは、メンテナンスの悪夢のようなものに成長していた。現在のコードベースは、会社が今よりかなり小さかった2017年頃に開始された。多くのエンジニアと機能が、6年前のコードベースを最小限のアーキテクチャー監視でやり抜いてきた。この領域で新しい製品機能を試す際に、迅速に反復することが、より一層の課題となっている。

フィードはRedditの機能の核となる部分だ。チームは、新プラットフォームがより優れた機能速度を実現し、より優れたパフォーマンスを提供し、異なるデバイスやサーフェス間で一貫性を提供することを確実にしたいと考えていた。

バックエンド側では、チームはGraphQLを維持しつつ、APIレスポンスのオブジェクト構造を作り直した。多くの投稿タイプで利用可能なすべての属性を含む大きな投稿オブジェクトを提供する代わりに、チームはServer-Driven UI(SDUI)を採用し、クライアントアプリがレンダリングする正確なUI要素を送信した。新しいレスポンス構造は、UIコンポーネントを一般的なセルのグループにまとめる。そうすることで、バックエンドはレイアウトの大部分を制御し、新しいコンテンツ要素を素早く導入できる。モバイルアプリは、さまざまな投稿タイプやその他のコンテンツを表示する方法が分からなくても、APIレスポンスに記述された要素をレンダリングする処理を集中して行う。

SDUI採用前後のAPIレスポンス(出典:Reddit Engineering Blog)

プロジェクトの一環として、チームはiOSアプリのもっとも古い部分の1つを、Swiftで書かれた新しい実装に置き換えた。その部分は、主にObjective-Cで書かれており、積極的なメンテナンスがされていなかった。

チームは新しいコードベースをモジュール化し、ビルド時間を短縮し、テスト容易性とテストカバレッジを向上させた。また、新しいコンポーネント・ライブラリを活用し、標準化されたデザイン・システムを実装することで、すべてのフィードで視覚的な一貫性を実現した。技術スタックの更新により、コードベースはより安全かつ迅速に開発できるようになり、APIレスポンスから不要なデータを削除することで待ち時間が短縮され、ホームフィードの読み込みが12%速くなった。

![](https://imgopt.infoq.com/fit-in/1200x2400/filters:quality(80)/filters:no_upscale()/news/2023/09/reddit-feed-server-driven-ui/en/resources/1fnf9p0kztxdb1 Large-1694876277864.jpeg)

iOSアーキテクチャ(出典:Reddit Engineering Blog)

フィードのアーキテクチャは、チェーン可能なデータソースサービス、データモデルをビューモデルに並列変換するコンバータ、および、以前のビューモデルと新しいビューモデルのスナップショット間の変更を適用する方法を見つけることができる差分エンジン(SliceKitの一部)で構成されている。

作者について

Rafal Gancarz

もっと見るより少なく

この記事に星をつける

おすすめ度
スタイル
  • 関連記事

    • 関連スポンサーコンテンツ

特集コンテンツ一覧

InfoQ ニュースレター

毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /