見出し画像

Flutterのすゝめ - 3

先日の続き。今回は核心にすぐに入っていきたいと思います。

調査タスクフォース

そのような訳で、Nubankでは2019年の初旬に、新しいプロダクトを開発するにあたり、Kotlin Native・React Native・Flutterを比較する調査タスクフォースを立ち上げました。

そして彼らは、Nubankにとって重要な観点を11個の評価項目として定義し、プロダクションのアプリの一部機能を実際に開発しました。その後、社内の様々な関係者を交えて、その開発環境やドキュメンテーションを公開し、開発したアプリをユーザーとして1時間使ってもらうことを行いました。

以下、タスクフォースによる考察を記載していきます。ここからは、私のバイアスが掛からないように、原文とその翻訳を記していきます。

Kotlin Nativeとの比較

Drawing from our own experiences (80% of our Android codebase is Kotlin, Nubank’s account is developed in React Native) and evaluating our alternatives against Nubank priorities, we feel like Kotlin is a great language to work with. But Kotlin Native is the only platform that doesn’t provide a UI abstraction, making it dependent on native platform tooling for developing and testing. While it scored higher in our lowest priority criteria, not showing limitations of capabilities or risks for app store restrictions, we felt that, especially when it came to testing support for expert engineers, Kotlin Native is not ready for us.

これまでのKotlinを多用してきた経験や、Nubankにとっての今回の調査における優先度に鑑みても、Kotlinは素晴らしい言語だと感じています。他方で、比較したプラットフォームの中でKotlin Nativeは唯一、UI abstractionを提供しておらず、開発やテスト時にはネイティブプラットフォームのツールが必要になりました。優先度が高くない評価項目では高い評価を出しているものもあるが、あるいは、ケイパビリティの制限やアップストアでの制約などのリスクも見られないが、エンジニアのテスト効率などを考えると、Kotlin Nativeは私たちにとっては未だだと判断しました。

React Nativeとの比較

When looking at more important criteria, React Native also wins in community support. We felt no fear of the continuity and evolution of the project and were very happy with the amount of documentation and learning resources available. When it came to breaking changes, however, we found that React Native has more dependencies than the other alternatives. Therefore, it is much more vulnerable to maintenance and upgrading pains.

より重要な評価項目であるCommunity Supportは、React Nativeが勝りました。同プラットフォーム開発プロジェクトの継続性や進化度合いにも特に不安は無いですし、ドキュメント量や学習リソースにおいても十分満足しています。一方で、我々にとって問題視していることは、React Nativeは他と比べてもより依存性(→ライブラリ間のものと思われる)があり、メンテナンスやアップグレード時に困る可能性があります。

Flutterの良いところ

Our engineering culture strongly encourages test automation, so Flutter shined with its excellent testing capabilities that fit nicely with our mindset (built-in testing infrastructure for Unit, Integration, and End-to-End tests without the need for rendering to the screen). In contrast, React Native requires third-party dependencies, which makes it more prone to breaking changes. We found the Flutter development experience to be superior, with better hot reload capabilities, robust official documentation, and a more stable API.

私たちのエンジニアリング文化としてテスト自動化を強く推奨しており、これがFlutterを強く推すポイントとなりました。Flutterはビルトインの単体・結合・総合用のテストインフラが有り、アプリ画面を実行描画せずにテストを行うことができます。他方、React Nativeは3rd partyの依存性が必要となることが欠落点と感じています。結果、hot reloadや充実した公式ドキュメント・安定したAPI等があるFlutterの方が、優れていると結論付けました。

For further details...

今回はNubankのBlogで書かれているサマリを見ていきましたが、こちらのレポートには、もう少し評価項目ごとの深掘りした発見や考察が書かれているので、次回以降でさらに見ていきたいと思います。

この記事が気に入ったらサポートをしてみませんか?