見出し画像

エンジニアの視点から見る「Yahoo!フリマ」の品質向上と未来への挑戦

個人間で商品の売買ができるフリマアプリ「Yahoo!フリマ」。 そのサービス開発でリーダーシップを発揮するエンジニアに、最新のモダン技術を採用する開発の舞台裏やエンジニア視線から見たYahoo!フリマ事業のおもしろさについて語ってもらいました。

※本記事は2023年に公開された記事を再編集しています。内容は旧ヤフー株式会社時代の情報を含みます。

プロフィール

長濱 伶(ながはま れい)
2021年新卒入社後、「Yahoo!フリマ」のAndroidアプリ開発に携わる。最近は「Yahoo!フリマ」のAndroidアプリのPaging 2をPaging 3に移行するプロジェクトを担当。


「ペアプログラミングで視点を増やす」ことでサービスの品質をより高める

担当している「Yahoo!フリマ」では、2人で1つの画面を見ながらコーディングするペアプログラミング(以下、ペアプロ)を取り入れています。

これは、1人がプログラムを書き、もう1人はそのコードを見ながら、フィードバックをしたり、ここはこうした方がいいのではないかと提案したりすることで、より品質の良いコードに仕上げていくものです。

共同作業を行うことで自然に会話が生まれますし、ビルド待ちのときに雑談をすることも。コミュニケーションの機会が業務を通じて自然に生まれます。私は「コロナ禍での入社」ですが、ペアプロの機会が多いこともあり、入社後のコミュニケーション面では困ったことはありませんでした。

ペアプロの相手は毎回変わります。固定にしてしまうと、その2人の視点からしかコードを見られなくなってしまいます。たとえば、自分が書いたコードをずっとAさんが見る場合、Aさんと自分の視点でしか見られませんよね。でも、毎日ペアを変えれば、Bさんと組んで違う視点からの指摘を得られ、より良い実装方法が生まれることもよくあります。

このように「視点を増やす」ことでサービスの品質をより高めることにつながるのではないかと思っています。

また、人によってコードの書き方には癖があります。ペアプロでは「そのプログラムをずっと担当しているエンジニア」はいないため、ほかのエンジニアの誰が見ても実装の意図が伝わるように書くことが必要です。入社後、先輩からは「良いコードは読みやすいコード」と言われました。

確かに、ぱっと見てもわからないコードでは保守もしにくく、あとから手を加えるのも難しくなってしまいます。意図が伝わりやすいような名前の付け方、わかりやすい処理の書き方を心がけています。若手に任せる裁量。身近なサービスだからこその思い入れ

入社2年目で技術カンファレンス「Tech-Verse」に登壇 「Yahoo!フリマ」の取り組みを紹介

入社後は、Android 開発のTipsを出し合う勉強会などに積極的に登壇していました。その際にプレゼン資料を添削してもらっていたこともきっかけとなり、「技術カンファレンスのTech-Verseに登壇してみないか」と登壇を勧められました。

Tech-Verseは2022年11月に旧LINEと旧ヤフーが合同で開催した技術カンファレンスです。

声をかけられたときは大規模なイベントで登壇した経験はなかったため、かなりハードルが高いと感じましたが、もし失敗したとしてもそれも良い経験になると思い、挑戦することにしました。

発表したテーマは「Yahoo!フリマ」はどうやってPaging 2をPaging 3に移行したか」です。

ページング処理とは、大きなデータを小さなデータの塊ごとに分割し、小さなデータの塊を必要になった分だけ取得する処理のこと。Androidが公式で提供しているページング処理を容易に実装できるライブラリ「Paging(ページング)ライブラリ」を使うことで、大きなデータを小さなデータの塊ごとに分割し、小さなデータ単位で取得できるようになります。

これまでは、商品一覧をスクロールしている途中でWi-Fiが切れてしまったときには追加で一覧を読み込むことができず、まるで全件表示し終えたような表示になってしまっていました。

また、一覧をスクロールしている途中で通信が止まってエラーになってしまったときに全件を読み込み直したときに、今までは一番上まで戻ってしまっていたため、本来見せるべきだった数100件の商品のデータをユーザーに快適にお届けできないことが課題でした。

しかし、Paging 3に移行したことにより、読み込みの途中でエラーが表示できるようになりました。下のほうにスクロールしていく途中でエラーになっても、ネットが復旧したら「リトライ」を押すとリストの続きから見ることができる実装が実現しました。

「Yahoo!フリマ」には膨大な商品のデータがありますが、それを一気にユーザーの端末に表示しようとすると、通信制限がかかってしまう可能性があります。そのため、表示に必要な分だけ読み込む「ページング処理」をしています。これも、ユーザーにストレスを与えないようにスクロールできるようになり、帯域を圧迫しないですむ、というメリットがあります。

商品一覧画面

「自分が得た知識を知って役立ててほしい」ため、発表で特に意識したこと

プレゼンをするときは、しっかり論理立てて説明すると相手に伝わりやすいと思っています。今回の発表内容では、無限読み出しによりデータを無限に読み込んでしまうという課題を説明するため、論理立てた流れをつくるように意識しました。

説明をする際に意識した流れ
・商品一覧を表示するときは、上方向から下方向の順で読み込まれている
・下方向のスクロールのみ提供したいため、上方向のスクロールは不要
・でも、上部のデータを「取り終えた」という情報を返さないとそれを読み続けてしまう
・そのため、前段で紹介した上方向の読み込みを防ぐ処理を入れないと、ユーザーは無限にデータを読み込んでしまう

発表のときには、スライドをめくるたびにどんどん論理が進んでいき、最終的に「このような原理でこれが起こります」という説明にすることを心がけました。

発表資料

発表のメインターゲットとして意識したのはAndroidエンジニアで、特に「Paging 2をなんとなく知っている、Paging 3はどういうものなのか、どういうふうに移行していけばいいのか、興味があるけどまだ移行できていない」人に向けた発表を意識していました。具体的にどう移行すればいいのか、どういう問題があるのかを伝えることで、これからサービスに反映することを検討しているみなさんの疑問や不安を解消できればという思いでした。

エンジニアは勉強会などで技術を共有する機会が多くありますが、多くの方が、「この技術を実装するときにこういう問題がある」というネガティブな点や、その対応策もあわせて伝えています。その理由は、あとに続く人が開発しやすくなることを意識されているからだと思います。私も発表するときは、「自分が得た知識をみんなに知ってほしい、知って役立ててほしい」という思いが強いですね。

その技術を先に導入してみたからこそ言えることがありますし、人に伝えるときには情報を改めてしっかり調べるので、その工程で自分の勉強にもなります。さらに調べた結果、もっとこうしたらいいのではないかという新たなアイデアが生まれることもあります。

サービスに新しい技術の反映を提案していくために心がけていること

Androidのライブラリの「リリースノート」をこまめに見て、リリースされた内容のなかでサービスに生かせそうなものを深掘るようにしています。

サービスへの新しい技術の反映を提案するときは、反映するメリットとデメリットをまずまとめます。そこで反応がよかったら、どのように導入していくのか、具体的な実装を検討していきます。

また、提案内容を企画担当者やデザイナーに伝えるときは、現状起きている問題とそれに対する理想も伝え、理想的な実装が難しい場合は代替案を提案するなど、できるだけ具体的に伝えることを心がけています。

逆に、企画担当者から「このようなことをやりたい」という希望をもらう場合、たとえば「Yahoo!フリマ」の場合は、ユーザーの情報だけでも、「ログインしていないとき」「ログインしているとき」「認証が切れてしまっているとき」など多くのパターンがあります。

これらのパターンをできるだけ網羅してそれぞれのパターンごとに要望を伝えてもらえると、開発をスムーズに進めていけると思います。たとえば「ログインしていて商品を購入したことのない人にこういう文字を表示したい」というように具体的に伝えてもらえるとやりやすいと感じます。

「Yahoo!フリマ」はソーシャル化することで、より人間味のあるサービスに

「Yahoo!フリマ」は、SNSとeコマースを組み合わせた「ソーシャル化」に力を入れて取り組んでいます。 SNSの投稿から直接商品購入ページに遷移させて商品の販売促進を行うことで、SNS上で購入者の口コミを見たり、気軽に質問できたりし、売り手側が顧客と交流がしやすい点が特徴です。

たとえば、「投稿機能」では、ユーザーが、

  • 最近買って良かったもの

  • 予想以上に早く売れてびっくりしたもの

  • 出品しようか迷っているもの

  • ほしいけど探しても見つからないもの

などの気になる商品について気軽に投稿できます。

その投稿を「Yahoo!フリマ」アプリのユーザーが見ることができ、気になる投稿にコメントしてユーザー同士で情報交換できます。

ただモノを買う・売るだけではなく、より身近なサービスとして使ってもらえるように、機能を追加したり改善したりしています。価格の提案や相談、値引きなども気軽にできるようになっていますので、ぜひ「Yahoo!フリマ」を使ってみてください。

「投稿機能」で商品の情報交換ができる

また、2022年10月から集荷サービス「おてがる配送(ヤマト運輸)」を開始しました。自宅など希望の場所から発送が可能になったため、より売りやすくなっています。買った方の安全性についても対策しており、より安全・安心に取引できる場を提供できていると思います。

また、「Yahoo!フリマ」はいわゆる「オンライン上のフリマ」ではなく、たとえば公園などで行われる「フリマ」のような、人と人との対話やあたたかみがあると感じたことも。過去には、私が買った商品と一緒に手書きのメッセージカードが入っていたことがありました。

「Yahoo!フリマ」のレビューには、使いづらい点、追加機能や改善点などの要望も多くいただいています。いただいたそれらの声は定期的に確認の上、改善を進めていきます。少しでも多くの方に使っていただき、使ってよかった点や使いづらいと感じた点があった際には、ぜひフィードバックをいただければと思います。

エンジニアとしてさらに成長を「伝える力」の強化も目指す

多くの優秀なエンジニアに共通して感じるのは、人に伝える力があること。発表を聞くと、とてもわかりやすく、おもしろいんですよね。

私はまだ「伝えるのが苦手」だと感じているので、今回の登壇もそうですが、機会があれば積極的に発表して経験を増やし、ほかのエンジニアの方々に有益な情報をお届けできたらと思います。

そして、エンジニアとして成長していく上では、新しい技術へ対応し続けることが大事だと感じています。これからも新しい技術をキャッチアップして、「Yahoo!フリマ」をより良いサービスにできる提案をし続けられるエンジニアになっていきたいと思っています。

関連リンク
Yahoo!フリマ
Tech-Verse2022 PayPayフリマはどうやってPaging 2をPaging 3に移行したか


記事を読んで「Yahoo!フリマ」「Yahoo!オークション」事業のエンジニア職に興味を持っていただいた方は、ぜひ下記より職種の詳細をご確認ください。