Tech Talksについて
Tech Talksシリーズは、PayPay Techチームのモノづくりへの姿勢や雰囲気を、世界約40カ国から集まった個性豊かなプロダクトメンバーたちの声を通してダイレクトにお伝えしていきます!今回は、O2OチームのPranav Gajjewarさんにご登場いただきます!

Pranav Gajjewar(プラナブ ギャッジューアー)
バックエンド エンジニア
Pranav Gajjewarと申します。インドのマハーラーシュトラ州出身です。2021年7月にPayPayに入社し、PayPayのO2O(Online to Offline)チームにバックエンドエンジニアとして参加しました。
※この記事は翻訳記事です。原文はこちらから
現在の仕事内容
現在、クーポンチームでバックエンドエンジニアとして働いています。O2Oは、クーポンやスタンプカードなど、PayPayのO2O機能(Online to Offline)を扱っています。クーポンの新機能の開発や、チームが取り組んでいるO2Oの新商品の立ち上げに携わっています。O2Oサービス全般の監視、アラート、セキュリティアップデートなどの設定、その他の技術的な取り組みなど、プラットフォームとSREに関するすべてのタスクを担当しています。O2Oの機能を支えるマイクロサービスは、30以上もあります。他にも、チーム内の技術やパフォーマンス向上のプロジェクトに取り組んでいます。また、システムの安定性と安全性の確保を担当するO2Oチームのセキュリティチャンピオンも務めています。

直近のテクニカルチャレンジ
PayPayでは、ユーザーに対して表示する画像を加盟店が独自に追加できるようになっているのですが、中にはサイズが大きすぎる画像が登録されている場合があり、問題となっていました。
というのも、画像のサイズが大きいと、ユーザー側で読み込む際に時間がかかってしまい、アプリの動作が遅く感じられてしまうのです。モバイル端末やフロントエンドの小さなコンポーネントとして表示されるため、必要以上に大きな画像を取り込むメリットもありません。
アップロード時に画像サイズを変更したくても、限られたサイズにしか変更できないという問題がありました。今後、UIを変えた場合でも、きちんと対応できるようにすることを考えると、加盟店が画像をアップロードするところからフローを変えるのは、短期間での実装が困難でした。また、すでに登録されている画像にも対応しなければなりません。将来的に最小限の労力で拡張できる柔軟なソリューションが必要だったのです。
画像は以下の図のように提供されていました。

そこで、AWS Lambdaを使って、アプリの要件に応じて動的に画像のサイズを変更するソリューションを考えました。

こうすることで、アプリが必要とする画像の解像度を指定することができるようになりました。必要な画像がすでに存在する場合は、キャッシュを通して読み込まれます。そうでない場合は、Lambda関数がDMSサービスから画像をフェッチして、それに応じてサイズを変更して戻します。また、同じ画像が同等の解像度で次回要求されたときのために、キャッシュに保存されることになります。
端末のディスプレイサイズとUIコンポーネントのサイズを考慮することで、ユーザーエクスペリエンスを損なうことなく、最小限のリソースで画像を最適化することができました。今では、1~5MBの画像を、ユーザーが感じるほどの画質の低下なく、100KB未満にできるようになりました。
また、お客様のご要望に応じて、Lambdaロジックを拡張し、より多くのサイズに対応することも可能です。
ソリューションのPoC(概念実証)を行い、テストを行い、わずか2週間でPayPayアプリのすべてのクーポン画面とスタンプカード画面上にリリースすることができました。以下のグラフから、CDNからの転送リソースを大幅に削減できたことがお分かりいただけると思います。

画像を最適化することで、アプリの読み込み時間が短縮されるので、より良いユーザーエクスペリエンスを提供することができます。
今後チャレンジしたいこと
更に大きく、複雑な課題に取り組むことで、エンジニアとして成長していきたいと思っています。ありがたいことに、PayPayにはその機会がたくさんあります。課題を都度乗り越えて、PayPayの中でも最高のエンジニアの一人になれるように頑張りたいです。
Pranavさんのある一日
私の一日の始まりは、Slackやメールでのやり取りを確認することから始まります。その後、コーディング、テスト、レビュー、プランニングなど、進行中のプロジェクトに取り掛かります。日々の仕事では、Spring Bootを用いてKotlinやJavaを使ったバックエンドサービスの提供を行っています。プラットフォーム系のプロジェクトでは、Terraform、AWS Lambda、AWS Personalize、Sparkなど、非常に幅広い技術やツールに携わる機会があります。
ミーティングに関しては、毎日チームでdaily syncミーティングを行い、タスクの進捗を共有したり、チーム内で何かブロッカーがないか確認したりしています。Daily sync up とは別に、隔週でスプリントグルーミングとスプリント計画のミーティングを行い、タスクの見積もりとチームメンバーへの割り振りを行っています。
PayPayではフレックスタイム制度が採用されているので、私用のために途中で抜けることもできます。自分で時間を管理しつつ、やるべきことをすべてやり遂げることができるのです。
これまでのキャリア
PayPayに入社する前は、CRM SaaS企業でClojureバックエンドエンジニアとして1.8年間働いていました。初めての仕事でしたが、スケーラブルなバックエンドシステムの構築方法について、多くのことを学びました。

入社のきっかけ
自分が何か貢献できて、かつユーザーにインパクトを与えることができる組織で働きたいと考えていました。テクノロジー自体はもちろん、自分たちがそれを使ってどのように日常生活を大きく変化させていくかに興味があります。その一端がお金の使い方であり、それを改善するためにテクノロジーが大きな役割を果たすと信じています。また、かねてから金融とテクノロジーが交差する領域に惹きつけられるものがあったので、この2つを繋げている会社で働きたいと思っていました。
PayPayは日本のキャッシュレス化に大きく貢献しているので、そのミッションの一翼を担えることがとても楽しみでした。
PayPayで働く魅力
PayPayの魅力は、世界中の人と一緒に仕事ができる、多文化・多様性に富んだ環境だと思います。PayPayには優秀な人材が多く、そんな人たちと一緒に仕事をすることでたくさん吸収することが出来ます。また、どんな相手にでも質問を投げかけることができる、オープンで自由なコミュニケーションの文化があります。それが全体的にとても良い職場環境に繋がっていると思います。
また、きちんと責任を負う覚悟があれば、大きな功績を残すチャンスもあります。自分の限界を決めているのは自分自身です。

これからPayPayに応募する人へのメッセージ
社内で使用している技術の経験がなくても、早く覚えようという意欲と能力があれば大丈夫です。面接の際、「JavaやSpring Bootを使った仕事はしたことがない」と伝えたのを覚えています。それでも、機会を与えていただき、入社後にチャレンジし、すぐに適応することができました。
本当に大事なのは、どれだけ早く学べるか、物事をやり遂げられるかだと思います。
柔軟でスピード感ある環境で働くことができて、技術や組織レベルで課題に取り組むことが好きな人であれば、PayPayではそのための機会やサポートをたくさん見出すことができると思います。

現在募集中のポジション
※募集状況は取材当時のものです。
執筆:Pranav / 監修:Mune / 編集: Az / 翻訳:Philline / 翻訳編集:Language Communication Team
※社員の所属等は、取材当時のものです。