道産子エンジニア

悲観主義は気分に属し、楽観主義は意志に属する

AbemaTVに入ってからやったこと、あったこと

konifar.hatenablog.com

この記事を見て畏敬の念しか出てこなくて、自分はなぜこう人の心が動く記事をかけないのかと考えに耽るばかりだ…

もっと書かないと行けないのだろうなというなんでもないイメージしかできてないのでさらにツラい。WIPという名前とは裏腹に一体どれほど考えて書かれているんだろう。

konifar.hatenablog.com

それ以前にも振り返り記事を書いていて、適切なタイミングでアウトプットとかこのことかと思う。

前置きはさておき、環境が変わってから何をしてきたのか?ということをわかりやすく書いておいたことがなくて、やらなければと思いこのブログを書き始めた。リクルーターからのメールにブログを見ました!ですがもっと経験についてお聞かせください!みたいなことが書かれていたので反省したというのもある。別にメールは真面目に読んでないのだけど。せっかくなので、Abemaに入ってからこれまでやったことを書いておく。

 モバイルアプリ

  • 72時間テレビに向けたモバイルとTVの負荷対策
  • APIの修正やコメントのオンメモリ保存上限をつけた
  • dangerの導入
  • ktlintとandroid lintの自動化
  • 課金ページの改修
  • paging libraryの導入と置き換え

人数が増えるほどコーディングルールについて何か決まりがないと生産性が下がるなと気が付いたので行動してきた。最近は機能開発に追われていたが、lintを入れておいたのは正解だったと思っている。もう少しメンテナンスしやすくしておくのが今後の課題。

 TVアプリ

  • dangerの導入
  • ktlintとandroid lintの自動化
  • Abemaビデオの追加
  • チュートリアル追加
  • レコメンデーションチャンネルの実装
  • FireTVでおすすめ機能の実装
  • FAQ画面の改善
  • 倍速再生機能の追加
  • 課金画面動線の改善
  • 追っかけ再生機能の追加
  • ログ計測ロジックの改善
  • RxJava2への移行途中

AndroidTVの開発はだいたいわかってきたように感じるけど、Googleはあんまり動きがないので今の部分をまずはまとめて何かにしておきたい気持ちが強い。あまり需要はないかもしれないけれど。

その他

  • チームの人がGoogleドライブのファイルを更新したら通知するGAS
  • JIRAのチケットからリリースバージョンごとに一覧するGAS

github.com

一応TypeScriptで書きたくてローカルでかけるように用意してみたんだけど、結局補完などがうまく効かなかったりドキュメントを見ながら書くのでwebの辛いエディタを使う方がマシだったりする。

仕事としては以上だ。自分はあまりプルリクの粒度を細かくしてないので130程度だった。 動くものにしてからじゃないと見てもらえないよなという気持ちが強くて粒度を挙げられないので、細かくしてる人のフィードバックの受け方のコツが知りたい。

もちろんほとんどの仕事は自分一人でやったことではなく、チームのみなさんのおかげで完遂できた。機能実装では上記だが、個人的な学びはもっとたくさんあった。

仕事以外の学び

  • fluxを実務レベルで理解できてきた
  • Kotlinを実務レベルで理解できてきた
  • AndroidTVアプリのできることできないことがわかってきた
  • 大人数チームでの開発で大事なことがわかってきた
  • Rxの雰囲気で理解してる部分がわかってきた
  • 動画の配信システムについて少し理解が深まった

AndroidTVについてはブログを少し書いたり発表したりもしているがそれ以外についてはあまりアウトプットできていない。こう見ると悪くない時間を過ごしたなと思いつつも、もっと上手くやるにはどうしたらいいだろうとちゃんと振り返ってまとめないといけないし、もっとアウトプットしておかないといけなかったなと反省している。

チームの流れ

最初はTVの開発をメインに担当してくれとお願いされていたが、初っ端からモバイルも手伝ってくれ!となったので中途半端ながらモバイルとTV両方見ていた。この数ヶ月で入ったときよりさらに人数が増えて、TVの専任で頼むとなったので今はTVチームとして働いているが、自分の立てた目標がモバイルで実践するしかないものだったりしていて、依然として片足をモバイルのほうに突っ込んでいる。そのためスケジュールがキツく、迷惑をかけてしまっている部分もあり反省している。

足りない部分

中規模のチーム開発を通じてまだまだ足りないなと思ってる部分もクリアになってきた。

  • あとから誰かが見やすい、理解しやすいコードがまだまだちゃんと書けてない
  • 理解してから実装に落とし込むまでのスピードがまだ遅い
  • ガッと勢いで書いてしまうことがよくある
  • テストをもっと積極的に改善する力が足りない

それぞれに対してできることを上げるならこんな感じで、実際に始めている。

  • 良いコードについてもっと勉強して実務に落とす
  • プルリクの粒度を下げて、進みを良くする
  • テストから書き始める

良いコードとは何だろう?永遠のテーマだし、リーダブルコードを再読したり別な本を読んだりしながらもがき学んでいる。そのチームにおいて良いコードというのは違うし、開発のフェーズでも違う。常に良いコードは何かを考えて書いていくためにまだまだ実力が足りないと感じた。先輩からの忌憚のないフィードバックも効いていて本当に感謝している。 その他にこのあともできそうな面白いことが増えてきた。

初めてトレーナーになった

最初に面談で俺もトレーナーが初めてなので一緒に頑張ろうと話した。自分で強くしたい部分はどこなのか聞いて、自分で一年後にどうなっていたいのかなどを話した。できるようになりたい部分については自分も共感できたので一緒に強化しようと決めた。もう一つ最初に伝えたことがあって 「報告をするのは俺で、連絡と相談をするのはトレーニーの役目だ」 と言った。普通、後輩が先輩に対して報告、連絡、相談を全てすると思われているが俺は違うと思う。特にトレーナーとトレーニーの関係では先輩が報告をするべきだと思う。チーム内に流れる情報は、どんなに工夫しても一度で全体に行き渡ることは少ないと思う。基本的に意思決定をしている人から、その会議に参加している人、チームのリーダー、メンバーというように流れて行く。つまりトレーナーの方が仕事をする上で意識しておかなきゃいけないことを知る機会が多いことになる。それを後輩が全て自分でキャッチアップしろというのは先輩のエゴじゃないだろうか。

情報を「実はこうなんだよね」というタイミングで公開されて楽しいのはクイズだけだ。仕事ではなるべく早く報告するように気をつけている。自分の周りの先輩も当たり前にそうしている人が多いのでこれは間違いなく最初に伝えておこうと考えていた。


チャレンジングな開発やこの規模だからこそ体験できることがたくさんあって、日々勉強ばかりなのでまだまだ精進していく。