【翻訳】React Native at Airbnb

はじめに

この記事は2018年6月20日Airbnb社のGabriel Pealによって公開された記事を日本語に翻訳したものです。

公開にあたっては氏本人の同意を得ている最中ですが、誤訳や問題のある表現等を見つけた方は僕のTwitterアカウントまでDMいただけますと幸いです。

元記事:

medium.com

本文

この記事はAirbnb社におけるReact Native体験と 次の時代のモバイルアプリケーション開発について記したブログシリーズの第一弾です。

10年前にAirbnbが立ち上がった頃、スマートフォンはまだまだ未熟なものでした。それから時が経ってより多くの人々が世界を旅するようになったこともあり、今や私たちの生活においてスマートフォンは欠かせない道具になっています。

旅行中はモバイルデバイスが数少ない、もしくは唯一の通信デバイスになるということは往往にしてあります。世界トップレベルのアプリを開発することは、何百万人という人々に新しい旅のカタチを提供する我々のようなコミュニティにとってとても重要なことなのです。

2008年に私たちが最初のゲストをRausch Street(訳注 Airbnb創業者のアパートメントがあった場所)に迎えた時から、年間のモバイルからの予約件数はゼロから何百万という数字に増加しています。私たちの提供するアプリによってホストは簡単に自分のリスティング(訳注 Airbnbに掲載している物件)を管理できるようになり、また旅行者も新しい旅のアイディアを見つけられるようになりました。

このような急速なモバイル体験の普及に伴って、Airbnbでは100名以上のモバイルエンジニアと共に新機能の開発や既存の機能の改善に取り組んでいます。

React Nativeへの投資

私たちはAirbnbを利用するホストとゲストにとってより良い体験を提供し、また我々自身の質の高い開発体験を可能にするような新しいテクノロジーを常に検証しています。2016年の私たちにとって、その答えの1つがReact Nativeでした。その頃から我々はAirbnbのビジネスにとってモバイルというものが重要な位置を占めることを理解していましたが、単純にモバイルエンジニアの数が目標の達成に対して不足していたのです。そのような状況下で我々はその代替となるような選択肢を模索し始めました。

AirbnbのWebサイトは主要部分がReactで作られています。AirbnbにおいてReactは高いパフォーマンスを発揮し、誰からも好かれていました。そこでReact Nativeを採用することでクロスプラットフォームで高速でコードを配信できるだけでなく、より多くのエンジニアがモバイル開発に取り組む機会になると思ったのです。

React Nativeに対して投資を始めた時点で、私たちはリスクがあることを知っていました。コード資産を統一する可能性もあればバラバラにしてしまう可能性もある新興のプラットフォームを導入しようとしていたのですから。React Nativeに投資すると同時に、正しい使い方をしたいと私たちは思っていました。React Nativeを導入する上で私たちが掲げたゴールは以下の通りです。

  1. 組織全体の動きを加速する
  2. ネイティブと同等の品質を保つ
  3. モバイル向けのコードは1度しか書かない。2度は書かない
  4. 開発体験を向上させる

私たちの経験したこと

この2年間、実験的に始まった取り組みはより本格的なものになってきています。 'shared element transitions', 'parallax', 'geofencing'といった複雑なネイティブの機構だけでなく、 'networking', 'experimentation', 'internalization'といったネイティブが提供するインフラへのbridgeを可能にする強力なintegrationを私たちは開発しました。

私たちはこれまでに数多くのAirbnbにとって重要な役割を果たすプロダクトをReact Nativeでローンチしています。ExperiencesというAirbnbにとって全く新しいビジネスだけでなく、レビューからギフトカードに至るまで何十もの機能がReact Nativeによって実現しました。これらの多くはまだ私たちが十分な数のネイティブエンジニアを有していない時代に開発されたものです。

それぞれのチームごとにReact Nativeを通して体験したことは異なります。技術的な問題や組織的な問題は残っているものの、現時点でReact Nativeは素晴らしいツールだと言えるでしょう。このシリーズではより詳しくReact Nativeの開発中に体験したことや、私たちのこれからの取り組みについて紹介します。

パート2では技術的な側面からReact Nativeにおいて上手くいったこと、そうでなかったことを挙げています。

パート3ではクロスプラットフォームなモバイルアプリを開発する上で直面した組織的な問題について紹介します。

パート4では今日におけるAirbnbとReact Nativeの関わり方と今後について触れています。

パート5(未完了)ではReact Nativeで開発する中で学んだことがどのようにネイティブで活きるかを書いています。