Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Flutter の採用事例(国内)

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Flutter の採用事例(国外)

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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)

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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