Twitter での6年間 #4
(Twitter での6年間 3 からの続き)
2013年に入り、iOS 6 の普及率も十分に高くなったころ、同僚のエンジニアから1つの提案がなされた。ツイートビューを作り直そうというのだ。その時点での Twitter for iOS は、iOS の黎明期に Apple が推奨していたように、できるだけビュー階層を減らして描画するようになっていた。たとえば、ツイートビューには一切サブビューがなく、ツイートテキスト、プロフィール画像、ユーザー名、タイムスタンプなどのパーツは直接ツイートビューに自前で描画する設計になっていた。当初はそのほうがパフォーマンス的に速かったからだ。それから数年間の Apple によるハードウェア、ソフトウェア両面での改善の結果、ベンチマークを取ってみるとどうやらその設計はもう古いらしいことがわかった。たとえば画像を表示するときに、自分でビューに CPU で描画するのと、標準のイメージビューに画像を渡して GPU で描画するのでは、後者のほうが圧倒的に速くなっていたのだ。そこで、モデルと UI の両方に詳しいということで、ぼくがツイートビューを作り直すことになった。その時点ですでにツイートにはさまざまな添付情報がつけられるようになっていて、さらにプロモートツイートとの関係もあったので、ツイートビューは非常に複雑な構造になっていた。これを1つ1つ丁寧に変更を加えては実データで問題なく表示されるかをテストして、描画するパーツを実際のビューに徐々に置き換えていった。売上に直結するプロモートツイートに関連する部分では失敗が許されないので特に気を使った。この作業に3週間くらい費やすことになった。その結果、何も問題を起こさずに作り変えは成功した。入り組んでいた描画コードは整理され、パーツごとにビュークラスとして分離され、CPU でやっていた処理をより速い GPU での処理に置き換えることができて、タイムラインのスクロールパフォーマンスもよくなった。これから後に実際に起きたツイートビューへの機能追加のスピードと数を考えると、この時点で作り直しておいてよかったと思う。あとになればなるほど、作り直しはより難しくなっていたはずだ。
そのころ、毎週あった iOS エンジニアが全員集まる全体ミーティングで iOS のレポジトリへのコミット数とレビュー数のランキングを表示するダッシュボードができたことが公表された。どちらの指標でも、ずっと以前からいたメンバーを抜いてぼくが1位になっていた。どうやら元エンジニアのマネージャーは自分でいろいろスクリプトを書いて、各メンバーの仕事の具合がどんなものか数値化して見ていたらしい。その数値をダッシュボードを作って可視化し、誰もが見れる形にすることで、よりフェアな成果の評価につながると考えていたようだ。
そのおかげもあったのか、2013年前半のフィードバックサイクルで Staff Software Engineer に昇進することになった。ベース給料が上がり、RSU も追加で割り当てられた。
(Twitter での6年間 5 に続く)