iPhone登場初期からのiOSエンジニアたちは「TimeTree」をどう見る?
──自己紹介をお願いします。
佐藤新悟(以下、佐藤):まだスマホがない2006年に旧Yahoo! JAPAN(現LINEヤフー)に新卒入社しました。Mac好きでしたのでYahoo!メッセンジャーのMac版クライアントを担当させてもらえることになり、iPhone登場前からObjective-Cに触れています。その後、社内でiOSアプリ開発メンバーに選ばれたことがきっかけでiOSエンジニアになりました。TimeTreeの創業メンバーと一緒に仕事をしていた縁で、2016年からTimeTreeに入社してiOSアプリ開発をしています。
荒木秀太(以下、荒木):私も旧Yahoo! JAPAN出身で、当時はデスクトップのウィジェット開発をしていました。ウィジェットのようなアプリをiPhoneでも動かせるということで、iPhone 3Gの発売後にすぐに購入し、デベロッパー登録もしました。そこからiOSエンジニアとして活動を続けています。転職していったんはiOS開発から外れた時期もありますが、縁あってTimeTreeに入社するときに再びiOSを開発したいと希望してiOSエンジニアに戻りました。
市川勝(以下、市川):学生時代からWindowsのフリーウェアを開発していたことで、2005年に旧Yahoo! JAPANに入社し、検索事業でバックエンドからフロントエンドまで手がけるWebエンジニアとして働いていました。佐藤と同じく、iOSアプリ開発の社内公募で手を挙げてiOSエンジニアとなりました。当時ヤフオクや防災速報アプリを開発し、後に荒木に引き継ぐなど、3人とも最初の会社で密な関係だったと思います。後に佐藤からTimeTreeに誘われて入社しました。
──皆さんベテランのiOSエンジニアですね。皆さんから見たらTimeTreeはどんなプロダクトですか?
佐藤:カレンダーシェアサービスです。正直、最初に見たときは「Googleカレンダーでいいのでは?」と思いました。しかし実際に開発に携わって知ったのですが、「TimeTree」はアプリの思想として「共有」を前提にしています。またユーザーさんの声を通して、テクノロジーに慣れていない方でも使いやすいことが大きな特徴だと気づきました。
荒木:最初はただのカレンダーアプリだと思っていました。ですが開発側にまわり、先ほど佐藤の話にもあったように「共有」が前提としてあり、共有することによってユーザーさんの課題を解決するプロダクトだと知りました。
市川:ぼくも初見は「Googleカレンダーでいいのでは?」でした。しかし自分の家庭に導入してみるとコンピュータに明るくない家族もすんなり使えて驚いたんです。ユーザーさんに優しく簡単に予定を共有できる体験を通して印象が変わりました。
──iOS版の特徴、技術的なポイントは?
荒木:技術面では、iOSの基本機能を大事にしています。例えば画面下のタブやカレンダー表示の動きはiOSのネイティブの機能です。奇抜な動きはしないので説明不要で幅広いユーザーさんに使っていただけています。ただし、基本を重視しつつも、どうすれば予定を確認しやすくなるか、予定を素早く登録できるかも重視している点です。またオフラインでの使い勝手も大事にしています。
佐藤:データ管理にはCore DataというApple純正のフレームワークを使っています。意外とみんな使いたがらないのですが、あえて選んでるのが特徴です。例えば現在だとRealmが有名ですが、外部OSSを使うか標準を使うかはよく検討した上で選択することが大事だと思います。TimeTreeでは基本は標準、満たせない要件があるなら外部を使うという順番にしています。
市川:TimeTreeは標準をベースにしているところが多く「流行をがっつり採り入れてしまい、(後になって)外すのに苦労している」ことがあまりありません。画面周りのコードを見てもMVCやObservableObjectを使ったMVVMなど標準的なアーキテクチャになっています。
荒木:例えばRxSwiftをがっつり使っていると、Apple純正のSwiftのCombineに移行しづらいですし、Concurrencyも工夫が必要になったりします。
──フロントエンドは変化が早いので技術的な負債がたまりやすいと聞きますが、iOSもそうなのですね。うまく回避している印象です。
荒木:実を言うと、外部のライブラリに頼っていた部分もありました。Objective-CからSwift、SwiftUIやCombineが出てきたタイミングで標準に移行していました。それをやっていたのが市川です。
市川:剥がしてました(笑)