- サーバーサイドエンジニア
- データマーケター/AIマーケタ
- オンボーディング担当
- Other occupations (16)
- Development
- Business
- Other
ONE COMPATH広報の千野です。Webサービスやアプリを扱う企業にとって、常につきまとう問題がシステム負荷です。もちろん当社でも様々なサービスを展開しているため、それぞれのサービスでシステム負荷の軽減対策に取り組んでいます。今回、当社のウォーキングアプリ「aruku&(あるくと)」で取り組んだ負荷対策について、「aruku&」開発チームの五ノ井さん、落合さん、松浦さんにインタビューをしました。
<目次>
住民キャラクターの配置処理をサーバーからクライアントへ
サーバー側の属人化したソースコードを読み解け!
苦労しなかった理由は「濃密なコミュニケーション」と「譲歩し合う文化」
aruku&は開発期間重視で検証はスピード重視
住民キャラクターの配置処理をサーバーからクライアントへ
▲ウォーキングアプリ「aruku&」
「aruku&」は、2016年11月より当社が運営し、今年で210万ダウンロードを突破したウォーキングアプリです。アプリ内に登場する様々な住民キャラクターに話しかけると依頼が出され、時間内に既定の歩数を歩く(例:15時間以内に1000歩あるく)と、地域名産品などが当たるプレゼントキャンペーンに応募できます。
ーどのような負荷対策が必要だったのでしょうか
五ノ井:以前よりaruku&は、常にデータベース負荷が高い状態にありました。すでに最高スペックのデータベースを採用していたため、即時的なスペックアップが難しい状況でした。
今後、ユーザー数の拡大などaruku&のスケールを大きくしていこうとしたときに、現状だとサーバーが耐えられない。そのため、データベースの変更や検索処理部分の改修などの「テコ入れ」をしたものの、やはり限界がありました。
そこで負荷対策として、aruku&の住民キャラクターを地図上に配置する処理をサーバーでおこなうのではなく、クライアントサイド、つまりユーザーのスマホに委譲したのです。
落合:開始当初はすべてのユーザーが同じ住民配置だったんです。毎朝、全住民の配置をサーバー上で設定して表示していました。その後、2020年後半に、ゲーム性の演出のために、ユーザーごとに異なる住民配置をおこなう仕様変更をおこないました。
しかし、住民配置の仕様を大きく変更したことから、サーバーへの負荷が高くなってしまいました。
松浦:ずっと負荷が高くて、サーバーが停止することが何度も起こっていましたね。aruku&ユーザーは通勤・通学の時間、つまり朝と夕方に電車の中で利用しているようで、特に朝の通勤時間に負荷が高くなり、アプリが重くなったり、ときには止まったりしてしまうことが多発してました。
また、期間限定のキャンペーンを開催すると、通常の2倍のアクセスがあるため、キャンペーン初日にサーバーが止まってしまいユーザーの皆さんにご迷惑をおかけすることがありました。
▲住民配置クライアント委譲改修イメージ
サーバー側の属人化したソースコードを読み解け!
ークライアント側で住民配置処理をすることになった際、大変だったことは?
落合:iOSとAndroid、それぞれの仕様自体はこまめにすり合わせをしていますが、これまでサーバーサイドでおこなっていた住民配置の仕組みは、クライアントサイドを開発している我々にとって知らないことだらけだったんです。そのため住民配置自体をイチから理解する必要がありました。
松浦:サーバー側で実装されているロジックが非常に複雑で、普段アプリ側の開発をしている私たちにとっては読み解くことさえ難しかったです(汗)
とはいえ、開始以来かなり複雑に入り組んでいた住民配置の仕組みを、クライアント委譲のタイミングに合わせてシンプルに整理できたことはよかったと思います。
五ノ井:2020年に住民配置処理の仕様変更をした担当者がすでに退職してしまっているうえ、ソースコードが属人化してて読みにくく大変でした。このタイミングで、裏で実装されているものの3年間1度も使われていない機能などを削ったりしました。これらが改修をしにくくしていたんです。
落合:以前は住民キャラクターの地図上の配置をリセットするタイミングを、夜中の4時にしていたんです。0時だと帰宅など移動している人もいるだろうと。しかし、キャンペーンは0時からスタートすることが多く、サービス企画側も使いにくい仕様だったんです。そこで、社内に何人かいるヘビーユーザーに聞いたところ、「0時にリセットされても問題ない」という意見もあり、リセットのタイミングを0時にしました。仕様をシンプルにすることで、運用もしやすくなりましたね。
松浦:ウォーキングアプリなので、歩数計測が注目されがちですが、実はaruku&では「住民配置」が一番大変な部分だと思います。
苦労しなかった理由は「濃密なコミュニケーション」と「譲歩し合う文化」
ープロジェクトはどれくらいの期間でしたか?
松浦:2023年10月から2024年2月と約5か月です。通常、aruku&では1か月で開発してリリースするのに比べてかなり長い期間です。しかし、当初見込んでいた予定通りのスケジュールでした。
ープロジェクト全体を通して、苦労した点はありますか?
落合:実はとても苦労したという記憶はないんです(笑)プロジェクトに着手するまでに、認識合わせがいらないくらいに濃密にコミュニケーションを取り合っていました。実装期間が始まる前に、サーバー、クライアント各担当者が集まり、仕様の整理を時間をかけてやりましたね。
普段から大きな仕様変更がある場合、全員で打合せをやって疑問を取り除いてから実装に入ることが多いです。
五ノ井:ONE COMPATH、特にaruku&開発チームでは、責任を押し付け合うことはありません。お互いが譲歩し合って、気持ちよく仕事ができるようにシームレスにやりとりができています。「これを言ったら怒られるかも・・・」みたいなコミュニケーションの弊害になることが少ないと思います。他の会社と比較してもここまで密なコミュニケーションが取れていることは珍しいのではないかと思います。
ー開発チームが企画や営業に提案するシーンはあるのでしょうか?
五ノ井:施策の中身が煮詰まっていない早い段階から、企画チームが開発チームを巻き込んでくれますので、「実現可能かどうか?」「どれくらいの費用がかかるのか?」が明確にできますし、「アプリ画面ではこの表示は難しい」といった要望を開発側から提案すると、企画側も「それであれば実装しやすい仕様にしましょう」と柔軟に受け入れてくれます。チームの垣根を超えてお互いにできること・やりたいことを譲歩し合って作りあげていく文化が醸成されていると思います。
松浦:企画・開発・営業と三位一体になっている感じがします。お互いやりたいことを目指して、開発ではできないのであれば別の方法を提案し、企画・営業も今できる範囲で叶えようとします。各チームが譲歩し合う文化があるのは、とても仕事が回りやすいと思います。
aruku&は開発期間重視で検証はスピード重視
ー普段のアプリ開発について教えてください。また、アプリ開発現場の苦労があれば教えて下さい。
松浦:aruku&は開発期間を重視していて、検証期間はスピード重視でおこなう体制です。インプットはかっちりとした仕様書ではなく、主にBacklogベースでやりとりをしています。それでも、品質をあげるために、各端末ごとに単体テストをおこなったり、GitHubを使ったコードレビューでは自身以外の者がチェックするようにしています。
大変なところを上げるとすれば、Android端末はスペックが高いものから低いものまで様々あるためロースペックな端末でも動く保証をしないといけません。また、画面サイズも異なるので各サイズに合わせた画面レイアウトにしないといけません。そういった部分が大変なところでしょうか。
落合:Androidと比べるとiOSはラクですね(笑)端末がiPhoneだけと限られており、OSバージョンの「足切り」を定期的におこなってくれます。
そのため、古い端末のことを気にせず実装できます。個人的には新しい機能にいち早く触れるのは嬉しいですね。
ーただいまaruku&開発チームは絶賛仲間を募集しています。どのような方と一緒に働きたいでしょうか?
五ノ井:今語ってきたような文化に共感してくださる方がいいですね。「やることをカッチリ決めてほしい」という人より、それぞれの立場を尊重しつつ、いい意味で「ユルく」フレキシブルに対応できる人が向いていると思います。
ーありがとうございました!