ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社のコーポレートサイトはこちらです。
当ページに記載されている情報は、2023年9月30日時点の情報です。

企業情報

2023.01.11

新卒2年目で「Tech-Verse 2022」に登壇 PayPayフリマエンジニアの取り組み

画像

2022年11月、LINEとヤフーが合同でオンライン技術カンファレンス「Tech-Verse 2022」を開催しました。これは、両社をはじめ参加各社の多彩なメンバーによって、最先端の挑戦や積み重ねてきた知識を共有するイベントです。

新卒入社2年目でこのイベントに登壇したAndroidエンジニアの長濱に、登壇のきっかけ、技術を伝える上で心がけていること、担当しているPayPayフリマに発表した技術をどのように生かしたか、今後挑戦したいことなどを聞きました。

長濱 伶(ながはま れい)
2021年新卒入社後、PayPayフリマのAndroidアプリ開発に携わる。最近はPayPayフリマのAndroidアプリのPaging(※1)2をPaging3に移行する案件を担当。

高専(高等専門学校)時代に、他社さんが開催していた学生向けの「Android基礎講座」に1週間参加したことが、Androidの開発を続けていきたいと思うようになったきっかけです。その講座で使用されていた教科書がAndroid黒帯(※2)の森が書いた本で、森のもとでAndroid開発に関わりたい、と思い入社しました。
※1 Paging(ページング):
大きなデータを小さなデータの塊ごとに分割し、小さなデータの塊を必要になった分だけ取得する処理
※2 黒帯:
「ある分野に突出した知識とスキルを持つ第一人者」として、実績を上げている優秀な人財を称賛し、新たな活躍の場を提供する任命制度。森は2014年10月からAndroid技術の分野で黒帯に認定されている。

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

担当しているPayPayフリマでは、ペアプログラミング(以下、ペアプロ)という、2人で1つの画面を見ながらコーディングする形で開発しています。
これは、1人がプログラムを書き、もう1人はそのコードを見ながら、フィードバックをしたり、ここはこうした方がいいのではないかと提案したりすることで、より品質の良いコードに仕上げていくものです。

共同作業を行うことで自然に会話が生まれますし、ビルド(※3)待ちのときに雑談をすることも。コミュニケーションの機会が業務を通じて自然に生まれます。そのため、私は「コロナ禍での入社」ですが、入社後のコミュニケーション面では困ったことはありませんでした。
※3 ビルド:
ソースコードをオブジェクトコードに変換し、複数のオブジェクトファイルをまとめて実行可能なファイルを作成する作業のこと

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

また、人によってコードの書き方には癖があります。ペアプロでは「そのプログラムをずっと担当しているエンジニア」はいないため、他のエンジニアの誰が見ても実装の意図が伝わるように書くことが必要です。先ほどお話した、Android黒帯の森からは「良いコードは読みやすいコード」と言われました。
確かに、ぱっと見てもわからないコードでは保守もしにくく、あとから手を加えるのも難しくなってしまいます。意図が伝わりやすいような名前の付け方、わかりやすい処理の書き方を心がけています。

ペアプログラミングとは
・2人で同じ画面を見ながらコーディング
・1人がプログラムを書き、もう1人はそのコードへのフィードバックを行うことでより品質の良いコードに仕上げていく
・一緒にコードを書くことで、自然に会話も生まれる
・誰が読んでもわかりやすいコードを書くことが大切

入社2年目で「Tech-Verse」に登壇 PayPayフリマの取り組みを紹介

入社後は、Android 開発のTipsを出し合う勉強会などに積極的に登壇していました。その際にプレゼン資料を添削してもらっていたこともきっかけとなり、Android黒帯の森から「Tech-Verseに登壇してみないか」と登壇を勧められました。
大規模なイベントで登壇した経験はなかったので、かなりハードルが高いと感じましたが、もし失敗したとしてもそれも良い経験になると思い、挑戦しました。

発表したテーマは「PayPayフリマはどうやってPaging2をPaging 3に移行したか」です。
Paging(ページング)ライブラリとは、Androidが公式で提供しているページング処理(※4)を容易に実装できるライブラリです。これを使うことで、大きなデータを小さなデータの塊ごとに分割し、小さなデータ単位で取得できるようになります。
※4 ページング処理:
大きなデータを小さなデータの塊ごとに分割し、小さなデータの塊を必要になった分だけ取得する処理

基本的にはアプリの内部の実装をより良くする対応ではあるのですが、ユーザーにとってメリットがある点としては、これまでは、たとえば商品一覧をスクロールしている途中でWi-Fiが切れてしまったときには追加で一覧を読み込むことができず、まるで全件表示し終えたような表示になってしまっていました。

また、一覧をスクロールしている途中で通信が止まってエラーになってしまったときの全件を読み込み直したときに、今までは一番上まで戻ってしまっていたため、本来見せるべきだった数百件の商品のデータを快適にお届けできないことが課題でした。
ですが、Paging3に移行したことにより、読み込みの途中でエラーが表示できるようになりました。下のほうにスクロールしていく途中でエラーになっても、ネットが復旧したら「リトライ」を押すとリストの続きから見ることができる、という実装が実現しました。

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

PayPayフリマの商品一覧

ページング処理のメリット
・商品一覧をスクロール中にWi-Fiが切れてしまったときにも追加で一覧を読み込める
・スクロールしていく途中でエラーになっても、ネットが復旧したら続きから見られる
・表示に必要な分だけ読み込むため、帯域を圧迫しないですむ

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

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

  1. 商品一覧を表示するときは、上方向から下方向の順で読み込まれている
  2. 下方向のスクロールのみ提供したいため、上方向のスクロールは不要
  3. でも、上部のデータを「取り終えた」という情報を返さないとそれを読み続けてしまう
  4. そのため、前段で紹介した上方向の読み込みを防ぐ処理を入れないと、ユーザーは無限にデータを読み込んでしまう
というように、論理立てた流れをつくるように意識しました。
発表の時には、スライドをめくるたびにどんどん論理が進んでいき、最終的に「このような原理でこれが起こります」という説明にすることを心がけました。

長濱の発表資料

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

エンジニアは勉強会などで技術を共有する機会が多いのですが、多くの方が、(この技術を)実装するときにこういう問題があるというネガティブな点や、その対応策も併せて伝えています。その理由は、あとに続く人が開発しやすくなることを意識されているからだと思います。私も発表するときは、「自分が得た知識をみんなに知ってほしい、知って役立ててほしい」という思いが強いですね。
その技術を先に導入してみたからこそ言えることがありますし、人に伝えるときには情報を改めてしっかり調べるので、その工程で自分の勉強にもなります。さらに調べた結果、もっとこうしたらいいのではないかという新たなアイデアが生まれることもあります。

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

Androidのライブラリの「リリースノート(※5)」をこまめに見て、リリースされた内容のなかでサービスに生かせそうなものを深掘るようにしています。
※5 リリースノート:
新しいソフトウエア(のバージョン)を発行する際に、以前の版からの変更点や利用上の注意点などをまとめたもの

サービスへの新しい技術の反映を提案するときは、反映するメリットとデメリットをまずまとめます。そこで反応がよかったら、どのように導入していくのか、具体的な実装を検討していきます。
また、提案内容を企画担当者やデザイナーに伝えるときは、現状起きている問題とそれに対する理想も伝え、理想的な実装が難しい場合は代替案を提案するなど、できるだけ具体的に伝えることを心がけています。

逆に、企画担当者から「このようなことをやりたい」という希望をもらう場合、たとえばフリマの場合は、ユーザーの情報だけでも、

・ログインしていないとき
・ログインしているとき
・認証が切れてしまっているとき

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

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

PayPayフリマは、「ソーシャル化(※6)」に力を入れて取り組んでいます。
たとえば、「投稿機能」では、ユーザーのみなさんが、
・最近買って良かったもの
・予想以上に早く売れてびっくりしたもの
・出品しようか迷っているもの
・ほしいけど探しても見つからないもの
などの気になる商品について気軽に投稿できます。

その投稿をPayPayフリマアプリのユーザーが見ることができ、気になる投稿にコメントしてユーザー同士で情報交換できます。
※6 ソーシャル化:
SNSとオンラインショップを組み合わせ、SNSの投稿から直接商品購入ページに遷移させて商品の販売促進を行うこと。SNS上で購入者の口コミを見たり、気軽に質問できたりし、売り手側が顧客と交流がしやすい。

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

新機能「投稿機能」で商品の情報交換をしよう!

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

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

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

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

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

Android黒帯の森の発表資料。石器時代に例えたり、秘密道具のように関数を説明したりなど、聞いている人を引きつける工夫がされている

私はまだ「伝えるのが苦手」だと感じているので、今回の登壇もそうですが、機会があれば積極的に発表して経験を増やし、他のエンジニアの方々に有益な情報をお届けできたらと思います。
そして、エンジニアとして成長していく上では、新しい技術へ対応し続けることが大事だと感じています。これからも新しい技術をキャッチアップして、PayPayフリマをより良いサービスにできる提案をし続けられるエンジニアになっていきたいと思っています。

【関連リンク】

このページの先頭へ