Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutterはナビタイムジャパンの新規アプリ開発で輝く

 Flutterはナビタイムジャパンの新規アプリ開発で輝く

2020/07/15開催されたTECH PLAY様主催イベント「クロスプラットフォームLT会!経験者が語るそれぞれの技術の特徴&メリット 〜 ReactNative/Flutter〜」にて発表した資料です。

NAVITIME JAPAN

July 15, 2020
Tweet

More Decks by NAVITIME JAPAN

Other Decks in Technology

Transcript

  1. Flutterはナビタイム ジャパンの
    新規アプリ開発で輝く
    2020/07/15
    ナビタイム ジャパン 松村航裕

    View full-size slide

  2. ● 松村航裕 (Kosuke Matsumura)
    ● Android / iOS / Flutter
    ○ Androidの方が得意
    ● Flutter歴 約1年半
    ● 個人でもFlutter製アプリをリリース
    https://note.com/shcahill/n/n8732a9ed1a57
    twitter
    @kosuke_mtm
    自己紹介

    View full-size slide

  3. NAVITIME JAPAN
    会社名 株式会社ナビタイムジャパン (英名 NAVITIME JAPAN Co., Ltd.)
    代表者 代表取締役社長 大西 啓介 (工学博士)
    設立日 2000年 3月 1日
    社員数 550名 (2020年4月現在) 約80%がエンジニア
    住 所 東京都港区南青山3-8-38
    3
    会社概要

    View full-size slide

  4. 4
    トータルメディア事業 ヘルスケア事業
    公共交通事業
    ドライブ事業 ツーリング事業
    MaaS協業事業 インバウンド事業 レベニューシェア
    ビジネス事業
    テレマティクス事業 交通コンサル
    ティング事業
    ビジネス
    ナビタイム事業
    法人
    ソリューション事業
    ・トータルナビアプリ
    ・乗換検索アプリ
    ・旅行計画,予約アプリ
    ・海外乗換アプリ
    ・法人向けウォーキングコース
    作成ツールの開発、販売
    ・バスアプリ
    ・公共交通事業者向け
    ソリューションサービス
    ・各種カーナビアプリ ・自転車、バイクの
    ナビアプリ
    ・次世代の移動革新に
     向けた他社との協業
    ・自治体向け観光アプリ
    ・外国人旅行客誘致等の
    コンサルティング
    ・通信キャリア会社との
    プロダクトアプリ
    ・国内外カーメーカー、車載機
    メーカー向けOEMアプリ
    ・移動に関するビッグデータを
    活用した各種コンサル
    ・動態管理ソリューション
    ・トラックアプリ
    ・サービス内で使用されている
    機能をAPi,SDKで販売
    事業領域
    NAVITIME JAPAN

    View full-size slide

  5. ● Flutterとは?
    ● 導入の目的と背景
    ● ネイティブ vs Flutter
    ● Flutterを採用した所感
    ● ナビタイム ジャパンにおける
    Flutterとの今後の付き合い方
    Index

    View full-size slide

  6. Flutterとは?

    View full-size slide

  7. ● Google製のクロスプラットフォーム開発フレームワーク
    Android/iOSに限らず、Web、デスクトップアプリの開発も可能
    (Web、デスクトップアプリはまだ β/α版)
    ● 2018年12月、正式版(v1.0)リリース
    ● 言語はDart
    ● 独自の描画エンジン(skia) で描画
    Flutterとは?

    View full-size slide

  8. ● Hot Reloadが魅力的
    ● 宣言的UI
    (レイアウトも全てコードで書く)
    ● UIパーツが充実
    特にMaterial Design
    Flutterとは?

    View full-size slide

  9. お台場エリア実証実験のMaaSアプリでFlutterを採用
    (現在は実証実験終了に伴い、サービス終了)
    その他、4アプリでの採用実績
    ナビタイムジャパンにおける 採用実績例

    View full-size slide

  10. 導入の目的と背景

    View full-size slide

  11. 導入の目的と背景
    法人顧客からの
    新規アプリ開発案件の増加
    例)時刻表の表示や、
    乗換検索結果の表示など
    アプリ要件はシンプル
    アプリ開発
    リソースの不足
    新技術導入による
    エンジニアの
    モチベーション向上
    法人顧客
    ナビタイム
    ※ 特 定 の 画 面 だけネイティブで 実 装 することも 可 能 (MethodChannel)なため、
     もしネイティブの機能が必要になってもある程度はカバー可能

    View full-size slide

  12. ネイティブ vs Flutter

    View full-size slide

  13. Flutter Android/iOS 備考
    言語 △ ◎ *後述
    レイアウトの
    組みやすさ
    ◎
 ◎
    HotReloadが便利
    慣れるまでは大変かもしれない
    多言語対応 △ ◎ あまり直感的ではない
    安定性 ○ ◎ 不具合がちらほら…
    ライブラリ ○ ◎
    市場が未成熟かもしれないが、
    良質なものも揃っている
    開発環境 ◎ ◎ AndroidStudioがそのまま使える
    *個人の主観です
    Flutterの特徴 - ネイティブとの比較 -

    View full-size slide

  14. 言語機能はSwift/Kotlinが優位。それでもFlutterがDartを採用した理由
    ・他言語からの移行が容易(らしい)
    ・レイアウトも含めてすべてDartで表現できる
    ・Hot Reloadが実現可能
     AOT(Ahead Of Time)とJIT(Just In Time)が組み合わされている
    Why Flutter uses dart?
    https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf
    https://qiita.com/yasutaka_ono/items/608405a27e57cc30e0d7
    Flutterの特徴 -なぜDartなのか-

    View full-size slide

  15. Dartのnull安全性について (Non-Null By Default: NNBD)
    Dartへの拒否反応のひとつとして、
    Null安全ではないことがよく挙げられます。
    しかし現在進行形で対応が進められており、
    NNBD対応も時間の問題だと思われます
    (破壊的変更になりそうですが…)
    extensionも最近入ったばかりで発展途上の言語ではありますが、
    その進化スピードには目を見張るものがあります。

    View full-size slide

  16. Flutterを採用した所感

    View full-size slide

  17. 良かった点
    ● OS差分が出ない
    ○ 片方のOSで、良かれと思って作ったアニメーションが
    もう片方のOSで実現が難しかったり
    ● OS間の仕様調整が不要
    ● 開発速度は、確実に早い
    ○ Android/iOSで同じ機能をそれぞれ設計・実装して …という手順が省ける。
    一度設計すれば両OSで実装できるのは心理的負荷も低い
    ○ 検証工数も削減可能

    View full-size slide

  18. 大変だった点
    ● Flutterの不具合を踏むと辛い
    ● 有識者が少ない
    ○ 学習コストや設計検討において多少時間がかかった
    → モブプロで開発
    ○ 一方、twitterやDiscordなどのSNSが活発
    ● 社内で開発・運用できる人が少ない
    ○ Android/iOSエンジニアに比べると人数の絶対数が少なく、
    開発リソースの調整が難しい
    ○ Flutterできる人は大抵凄腕なので、ネイティブエンジニアとして重宝されている

    View full-size slide

  19. ナビタイム ジャパンにおける
    Flutterとの付き合い方

    View full-size slide

  20. 一般的には…
    ● 新規作成のアプリ
    ○ リプレース案件でも選択肢になる
    ● デザインや機能にOS差分がないアプリ
    ○ BtoBなど、仕様が絶対的なものには適する
    ● OS特有の機能をメインとしないアプリ
    ○ センサーやカメラなど
    ○ ネイティブとFlutterとのやり取りが大変なので、
    OS機能とUIのI/Fが多いと実装が大変
    ○ WebViewも要注意
    Flutterが適したアプリとは

    View full-size slide

  21. ナビタイム ジャパンの場合
    Flutterが適したアプリとは
    ナビや地図(ネイティブライブラリ )を扱う
    複雑なアプリには不向き

    View full-size slide

  22. ナビタイム ジャパンの場合
    Flutterが適したアプリとは
    乗換検索アプリや
    キュレーションアプリでは向いている
    ただし、OSの新機能などを
    積極的に取り込むような
    開発スタイルの場合も不向き

    View full-size slide

  23. Flutterが適したアプリとは
    ナビタイム ジャパンの場合
    ・新規開発案件
    ・ネイティブを必要とする複雑な機能がない
     (地図はGoogleMap)
    ・OS差分を極力なくす必要がある
    以上の理由から、モビリティパスなど主に
    BtoBtoCの新規開発案件でFlutterの採用が
    行われています

    View full-size slide

  24. まとめ
    ● Flutter採用により、開発スピードは確実に向上した
    ● Flutter/Dartは、構えるほど難しくない
    ● メリット・デメリットを認識した上での採用の見極めが大切
    ● 直近の課題は、開発者不足

    View full-size slide

  25. ご清聴ありがとうございました

    View full-size slide