Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
技術選定 askenでの取り組み Kotlin Multiplatform編
Search
Takuya Ohsawa
February 20, 2025
0
64
技術選定 askenでの取り組み Kotlin Multiplatform編
https://asken.connpass.com/event/343700/
Takuya Ohsawa
February 20, 2025
Tweet
Share
More Decks by Takuya Ohsawa
See All by Takuya Ohsawa
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
290
Firebaseイベントログの動作確認を効率化する話
takuyaosawa
0
390
iOS18とヘルスケアの睡眠対応
takuyaosawa
0
190
効率アップ! モバイルアプリの開発プロセス における自動化
takuyaosawa
0
160
with_iosで開発をスムーズにするためにやったこと
takuyaosawa
0
72
サーバサイドswift動かして見た
takuyaosawa
0
81
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
590
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
8
680
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
101
18k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
GitHub's CSS Performance
jonrohan
1030
460k
Navigating Team Friction
lara
183
15k
Unsuck your backbone
ammeep
669
57k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Visualization
eitanlees
146
15k
Rails Girls Zürich Keynote
gr2m
94
13k
Transcript
© asken.inc 技術選定 askenでの取り組み Kotlin Multiplatform編 25/02/20 Takuya Osawa 習慣化アプリのモバイル開発の魅力を語る
asken × mikan
© asken.inc 2 自己紹介 Takuya Osawa 株式会社asken モバイルテックリード 主な仕事 iOS版食事管理アプリの「あすけん」の開発を担当
趣味 野球観戦
© asken.inc アジェンダ 3 技術選定の重要性 技術選定のフローとポイント askenでのKMPを本格運用までのフロー 導入後の課題と対策と今後 まとめ
© asken.inc Kotlin Multiplatform(KMP)とは 4 Android、iOS、ウェブ、およびデスクトップ間でコード を再利用するためのツールです 言語はKotlinを使います https://www.jetbrains.com/ja-jp/kotlin-multiplatform/
© asken.inc 5 技術選定の重要性
© asken.inc 6 技術選定の重要性 プロジェクトの生産性や成功確率に直結する • 開発スピードが遅くなり、スケジュール遅延する メンテナンス性と運用コスト • 運用・保守が難しくなり、障害が起きやすくなる
• 結果として事業の継続が難しくなる
© asken.inc 7 技術選定のフロー とポイント
© asken.inc 8 課題の特定 課題を小さく分解 技術候補の比較 PoC(概念実証)で検証 技術要件の整理と合意 小さくリリース 本格導入
© asken.inc 9 課題の特定 (何を解決するのか?) まず、解決すべき課題を明確にします 課題の特定を誤ると方向性を見失います 「開発スピードを上げたい」 「アプリの起動時間が遅い」など
© asken.inc 10 課題を小さく分解(具体的な技術的アプローチを決める) 課題を細かく分解し、技術的にどの部分を改善すればよいかを整理し ます 必要であれば、深掘りする 「開発スピードを上げたい」 「要件が複雑」 「実装のスピードが遅い」など
© asken.inc 11 技術候補の比較 課題解決に適した技術をリストアップし、評価基準に沿って比較します 主観での意思決定を防ぎます
© asken.inc 12 PoC(概念実証)で検証 選定した技術をすぐに導入せず、まずは小規模なPoCを作成して検証します。 検証結果を元に技術選定の評価の解像度を上げる
© asken.inc 13 技術要件の整理と合意 関係者と要件を整理し、合意形成を行います。 全体像の共有 開発期間やリリーススケジュールに影響しないか?
© asken.inc 14 小さくリリース いきなり本番リリースせず、Staging環境や影響の少ない画面で試す。 A/Bテストを実施し、障害が起きて戻せるようにする
© asken.inc 15 本格導入 PoCと小さいリリースの結果を評価し、本格導入を進めます。
© asken.inc 16 askenのKMPを 本格運用までのフロー
© asken.inc 17 課題の特定と課題を小さく分解 モバイルエンジニア全員で課題の特定と分解を実施 空雨傘のフレームワークを使い、課題の解像度を上げる 空: 空が曇っている(事実) 雨:雨が降りそうだ(解釈) 傘:傘を持っていくべきだ(行動)
© asken.inc 18 課題の特定と課題を小さく分解 アプリの品質担保ができていない -> iOS/ Android間での実装差分による不具合 -> 通信周りのメンテナンス性が低い
古いライブラリや設計が残っているなど
© asken.inc 19 技術候補の比較 項目 ネイティブ (iOS / Android) Flutter
KMP(Kotlin Multiplatform) 適応範囲 UIとロジック UIとロジック ロジックのみ 開発スピード 遅い 速い 一部速くなる 学習コスト 変わらない 高い iOSエンジニアが学 習する必要 既存との整合性 変わらない 大幅変更が必要 一部修正 テスト それぞれで実装 共通 一部共通 あくまであすけん開発環境、リソースでの比較です
© asken.inc 20 PoC(概念実証)で検証 KMPを仮で決めて、PoCを実施 ミニアプリを実装し、課題解決に対するアプローチ 評価観点が正しいどうかを確認 本番導入時のボトルネックはないか?
© asken.inc 21 技術要件の整理と合意 設計や実装方針 ロードマップの作成 -> リリース時期やスケジュールなど 関係者との合意(PM、モバイルエンジニア、バックエンドエン)
© asken.inc 22 実際はフローを行ったり来たりする 技術候補 の比較 PoC 技術要件 の整理
© asken.inc 23 最終決定 KMPを選定 重複実装が減り、品質担保がしやすい 適応範囲は通信周りまでにする -> UI近い部分は課題の範囲外なので今はやらない 既存のコードの資産があるので大幅な変更はコスパが悪い
バックエンドの開発言語がKotlinなのでKMPに使えるリソースが増える。 -> 相互レビュー、実装、調査なのメリットが大きい
© asken.inc 24 小さくリリース iOSで先行リリース。-> Androidは依存周りの問題で先送り Staging環境で安定して動くのを確認。 影響の少なくするためにA/Bテストを仕組みを活用し、段階的にリリース 2024年4月より段階的に置き換え開始
© asken.inc 25 本格リリース🎉
© asken.inc 26 導入後の課題と対策と今後
© asken.inc 27 導入後の課題と対策 iOSエンジニアの学習コスト -> バックエンドエンジニアやAndroidエンジニアが実装することで解消 -> 生成AIを使えば、そんなに学習コストがかからないのでハードルは下がっている バックエンドエンジニア向けの学習
-> 説明会を実施し、環境構築や実装方法を説明
© asken.inc 28 今後の展開 KMP適応範囲の拡大 -> Androidはまだ、リリースできていない -> iOS側の適応範囲も広げたい KMPとSwift6の対応
-> データ競合の対応方針を決める KMPの実装できるエンジニアを増やす -> iOS、バックエンドエンジニアへの学習
© asken.inc 29 To be continued …
© asken.inc 30 まとめ 技術選定はプロジェクトの成功に直結します 課題を特定すること が一番大事です 何が問題なのかを特定し、分解し、最適なものを選び出す 導入後も新しい課題が出てくるので継続的に対策を考える
© asken.inc 31 Thank you!