開発者向けニュースに戻る

Meet the Developers - React @ Metaエディション(アンドレア・フェランド)

2023年4月27日作成者:Navyata Bawa

この記事は、Metaのソフトウェアエンジニアであるアンドレア・フェランドと、Metaの開発者アンバサダーであるショーン・キーガンが共同で執筆しました。

本日はMetaのフロントエンドエンジニア、アンドレア・フェランドにインタビューします。彼のチームは、ユーザーが宣伝キャンペーンを作成し、編集し、モニタリングするために使える広告マネージャアプリの開発に取り組んでいます。

自己紹介をお願いします。

アンドレア・フェランドです。ソフトウェアエンジニアとして、優れたデジタル製品やユーザーエクスペリエンスをお届けすることに情熱を傾けています。今私は広告マネージャアプリ(AMA)の開発に取り組んでいます。これは、広告主があらゆるMetaプラットフォームを通じて自分のキャンペーンを作成し、モニタリングし、管理するためのものです。このアプリは、広告主がターゲットオーディエンスにリーチするための総合的なソリューションをもたらし、効果的な宣伝を実施したいあらゆる人にとって重要なツールとなっています。私はAMAの開発に従事してまだ1年ちょっとですが、その開発に大いに貢献することができました。

React Nativeに携わる動機となったのは、iOSユーザーとAndroidユーザーの両方に対してシームレスかつ効率的なユーザーエクスペリエンスをもたらす可能性があることです。React Nativeではコンポーネントを再利用し簡単に状態を管理できるので、高品質のアプリを短時間で効率的に作成できます。付加価値として、1つのコードを複数プラットフォームで実行できるので、より大きなユーザーベースにリーチして、あらゆるデバイスで一貫したエクスペリエンスを提供できます。これはとても大きなメリットです。

Reactをどの程度利用しているのでしょうか?

私は毎日のようにReactを使っており、もはや私の職務に不可欠なものになっています。私はMetaで顧客にフォーカスした製品のテクニカルリーダーとして、エンドツーエンドの製品開発を管理するという総括的な責任を担っており、方向性を決定したり、部門の枠を超えたチームと共同作業したりしています。一方で、重要な機能に取り組み、実践的に貢献することで、AMAにも積極的に携わっています。

Metaでこれまでに携わったReactを使うプロジェクトには、どのようなものがありますか?

私は、Meta入社以来、もっぱら広告マネージャアプリ関連の業務に携わってきました。私たちのチームは、製品のエンドツーエンドのオーナーシップを保持し、それはバックエンド機能の開発にも関わっていることになりますが、私が携わったReactアプリはAMAだけです。

あなたのチームでReactを使うことにしたのはなぜですか?また、Reactはチームの開発目標達成にどのように貢献していますか?

これは誇りに思う点ですが、私たちの広告マネージャアプリは世界初のReact Nativeアプリのうちの1つなんです。React Nativeの発祥は2013年のFacebookハッカソンであることはよく知られています。私たちのアプリは、そのテクノロジーを使う草分け的存在でした。このアプリは、宣伝キャンペーンを成功させる上で役立つさまざまなインサイトや推奨事項を広告主に提供します。React Nativeは、こうした目的に完璧にフィットしています。iOSプラットフォームでもAndroidプラットフォームでも短期間での開発が可能であり、すばらしいパフォーマンスを発揮するReact Nativeは、AMAの成功に貢献しています。

最近印象に残ったことや、特に誇りに思うことはありましたか?

このところ私は、プッシュ通知インフラの開発、特にその信頼性確保に集中的に取り組んでいます。

通知はモバイルアプリ、特にAMAにおいて重要な役割を果たしています。ユーザーにタイミングよくインサイトを配信する通知は、宣伝キャンペーンを成功させる上で他社との差別化を生む特別に重要な機能なのです。

しかし、通知が多すぎてユーザーを圧倒してしまわないように、上手にバランスを取ることもまた大切です。さらに、通知の処理や管理の方法がiOSとAndroidとで異なっており、それら2つのモバイルオペレーティングシステムのプライバシールールも考慮しなければなりません。課題は山積みですが、これはやりがいのあるプロジェクトです。iOSとAndroidのそれぞれのプラットフォームに適した方法で通知を管理しながら、それぞれのプラットフォームで最適なユーザーエクスペリエンスを実現し、それぞれに異なるフローを開発するには、製品と技術的スキルの両方が求められるからです。

React Nativeを利用して、iOSとAndroidの通知機能の間で異なるロジックの大半を抽象化することによって、開発プロセスがシンプルになります。おかげで私たちは、開発プロセス自体に集中できるのです。

Metaのような会社でReact開発者として働くことで、何か特に刺激的だと思えることがありますか?

MetaでReact Nativeアプリの開発者として働くのは、すばらしい経験です。自分の仕事を通じて大きなユーザーベースにリーチすることができ、これほど多くの人々に影響を与えることができるのは、実にうれしいことです。このようにスケールの大きな仕事をすることには、それにまつわる課題が付き物です。しかし、それこそが仕事にやりがいをもたらし、常に進化させるのです。

この仕事の鍵となる点の1つが、ユーザーにとってのプライバシーとデータ整合性を維持することです。開発者である私たちは、保管できるデータとできないデータについて十分に理解する必要があります。ユーザーのプライバシーを保護するため、プライバシーチームと密接に連携しています。これはこの仕事の重要な一面ですが、小さなプロジェクトや新しい事業では見過ごされがちです。Metaでは優先度の高い課題として位置づけられており、そのためにアプローチの柔軟性や適応力が求められます。

グローバルに利用されるフロントエンドアプリの開発においてもう1つ課題となるのが、ローカリゼーションです。アプリを英語で設計し開発するのは比較的単純なことではありますが、その全体を20を超える言語に翻訳する過程で、それまでは見えていなかったさまざまな欠陥やバグが明らかになることがあります。1つの言葉が別の言語では3倍も4倍も長くなることがあり、さまざまな制約がすべて適切に処理されるようにするには、注意深いデザインと正確な開発が求められます。この点においては、以前に銀行や航空会社で働いた経験が、現在のMetaでの仕事に大いに活かされています。

現在のReact分野の仕事に取り組む原動力となっているのは何ですか?

MetaでReact開発者として働くのは、本当に特別な機会です。Reactのチームと身近に接し、直接コラボレーションしたりコミュニケーションを取ったりできるのです。これにより、社内でも独自の役割を果たすことになります。

顧客にフォーカスした製品のエンジニアとして成功するには、幅広いスキルセットが求められます。パフォーマンス優先のクリーンで信頼性の高いコードを書くことも大切ですが、同時にユーザーエクスペリエンスやアクセシビリティといった分野も重視しなければなりません。これはまさに、Reactのようなダイナミック言語が威力を発揮する場面です。開発者はReactを使うことで、追加の作業なしに開発作業に集中することができます。ネイティブモバイル開発の背景では、特に大規模アプリ開発の場合、ビルド時間が日常業務の妨げとなり貴重な時間を浪費してしまうということを、私は身をもって経験してきました。そうした点から私は、Reactの仮想DOMを使えることを高く評価しています。効率的なアップデートやUIコンポーネントのリアルタイムレンダリングが可能になるからです。ウェブを通じて開発者や会社の間で広く採用されているにも関わらず、Reactのユーザーフレンドリーかつアクセシブルな本質に変わりはありません。その一因は、開発者の間で広く使われているJavaScript/TypeScript (JS/TS)言語が基礎となっている点にあります。私はReactでTypeScriptを愛用しています。TypeScriptは静的に型付けされているので、開発プロセスの早い段階で簡単にバグを見つけることができます。

また、個人的にとても気に入っているのが、Reactの関数コンポーネントです。メモ化機能を使ってパフォーマンスを最適化できるほか、不要なレンダリングのアップデートを回避して、アプリのパフォーマンスを大幅に向上させることができ、とにかく便利です。特に大規模アプリでは、コンポーネントを簡単に再利用でき、コードベースの保守、テスト、管理がしやすくなることがとても重要になります。

今までに仕事で直面した、Reactやオープンソースソフトウェアの開発に関する誤解にはどのようなものがありましたか?

実際に今までの仕事で、Reactやオープンソースソフトウェアについての誤解を耳にすることはそれほど多くありませんでした。世界の大企業の多くが日常業務の中でオープンソースソフトウェアを利用したり開発したりしていますし、大きな開発者コミュニティがオープンソースプロジェクトに取り組んでいますよね。

React Nativeについてさまざまな懸念を耳にしたことはあります。特に、低速である、小規模プロジェクトにしか適さない、機能が限られているといったことです。React Nativeでネイティブコンポーネントとやり取りするのにJavaScriptが使われているため、ネイティブに作成されたアプリと比べてパフォーマンスが遅いと考える人もいます。ストリーミングのように、場合によっては、ネイティブアプリのほうがパフォーマンスが良好な場合もあります。しかし、主に画像やテキストを表示し、ユーザーインタラクションを支援する日常的なアプリのほとんどでは、React Nativeも優れたパフォーマンスを発揮します。

あなたが期待するReactの今後の展望はどのようなものですか?

React Nativeのアーキテクチャは堅牢であり、効率的なアップデートやリアルタイムのUIレンダリングによって、大規模アプリにも十分に対応できます。また、コード管理が簡単になるので、大規模プロジェクトにも理想的でしょう。さらに開発者は、React Nativeを利用することでネイティブモジュールにアクセスできるようになり、それによりネイティブ機能にもアクセスできるので、総合的なアプリを開発できるでしょう。

React初心者に役立つリソースには、どのようなものがありますか?また、貢献できることについてはいかがでしょうか?

私は、キャリア初期の段階からReactに関わってきました。私が働いたある会社では、幸いにもエキスパートを講師とする動画レッスンを使った大手オンライン学習ポータルへのフリーアクセスを提供してくれていました。私にとって最適な学習方法は、それらの動画チュートリアルを見ることであり、必要な知識のすべてを1つずつ習得できました。基本を学んだ後、Reactについて理解を深める上で大いに役に立ったのは、実際のプロジェクトに取り組むことによって得られた実務経験です。業務で実践する機会がないのであれば、何か夢中になれるものを見つけて、そのためのアプリを開発してみてください。これは本当におすすめです。私の場合は、自分のポートフォリオを含む個人用ウェブサイトを作ることから始めました。さらに、React Nativeの公式ドキュメントも充実しており、特定の情報を調べる必要があるときにとても便利です。

あなたのことや、お仕事の実績について知りたい場合はどこで情報が得られますか?

私はGithubのアカウントを持ってはいますが、仕事上の経験のほとんどは仕事関連の機密事項のために専有であるか、オープンソースではない個人プロジェクトです。ソーシャルメディアも楽しく利用しており、Instagramにもよく出没していますが、開発について議論するための場としては利用していません。むしろ仕事からの気分転換に使っています。


このインタビューのために時間を割いてくださり、ありがとうございました。Reactがメジャーなアプリの改善に利用されていること、またここで築いたあらゆることがいかに教訓として活かされ、Reactコミュニティに還元されているかを知ることができ、とても有意義でした。このインタビューが皆さんのお役に立ち、ReactがMetaのどこでどのように利用されているかを知るための糸口となれば幸いです。

「Meet the Developers - React @ Meta」シリーズについて

Reactは最も人気のあるオープンソースプロジェクトの1つであり、過去数年にわたりずっと「最も愛されている」ウェブフレームワークの1つとしてランキングされてきました。Metaでは、Reactを優れたライブラリであり、簡単かつ大規模にユーザーインターフェイスを構築する上で開発者の役に立つものとして捉えています。シンプルなウェブサイトからエンタープライズアプリに至るまで、あらゆる分野で世界中の何百万もの開発者によって利用されているReactは、だれもが参加できるオープンソースライブラリです。

このブログは、「Meet the Developers」シリーズの一部です。このシリーズでは、Reactを定期的に利用するエンジニアや開発者の方をお招きし、それぞれの経験をお話しいただきます。また、MetaでReactを使って開発している優れた製品についても紹介してもらいます。他のエンジニアの方々が本トピックについて意見を述べられているインタビューブログが数多くありますので、そちらもご覧ください。

Metaオープンソースについて詳しくは、Metaのオープンソースサイトにアクセスし、YouTubeチャンネルをサブスクリプション登録するか、MetaのTwitterFacebookLinkedInをフォローしてください。