Flutterなども普及する中で、ネイティブ開発にこだわる理由は?
──新機能の開発で、大事にしているポイントはありますか?
佐藤:見た目は、デザイナーに作成してもらったモック通りに作ればいいのですが、画面遷移や詳細はエンジニアに委ねられるところがあり、デザイナーの意図をくみながら自分たちで考えたり、レビューしてます。単に機能が動けばいいだけではなく、使いやすさや気持ちよさにも配慮しているエンジニアが多いと思います。
市川:ちょうど昨日、ある画面デザインにおいてセーフエリアの有無で実装がハッキーになってしまい、チームと相談していました。最終的には、デザイナーと協力することで実装もデザインもよくなりました。UIだけでなくUXも考慮して、デザイナーとエンジニアが共に高めていけるのがTimeTreeの良さだと思っています。
──Flutterのようなクロスプラットフォーム開発も一般化する中で、iOSネイティブな開発にこだわる理由は?
荒木:一度iOS開発から離れて実感したのですが、iOS開発はUIにおいていろんなことができることが面白さでもあり大切なポイントでもあります。その点、Flutterだと細かいUIの作りこみができないところがあり、物足りなさを感じるのが懸念点です。
佐藤:僕はずっとAppleが好きで「iPhoneを使うしかないでしょ」と思っている人間なので公正な目で見られないかもしれませんが、iOSにはAppleの哲学が詰まっていて使いやすさにも繋がっていると思います。標準通りに使えばアプリもキビキビ動くのがいいですね。
──では、Android版とはどのように調整していますか?
荒木:Androidもネイティブで開発しているので、ボタンの位置も含めて、できるだけ差分のないように作っています。仕様は細かくドキュメントに書き出し、iOSとAndroidの両チームが相互に確認し合えるような体制にしているので、ここはチーム力で達成できていると思います。また、iOSとAndroid双方の解像度を高めるための施策として、TimeTreeメンバーにはiOSとAndroidの2台持ちになるよう会社携帯を貸与しています。自分だと個人端末がAndroidで、会社用がiOSです。
コードレビューはボディビル大会? 技術力を支えるのはチームの力
──コードレビューで工夫されていることはありますか?
佐藤:コードレビューでは絶対的な正解はないけど人によって書き方が違ってしまうことがあります。TimeTreeでは、みんなで話し合ったコーディング規約が土台にあり、基本的にはAppleのAPIデザインルールなどのドキュメントに沿うようにしています。後は特別なことはしていませんが「ナイスバルク!」くらいですかね(一同、笑)
荒木:これを読んでいる方のために補足しますね(笑)。コードレビューは修正の指摘になりがちなので、良いと思ったことは「良い!」とちゃんと伝えるようにしています。「この対応は大変だっただろうな」「すごく工夫してくれたな」と思ったら「ナイスバルク!」と伝える文化があるんです。もともとはボディビルダーのかけ声で「いい筋肉がついてるね」という称賛の意味なんですけど。筋トレしてない人もノリで声をかけてくれます(笑)
市川:TimeTreeに転職してきたら、メンバーがめちゃくちゃ褒めてくれるのでテンションが上がります。指摘もすごく気を遣って丁寧にしてくれていると思いました。佐藤は「特別なことをしていない」と言いましたが、こういう雰囲気作りができるのは特別なことに感じます。
──iOSのチームビルディングについても教えてください。
佐藤:基本的に仕事は各職種のメンバーが集まったプロジェクトチームごとで進行していますが、iOSエンジニアの横のつながりを持てるように、毎朝30分ほどの朝会、週次で1時間ほどの定例会議があります。技術相談とか真面目なパートもありつつ、コミュニケーションを目的とした雑談パートも設けています。
旅行に行ったとか、レトロゲーム機を修理したとか、そういった業務に関係のない話題を交わし合い、その内容が面白いので編集して社内ラジオという形で(社内限定で)毎週配信しているんです。このおかげかiOSエンジニアは話すのが上手だと言われます。
市川:初めて参加した時は面食らいましたよ。ずっと雑談してて。話を振られた時はドキドキしました。
──最後にTimeTreeで働くことで開発者として成長したと感じることなど読者にメッセージをお願いします。
荒木:TimeTreeはカレンダーを共有するアプリですが、本当の目的は「共有」にとどまりません。共有した先にあるコミュニケーション設計や、もっと風呂敷を広げ「誰かと予定を共有しやすい」社会の実現を目指しています。TimeTreeのエンジニアとして働く中でこのような深掘りができるようになり、自身の成長を感じます。またTimeTreeは世界で多くのユーザーさんにご利用いただいています。自分が実装した機能が世界中で使われていると思うと、すごくモチベーションになります。
佐藤:TimeTreeのエンジニアは「いいプロダクトを作ろう」という気持ちが強い人が多いです。いいプロダクトとは、ユーザーさんに価値を届けられるものであり、技術的にも正しく作られているものです。みんなそこのバランス感覚を持った人たちなので刺激を受ける毎日です。
市川:TimeTreeは歴史が長く、ユーザーさんも世界各国に多くいて、いろんな課題があります。今はユーザーさんが増えてサービス変更が難しくなっていますが、TimeTreeではみんな前向きで「これを解決したらユーザーさんの生活が良くなるし、面白い!」とそれぞれの課題に取り組んでいるところが自分の刺激であり、糧になっています。僕たちの話を聞いてもし共感していただける方がいればぜひ一緒に仕事をしたいですね。
TimeTreeでは一緒に働く仲間を募集しています!
iOSはもちろん、TimeTreeではBackendやAndroidなど幅広くエンジニアを募集しています。本記事で興味を持たれた方はぜひTimeTree採用サイトからご応募ください。