出荷を見届ける 2021
2019. 2020 はなかった。パンデミックで参っており、それどころではなかったらしい。
なんとなく会社に行ってみたら、やはり人は少なかったがいちおう部屋が押さえられており、cupcake が振る舞われていた。相変わらずリークしまくりで、発表会も muted だし store は相変わらずよく落ちるしで雑、だが、それは全体としての「品質」とは整合しているので個人的にはそういうもんだろうという感想。完成度が高い flashy なのが欲しい人は隣町の電話を買えば良いし、買ってるだろうから。
自社製の SoC, といってもどこかの参照実装を改造したものだと思うけれど、に乗り換えるというのは会社的には big deal で、電話機部門としてはまあまあ historic な出荷となった。SoC とか作る人員を抱えた以上会社としての社運賭けちゃってる度も増したはずで、そういう意味ではもうちょっとなんとかしたら・・・と思わなくもない。
SoC が自社製になるの、戦略的にはフルスタックでコントロールできるのがよいという話だと理解している。ソフトウェア的には、SoC と自分のコードの間にわけのわからない SoC メーカーのコードが挟まらないのが良い。
SoC というのはハードウェアと一緒に SDK とかドライバみたいのがついてくる。そのコードは Android 無関係にかかれたナゾの独自ワールドで書かれた部分が多くアブストラクションとかに無駄が多く、ソースがないバイナリだけの部分もあり、ソースがあってもライセンスの縛りで限られた人員にしか読めない部分もあり(たとえば自分はカメラの ISP にアクセスするコードは読めない)、読めるコードも毎年 SoC と一緒にバーンと降ってくるので毎年インテグレートし直さねばならず、upstream もままならないのでバーンと降ってくるたびに同じバグがあったりして、こいう hoops をくぐるだけで仕事が終わってしまい価値のある仕事をする時間がない・・・とレイヤが下の方の人はいつも文句を言っていた。それを今は自分たちで書いたコードで置き換え「毎年降ってくる」ようなものはなくなったため、ハードウェアの bring-up が終わればすぐに価値を生む仕事ができる。ので下の方 (HAL, kernel) の人たちは張り切っている。
HAL のコードというのはソフトウェアエンジニアリング的にみると本当にヤバい。チップセットごとに完全にツリーがわかれていて、コードが全然共有されていない(共有する部分は基本的には OS の側に入っている。) 新しいチップセットが来ると前の世代のコードをコピーして、それをいじる。チップセットごとにディレクトリがわかれている。だから新しい世代でハードウェアに関係ないバグを直しても古い世代のバグは (cherrypick しない限り) 直らない。地獄。電話機メーカーもそれが地獄なのはわかっているので、HAL であっても世代間で再利用できるコードはなるべく世代非依存なモジュールに押し出して共有したりするが、なにせ自分でコントロールできない部分も多いので、限度がある。だから古い電話機の HAL は、出荷されたらもう良くならないのが基本。
自社でぜんぶソフトウェアを書くとこういう狂ったしきたりから決別できる。決別するのかは知らないが、常識的に考えるとすると思う。そうなると、出荷された電話機も OS の上の方と同じように出荷後もコードが進化していく、かもしれない。さすがに kernel のバージョンを上げたりはしないだろうけれど。
というわけで、ソフトウェアのチーム的にも SoC 獲得は big deal で、worth a デスマーチだと解釈されている。が、こういう苦労とその解放は HAL から下の話で、アプリのように OS 提供の API の上で暮らしている身には関係ない。なので、自分の実感としての感慨はない。近隣の人たちへ労いの気持ちはある。
アプリの速度担当としてみると、細かいトラブルはあったものの CPU/GPU は速くなっているし HAL のレイヤもそんなかんじで人々が張り切っており性能についても初期から専属で見る人々がいたので過去のような問題はなく、拍子抜けだった。自分の担当範囲外では色々大変なこともあったようだけれど、自分に火の粉は来なかった。
思い返すと、なんとなく Blink が WebKit を fork したときにちょっと似てるかもしれない。自分で全部コントロール出来るぞヤッホイみたいな excitement がある。
そういう組織・製品としての盛り上がりに自分を同期できるとよかったが、個人的にはそういうのとは関係ない様々にミクロな理由で、限りなく意欲の低い年だった。電話機の仕事を終わりにしたい気分が強い。それはなかなか叶わない願いなので、気分を盛り上げていく方が良いのはわかっているんだけど、なかなかね。