背景
SmartNewsの2020年米国大統領選向け開発には、変更できない期限がありました。東京とサンフランシスコのチームがUS版に向けて、政治記事を比較する機能、候補者情報、選挙結果など、複数の関連機能を開発していました。
私は各画面のiOS実装を担当しました。UI、APIデータ、表示期間、言語ルール、ディープリンク、テレメトリを選挙日までに揃える必要がありました。
News From All Sides
News From All Sidesでは、カスタムUISliderを使ったNews Event画面を作りました。コントロールは、データに応じて3段階または5段階の視点を表示しました。
オンボーディング、ディープリンク、操作ログ、アプリ内の複数画面からの導線も追加しました。政治的に注意が必要な内容を扱うため、データにない意味を追加せず、利用できる視点を分かりやすく見せる必要がありました。
候補者と選挙結果
候補者ウィジェットと一覧に加え、選挙結果ウィジェットを実装しました。開始と終了のタイムスタンプで、結果を表示する期間を制御しました。
言語は端末のロケールだけでなく、SmartNewsのエディションにも依存しました。日本版では必要な場所に日本語を表示するよう、エディション別のルールを追加しました。
API連携にはフォールバックを用意し、クライアント条件でロールアウトを制御しました。
リリース
選挙関連機能は、予定していたアプリ内の画面で選挙日までにリリースされました。ユーザーは異なる政治的視点の記事を切り替え、候補者情報を読み、設定した時間になると結果を確認できました。新しい導線とコントロールの使われ方を確認するため、操作ログも記録しました。
次に取り組むこと
時間で表示を切り替えるUIは、表示期間の途中では確認しやすい一方、境界で問題が起きやすいです。同じプロダクトで次の選挙向け機能を出すなら、共通の時計を注入できる設計にし、開始時刻、終了時刻、タイムスタンプがない場合、エディション変更のテストを追加します。両方のエディションで同じケースを実行し、各時刻で期待する画面の状態も記録します。APIから応答がない場合とクライアント条件が無効な場合も同じテスト計画に含めれば、次の固定期限が近づいてからリリース条件を調べ直さずに済みます。また、API、クライアント条件、選挙スケジュールが一致しない場合に、どのフォールバックを優先するかを文書にします。


