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. モバイル開発における
    クロスプラットフォーム
    の期待と課題
    降矢大地

    View Slide

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

    View Slide

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

    View Slide

  4. •1. モバイルアプリ開発の現状と課題
    •2. クロスプラットフォーム分野への期待と課題
    •3. クロスプラットフォームの注目技術
    Flutter、Kotlin MPP、React Native、.NET MAUI
    •4. メディア事業部としての今後の取り組み
    今日話すこと

    View Slide

  5. モバイルアプリ開発の現状と課題

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. iOS 50 ਓ
    Android 50 ਓ
    経営課題
    その差、iOS 3 人で 1 プロダクトのアプリを作るとすると
    プロダクト 3 つ分の差がある

    View Slide

  11. 多くの会社が Android エンジニアの中途採用は年間 1 人するのもやっ
    との状態であり、弊社も去年から中途採用も即戦力より第二新卒を狙っ
    ていく方向にしたりしてみたが、大きな採用効果は得られていない
    + 10 ਓ
    Android Λ࠾༻ʁ
    iOS 49 ਓ
    Android 37 ਓ
    難題
    経営課題

    View Slide

  12. クロスプラットフォーム分野への
    期待と課題

    View Slide

  13. • アプリ動作の安定性 (クロスプラットフォーム <= ネイティブ)
    • 将来性、先行き不安
    • iOS/Android で共通の UI(悪くも)
    • iOS/Android の新機能への追従の遅れ?
    課題

    View Slide

  14. •開発元の企業がいかに
    大企業だろうとエンジ
    ニアコミュニティに受
    けが良くないと廃れて
    いった
    将来性、先行き不安

    View Slide

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

    View Slide

  16. エンジニアのリソース確保

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. • 世界的に200万人以上のエンジニアが Flutter を使って
    いて毎月10%増加している
    • 利用数上位5地域は インド、中国、米国、EU、ブラジル
    • Google Play に既に100,000個、毎月10,000個以上の
    Flutter アプリがアップされている
    開発コミュニティの急速的な拡大

    View Slide

  22. Flutter の採用事例(国内)

    View Slide

  23. • 社内初事例(国内?)
    • 2018 年 6 月サービス開始
    (Flutter stable 1.0 のリリースは2018年 12 月)
    • 担当アプリエンジニア 2 人
    REQU

    View Slide

  24. Flutter の採用事例(国外)

    View Slide

  25. ༽჈ (Idle Fish)
    • アリババ傘下のフリマアプリ
    • カメラ機能で商品検索
    • アプリ評価 ★ 4.6 DAU 2000万
    • Flutter 事例でユーザ数が世界最大級

    View Slide

  26. クロスプラットフォームの
    注目技術

    View Slide

  27. クロスプラットフォームの注目技術
    • Flutter
    • Kotlin Multiplatform projects
    • React Native
    • .NET Multi-platform App UI (MAUI)

    View Slide

  28. • Google によって開発
    • 2018 年 12 月リリース
    • まだ現在も Breaking Changes はある
    • Dart
    • ステートフルホットリロード (高速開発)
    • 独自 UI (豊富で良く動く)
    Flutter

    View Slide

  29. • グラフィックライブラリ
    • Android, Chrome, Firefox, Blink, Flutter で採用されている
    • Skia は Vulkan をバックエンドエンジンとして変更可能
    • Android 9 以降、デフォルトのレンダラーは Skia になってい
    る(8 と 9 でUIが変わったのはそのため)。Flutter にする
    とレイヤーが増えるもののレンダラーは同じ
    Flutter and Skia

    View Slide

  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 でも動作する

    View Slide

  31. • Swift/Kotlin で良い開発体験をしてきたエンジニ
    アには Dart という言語は弱い。よく言えば簡
    単。
    • アーキテクチャの議論が活発(良くも悪くも)
    • 各 SaaS の SDK が無い場合がある
    Flutter の悪い点

    View Slide

  32. • 2016 年に突如発表された
    • Zircon kernel ベースの OS
    • Android の負債を全てゼロするべく開発
    されたと言われている
    • Google Nest デバイスは Fuchsia が乗っ
    ておりアプリは Flutter で作られている
    Flutter and Fuchsia

    View Slide

  33. • Facebook によって開発
    • JavaScript
    • 2015 年 3 月リリース
    • ホットリロード (高速開発)
    • 既に成熟した大きなコミュニティ
    • それぞれのネイティブ UI を呼ぶ
    • EXPO によるホットリリース(審査なし)
    React Native

    View Slide

  34. • Web 色が強すぎた打ち出しだったために iOS/Android
    エンジニアからほとんど見向きもされていない。
    • JavaScript !-> Native 呼び出しのブリッジが非同期実装
    で扱いづらく、全てのモジュールをオープン状態でまっ
    ていないといけない。
    ※今年内部実装変える発表あったので、また変わるかも
    React Native の悪い点

    View Slide

  35. • JetBrains によって開発
    • UI の共通化はせず、ビジネスロジックの共通化に特化し
    ている
    • 認証、ログなどの共通化
    • 表に出てるサーバ側の Kotlin であればサバクラでモデル
    の共通化
    Kotlin Multiplatform

    View Slide

  36. JetBrains の野望として
    はクラサバのロジックを
    全て共通化すること。将
    来的には UI にも手を出
    しそうな情報を小出しし
    ている。
    Kotlin Multiplatform
    Kotlin/LLVM
    Kotlin/JVM Kotlin/JVM
    Kotlin/JS
    Common code

    View Slide

  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)

    View Slide

  38. • iOS エンジニアコミュニティに刺さってない。
    • iOS のエンジニアも Kotlin と Gradle を覚えないと
    いけない。
    • 以前は、Dispatchers.Main しか指定できなくてメイ
    ンスレッドしかなかったけど、1週間ほど前に PR
    マージされてたので、もう改善されてるかも。
    Kotlin Multiplatform の悪い点

    View Slide

  39. • Microsoft が開発
    • 宣言的 UI
    • まだ今年の 5 月に発表されたばかりでこれからに期待
    • MVU アプリアーキテクチャはモバイルアプリ界隈にとっ
    ては新しい風
    • ステートフルホットリロード (高速開発)
    .NET Multi-platform App UI

    View Slide

  40. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide