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

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

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

Daichi Furiya (Wasabeef)

September 07, 2020
Tweet

More Decks by Daichi Furiya (Wasabeef)

Other Decks in Programming

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. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠