本記事はReact Native at Airbnbの日本語訳第一弾です。
このシリーズは非常に詳細にAirbnbが如何にしてReact Nativeを導入しそして最適なソリューションを模索した結果として捨て去る決断をしたのかという事が書かれていますが、インターネットを見ているとReact Nativeだめらしいよと中身をよく読まずに結論づけている人が多そうなのでより多くの人が知る機会になればと思い翻訳を始めました。全5部の大作なので時間を見て続編を書いていきます。誤訳のご指摘等は@hotchemiまで宜しくお願いします。
2016年から私達はReact Nativeに対して大きな投資を続けてきました。 あれから2年の歳月が経ち、今こそ私達が取り組んできた試みと次に何を見据えているかを皆さんと共有すべき時だと判断しました。
本稿は私達AirbnbのReact Nativeへの取り組みとモバイルの"次"についてまとめたシリーズの第一弾となります。
Airbnbがサービスを開始した10年前、スマートフォンはまだ普及し始めたばかりでした。それから幾ばくが経ちスマートフォンは今や私達の生活を支える必要不可欠なツール、とりわけ世界を旅行する際には欠かせないものとなりました。新たな旅の形を提供する会社として、世界に通用するアプリを提供する事はとても重要な事だと認識しています。携帯端末はしばしば人々にとって必要不可欠な存在であり、外出している際の唯一の連絡手段でもあります。
2008年に(Airbnbの最初のユーザーである)3人のゲストがRausch Streerに滞在してから、携帯端末からの(Airbnbへの)予約数は年間で数百万件にまで増加しました。我々のアプリを通してホストは提供している物件の一覧を管理する事ができ、旅人は新たな場所や体験のインスピレーションを指先一本で得る事ができます。
(上記で説明した様な)増加していくモバイル端末でのユースケースに対応する為、また新たな体験の創出や既存機能の改善を図るために私達はNativeの開発チームを100人以上に拡大してきました。
React Nativeへの賭け
ゲストとホスト双方がAirbnbで素晴らしい体験を提供できるように、また優れた開発者体験を(社内のエンジニアに)もたらせるように私達は日々新たなテクノロジーを検証しています。2016年時点で、その内の一つがReact Nativeでした。当時、我々はモバイルが如何に我々のビジネスにとって重要なものになっていたかを認識していましたが、我々の目標を達成する為に十分な数の開発者を揃える事ができていませんでした。結果として我々は(Nativeで開発する以外の)代替案を検討するようになったのです。我々のWebサイトは主にReactで書かれており、Reactはとても効率的でAirbnb社内でもあまねく指示を得ているフレームワークです。これらの理由から、我々はReact Nativeをより多くの開発者に開発を可能にする為、そしてクロスプラットフォーム開発でリリースをより高速に届ける為のツールとして見据えていました。
私達がReact Nativeについての調査を開始した時、当然そのリスクについても認識していました。私達は新しく、動きが早くまだ実績がないプラットフォームを我々のコードベースに追加したのです。それは我々のコードベースを一つのものにするどころか、断片化するリスクを孕んだ決断でした。また、我々は同時にReact Nativeに投資をするのであれば(投資という行為自体を)正しくやっていきたいという事も認識していました。我々がReact Nativeを用いて実現したいゴールは:
- 組織としてスピード感を持って動けるようにする事
- "Native"の品質を維持する事
- クロスプラットフォーム開発を実現する事(コードをiOSとAndtoidで二回書かない事)
- 開発者の体験を向上させる事
我々の体験
この数年に渡って、我々は真摯にReact Nativeへの努力を続けてきました。shared element transitionsやparallaxエフェクト、ジオフェンシングなど複雑なNativeの機能を実現する為にのNativeへのインテグレーションや、ネットワーキングやi18nなどのインフラストラクチャとのbridgeを構築してきました。
我々はAirbnbでの沢山の重要な機能をReact Nativeを用いて立ち上げてきました。"Experiences(機能名)"という全く新たなビジネスやレビューやギフトカードなど多くの機能はそのうちの一つです。これらの多くの機能はNativeエンジニアが不足している時代に構築されたものです。
それぞれのチームが多種多様な体験をReact Nativeと共に積んできました。React Nativeは素晴らしいツールであるという事が証明された一方で、それは技術的そして組織的な挑戦を投げかける存在でもありました。 本シリーズでは私達の体験を余す所なくお伝えし、次に何に取り組んでいるかも同時にお伝えします。
Part two(未翻訳)では、React Nativeで(技術的に)うまくいった所、うまくいかなかった所を振り返ります。
Part three(未翻訳)では、クロスプラットフォームなモバイルチームを作るに当たって取り組んだ組織的な挑戦を振り返ります。
Part four(未翻訳)では、我々とReact Nativeの現在の状況に焦点を当て、Airbnbの将来がどんなものになるであろうかをお伝えします。
Part five(未翻訳)では、React Nativeから学んだ事とそれらをNative開発にどの様に役立てているかをお話します。