見出し画像

「最適な技術選定で、最高の提案を」アプリ開発をReact Nativeで行なった理由、そしてその実情とは

スマートフォン時代において必要不可欠な、アプリやウェブサービスといったプロダクトを、お客さまと共に創る。それが、フラーの『共創スタジオ』です。
プロダクトの企画、開発、運用から分析までと、一気通貫した支援を行います。

共創スタジオでは、お客さまにとって最適な選択肢をご提供するため、日々さまざまな取り組みにチャレンジしています。
先日リリースされた筑波大学公式アプリでは、クライアントの要望へ最大限に応えるため、共創スタジオ初となるReact Nativeでの開発を行いました。
今回は、React Nativeでの開発の実際について、メンバーに話を聞いてみました。

━━プロダクトの概要を教えてください。

『TSUKUBA FUTURESHIP』開発チーム:
筑波大学公式アプリ『TSUKUBA FUTURESHIP』は、筑波大学の在学生・卒業生をはじめとした、筑波大学に関わるすべての皆さまに向けたアプリです。
開校150周年を記念し、卒業者の皆さまに学校や在学生にまつわるニュースをお伝えしながら、同時に、筑波大学を応援したいと思ってくれた方には、基金を通じて寄付という形での応援もできる仕組みとしました。

━━React Nativeを採用した経緯や理由はなんですか?

「本当に必要なモノを、お客さまと共に創る」ことが、我々、共創スタジオのスタンスです。案件としてはSwift・Kotlinによるネイティブアプリの開発が多いですが、それありきで話を進めることはしません。
iOSとAndroidのアプリをそれぞれ別で作っては工数の無駄が多くなる、その工数は違うところに回した方がプロジェクト全体のためになる——そう判断できた場合は、別の選択肢をご提示しています。
React Nativeは、この姿勢をより強化するための手札として、新たに持っておきたかったんです。クロスプラットフォームフレームワークは、プロジェクトの最適化において、適切に使えば強力ですから。

また、「手軽な、高速な開発」というものがトレンドのひとつになっている時代において、我々としても、大きな開発だけやっているのはちょっと違うかもとも思っていまして。リーンな開発手段を持っておきたい、なんて気持ちもありました。
その具体的なものとして、React Nativeが共創スタジオの新しい武器になったらいいなと。

そんな経緯から、React Nativeで取り掛かるのが最適といえる、実際の案件を探していました。React Nativeだとどこまでできるのか、本当に全体の工数最適化につながるのか、みたいなことを確かめたかった。それは、実際の案件としてやってみないとわからないことですので。
そういった中で、筑波大学さんと一緒にお仕事ができることになった形になります。

そもそも共創スタジオのチームには、React Nativeでの開発に長けた、腕のいいエンジニアがいるという事情もありました。「React Nativeでちゃんと開発できるかどうかわからないけど……」といった博打で案件を受けたわけでは、決してありません。
共創スタジオとして受けたお仕事で、ではないですが、共創スタジオの代表も副代表も、クロスプラットフォームでは昔、痛い目にあったことがあります。なので、慎重に判断をしました。

そしてもちろん、React Nativeでの開発にチャレンジしたいという共創スタジオ側の事情を差し引いたとしても、筑波大学さんのアプリは、React Nativeでの開発がベストでした。それが最も効率的でパフォーマンスが良く、クライアントさまのためになるだろうという判断が、いちばんのベースです。
また、筑波大学さん自体にも、新しい試みへ次々にチャレンジされる先進的なイメージがあります。なので、アプリを作る際にも、そのスタイルに合わせて技術的な新しい挑戦をしてみたい、なんてことも考えていました。

━━React Nativeで開発することで、共通化はほんとうにできますか?

基本的にはできます。今回のプロダクトでいえば、ほぼほぼ共通化できています。ステータスバーまわりのちょっとした調整くらいですね、ネイティブで書いたところは。
 
React Nativeでの共通化が厳しいシーンとしては、たとえば、マイナーなライブラリをどうしても使いたいのに、それがネイティブサポートはしているけどReact Nativeサポートはしていない……なんて状況とかです。
あとは生体認証。Androidは端末によって認証の形が違うので、ネイティブで書かなくてはいけません。同様に、ネイティブの低レイヤーのAPIを叩くとかも厳しいです。
今回のプロダクトでは、これらのようなことはなかったので、React Nativeでの開発がうまくハマりましたね。

絶対にReact Nativeではできないこと、というのは、本質的にはないと言ってもいいかもしれません。ただ、React Nativeで無理にがんばると、どう考えてもコストパフォーマンスが悪くなるからやらない、という選択をすべきシーンが、いくつかあるといった感じです。

━━工数削減はどれくらいできている手応えですか?

Swift・Kotlinによる開発と比べて、ほんとうに半分くらいになっているんじゃないかなと思います。
そもそものReact Nativeの学習コストも、Swift・Kotlinと比べたら軽いと感じます。

━━React Nativeで今回のプロダクトを組んでいくにあたり、いちばん工夫した点はどこ?

今回に関して言えば、どこかを無理に工夫することなくできたのが、いちばんの工夫点かもしれないです。
開発はとてもスムーズにいきました。単純に、「React Nativeを採用する」という技術選定そのものが、いちばん良かった点だと思います。

━━React Nativeの世の中的な評価、採用され具合に対しては、どう思いますか?

たとえば、とある有名な防災系アプリは、React Nativeで作られているようです。このアプリ、プッシュ通知がとにかく早いのがすばらしい。防災アプリというジャンルの性質上、それはとても大切なことです。そしてそれを実現するには、バックエンドを充実させる必要があります。
こういうプロダクトを作りたいとき、アプリはネイティブで作らずReact Nativeで作り、それによって浮かせることのできた工数や費用を、バックエンドの充実に回す……なんてやり方は、とても効果的です。

なにも考えず、「とにかく開発費がないからReact Nativeで」という安易なやり方は、良くないことだと思っています。
React Nativeでの開発は、プロジェクト全体を俯瞰してどこに力を入れるべきかをしっかり考えた上で、それが最適だと判断できたときにはじめて採るべき選択肢です。
共創スタジオも、開発工数の最適化手段としてReact Nativeに魅力を感じていますが、あくまで、プロジェクト全体を見てそれが最も効率的でクライアントさんのためになると判断できたときに、選択肢としてお出しします。

さらに言えば、SwiftやKotlinなどでOSごとに作った方がむしろ工数削減できたところを、無理やりReact Nativeで書いてしまってそのせいで工数が膨らんでいる例なんかも、世の中にはある気がしています。
たしかに、「これは絶対React Nativeではダメ」というジャンルはありません。無茶をすれば、だいたいのことはできます。
ただ、フレームワークを使わずに書いた方が早い場合というのが往々にしてあります。たとえば、アニメーションをバンバン使うアプリなんかは、無理にReact Nativeで作るととても苦労するでしょう。
逆に、地図などのウェブ系の情報を出したいとき、React Nativeは便利です。
向き不向きを考えて、適切な技術選定をすることが大切です。

         ━━━━━━━━━━━━━━━━

以上、React Nativeに関する取り組みについて、フラー『共創スタジオ』チームに話を聞きました。
共創スタジオへご興味お持ちいただけましたら、ぜひこちら↓のページをご覧ください。

また、フラーでは、新メンバーを随時お迎え中。ご興味お持ちいただけましたら、こちら↓のページからお気軽にご連絡ください!


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!

最後までお読みいただきまして、ありがとうございます!もっと詳しくフラーを知ってみませんか?