モバイル開発におけるクロスプラットフォームの期待と課題 / Cross-platform expectations and challenges in mobile development

モバイル開発におけるクロスプラットフォームの期待と課題 / Cross-platform expectations and challenges in mobile development

6dd0483f1353a4a359e92633cfd65c64?s=128

Daichi Furiya (Wasabeef)

September 07, 2020
Tweet

Transcript

  1. モバイル開発における クロスプラットフォーム の期待と課題 降矢大地

  2. 降矢大地 Google Developers Expert @wasabeef_jp wasabeef CA Developer Experts Developer

    Productivity 室
  3. •近年、またクロスプラット フォームが人気を集め始めて います。現在は主に Flutter と React Native が主要な市 場プレイヤーですが、クロス プラットフォームが何をもた

    らすのかを話します。 クロスプラットフォーム
  4. •1. モバイルアプリ開発の現状と課題 •2. クロスプラットフォーム分野への期待と課題 •3. クロスプラットフォームの注目技術 Flutter、Kotlin MPP、React Native、.NET MAUI

    •4. メディア事業部としての今後の取り組み 今日話すこと
  5. モバイルアプリ開発の現状と課題

  6. • モバイルアプリ開発は成熟期でもあるので、致命 的な課題もなく可もなく不可もない現状。 • Jetpack Compose/Swift UI などの宣言的な UI を構築できる仕組みが来年くらいから安定化され

    るかも。 現状
  7. • iOS/Android の機能仕様ずれ (認識ずれ、SDK・ライブラリ差のずれ) • Androidエンジニア不足の課題(例) • 開発期間の長期化 課題

  8. Androidエンジニア不足の課題(例)

  9. 弊社も例外ではなく、Android と iOS のエンジニア数でバラン スが取れておらず Android アプリの開発が遅れることがある iOS 50 ਓ

    Android 40 ਓ Androidエンジニア不足の課題(例)
  10. iOS 50 ਓ Android 50 ਓ 経営課題 その差、iOS 3 人で

    1 プロダクトのアプリを作るとすると プロダクト 3 つ分の差がある
  11. 多くの会社が Android エンジニアの中途採用は年間 1 人するのもやっ との状態であり、弊社も去年から中途採用も即戦力より第二新卒を狙っ ていく方向にしたりしてみたが、大きな採用効果は得られていない + 10 ਓ

    Android Λ࠾༻ʁ iOS 49 ਓ Android 37 ਓ 難題 経営課題
  12. クロスプラットフォーム分野への 期待と課題

  13. • アプリ動作の安定性 (クロスプラットフォーム <= ネイティブ) • 将来性、先行き不安 • iOS/Android で共通の

    UI(悪くも) • iOS/Android の新機能への追従の遅れ? 課題
  14. •開発元の企業がいかに 大企業だろうとエンジ ニアコミュニティに受 けが良くないと廃れて いった 将来性、先行き不安

  15. • アプリ動作の安定性がかなり向上 (60 fps) • エンジニアのリソース確保 • 開発期間短縮 • 2020年、開発コミュニティの急速的な拡大

    • iOS/Android で共通の UI(良くも) 期待
  16. エンジニアのリソース確保

  17. エンジニアのリソース確保 サーバエンジニア iOS エンジニア Web エンジニア Android エンジニア これまでの Swift/Kotlin

    アサインスタイル
  18. ཧ૝తͳΫϩεϓϥοτϑΥʔϜͷΞαΠϯελΠϧ サーバエンジニア アプリエンジニア Web エンジニア アサインプール とりあえず1人以上いれば iOS/ Android アプリ両方開発可能

    エンジニアのリソース確保
  19. サーバエンジニア アプリエンジニア Web エンジニア アサインプール 他のPJへ 余剰 エンジニアのリソース確保 ཧ૝తͳΫϩεϓϥοτϑΥʔϜͷΞαΠϯελΠϧ

  20. 開発コミュニティの急速的な拡大

  21. • 世界的に200万人以上のエンジニアが Flutter を使って いて毎月10%増加している • 利用数上位5地域は インド、中国、米国、EU、ブラジル • Google

    Play に既に100,000個、毎月10,000個以上の Flutter アプリがアップされている 開発コミュニティの急速的な拡大
  22. Flutter の採用事例(国内)

  23. • 社内初事例(国内?) • 2018 年 6 月サービス開始 (Flutter stable 1.0

    のリリースは2018年 12 月) • 担当アプリエンジニア 2 人 REQU
  24. Flutter の採用事例(国外)

  25. ༽჈ (Idle Fish) • アリババ傘下のフリマアプリ • カメラ機能で商品検索 • アプリ評価 ★

    4.6 DAU 2000万 • Flutter 事例でユーザ数が世界最大級
  26. クロスプラットフォームの 注目技術

  27. クロスプラットフォームの注目技術 • Flutter • Kotlin Multiplatform projects • React Native

    • .NET Multi-platform App UI (MAUI)
  28. • Google によって開発 • 2018 年 12 月リリース • まだ現在も

    Breaking Changes はある • Dart • ステートフルホットリロード (高速開発) • 独自 UI (豊富で良く動く) Flutter
  29. • グラフィックライブラリ • Android, Chrome, Firefox, Blink, Flutter で採用されている •

    Skia は Vulkan をバックエンドエンジンとして変更可能 • Android 9 以降、デフォルトのレンダラーは Skia になってい る(8 と 9 でUIが変わったのはそのため)。Flutter にする とレイヤーが増えるもののレンダラーは同じ Flutter and Skia
  30. Flutter and Skia 対応プラットフォーム • Windows 7, 8, 8.1, 10

    • macOS 10.10.5 or later • iOS 8 or later • Android 4.1 (JellyBean) or later • Ubuntu 14.04+, Debian 8+, openSUSE 13.3+, or Fedora Linux 24+ • もちろん iOS でも Windows でも動作する
  31. • Swift/Kotlin で良い開発体験をしてきたエンジニ アには Dart という言語は弱い。よく言えば簡 単。 • アーキテクチャの議論が活発(良くも悪くも) •

    各 SaaS の SDK が無い場合がある Flutter の悪い点
  32. • 2016 年に突如発表された • Zircon kernel ベースの OS • Android

    の負債を全てゼロするべく開発 されたと言われている • Google Nest デバイスは Fuchsia が乗っ ておりアプリは Flutter で作られている Flutter and Fuchsia
  33. • Facebook によって開発 • JavaScript • 2015 年 3 月リリース

    • ホットリロード (高速開発) • 既に成熟した大きなコミュニティ • それぞれのネイティブ UI を呼ぶ • EXPO によるホットリリース(審査なし) React Native
  34. • Web 色が強すぎた打ち出しだったために iOS/Android エンジニアからほとんど見向きもされていない。 • JavaScript !-> Native 呼び出しのブリッジが非同期実装

    で扱いづらく、全てのモジュールをオープン状態でまっ ていないといけない。 ※今年内部実装変える発表あったので、また変わるかも React Native の悪い点
  35. • JetBrains によって開発 • UI の共通化はせず、ビジネスロジックの共通化に特化し ている • 認証、ログなどの共通化 •

    表に出てるサーバ側の Kotlin であればサバクラでモデル の共通化 Kotlin Multiplatform
  36. JetBrains の野望として はクラサバのロジックを 全て共通化すること。将 来的には UI にも手を出 しそうな情報を小出しし ている。 Kotlin

    Multiplatform Kotlin/LLVM Kotlin/JVM Kotlin/JVM Kotlin/JS Common code
  37. Kotlin/Native - Target Platforms iOS (arm32, arm64, simulator x86_64) macOS

    (x86_64) Android (arm32, arm64) Windows (mingw x86_64, x86) Linux (x86_64, arm32, MIPS, MIPS LE, Raspberry Pi) WebAssembly (x86_64)
  38. • iOS エンジニアコミュニティに刺さってない。 • iOS のエンジニアも Kotlin と Gradle を覚えないと

    いけない。 • 以前は、Dispatchers.Main しか指定できなくてメイ ンスレッドしかなかったけど、1週間ほど前に PR マージされてたので、もう改善されてるかも。 Kotlin Multiplatform の悪い点
  39. • Microsoft が開発 • 宣言的 UI • まだ今年の 5 月に発表されたばかりでこれからに期待

    • MVU アプリアーキテクチャはモバイルアプリ界隈にとっ ては新しい風 • ステートフルホットリロード (高速開発) .NET Multi-platform App UI
  40. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠