こんにちは!RoomClipです。私たちは「日常の創造性を応援する」をミッションに、暮らしの実例写真が集まる日本最大級の住まい・暮らしのソーシャルプラットフォーム「RoomClip」を自社で開発・運営しています。今回はそんなRoomClipのアプリ開発を担うAndroidチームに、普段の開発の様子やこれまでの様々な取り組み、今後についての話を聞きました。
RoomClipのプロダクトとAndroidチーム
― RoomClipについて教えてください
RoomClipは住まいと暮らしに特化したSNSで、ユーザーさんが写真を投稿し、それに対して他のユーザーさんが「いいね」やコメントをすることでコミュニケーションが広がるプロダクトです。2018年からDroidKaigiのスポンサーをしており、「カップケーキの会社」として記憶している方もいらっしゃるかもしれません。
― Androidチームは普段どのような開発をされていますか?
鷲田:
基本的にはRoomClipのAndroid版アプリを開発しています。RoomClipのSNSとしてのメイン機能の開発をベースにしながら、今年、新たにリリースしたRoomClipショッピングの開発を会社の方針として精力的に行っています。最近だと、クライアントさんが自社アカウントを通じて商品を販売するための機能、ユーザーさんが商品を眺めたり購入したりできる機能の開発が盛んです。
冨永:
あとはライブラリのバージョンアップなどですね。今はちょうどAndroid
12が出たばかりなので、新しい機能に対応するための修正などを行っています。
― Androidチームはどのようなチームですか?
河上:
これまで何社か異なる会社で開発してきましたが、弊社のAndroidチームが特徴的なのはコミュニケーションが密であることかなと思います。レビューも他社では形ばかりになっているところが多かったですが、RoomClipのAndroidチームはお互いのコードを確認する文化があります。
―「コミュニケーションを密に行っている」ところがポイントですね
冨永:
そうですね。RoomClipでのレビューは、コードの品質担保以外にも良い影響を生んでいると思います。チームのメンバーで分担して機能実装を行う際、それぞれが機能ごとに適した技術を調査・採用して実装を進めるため、レビューの中で、新しい言語機能やフレームワークに出会ったりするんですよね。このチームでは、より最適な実装を目指して、レビューを通してたくさんのことを話し合います。互いに成長できるような密なコミュニケーションが取れるのは良い文化だなと思っています。
鷲田:
僕も同意見で、積極的に質問したり意見を言い合えるのがこのチーム良いところだと思います。コードレビューでは、経験の長い人による意見に偏ってしまいがちですが、そうでない人の意見も重要だと思っています。例えば「間違っているかはわからないけど、ここが気になりました」といったレビューが来たとき、「これまで当たり前にやっていたことが、見方を変えると必ずしも正しくないことに気づいた」みたいなこともあったりするんですよね。そのため、特に一方向のコミュニケーションにならないよう意識をしていて、新しく入社した人や経験が少ない人でも、できる限り気兼ねなく話せるチームを目指しています。レビュー以外にも朝会や夕会など毎日コミュニケーションをとる時間を設け、気になることを気軽に議論できるよう心がけています。
― そうした文化が醸成された背景やきっかけはあるのでしょうか?
冨永:
私はチームの初期メンバーとして入社したのですが、当時まだAndroidエンジニアとしてのキャリアが長いとは言えず、最新技術になかなかついていけずにいた時期がありました。このままではいけないと、とにかく積極的に周りに声をかけキャッチアップの努力をしていたことが今思い返せば始まりかなと思います。当時、RoomClipのAndroidチームの開発力を安定させる必要があり、そのときの最適な方法が密な会話だった、というのが今でもいい形で残っているのかなと。
鷲田:
そうですね。そのようなチームの立ち上がりから現在さらにメンバーは増えましたが、経験や背景によらず様々な立場の人が意見や疑問を出し合える環境は、変わらず重要だと思っています。意思決定をする人が固定化してしまうと、設計が属人化してしまい、後で修正が必要になったときに、その人にしか修正できないということになりがちです。その時々でチームに必要だと思うことを追求し今の形となりました。元々、RoomClipの経営メンバーがわりと議論しながら合理的に物事を進めていくスタイルということもあり、そのカラーに合っていたのもあると思います。
コミュニケーションの課題を解決するための取り組み
―「コミュニケーションをとりながら合理的に進める」というカラーがわかるエピソードはありますか?
冨永:
属人化の話に関連してくると思いますが、「API仕様書からのコード生成」に取り組んだ話はまさに当てはまるかなと思います。当初APIのレスポンスの仕様は、担当者とAPI開発者間で決めてドキュメント化もされていなかったので、他のエンジニアは本人たちに聞かないとわからない状況でした。
鷲田:
API開発側、iOS側、Android側の三者間で、認識のズレが起きてしまうこともありましたね。レスポンスの形式がバラバラだったり。その認識合わせのために、参照できるドキュメント、さらに触れるものをということで、数年前にAPI仕様書からのコード生成に取り組みました。今はテキストで仕様書を書くと、コードが自動生成される仕組みを何ヶ所か稼働させています。
― そのような取り組みは、今でも続いていますか?
冨永:
API仕様書の話と通じるところでは、最近、私が対応したコンソール開発の話が近いと思います。Android、iOS、API担当者間でレスポンスのすり合わせに課題があったところを仕様書で整え楽になったら、次はアプリにくるデータそのものが気になり始めたんですよね。例えば「お知らせ」機能で送られてくるリンクのURLは、先ほどのAPIレスポンスの観点でいえば、文字列が返ってくれば仕様上はクリアです。しかし、先頭のhttpsが抜けていたり、記事のURLを期待する場面で違うURLが返ってきたり、「APIレスポンス的にはまったく問題なくとも、いざ動かすと想定と違う」といったケースが目につくようになってきました。そうすると今度は、エンジニア同士ではなく、運用している非エンジニアメンバーとの会話になってきます。そこでも、もちろんたくさん言葉でコミュニケーションしましたが、新しいメンバーもどんどん増えますので、どう解決していけるかを考えた結果、コンソールの開発に至りました。関係各所と相談しながら開発を進め、現在、お知らせなどを登録する際の仕様チェックは、コンソールで細かく調整しています。
RoomClip Androidチームのこれからのチャレンジ
―アプリ開発以外の面でも、組織のために色々なことをやられているんですね
鷲田:
そうですね。ただそこは「やらざるを得ない」といったマイナスなものではなく、あくまで「アプリ開発に縛られず、アプリをつくる中で気づいたことをベースに必要に応じてアプリとは少し違う部分も触れる」という感じです。もちろん一番にはアプリを良くしていきたいという想いがあります。今年はJetpack Composeが出たので、従来のAndroid Frameworkから基盤部分の移行を進めることになるでしょう。アプリ開発のチャレンジはこれからも変わらずやっていくつもりです。
冨永:
Androidで新しい技術が発表されると、RoomClipに合う技術なのかどうかをメンバーで話し合い、取り入れることでプラスになると思えるなら入れる、思わないなら入れないというコミュニケーションをしっかりとっています。「話し合いながら合理的に決める」という文化の中でも、新しい技術にチャレンジしていきたいという想いはあるので、RoomClipにとって極端にマイナスでなければ採用することも多いですね。
河上:
そうですよね。そのためにRoomClipメンバーは新しい技術の情報などによくアンテナを張っており、Androidチームだけでなく開発組織全体で常に情報を共有しているなと思います。その上でユーザー体験や開発効率等を優先し、新技術の導入を前向きに検討する文化は、RoomClipならではだと思います。
鷲田:
これからもそうしたチームでのディスカッションや挑戦は続けていきたいですね。
最後に
日々アプリ開発を進める中で、新しい技術への挑戦や事業推進のための取り組みを通し、成長を続けるAndroidチーム。
RoomClipは、そんな新しいチャレンジを一緒にしてくださる方を募集しています!
ご興味をお持ちいただいた方は、是非こちらの採用情報よりご応募ください!
また「RoomClipのメンバーと話してみたい」という方も大歓迎です!
meetyにてカジュアル面談ができる場も設けていますので、こちらから是非ご応募ください!
インタビューメンバー
鷲田
Androidアプリ開発してます。プログラミングとTwitterしかやってなかったらプログラミングとTwitterしかできなくなってました。2016年頃までは Web を中心に開発していました。
冨永
Android開発してます。ドロイドくんが好きです! 社内システムでウェブフロントデビューしました。「利用者に誠実に」をモットーに開発してます。
河上
様々な形態の現場で火消しを担当。居心地がよくて昨年からRoomClipに居ついています。型がアバウトな言語が苦手です。