”誰が見ても理解しやすい”システムを目指す、みてねAndroid開発に根付くカルチャー

”誰が見ても理解しやすい”システムを目指す、みてねAndroid開発に根付くカルチャー

「家族アルバム みてね」(以下:みてね)では、エンジニアの職域を明確に分けず、サーバーサイドやiOS、Androidの領域から全員が好きなタスクに取り組むことが可能です。そのため、専門領域を持ちつつ、その他についても幅広い知識を持つ“T型人材”が集結しています。
このたび、そんなみてねのAndroid開発の最前線に立つ二人、佐々木と山田へのインタビューを行いました。みてねのAndroid開発で自慢したいポイントやカルチャー、現在注力して進めていること、そして彼らが描くエンジニアとしての理想像などについて聞きました。

みてねのAndroid開発を支える二人

━━まずは、お二人の経歴について教えてください。
佐々木:MIXIに入社する前は、組み込み系エンジニアとして、LinuxベースのカーネルやMCUなど、ハードウェアに近いところのソフトウェア開発に従事していました。Androidベースの組み込み製品開発に携わったことがきっかけで、コンシューマー向けサービスに関わることに興味を持ち、2015年にミクシィ(現MIXI)に入社しました。SNS「mixi」のモバイルエンジニアを経て、2017年にみてね事業部へと異動し、現在はみてねの新規プロジェクトに携わっています。
山田:僕は2022年9月にみてねにジョインし、アルバイトとして半年間の経験を積んだ後、2023年3月に正社員として入社しました(※アルバイトについての記事はこちら)。Androidアプリ開発未経験からスタートし、初めはシンプルなタスクから取り組みましたが、徐々に不具合修正やライブラリ更新などのタスクをこなすようになりました。現在はDAD(Digital Album Domain)チームで新機能の開発に携わっています。
━━それぞれのチームには、Androidエンジニアが何名いらっしゃいますか。
佐々木:Androidを得意とするメンバーは私と業務委託の方1人です。しかし、みてねはクロスファンクショナルな組織構成になっており(※詳細はこちら)、職種を厳密に分けていないため、状況に応じて設計やサーバーサイド、iOS開発にも携わります。基本的にはAndroid開発にもチーム全員で取り組んでいます。
山田:DADチームも同様です。Android開発だけを担当するメンバーはいません。Androidを主戦場とするエンジニアとしては、僕含め2人正社員がいて、もう1人業務委託で入っていただいているので合計3名です。
━━柔軟に様々なタスクに取り組めるのですね。現在はどのような業務に携わっていますか?
山田:最近では、TVキャスト機能のリリースに携わりました。この機能はキャスト端末を通じて、テレビでスマートフォンの写真や動画を見ることができるものです。
━━子どもの写真を大画面で観るのに最適な機能ですね。佐々木さんはどのような業務に取り組んでいますか?
佐々木:私は新規プロジェクトに取り組んでおり、チーム全員でアイデアを出し合いながら、仕様検討から全体の設計を進めています。実装については、AndroidだけでなくiOSやサーバーにも携わっています。
山田:形になるのが早かったですよね。4月ごろ始まり、9月には見た目が出来ていたような。
佐々木:実装にはそこまで時間がかからないのですが、仕様面が難しいんですよね。ユーザーのことを一番に考えたいので、ユーザーインタビューなどを通じてユーザーの意見を取り入れながら、どうしたら喜んでもらえるかを重視しながら進めています。

「誰が見ても理解しやすい構造」が推し

━━みてねのAndroid開発において、特に自慢したいポイントはありますか?
佐々木:みてねでは、モダンなAndroid開発手法を常にキャッチアップし、それを取り入れるようにしています。たとえば最近では、Now in Android を活用しています。これはAndroid の設計と開発のベストプラクティスを示したアプリで、僕たちはこのアプリを参考にモジュール分割を行っています。Googleが提供している公式リソースなので、新機能が追加されたときもスムーズに対応できるような構造になっていますし、技術の変化が激しい中でも重要な指標となっています。
また、属人的な機能がほとんどなく、誰が見ても理解しやすい構造になっているのも特徴です。depricatedになったサービスや技術的負債は、日々のメンテナンスで積極的に置き換えるようにしています。
山田:基本的にNow in AndroidやGoogleの公式ドキュメントに準拠しているため、新しくジョインした方でもキャッチアップがしやすいのではないかと思います。さらに、チーム内にはAndroidアプリ開発に関するガイドラインも整備されているため、僕のようなAndroid開発初心者から始める人にとってもありがたい環境だと思います。
━━そのガイドラインには、どんなことが書かれているのでしょうか。
山田:みてねのアーキテクチャの詳細や様々な開発のヒントなどが記載されています。ただし、常に最新情報を反映するのは難しいので、誰かが新しい情報に気付いたら更新するような運用になっています。たとえば、現在の「みてね」ではJetpack Composeの使用が標準となっていますが、このような新しいライブラリの情報はガイドラインにはまだ記載されていません。なので、他のメンバーと相談しながら新しい情報を追加しています。
━━最新の状態を保てるよう努力されているんですね。誰でもキャッチアップしやすい環境の構築を目指されている印象を受けたのですが、そういったカルチャーは昔からあったんですか?
佐々木:なるべく主流となる技術は取り込んでいくことはしていたと思うので、そのようなカルチャーは昔からあったと思います。ただ、アーキテクチャでいうと、みてねはAndroid でMVVMが推奨される前からのプロダクトでしたので、設計パターンに関してはカオスな状況でした。MVVMやクリーンアーキテクチャなどの設計思想を導入し、設計に一貫性を持たせるようになったタイミングから、より明確になっていったと思います。
━━他にもカルチャー面で推したいポイントはありますか?
佐々木:開発の自由度が高く、新しいアイディアを実現しやすい環境です。プロダクトを改善するためのアイディアであれば、積極的に取り入れてもらえます。たとえば、画面上部をタップするとトップに自動スクロールする機能やウィジェット機能は、元々はiOSアプリ版にのみ存在していましたが、「Androidでも実現可能です」と提案したところ、承認されてAndroid版アプリにも実装されました。
また、Android版独自のスクリーンセーバー機能も、エンジニアからの提案をきっかけに実装されました。
━━アイディアを気軽に提案できる環境なのですね。
佐々木:そうですね。提案に対して真摯に耳を傾けてくれる事業部だと思います。

開発効率アップのための取り組み

━━課題に感じている点についても教えてください。
山田:機能追加に伴い、コード量が増加し、ビルド時間が長くなっています。ちょっとした修正でもビルドに数分を要する状況です。対応策として、マルチモジュール化を進めています。これにより、各モジュールごとに対象範囲が分割され、修正時の影響も少なくなり、ビルド時間もかなり短縮されると考えています。
━━マルチモジュール化は、現在どの程度進んでいますか?
佐々木:APIや通信周り、端末に保存するローカルなデータベースなど、基盤となる部分はかなり進んでいます。
山田:そうですね。既存の機能や今後追加予定の新機能に関するモジュール化の方針については、これから決定していく段階です。
━━システムが大規模になってきているため、慎重に進める必要があるのですね。マルチモジュール化以外で注力していることはありますか?
佐々木:Androidエンジニアが主導しているわけではありませんが、デザインシステムの作成を進めています。これは開発の効率化と、将来的に全ての「みてね」関連プロダクトで統一感のある世界観を実現したいという思いから始められました。毎週の定例会では、デザイナーやiOS、Androidなどの異なる職域のメンバーが集まり、このプロジェクトを進めています。
山田:この会議では、さまざまな議題があがっています。たとえば「みてねでどんな色を使っていきたいか」などがありました。話し合いや、認識合わせを通じて決めた定義はガイドラインに反映されていきます。
佐々木:現在はデザインの基礎となるガイドラインを作成している段階であり、主にデザイナーが中心となって活動してくれていますね。
━━ちなみに、エンジニア的にはデザインシステムを作ると何が嬉しいのでしょう?
佐々木:ボタンやメニューなど、頻繁に使用するUIパーツを共通化することで、実装に関するさまざまな確認の手間が省けます。また、デザインシステムが格納されているモジュールを呼び出すだけでUIパーツを利用できるようになるため、実装時間も大幅に短縮されます。
━━開発効率が上がり、新しいことに取り組む時間が増えそうですね。

「T型人材」から「π型人材」へ

━━今後どんなエンジニアを目指しているのか教えてください。
佐々木:みてねでは、「HRTの原則」をチーム全体で大切にしていて、実際に体現されている方がたくさんいます。そういった方々をすごく尊敬しているので、僕もその価値観を持ち続ける人間でありたいです。
技術面では、”π型人材”を目指しています。元々みてねはクロスファンクショナルなチーム構成であり、1つの専門分野で強みを持ちつつ、他の領域においても幅広い知見を持つ「T型人材」として活躍することが求められています。その中で、僕は2つ以上の専門性を持つ”π型人材”を目指し、多角的な強みを伸ばしていきたいです。好きな領域に挑戦でき、技術的なサポートも充実しているため、みてねはその目標を実現するのに適した環境だと思います。
山田:僕も佐々木さんと同様に、特定の技術にこだわらず、様々な技術分野に挑戦していきたいです。現在はAndroidを主軸としつつ、他の領域のタスクにも積極的に取り組んでおり、それぞれの技術の持つ異なる魅力を感じています。10年後、20年後も自分自身にリミットを設けず、未経験の分野に果敢に挑戦していけるマインドを持ったエンジニアでありたいです。

一緒に働きたい人物像

━━最後に、今後どんな人と一緒に働きたいか教えてください。
佐々木:みてねを好きな人と働きたいですね。サービス、チームの雰囲気、使っている技術など、なんでもいいのですが、何かしらみてねの好きなところがある人。そして「世界中の家族の“こころのインフラ”をつくる」というミッションに共感してくれる人であれば、一緒に働いて楽しいのではないかと思います。
山田:僕も佐々木さんの意見に同意なのですが、付け加えるとしたら、プロダクトをよりよくすることに意欲的な方がいいですね。みてねは熱意を持って開発に取り組んでいるエンジニアが多いので、サービス改善に意欲的な方はみてねの雰囲気に合うと思います。
佐々木:余談ですが、みてねのメンバーに会った僕の妻が「みんな、なんとなく雰囲気が似ているね」と言っていました。なので、みてねの雰囲気が気になる方は、ぜひ一度みてねのエンジニアと話してみてください。