ブログ

2021年4月27日

TimeTreeのiOSエンジニアチーム——TimeTreeラヂオ vol.013

TimeTreeラヂオポッドキャスト

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

今回のテーマは「TimeTreeのiOSエンジニアチーム」。この3人で話しました!

  • iOSエンジニア 佐藤(Sion @gonsee

  • バックエンド エンジニア 大政(Justin @_eurk

  • ブランド コミュニケーション 渡部(Steve @ShinyaWatanabe_

ラヂオを聴く👂🏻 https://open.spotify.com/episode/2psv62ubHnjE6Kig3XZ6c5

ラヂオを読む📝 配信の内容を文章でお読みになりたい方はこのままお進みください!


(02:26〜)

「真面目」と「ふざける」がバランスの良いチーム

Steve じゃあそんな3人で今日のテーマなんですけど、引き続きJustinも交えてTimeTreeのエンジニアについて色々と紹介していきたいと思っています。今日はSionをお呼びしてiOSチーム、JustinからみたiOSチームとか、Sionが考えているiOSチームの紹介をしていきたいと思っています。JustinからみるiOSチームってどんなチームですか?

Justin そうですねー、すごい仲が良いですよね。

Sion (笑)。

Justin TimeTreeってそもそもみんなニックネームで呼び合って、年齢の差とか関係ない、気にしないんですけど。iOSチームは割と年齢が幅広くメンバーいますけど、みんなでいつも和気あいあいとしているイメージですね。

関連記事 フラットな関係をつくるためのニックネーム制度 #今日のTimeTree

Steve 年齢層の幅広さはたしかに!まあうちはそんなに年齢は関係ない会社ではあるけど。一番上はだれなんですか?

Sion 僕ですね。

Steve Sionが一番若い感じしますよね。

Justin 絵文字もありますよね(笑)。「マジ若い」みたいな。

Sion 「マジ若え」っていうVoneが言ったセリフですけど(笑)。

Steve Sionが一番上で……。

Sion (一番)下はTrevorですね。

Steve 結構バランスよく30代もバラついているっていう感じですよね。じゃあ、バランスの良い、仲の良いチーム。

Justin 朝会も毎日やってますよね?

Sion そうですね。リモートワーク主体になってからはじめたんですけど、朝会自体は。毎朝15分くらい朝集まって……。

Steve あれ毎朝やってるんだ!? 木曜日だけかと思っていた。

Sion 木曜日は逆に朝会はやらないで1時間ちょっとたっぷり時間をとって、定例みたいな形でやってますね。

Steve Sionから見るとどんなチームでしょう?

Sion 仲が良いっていうのは自覚はしていて(笑)。

一同 (笑)。

Sion いわゆる、心理的安全性がめちゃくちゃ高いなって思ってますね。なにがそうさせるのか分からないんですけど、それぞれのパーソナリティがすごい合ってるのかなとは思ってますけどね。

Steve 何人いるんでしたっけ、いまチームは?

Sion 兼任も含めて6人ですね。

Steve パーソナリティってさっき出てきましたけど、だれかひとり強いまとめ役がいるってよりはそれぞれがそれぞれで独自の良さを発揮しているって感じですかね。

Sion 僕が思うのは、真面目さとふざけている部分のバランスがすごく良い。

Justin 毎週定例のところで雑談をラジオ*で出してますよね。

Sion あれはもともと定例(ミーティング)をやってたんですけど、半分がチームの親睦を深めるっていうために雑談をするっていうのを目的にしていて。一応半分は仕事の話をしているんですよ。ラジオではキュッと雑談を編集してますけど(笑)。みんな自分の今週やったこと、来週やることみたいなのを報告するんですけど、その手前にアイスブレイクを置いていて。その報告が持分ひとり4分くらいを想定しているんですけど、大体4分いっぱい雑談をするっていう(笑)。

*iOSチームが定例MTGの雑談の様子を録音して社内に「iOSラジオ」として発信している

Justin iOSチームもそうだし、TimeTree全体の定例もそうだと思うんですけど「ちゃんと面白い話を届けよう!」っていうこだわりというか、その時間を無駄にしないようにっていうか、そういう思いを感じますよね。

Steve アイスブレイクが一個、アジェンダになってますよね。

Sion そうそう、フォーマットとして決めておかないと。

Justin モノによっては当番制だったりしますしね(笑)。

iOSチームの役割分担・体制

Steve いまほとんどのメンバーがリモートワークですけど、1週間でみるとどんな働き方をしているんですかね? 会議とか、プロジェクトの割り振り、役割分担とか。

Sion だいたいみんなリモート主体で働いてますけど、それもひとそれぞれ。体制としてはプロジェクトごとにわかれていて、ひとつがShared Calendar ProjectというTimeTree本体の諸々をやっているチームが、僕とTrevorとBaxの3人体制になってますね。広告周りをやるAdsチームにMeeとFunnyがいる。Meeは最近はエンジニアというよりは広告プロダクトのリードの立場でもあるので、そちらの業務がメインになっている感じですね。StudはiOS(の開発)もやってるんですけどWebフロントエンドもやっていて、なんでも出来るんですよね。彼、「TimeTree界のイチロー」っていう異名を持っているんです(笑)。

Justin 本当になんでもできますよね。

Sion 社内SEみたいな感じで勤怠ツールとかをつくってたりもするし。

Steve Studがいろいろ兼任はしつつ、基本みなさん専属というかプロジェクト1本でやっている感じなんですね。

Sion メンバーは随時入れ替わったりはしていますけど。

Justin 手が空いたりする瞬間ってあると思うんですけど、そういうときってリファクタしようとか、どういう風にやってたりするんですか?

Sion 前はそれぞれ気になっていたことをそれぞれ「これやってみよう」って勝手に(開発を)はじめるみたいな。それをちゃんと洗い出しておいて優先順位つけた方がいいよねって話をして、プロジェクトみたいな形にいまはしていますね。Rebuild Project(リビルドプロジェクト)って名前をつけて。

iOSチームが進める「Rebuild PJ」

Sion そこにはお問い合わせ対応とかで日々あがってくる細かい不具合だったりとか、設計とか「技術的に古くなってきたので新しく作り直したい」みたいな"技術的負債"って言われるような案件とかが入っていて。それをいまは3ヶ月に1回みんなで見直して、担当を割り振って、3ヶ月の中でそれぞれだいたい2週間を目安にその時間を必ず取るってルールでやってます。それをしないと日々プロジェクトの案件に追われてしまって、「ここやらなきゃいけないのに」って思っているのに全然できないって状態になってしまっていたので「これくらいの時間はちゃんと取りましょう」って進められるような仕組みをつくってますね。

Justin TimeTreeがリリースされてもう7年。そうすると、最初はObjective-Cでゴリゴリ書いていたやつが、途中からSwiftが出てきて、Swiftもどんどんバージョンが上がっていって対応しないといけないことがどんどん増えてるみたいな。

Sion そうなんですよ……。なにもしないと壊れるんですよね、ソフトウェアって。

Steve それは言語の方がどんどん変わっていっちゃってるから?

Sion 言語とか、iPhoneだったらiOSのプラットフォーム自体がどんどん変わっていくのでそれに応じて新しくしていかないといけない。毎回(iOSの)バージョンが上がると出来ることが増えるので、いままでより便利になったり書きやすくなったりしていくので、その都度コードもアップデートしていくって感じですね。

Justin 直近だと(iOS 14の)ウィジェットとか出てましたよね。

Sion iOSが毎回メジャーアップデートされると色々な新機能があって出来ることが増えるんですけど。WWDCの発表とかを見て「今年はこういう機能が出てきた」ってなると、その中で「TimeTreeで使うんだったらこれかな?」みたいな、「どういう使い方が出来るだろう」みたいなのをみんなで検討して、企画のひととも引っ張って「こういうのやりましょう!」ってやって。今回iOS14のときはウィジェットが良さそうなので対応しましょうとなって、いち早く対応するって感じで動いてましたね。

Justin ユーザーさんからもすごい喜ばれてましたよね。

Sion そうですね。iOSユーザーの中でも注目度が高い機能だったと思うので。

Justin ウィジェットだけじゃなくて、ダークモードが出たときも、Apple ID認証出たときもそうだし、すごく先駆けて対応しているイメージがありますね。

Sion それはひとつはですね、Appleが新しいiOSで機能を出すと、それを使ってくれるアプリをApp Storeで優遇してくれるってことがあって。それを狙うために積極的につくるっていうのはたぶん業界的にもあると思うんです。そういう狙いももちろんあるんですけど、一方でエンジニア自身もやっぱり新しいもの使いたいじゃないですか。

Justin そうですよね、すごい分かります。

Sion 積極的にそこは自分たちもテンション上げてやっていく部分ではありますね。

Steve そこが大きいのかもですね。WWDCのとき各iOSエンジニアの(Slackの)timesとかiOSチームのチャネル盛り上がりますもんね!

Justin 単純に新しい技術を使うってだけじゃなくて、それを上手にユーザーさんに届かられるかみたいな、技術とサービスのマッチングをすごい上手にやっているなってイメージがありますね。

Sion そうですね。そこはつくる側も意識していて、単に「これが使いたいからつくりました」みたいな機能ではやっぱりダメだと思っていて。実際にユーザーさんのメリットになる形ってどんなものだろうって考えてつくっていますね。

Justin それで技術的な挑戦がされているっていのがすごく良いトライの仕方だなって。すごく参考になるなって。

Steve 挑戦の仕方ってJustinのいるバックエンドとはちょっと違うかもしれないですけど。エンジニア同士だとそうやって見えて良い刺激にはなっているんですね。直近だとどんなことに"やっていき"しているんでしたっけ?

Sion ちょっと前に出した新機能だと背景画像設定の機能をリリースしていて。ガラっとデザインが変わったんです。背景画像をなにも設定しないといままで通り白地ベースのシンプルなカレンダーなんですけど、自分で好きな画像をカメラロールとかからアップロードすると背景にその写真をバンッと載っけて、カレンダー部分がぼかし効果の入った感じで透けて裏側が見える。カレンダーが全面にバンッてあると背景なのでほとんど隠れて見えないんですけど、スクロールするとその隙間からチラチラっと見える感じになりますね。

関連記事 背景に画像を設定できるようになります

Sion 見た目の実装は個人的に大好きな部分で、背景画像の開発は結構楽しかったですね。たぶん細かすぎて伝わらないですけど、背景画像って画像をそのまま置いているわけではなくて実は30%くらいのアルファで黒いオーバーレイがかかっているんです。実際の画像よりちょっと暗くみえるんですよ。ただ、背景に画像を置くとそれを見たいって思うじゃないですか。iPhoneの場合、下にスクロールすると上の部分が伸びていくのが分かりますか?ローディングのクルクルが出る部分があるんです。そこを一生懸命引っ張っていくと段々画像がゆっくり見えていくるんですけど、その引っ張った度合いに応じて暗い背景をちょっとずつ消しているんです。なので半分くらいまで下げると元の画像の明るさで見えるようになるっていう……裏技みたいなのが入っていて(笑)。

Steve まじか! 芸が細かいな!

Sion これは個人的にそれがやりたくてやりました(笑)。

Steve その辺りってきっちり最初につくる企画の段階で、仕様で決まってますって話ではないじゃないですか?

Sion じゃないです。はい。

Steve つくりながらSionが工夫したってことじゃないですか。そういうのは(TimeTreeのエンジニアは)みんなやってますよね。かなり創意工夫をこらして自分なりに仕様を変えていくみたいなのを目の当たりにしてましたね。

Justin 自分の思いをうまく乗せていくというか。ありますよね。

Sion やっぱりつくっていくうちに、つくっているひとだからこそ気づく部分みたいなのが出てくるので「このまま仕様通りにつくるのが果たしてベストなんだろうか?」っていうのを常にみんな考えながらやってるんじゃないかと思ってます。

Steve それが前回JustinとLouisが話した内容とも通じてきますね。プロダクト自体の興味関心がやっぱり高いからエンジニア自身もそうやって考えられるんでしょうね。

関連配信 TimeTreeエンジニアのワークスタイル——TimeTreeラヂオ vol.012

iOSチームが力を入れている「Rebuild Project」

Steve Sionがさっき話してくれたRebuild Project、いまiOSチームみんなで力を入れているプロジェクトだって話だったんですけど、これはいつまでやるとかどこまでやるとか決まっているプロジェクトなんですか?

Sion いまのところ……終わりは決めていないですね。たぶん終わることのないプロジェクトな気がしているんですけど(笑)。マイルストーンはあってアプリのベースになっている部分、APIから情報を引っ張ってきてそれを端末の中にデータ保存する仕組みをOSSのライブラリに依存しているのがあって。そこを自前のフレームワークに置き換えるって作業をしていて、それをまずはやりきるっていうのがひとつ大きな目標になっています。

Steve 実はRebuild Projectについては今度6人いるiOSチームのメンバーのみんなとどんなことやっているのかとか、なぜプロジェクトをエイヤーってはじめたのかみたいなところを話してもらう機会があって。それは記事にして公開したいと思っているので。

Justin 僕も楽しみですね! どんな記事になるか分からないので。

Steve では! 今日はiOSチームの紹介ということでSionをゲストに、Justinと3人でお話をしました。Justinが前回、前々回と連続でラジオに出てくれていて、今回のラジオを臨むにあたってマイクを新調してくれたということで!

Justin (笑)そうですね。ちょっと恥ずかしいところはありますけどね。話しのテクニックが上手くなっていないのに道具だけどんどん良くなっていく。

Steve 形から! 僕も形からなんで。大事です。そんな3人でお送りしました。ありがとうございました!

Sion, Justin ありがうございました!

TimeTreeラヂオ 📻

TimeTreeを運営する私たちメンバーが、ふだんの仕事に関係することも、そうでないことも、だいたい15分でひとつのテーマを話しきるインターネットラジオ番組です。 今後も定期的に放送を配信してきますのでぜひ試聴ください! ご意見・ご感想・話してほしいテーマなどぜひTwitterハッシュタグ #TimeTreeラヂオ でお待ちしてます。 過去の配信はこちらから聴けます