1. TimeTreeラヂオ
  2. iOSメンバーを呼んで技術スタ..
2022-09-27 32:47

iOSメンバーを呼んで技術スタック、最近の取り組み、働き方など聴いてみた #TimeTreeTechTalk

「TimeTreeラヂオ」はカレンダーシェアアプリTimeTreeを運営する私たちメンバーが、ふだんの仕事に関係することもそうでないことも、だいたい15分でひとつのテーマを話しきるインターネットラジオ番組です。

この放送はTimeTreeエンジニアによるテックなお話をお届けする #TimeTree Tech Talk です。

@gonsee(Sion)と@misyobun(Negan)を呼んで話しました!

ゴジラ概論/チームメンバー構成/Swiftへの移行/SwiftUI導入/CI環境/チームの雰囲気/仮面ライダー概論/iOS雑談会/非同期コミュニケーション/アプリ表示速度改善/繰り返し予定の展開改善/RestKitから脱却

◎TimeTree Company Deck(会社案内資料) https://bit.ly/timetree_company_deck

◎一緒に働く仲間を募集しています!(採用応募ページ) https://bit.ly/3MyqZjE

番組の感想・コメント・ご要望はハッシュタグ #TimeTreeラヂオ でつぶやいてください!

サマリー

iOSチームは朝会や技術スタック、チームの組成と目線、Swiftの使用状況とプロジェクトの進行について話し合っています。また、ビットライズの新しいプライシングシステムへの移行やGitHub Actionsを活用することで取り組んでおり、アプリの起動速度改善やカレンダーのパフォーマンス向上に力を入れています。

iOSチームの朝会と活動内容
どうも、スティーブです。
どうも、ジールです。
どうも、シオンです。
どうも、ニーガンです。
TimeTree Tech Talk、今回2回目かな、始まりました。
はーい、始まりました。
よろしくお願いします。今日は4人です。
よろしくお願いします。
シオン、ニーガンが、iOSチームの2人で、今日手を挙げて出演してくれました。
まだね、2回目なのでかなり探り探りの収録、まだ続いてますが。
ここから数回は各チームいろいろ話を聞いて回ろうかなと思っているので、
今日は簡単なチーム紹介という回ですね。
最近というか、iOSチームって結構朝会とかやってますよね。
そうです。毎日朝会をやってるんですけど、朝会の監修というかがありまして、
まずオープニングとエンディングに何か映像を流すっていうのを続けてまして。
朝会のオープニングとエンディングがある。
そうですね。最初は景気づけに音楽かけるみたいなことをやってたんですけど、
だんだんセンタイモのオープニングとかを、シリーズを順番にやるみたいなところを流れになり、
今何をやってるかっていうと、歴代ゴジラ映画の予告編を見るというのをやっています。
予告編を見るっていう。
そうですね。
オープニングとかじゃなくてね。
予告編を見て、さらにその作品の解説を10分ぐらいやってます。
ゴジラの解説を調べながらやってる?
調べながらやってる。
あ、調べながら。
ここでね、たぶん聞いてくれてる人がだんだん分かんなくなってきてると思うんですけど、朝会の趣旨って何ですか?
朝会の趣旨は、普通に今何をやってるかと、相談事項を各自言うっていう。
その前後にね、ちょっと遊びを挟んでるという。
あくまでもゴジラはおまけですね?
そうですね。
そうなんですけど、すごいボリュームが最近ちょっとそちらの方に偏りがちっていうのはありますね。
大丈夫。
盛り上げ要素大事ですよね。やっぱりそういうことでね。
でもなんか盛り上がりすぎちゃうときがあると。
ちょっとみんな真面目なんで、しっかり調べて説明してくれるんですよね。
結構詳しくなりそうですね、いろいろ。天体に詳しくなるとか。
あと結構その時代時代のその社会情勢とかも含めて、非常に勉強になってます。
そのコンセプトはこういう背景から来ているとか、そういう話が出てくるってことですかね。
そうですね、あとはその当時の、例えば沖縄が返還されたから舞台を沖縄にしているみたいな。
時代背景があったりとかっていうのが、エンターテイメントを通して日本の歴史を学ぶみたいなところもあるので。
まあまあまあまあ、いいでしょう。
では早速今日の本編行ってみたいと思うんですが、いくつかそのチームについての基本情報を聞いていこうということで。
ジールに色々と用意してもらっているんですよ、話題を。
ちょっとジールにバトンタッチしつつ聞いていきましょうか。
iOSチームの構成と担当領域
最初はあれですかね、iOSチーム。さっき朝会もやってるみたいな話とかもありましたけど。
何人ぐらいで今チーム構成されてるんですか。
一応総勢8名ですが、そのうち1名のみは主にチームのリード、プロジェクトマネージメントみたいなところをやっているので、実質7名体制という感じになってますかね。
iOSチームからリードメンバーというかね、いたりもするという感じなんですね。
今広告とかっていう話もありましたけど、iOSとしてはカバーしてる領域っていうんですかね、プロダクトとかっていうのは、タイムツリーのiOSアプリありますよね。
そうですね。
そこも当然担当。あと他にありますっけね。
基本はiOSアプリだけなんですけど、細かく言うとウォッチ。
ウォッチアプリ。はい、はい、はい。
なるほどな。その辺りが担当領域ってことですね。
あとはシオンが入社したのが結構早い2016年とかですよね。
ですね、はい。
なので古くからいるメンバーで、対象的にニーガンはすごく最近入社されて。
はい、昨年の12月ですね。
割と新しい目線でニーガンからもiOSのチームのちょっと変わっているところとかも聞いてみたいですね。
ちなみに人数7名、今7名でやってるっていうのの、だいたいどれくらい、古い人が多い?新しい目の人が多いですか?
最近新しい目の人が増えてきてるって感じですか?
結構バランスよくいるかな。
バランスよく増えてってる。
ファニーが今2年目って言ってましたけど。
ファニーしか経ってないのかっていう。
なるほど。
あるあるですね。
毎年1人ぐらいは入ってるんですかね。
平均するとそんな感じかもですね。
なるほどな。
iOSの技術スタックとプロジェクト進行
iOSのプロダクトでどんな技術使ってるか、どんな言語を採用して、どんなアーキテクチャでとかっていう話とか、その辺りを聞ければいいなと思ってるんですけど、その辺りっていかがでしょう?
そうですね。
タイムツリー最初のバージョンが2015年とかなので、当時ちょうどSwiftが発表されたばっかりぐらいのタイミングだったんですよね。
はいはいはいはい。
なので、いきなりSwiftで書くっていうのはちょっとハードルが高すぎたので、オリジナルはObjective-Cで書かれてました。
そこから徐々に新しい部分をSwiftで書き始めて、今多分トータルでいうとSwiftの方が多くなってるかなと思います。
なるほど。
もちろん全部ネイティブで書いていて、アーキテクチャ的には割と伝統的なMVCを使っていて、
最近だとコンバインとかいうリアクティブっぽい感じのフレームワークを使えるようになってきたので、
MVVM的な感じで書かれているところもありつつ、ただ基本は伝統的な教科書通りのMVCみたいな感じになってますね。
こういう新しい技術の取り入れ方みたいなところとかっていうのはチームで結構話し合ったりとかするんですか?
そうですね。何かこういう風にやっていきたいみたいなのはチームで相談して決めてやっていったりとか、
あとは新しいプロジェクトが走り出した時に結構そこだけ今までとは別画面を作ったりするので、そこで何か新しいことを試したりとか、
最近だとSwift UIとかを導入していったりとかいうことをやっています。
なるほど。ウィジェットとかそういうところですかね、Swift UIって。
そうですね。ウィジェットはそもそもSwift UIでしか書けないみたいな制約があったりするので、
そういうところはもちろんそれを使ってますし、Apple Watchとかが出た時も多分そこも新しく作る部分なので最初からSwiftで書いたりとかっていうことはやってましたね。
なるほど。
最近のPGだとプレミアムとかでは割とSwift UIが使われていて、シオンが作ってくれた高速画面とかはもうフルほぼSwift UIですよね。
そうですね。あとプレミアムでいうと課金回りの開発をやったんですけど、そこもちょうどStoreKit 2っていう新しい課金回りが使えるようになったタイミングだったので、
それを導入することで結構楽に開発できた部分かなと思ってます。
結構その課金回りみたいなのは社内から聞こえてくる声としてすごい大変だったみたいな話をよく聞くんで、ここはぜひ別途詳しい話とか聞けたらいいなって感じですね。
そうですね。
今ちなみにSwiftとObjective-C、さっきSwift優勢みたいな話もありましたけど、何パーぐらいだと思います?
Swiftが50.6パー。
本当にちょっと優勢。
でもObjective-Cが8.1ってなってるな。ほんとか?C++が14パーもあるの?なんでだろう?
なるほど。でも体感的にだいぶSwiftの方が勝ってきてるっていうのがあると。
5対1ぐらいになってるっていうことですね、多分。
これそうですね。だいぶ優勢ですね、そうすると。
ちなみに今週自分が作ってた場所ももともとObjective-Cの画面だったものを今Swift化にするっていうので、2画面ほどSwift化にしましたんで、また多分そこの割合ちょっとだけ変わるかもしれないです。
なるほど。そういう意向っていうのは結構プロジェクトの進行と合わせてやれるところをやるみたいなスタイルでやってるんですか?
そうですね。
やっぱり手を入れてない画面はずっとそのまま残り続けているっていう感じですかね。
ちなみにニーガンがやった2カ所のページっていうのはどことどこですか?
NPSってユーザー満足度を測定する画面があるんですけど、そこの画面がもともとObjective-Cで書かれていて、
今回はプレミアム機能の満足度も取りたいっていうところで、
その機能を追加するタイミングで全部Swift化にするっていう風にやって進めてました。
ほんとにちょっとずつちょっとずつ今置き換えていってるってことなんですね。
例えばそのビルドするときのCIとかそういう環境っていうのはどんな感じなんですか?
そうですね。CIは基本今ビットライズを使っているんですけれども、
だいたいこのビットライズでアプリケーションのビルドだったり、
あとはFastlaneっていうアプリ開発、iOSアプリの開発するときに使っているタスクランナーみたいなものがあるんですけど、
その実行環境もだいたいビットライズを使ってやっています。
ビットライズのプライシングとGitHub Actionsへの移行
ただビットライズの方がプライシングがちょっと変わりまして、
今一応末置きでできてるんですけど、
新しくアップグレードすると新しい料金が提供されてしまうっていうところで、
今徐々にGitHub Actionsっていうものに置き換えを進めているところです。
今そこはじゃあ作業をしているところなんですね。
そうですね。ちょっとまだ進捗がかんばしくないですけど。
でもビットライズの料金の話は結構いろんなところが影響するっぽい感じなので、
多分ご存じの人多いと思いますね。
そうですね。あとはサンドボックス環境とかにアプリを配信するときは、
今はビットライズ経由でデプロイゲートを使って配信しているという形ですね。
なるほど。
それでテストアプリをみんなに入れてもらって試したりみたいなことをやってるんですね。
エンジニアじゃない視点からちょっと聞いてみたいんですけど、
その料金体系の話が出てきたんですけど、
やっぱりそういうコストとかは結構エンジニアの中でもシビアに見てたりするんですか?
そうですね。今回のビットライズの料金体系変わって、
ちょっと桁が変わるぐらいのレベルになったので、
さすがにちょっとそこは気になるみたいなところはありましたね。
結構現場から意識的に変えていこうみたいな話だったんですね。
そうですね。
桁が変わるだと確かにちょっとビビりますよね。
またメンバーの話とかを聞いていきたいんですけど、
さっきちょっとずつ平均的に入ってきてるみたいな話もあったんですけど、
どんなチームのメンバーの雰囲気っていうのは、ざっくり言うとどんな感じの雰囲気だと思います?
特に新しく入ってきたメンバーなのでニーガンとかから見て、
どういう感じの人たちだなって思われました。
結構朝会とかを経験してると、皆さんすごい喋るのが楽しいんだろうなってぐらい。
喋るのが楽しい。なるほど。
楽しそうにやってますか、朝会を。
朝会はもうなんでしょうね、さっきシオンが言ってたように、
今やってる、僕は勝手にゴジラガイロンって呼んでるんですけど、
ゴジラガイロン、はい。
ゴジラガイロン全員履修してると、もう静かに動画を見るというか、
意見をみんな言い合ってるっていうのがわきあいやとしていて。
そうですね、我々の中で履修をしてるっていう感覚ですね。
履修をしてる、なるほどなるほど。
ちょっと去年僕いなかったんですけど、
戦隊モード仮面ライダーガイロンの履修もしたかったなっていう。
今までのシリーズも結構良かったと。
ジールは仮面ライダーの時に専門家として抗議する側で来てもらって。
そうですね、シリーズ通して結構ずっと話に行ってましたね。
そういうコラボレーションもありなんですね。
で、あと週に一回iOS雑談会っていうのがありまして。
また喋るんかい。
当たり前と別なんですよね。
そうですね、それはちょっと僕立て付けまだよく理解してないんですけど、
基本的にはその週やってるプロジェクトの各自の進捗だったりとか、
あと共有したいこと、全体のチーム内で共有したいこととかをする時間をまとめて取るっていう意味で、
多分雑談会ってやってると思うんですけど。
そこも各自アイスブレイクですごい面白いネタを各自シーンで話していて。
で、それはシオンが毎回ラジオ化してくれていて、
社内ではそれを視聴する、聞くことができるので、それも楽しいんですけど。
何よりやっぱり雑談会の中でのやっぱりみんな喋るのが、
なんて言うんでしょうね、みんな好きなんだなっていうので、
そうじて仲がいいですね。
ちょっと説明すると、もともと
雑談会っていうのは週1あってそれしかなかったんですよ、もともとは。
目的として普段の進捗報告と、
それプラスチームメンバーの結束を強めるために雑談をするっていうのも半分目的として入れてるっていう形です。
朝会議はこのコロナ禍になってから、より密に話した方がいいなと思って始めたので、
そういう感じなんですけど、朝会の方でも雑談が徐々に幅を利かせてきたっていう。
なるほどなるほど、コロナ禍以降でさっきのシリーズの概論みたいなところがね、徐々に始まっていたんですね。
面白いですよね。雑談の部分を社内ラジオ配信しているというのが結構珍しいかもしれないですね。
結構好きで聞いてる社内の人もよくいるイメージですね。
いますよね。
あれでメンバーの近況を知るとかね。
そうですね。
あ、結婚してたんだ、みたいな。
急遽結婚が発表された回とかありましたよね。
結構あの場で発表する人が出てきてますね。
もう生まれるとか、結婚するとか。
それはね、社内の放送で乗るからね、という場合なのかもしれないですけど。
もちろん雑談もあるんですけど、結構意見の言い合いとか、
今回このプロジェクトでこういうふうにアプリの中の仕組みというか設計を変えるかもしれないというところで、
その雑談会の中で相談するということもありますし。
なので結構非同期での働き方の上での情報共有とかも結構盛んにできているのかなというふうに個人的には思っています。
なるほど。
結構僕から見ても、タイムツリーのエンジニアさんはみんな割とコミュニケーションの工夫をいろいろしているなって感じますね。
やっぱそれはオンラインが主体になったからっていうのもあると思うんですけど、多分以前からで、
やっぱ非同期のコミュニケーションというのを結構活発にさせとかないと、開発の効率が落ちるとか、
仕事に影響が出るっていうのがあると思うんで、
かなりみんな、たとえ雑談会というちょっと半分ふざけた会だとしても、みんなかなり真剣に取り組んでいるというか、感じる。
そうですね。雑談会だとはまた別に、例えば非同期での働き方で、個人的に思っていたのが、
例えばシオンとかシングが割とノーションにいろいろなドキュメントをまとめてくれているんですけど、
その内容がすごくわかりやすいですし、本人に質問する前にこのドキュメントを読めば大抵のことがわかるっていうような状況にはなっているのかなと。
なるほど。結構そういう文書化が進んでいるんですね。
意識しているかもしれないですね、その辺は。
なるほど、なるほど。
これあれですね、iOSが今回、iOSチームが第一弾で今ラジオ撮っているけど、いろんなチーム聞くと多分スタイルの違いとか出そうですよね。
スタイルの違い出そうですね。多分一番盛んだと思いますね、iOSチームが。
今、担当しているアプリとかプロダクトのコードとかCI環境とかでもいいですけども、
その中でざっくりどんなことに取り組んでいるかっていうのを、特に技術的な話題ですね、みたいなところを聞かせていただけたらなと思うんですけどいかがでしょうか。
はい、そうですね。
アプリの起動速度改善とカレンダーのパフォーマンス向上
最近その起動速度改善とかプロダクトの改善部分っていうのを担うプロジェクトが立ち上がったっていうことがありまして、
そのメンバーとして入っているんですけど、その中で直近では起動速度とかカレンダーのパフォーマンス、表示のパフォーマンスみたいなところをチューニングしてより快適に使えるようなっていうところを取り組みまして、
結構それで成果が上がって、数字的にも体感的にも早くなっているんじゃないかなと思います。
すごい早くなりましたよね。自分でもすごい感じますよ。
本当カレンダーの横スワイプをひたすらザーってやったりとかするときのレスポンスっていうんですかね。すごい違う気がしますね。
そうですね。それは調べてみると元々結構無駄なことをやっていた部分を削ぎ落としていったっていうところなんですけど、なかなかその普段機能追加機能追加を繰り返していくと、そこら辺のチューニングが後回しになってしまって、
だんだん使い勝手が悪くなるっていうことが起こるので、部分の最適化っていうのは非常に重要かなと思っています。
もう一個今取り組もうと思っているのが、これ結構細かい話になるんですけど、繰り返し予定の展開っていうのがあって、
繰り返し予定。
毎週月曜日みたいな予定を作ると、月曜日に全部バーっと予定が入るじゃないですか。
あれをどうやって実現するかっていうやり方がいくつか考えられるんですけど、
iOSはですね、繰り返し予定が作られると、その繰り返し分の予定をアプリの中で実際の予定のデータとして作って保存するっていうことをやってるんですね。
無限には作れないので、最長5年先までとか、ある上限を設けてバーっと予定をたくさん作って保存してるんですけど、
それをやるとその表示の時は、すでに作られた予定を表示するだけなので楽っていうメリットはあるんですけど、
どうしても大量の予定を作らなきゃいけないってなって、ログインした後に予定を同期したりするときに繰り返し予定が大量にあると大量の予定を作らなきゃいけなくなってとても時間がかかるんですね。
予定の表示方法の改善
それを改善したいっていうのがあって、その予定を事前にたくさん作るのではなく、表示する段階でどこにその繰り返し予定の繰り返し分が来てるんだっていうのを都度計算してカレンダーを表示するように切り替えようとしています。
なるほどなるほど。
なのでこれは表示するときに多少計算コストが上がるんですけど、それよりも予定をあらかじめたくさん作らなきゃいけないっていうところがなくなることのメリットの方が大きいという判断をして、
さらにそれをやると5年先とか制限もなく無限に繰り返しっていうこともできる、原理的にはできるので、そういうふうに変えていこうとしています。
なるほどなるほど。
結構この繰り返し予定っていうのはカレンダーサービスならではの悩みとしてよく挙げられるんじゃないかというところですよね。
かなりハマりポイントですねこれは。
そうですね。
なるほどですね。
これちょっとこの後も多分他のチームも聞いていくときに毎回出てくるような予感がしてますけど。
確かにね。これとあとよく出るのはタイムゾーンとかですね。
タイムゾーンですかね。
グローバルでやってるので旧歴回りと話すとも結構ありそうですし。
ちなみに速度改善のやつ、一番最新のレポートをちょっと確認してみたんですけど、
iOSがですね、16.4%速度改善、12.8%速度改善、いろんなセグメントで速度改善の分布出してくれてるんですけど、
かなりの改善ですねこれね。
なるほど。
なんか普通に体感としてわかるぐらいですもんね結構。
素晴らしいですね。
Androidの方がもっとすごいんですけどAndroid50%改善とか出てますね。
50%。
それは負けてられないですけど。
えーっていう数字が。
そうですね。
Evanがやってたんですけどすごい大変そうでした。
そうなんですね。
確かにさっきしおんが言ってたように、いろんなものを継ぎ足してきてるから、それが壊れないように直さなきゃいけないじゃないですか。
そうですね。
すごい大変ですよね。
でも如実にここは使い勝手、使い心地に関わるところだから外せないっていうのもあって、本当に大変そうなってて。
フレームワークの置き換え
前のラジオでもあったと思うんですけど、今iOSチームでRebuildPJっていうもので走っていて、
僕も去年入社したときにオンボーディングでこのRebuildPJを最初やってたんですね。
このRebuildPJっていうのは何かというと、今RESTキットっていうフレームワークをタイムツリーのアプリで使っていて、
これがバックエンドからAPIで取得してきたレスポンスをアプリ内でモデリングして、
またアプリ内のDBに保存してっていうところを手軽にやってくれるフレームワークなんですけど、
ただそれがもうメンテナンスがほぼされてないのでそれをやめて、
もともとそれがオブジェクティブCで書かれてるっていうのもあるんですけど、
なのでこのタイミングで自前で作っていこうっていうところで置き換えていってるっていうのをやってるんですけど、
これがまだ100%完全に置き換わってないっていうところが今課題としてまだあって、
チームの中でも自分たちがやってるプロジェクトだったり機能の中で置き換えるタイミングがあったらその都度置き換えていってるんですけど、
というわけでちょっと先はまだ長いのかなと思いつつも、一応何とか進んではいるんですけど、
まだ課題感としては持っているっていう感じです。
チームの課題としては表に見えるところというより裏側のところが結構大事になってきてるっていう印象を感じました。
そうですね。
今日いくつか出てきたプロジェクトとか取り組みとかはまた今後の放送でも詳しく紹介できるところを紹介していきたいなと思っています。
じゃあ最後15秒ぐらいでですね、いきなり今思いついたんですけど、
今タイムツリーエンジニアさん全方位的に採用強化というか本当にいろんな人に来てほしいと思っているので、
最後15秒でシオン・ニーガンから採用アピールタイムとして何かメッセージを。
どんな人に来てほしいか。
そうですね。お聞きいただいた通りすごい仲の良いチームでわきあいあいとやっているとても楽しい職場なので。
とても楽しい職場。
興味があるはずなんて感じですね。
ピンときた方はそうですね。ニーガンからも何かありますか。
そうですね。やることがたくさんあるので。
我こそはという方と、あと多分朝会コンはもしかしたらNHKのアサドラガイロンとかが予定しているかもしれないので、
利収されたい方はぜひ購入していただければと思います。
アサドラガイロンちょっとだけ今興味持っちゃったな。
面白そうだな。
結構長いけどな。長い歴史だな。
長そう。
ゴジラも長いですよね。
ゴジラも長いですよ。1960何年とかから始まってますから。
すごいな。
ありがとうございます。じゃあ今日はiOSチームのチーム紹介ということで、シオンとニーガンにお越しいただきました。どうもありがとうございました。
ありがとうございました。
32:47

コメント

スクロール