TimeTreeとAndroidチームの紹介
TimeTreeTechTalk 始めていきたい と思います。よろしくお願いします。
今日は TimeTreeのAndroid EngineerのAndy をお迎えして Androidチームについて
いろいろ話をしてもらおうかな と思っています。
でもそういえばアンドロイドチーム で言えば、こないだドロイド会議
のアフターパーティー行ってました よね、Andy。
行きました。
ね、しゃべってましたね。
はい。
いきなり台本にない話をするんです けど、どうでした、雰囲気。
雰囲気、そうですね。何て言うん だろう。わかんないんだけど。
皆さん興味津々で聞いてくださって いたのかなと思います。
素晴らしい。
なかなかTimeTreeの外部で発表 するっていうことが少なかったんで
これからどんどん発信とかして いけたらいいなと思ってたんです
けども、僕の知らぬところですごい 進んでて、実際発表してたっていう
話ですごいいいなと思いました というところですね。
データバインディングからビューバインディングへ
はい。で、こないだAndyのツイート でAndyがAndroidチームに出られない
部屋を作ったという話があった と思うんですけど、ちょっと改めて
どういう話だったか伺ってもいい ですか。
はい。あれはそうですね、データバインディング からビューバインディングに移行
しないと出られない部屋っていう ふうな形でちょっと。
めっちゃ名前が具体的なんだよな。
はい。まして、ちょっとAndroidチーム の課題として、ちょっとデータバインディング
をどうしても移行したいと。それは なんでかっていうと、Kotlinをバージョン
アップするのにKAPTをなくす必要 があるんですね。ちょっとコード
を生成してくれるやつみたいな イメージでいてくれたらいいんですけど、
データバインディングっていう のがそのKAPTっていう技術を使って
コードを生成して楽に書けるよ みたいな技術だったんですけども、
それがちょっとKotlin 2.0ではちょっと 使えないよという感じ。それがある
Kotlin 2.0に上げれないよという形 になっていたので、ちょっとKAPTを
使うのやめましょうということで、 じゃあそれを使っているデータバインディング
もやめなきゃいけないよねということで 脱却していく必要があったんですけど、
その脱却する方法として一番お手軽 なのがView Bindingに移行するっていう
ちょっと似たような技術なんですけど、 そういったものに移行するっていう
のが必要だったんですね。
じゃあもうなんていうか、Kotlinの 言語のバージョンを上げるにあたって
マレガシナ技術をタイムツリー の中のAndroidのコードでは使っていて、
それをいわゆるお手軽っていう かあれですけど、名前ももう似てる
んであれなんですけど、これに移行 するといいよってやつに移行する
っていう話ですね。
チームの取り組みと課題
そうですね。
これは最近タイムツリーだと基本的に リモートで働いてる人が多いと思うん
ですけど、どういう形式でこういう 話を実行することになったんですか?
そうですね。週1でAndroidチームデー っていうのをやってまして、それで
ちょっとじゃあみんなで、チーム の課題なのでチームみんなで移行
するのやっていきませんかっていう ので、Androidチームデーで取り上げ
てちょっとみんなでワイワイやり ましょうという形でやりました。
Androidチームデーは週1でコード を書き換えるみたいなことをやって
いるのか、他にもいろいろやって いるのかでいうとどういうこと
をしてるんですか?
いろいろやってるんですけど、大体 は技術の課題について話したり、
こういう技術課題を解決するっていう ところでちょっとみんなで集まって
黙々と作業をしたりとか、あとは ボードゲームでちょっとみんなで
遊んだりとかしてます。
確かにそういうの大事。
ちょっと親睦を深めるというか。
親睦を深めるね。
なるほど。技術的な話をしたり、 親睦を深めたりっていうことを
やってるっていうことです。これって オフィスでやってるんですか?
今はほとんどリモートですね。
情勢的にそうですよね。でもたまに オフィスに行ったりするといっぱい
人がいて、今日Androidチームでです みたいな話を聞いたりすること
はあるんですけど、オフィスにやる こともあるんですか?
そうですね、あります。第1回はちょっと みんなで集まろっかみたいな感じで
やったりして、あとは前、今はちょっと 第1次と第2次みたいな感じで考えて
るんですけど、Androidチームで1回 月1でやるみたいな形式でやってた
時期があって、それで少しお休み して、最近また第2次Androidチーム
でみたいな形で、割と週末にやる ようになったりとかしてました。
じゃあやり方の運用も含めて結構 チームで話し合っていろいろやり
方変えてるっていう感じですね。
そうですね、はい。
また何で第2次というか、また頻度 を増やしたのは何かあったんですか?
きっかけは。
最初は月1でやってたんですけど、 月1でAndroidチームのことをやる
時間っていうのがあんまりなかったん ですね。組織としてマトリックス
構造で、大体はプロジェクトとか そういう組織に属して各プロジェクト
でチームの仕事をしてるっていう 形で、週1回ぐらいAndroidチームの
定例とかで何か話したり、状況 共有したりとかそういったことは
してるんですけど、中長期的なAndroid の課題を共有したり、それを管理
して解決していくっていう場は あんまりなくて、ちょっとそういう
時間もあってもいいよねという ふうな勝手に、月1で集まるみたいな
回をやってたんですけど、さすがに だからといって月1日丸ごとそれ
だけをやれるかっていうと、なかなか 他の定例ミーティングとかもあったり
するんで、そればっかりには集中しにくい っていうところもあって、月1
だからって他のミーティング出ない っていうわけにもいかないし、なん
となく運用として難しいなみたいな ところもあったので、1回やめて
またしばらくやめてたんですけど、 またちょっとやりたいねみたいな
話もあって、ちょっとやり方を考えて、 週末、金曜日の夕方あたりとかだと
わりとみんな空いてるので、そこで ちょっと2、3時間集まってやろうか
みたいな形で、第2次という形で再出発 みたいな形ですね。
なるほどですね。頻度を増やして、 あと1回ごとの時間もちょっと減らして、
他の仕事とのコンフリクトを減らす ような感じで再出発みたいな。
この辺の運用ってやっぱりやって みないとわかんないし、やると
問題が露呈するみたいなことも いっぱいあるから、そういう修正
してるのはすごくいいですよね。 話として、深刻深めるみたいな
話もあったと思うんですけど、 技術的な課題についても話してる
っていうのがあると思うんですけど、 Androidで今こういう課題というか
のが問題になってるとか、そういう ホットな話題みたいなのって
技術に関してあったりしますか?
そうですね。この間、この間って 1、2ヶ月前になるかもしれないですけど、
話したのは、ちょっとアーキテクチャ どういう構造で作るかみたいな話があって、
それを矯正するライブラリー っていうのもあるんですね。
そういうコンシストっていう、どういう 構造で作るかっていうのを
ちゃんと矯正するリントみたいな ライブラリーがあって、
それをちょっと導入しました というところで、それをどういう
ルールで適用していくのがいいのか みたいな話をちょっとしてて、
ドメインモジュールが何に依存 したらいけないのかとか、
ユースケースとかリポジトリとか いろいろいるんですけど、
その辺どういう関係性で誰が何をして、 誰が何に依存しちゃいけないのか
みたいな話をもうちょっと整理しよう みたいな、ルール化しようみたいなことを
移行の取り組み
勧めてたんですね。そういう関係で、 モジュールの分割方法とかも、
今結構命名とかどういう基準で 分割していくのがいいのかとかは、
結構自由な感じになっているので、 その辺を少しルール付けしよう
みたいな形で再整理しようという形で、 ちょっと課題をみんなで挙げながら、
どういうルール作っていくかみたいな 形のことを話したりとかしました。
そうですね。最近アンドロイドも チーム拡大していく中で、
やっぱりフリーダムに書いていると やばいみたいなのは出てくるから、
依存関係1個1個ちょっとほぐしていって 整理するみたいなのって、
すごい何て言ったらいいんだろう、 すごく大切なんだけど、緊急性はないし、
しかも大変っていうタイプの仕事ですよね。
でもそれに取り組めるのは すごく良いことだと思うし、
組織がスケールする上で、コードベースが ボトルネックにならないような
取り組みだと思っていて、すごくいいなと思いますね。
なるほどね。
で、そういうことのうちの取り組みとして、 出られない部屋があったっていう、
話戻っちゃうんですけど、 出られない部屋があったというところですかね。
はい、そういうことです。
これツイートに書いてあったんですけど、 確か50件ぐらいやったみたいな話があって、
僕は単純に出られない部屋ってアンディが ボカしてるけど、
僕はタコ部屋になったんじゃないかと 想像したんですが、
雰囲気っていうか、実際50件やるぞって 言ってやったのか、
みんなで50件やることに対してどういう雰囲気 だったのかなって気になるんですけど。
まずは別にタコ部屋じゃないです っていうところからなんですけど、
別に人道的な訳合いとして。
人道的な回でした。
はい、人道的な回でした。
50件やるぞとか、やらなきゃ出られないぞ っていうふうに言ったわけではなくて、
みんなで集まってやろうみたいな話を ちょっと面白くツイートしただけなんですけど。
チームの協力と意識
なるほどね。
嘘ではないけど誇張したってやつか。
嘘です、誇張したというか。
ちょっとミームを使ってしまった みたいなところはあるんですけど、
集めてみんなでやろうみたいな感じで、
最初始めた時は300件ぐらい、
そういう移行しなきゃいけない 対象があったんですけど、
やるぞってみんなでやるぞって言った時は、
100件とかだったかな。
ちょっと覚えてないんですけど、
ぐらいで、結構もう少なくなってきたし、
みんなでやれば手分けしてやれば、
もう一気になくせるんじゃないか みたいなぐらいな感じで、
ちょっとやりましょうみたいな感じでしたね。
ちょっとまだ何人か積極的にやってくれる人もいたんですけど、
やったことないっていう人もいたので、
ちょっとワークショップ的にじゃないですけど、
どうやってやるのかをみんなでやりながら、
認識合わせしながらみんなでスムーズに、
その移行も単独でできるように、
みんなで移行を進めていこうっていう形でやっていきましたね。
移行を進めていこうっていうことですね。
そうですね。
結構そのモブプロみたいな感じでやったっていう理解であってますね。
そうですね。手順をちょっとおさらいしながら、
こういう感じでやっていこうって感じで、
ダメだな、なんかちょっと。
移行をやっていこうに引っ張られる。
やっていこうに引っ張られましたね。
最初300件あって100件まで減ってたと思うんですけど、
その200件は結構そのなんていうか、
有志でできる人がやってたみたいな感じでやってたんですか。
そうですね。割と有志でやっている感じで、
なんか暇があればやるみたいな感じでやってるって感じですね。
この出られない部屋を経由したら、
みんなそこそこできる人が増えたっていう感じだったんですか。
残りの40件ぐらい50件ぐらい。
おそらくはい、できるようになってるのかなって思います。
じゃあもう割と。
みんな一つは移行作業をやってるとは思うので、
結構簡単な本当に作業としては変換作業をちょろっとやって、
ほぼほぼ何もやることがないみたいなものも多かったりするので、
単純な作業とかをやるだけみたいなのもいくつかあったので、
それは結構さっと終わらせて、
具体的にちょっと技術的に解決しなきゃいけないところとかもあるんですけど、
そういうのをこのファイルのやつはちょっと大変だからやめとこうみたいなの。
みんなでラスボスを認識しながら。
これはちょっと大変だから、
実際ビューバインディングに移行するんじゃなくて、
ほぼほぼ書き直しした方がいいかもしれないみたいなことを話したりしながら、
認識しながらいきましたね。
そういうふうにターゲットを定めながらというか、
そういうのもみんなで共有しながらやったっていう。
そうですね。
どうですかもう全部、コトリン2いけそうですかちなみに。
まだそのラスボスが強敵なので、
まだ厳しいところはあるんですけど、
いやでも倒せる道筋は立っているなとは思いますね。
なるほど。じゃあもう移行も見えてきたなという。
移行も見えてきていると思います。
素晴らしいですね。
なるほど。一例ではあるんですけど、
タイムツリーで技術的ふさいにこんな感じで取り組んでいますとかだったり、
組織運営って言うんですかね。
Androidでいわゆる事業のチームですね。
共有カレンダーとか公開カレンダーとは違う軸で、
いろんな取り組みをしていてますみたいな事例がお見せできたかなというふうに思いますね。
じゃあ今回はこんなところですかね。
アンディありがとうございました。
ありがとうございました。