Upgrade to Pro — share decks privately, control downloads, hide ads and more …

minneはなぜGraphQLを推進しているか

Kazuhito Nakayama
December 11, 2024
7

 minneはなぜGraphQLを推進しているか

minneはなぜGraphQLを推進しているのか English Below
本プレゼンテーションでは、minneがGraphQLを採用し、Web、iOS、Androidなどのプラットフォーム全体でのユーザー体験向上を目指す取り組みを紹介しています。GraphQLを利用することで、API効率の向上、クライアントサイドのリクエスト負荷の削減、そして迅速な機能開発が実現されました。このアプローチは、価値を迅速に提供し、競合に先んじるというminneのミッションに沿っています。

主な内容:

マルチプラットフォーム体験を維持する上での課題。
RailsをBackend-for-Frontend(BFF)としてNext.jsと組み合わせる活用法。
RailsビューからNext.jsへの移行手順とGraphQL APIの利用方法。
GraphQLの利点(パフォーマンス向上、スキーマの再利用、チーム間のコミュニケーション効率化)について。

--
Why is minne Advocating for GraphQL?
This presentation highlights minne's transition to GraphQL and its adoption as a key technology for improving user experiences across platforms like web, iOS, and Android. By employing GraphQL, minne has enhanced API efficiency, reduced client-side request load, and facilitated faster feature development. This approach is aligned with minne's mission to deliver value quickly and outpace competitors.

Key topics include:

Challenges in maintaining seamless multi-platform experiences.
Utilizing Rails as a Backend-for-Frontend (BFF) with Next.js.
Steps to migrate views from Rails to Next.js using GraphQL APIs.
Benefits of GraphQL, including improved performance, reusable schemas, and streamlined team communication.

Kazuhito Nakayama

December 11, 2024
Tweet

Transcript

  1. 2 自己紹介 GMOペパボ minne事業部 プロダクト開発チーム リーダー 2023年 中途入社 21卒 中山 一仁 Kazuhito

    Nakayama バックエンドが多い。けど、まあ全部やらせてくださいの 気持ち。 • あだ名 : kazu • 好きな漫画 : 王様達のヴァイキング • X : @kazuhitonakayam • Github: kazuhitonakayama • Cosense(旧Scrapbox): kazuhitonakayama
  2. 4

  3. 6

  4. 21 - 実はNext.jsをフロントエンドとして採用する少し以前より、GraphQLが導入さ れていたので、これを機にNext.jsからAPIリクエストする際は原則GraphQL にてやろうという流れに - なぜGraphQLか → 体験価値の向上 +

    より速い価値提供 - クライアントのリクエスト回数が減る + 無駄なデータの取得が減る という点でア プリの高速化 になる - クライアントが要求するリソースが変わっても、スキーマに定義されている範疇 においては、クライアントの変更だけで済む BFF(Backend For Frontend)としてのRails
  5. 27 よって以下のようなステップでNext.jsによる画面へ移行 1. Railsのviewでの機能群の洗い出し→GraphQLの a. ピン留め、ピン外し機能 b. 画像アップロード機能 c. メッセージの取得

    d. メッセージの送信 e. メッセージの既読化 2. Next.jsでの画面実装 こんな感じに進めてます ~具体的な施策を紹介しつつ~ およそ1ヶ月かかった、、、🔥
  6. 28 GraphQLを推進して何が嬉しいか - 先述の通り、リクエスト回数および無駄なデータ取得がない分、負荷が減る - 型という基本要素を再利用できる - →推進していけば行くほど開発速度が基本的に上がるだろう - 実装してコマンド叩けばGraphQLスキーマが出来上がる

    - API仕様書の手動の更新が不要!!嬉しい using graphql-ruby - APIのスキーマについて、モバイルとのコミュニケーションが増えた - スキーマに変更があったらPRの段階でモバイルチームにもメンションされてPR 上で議論する こんな感じに進めてます ~具体的な施策を紹介しつつ~