背景
SmartNewsでは、SmartViewシステムを通じて数百万規模の記事をレンダリングしています。既存の抽出パイプラインは長年の運用の中で技術的負債が蓄積しており、媒体ごとの挙動の不整合も増えていました。
しかし、レンダリング基盤を全面的に置き換えることは大きなリスクを伴います。わずかな不具合でも、記事の可読性やユーザー体験に直接影響してしまうためです。
課題
求められていたのは、以下を満たす新しい抽出基盤の導入でした。
- 新しい記事抽出パイプラインの構築
- HTML解析・整形の信頼性向上
- バックエンド配信ルール(CSS・変換処理)との統合
- 既存レンダリング体験を壊さない安全な移行
重要なプロダクト基盤を止めることなく、段階的に刷新する必要がありました。
アプローチ
SmartHTMLExtractorV2 を既存システムと並行して動作する構成として実装しました。
具体的には:
- SwiftSoupをラップした新規Swiftモジュール(SmartHTML)を作成し、安定した内部APIを提供
- 新しい抽出パイプラインを実装
- HTML解析とクリーンアップ
- バックエンド配信CSSルールとの統合
- 内部モデルを用いた構造化フォーマット処理
- クライアント条件分岐による制御を導入し、v1/v2を安全に共存可能に
また、運用面のリスクを下げるために:
- クライアント条件判定失敗時のフォールバック処理(stage/prod URL切り替え)を追加
- エディション別プロキシ制御(US版 / JP版差異)に対応
- iOSバージョンごとの差異(JPEG / WebP画像選択など)も吸収
成果
- コア体験に影響を与えることなく、並行レンダリングシステムを安全にリリース
- 一括切り替えではなく、段階的な検証・ロールアウトを可能に
- 将来的な改善を進めやすい、Swiftベースのレンダリング基盤を整備
この事例で示せること
- 高リスク・高影響システムにおける安全なロールアウト設計
- サードパーティライブラリを安定した内部抽象へラップする設計力
- 大規模なObjective-C / Swift混在環境でのモジュール設計
- 実装だけでなく、運用安全性やフォールバックまで含めた設計思考