Staple 3.0 on ReactJS

技術系Founder & CEOとして、今回はテクノロジーの話をしたい。

「テクノロジーの選択は慎重に」というのは以前話した。初めてPublicにするが、その我々が次に来ると考えているのが、ReactJS (以下、React) である。距離の近いパートナーにはすでに数ヶ月も前から話し始めている技術トピックである。

我々が舵を切ったのは一年以上も前、当時Reactに関しての情報は日本にはほとんどなかった。ここは弊社独自のグローバル人材による強みが効いている部分かと思う。

まず初めに弊社にどういう課題があったかという話からスタートする。

2013年から我々はモバイル1stの経費精算アプリの開発をスタートした。国内初となる取り組みであったが、結果的にいち早くスマホ/IC経費精算で市場を切り開くことができた。それから第二世代目にあたる現在の Stapleは、Small Business (20名以下) を想定して開発、その安定版コードベースを「Staple for 弥生」として弥生株式会社に提供し、DevOps/Test自動化の仕組みを作り上げた。

しかしながら、開発における以下のような大きな課題があったのは確かである。技術的課題としては我々に限らず、広く他にも応用できると思うのでオープンにしたい。第三世代のStaple (以下、Staple 3.0)はこれらを解決する。

マルチデバイス対応– 違うスキルセット/開発リソース
– 米国Apple承認フロー
– Android端末のフラグメント化とテスト工数
Webフロントエンドの応答速度– ネイティブにはかなわない

Reactとは

フロントエンド側のJavaScript Libraryの一つ。ソフトウェア開発のMVC (Model, View, Controller) デザインパターンでいうView = User Interface(UI) 部分にあたる。このOpen Source Libraryは米Facebookによりメンテナンスされている。意外と思うかもしれないが、Web Technologyで一番ホットなのはもはやGoogleやMicrosoftではない。当然人材も流れている。

現在の弊社Technology Stackは、バックエンド側にはRuby on Rails、インフラをPaaSであるHeroku (現在は米Salesforce傘下)、フロントエンドではHTML/CSS、そして今回トピックとなるReactRelay/GraphQLを組み合わせている。これをGithubでコードをメンテし、CI (Continuous Integration) でBuild/Testを自動化しアジャイル開発しているという感じだ。

なぜReactか

大きく3つのメリット、単なるメリットではなくSuperなメリットがあったからこその選択である。

一つ目は人材戦略圧倒的な技術優位を中長期的に確立するため。すでにReact採用により弊社Engineeringチームのモチベーションは高く、外部からもトップクラスの人材が弊社に集まってきている。

二つ目は圧倒的な応答速度。次世代のStaple 3.0では、Webブラウザでアクセスしているのに、ネイティブアプリ並みの応答速度を実現している。これはReactによるデータ更新時のデータの扱い方の違いが大きい。

三つ目は65~70%コード再利用が可能ということ。ここで活躍するのがReact Native、サーバー側ロジック部分を書いたReactコードを使って、iOS、Androidのネイティブアプリがある程度書けるということ。

今まではすべて別々のスキルセット (フロントエンド、バックエンド、iOS、Android) の人材を採用していた理由で開発コストがどうしても高くなっていた。特にiOSのエンジニア採用は苦労していた。今はWeb Technology側に開発人材戦略をもう一度寄せることで、開発生産性とコストに非常にいい効果が働いている。

Write Once, Run Anywhereというコンセプトは昔からあるが、歴史的に実用レベルでどれも成功しなかった。そこで、Facebookではデバイスの差分を正しく理解した最適化、Learn Once, Write AnywhereというコンセプトをReactで目指している。初めて実用的なアプローチで、本命が来たと見ている。

本当に業務で使えるのか?

これを証明するためには、百聞は一見にしかず。現在Reactを積極採用している企業一覧を見て欲しい。弊社のStapleもリストに追加している。

米Facebook、傘下のInstagramの一部はすでにReact/React Nativeを採用と聞いており、その他Airbnb、Asana、BillGuard、Lyft、Uber、Venmo等もリストに入っている。FacebookではGroupsAds ManagerアプリがゼロからReact Nativeで作られている。

実際には適材適所があるが、弊社のような業務アプリ系にはすでにReadyと見ている。React Nativeに関しては安定していない部分もあり、実装には苦労する部分もあるが、弊社でも開発生産性はすでに3倍以上出ている。おそらくゲームアプリには向かない部分はあると思うが、ネイティブコードとのハイブリッドで比率をどうするかによっての選択だと思う。

弊社の次世代経費精算サービス「Staple 3.0」は、まだ一部のお客様やパートナーにしか公開していないので、実際に見たい、試したい場合は個別にコンタクトください。Meetupも随時開催する予定。一緒に世界で戦いたい人材は随時募集しているので、声をかけてください。