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
Kotlin補完計画 〜KMP(Kotlin Multiplatform)とAIが導く越境と補...
Search
Takuya Ohsawa
June 30, 2025
650
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlin補完計画 〜KMP(Kotlin Multiplatform)とAIが導く越境と補完の未来〜
Takuya Ohsawa
June 30, 2025
More Decks by Takuya Ohsawa
See All by Takuya Ohsawa
iOSでスクリーンショットテストを導入した話
takuyaosawa
0
210
なぜ、あすけんiOSでテスト戦略を導入したのか?
takuyaosawa
0
240
技術選定 askenでの取り組み Kotlin Multiplatform編
takuyaosawa
0
170
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
490
Firebaseイベントログの動作確認を効率化する話
takuyaosawa
0
660
iOS18とヘルスケアの睡眠対応
takuyaosawa
0
460
効率アップ! モバイルアプリの開発プロセス における自動化
takuyaosawa
0
240
with_iosで開発をスムーズにするためにやったこと
takuyaosawa
0
100
サーバサイドswift動かして見た
takuyaosawa
0
95
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
1
140
Abbi's Birthday
coloredviolet
2
8k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
Bash Introduction
62gerente
615
210k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
How to build a perfect <img>
jonoalderson
1
5.6k
The SEO Collaboration Effect
kristinabergwall1
1
480
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Transcript
Takuya Osawa Kotlin補完計画 〜KMP(Kotlin Multiplatform)と AIが導く越境と補完の未来〜 asken tech talk vol.12
1
Takuya Osawa Takuya Osawa X(@t_osawa_009) X(@t_osawa_009) 株式会社askenモバイルテックリード 株式会社askenモバイルテックリード 主な仕事 主な仕事
食事管理アプリ「あすけん」のiOS版の開発 食事管理アプリ「あすけん」のiOS版の開発 趣味 趣味 野球観戦 野球観戦 自己紹介 2
序章:補完計画の再定義 序章:補完計画の再定義 第1章:越境の基盤 — Kotlin Multiplatformによる技術補完 第1章:越境の基盤 — Kotlin Multiplatformによる技術補完
第2章:AI伴走開発フェーズ(AI-assisted phase) 第2章:AI伴走開発フェーズ(AI-assisted phase) 第3章:AI補完設計 — 知識の外部化と循環 第3章:AI補完設計 — 知識の外部化と循環 第4章:AI自立開発フェーズ(AI-autonomous phase) 第4章:AI自立開発フェーズ(AI-autonomous phase) 第5章:組織補完 — 越境的チーム構築 第5章:組織補完 — 越境的チーム構築 終章:補完計画完了とその先へ 終章:補完計画完了とその先へ アジェンダ 3
序章:補完計画の再定義 4
従来の開発における課題 従来の開発における課題 技術的断絶 技術的断絶 プラットフォーム間の知識ギャップ プラットフォーム間の知識ギャップ 各プラットフォーム固有の仕組み理解が必要 各プラットフォーム固有の仕組み理解が必要 人的依存 人的依存
スキルを持つ個人への過度な依存 スキルを持つ個人への過度な依存 iOS/Android固有の技術スタックに依存 iOS/Android固有の技術スタックに依存 学習コスト 学習コスト 新しい技術習得の時間的負担 新しい技術習得の時間的負担 新しい言語習得のハードル 新しい言語習得のハードル なぜ「補完」なのか? 5
技術補完 技術補完 KMPによるiOS/Androidのロジックの統一 KMPによるiOS/Androidのロジックの統一 共通コードによる開発効率化 共通コードによる開発効率化 AI補完 AI補完 知識の外部化と自動化 知識の外部化と自動化
開発者の能力を拡張 開発者の能力を拡張 組織補完 組織補完 チーム全体の能力向上 チーム全体の能力向上 集合知の活用 集合知の活用 補完計画の目指す姿 6
KMPを含めた技術スタック KMPを含めた技術スタック 7
リアーキで刷新部分 リアーキで刷新部分 現在、PHPからKotlinにリアーキ進行中 8
第1章:越境の基盤 — Kotlin Multiplatformによ る技術補完 9
2023年後半 プロジェクト始動 10
通信周りの共通化 通信周りの共通化 API通信処理 API通信処理 データ変換処理 データ変換処理 エラーハンドリング エラーハンドリング あすけんでのKMP活用:通信部分の共通化 11
iOS URLSession iOS URLSession Android Retrofit + OkHttp Android Retrofit
+ OkHttp コード重複 コード重複 各プラットフォームで同じような実装を行う 各プラットフォームで同じような実装を行う 品質差 品質差 プラットフォーム間での実装差異が出ることがある プラットフォーム間での実装差異が出ることがある 従来の実装 導入前の課題 12
KMPによる統一 KMPによる統一 Ktor + kotlinx.serialization Ktor + kotlinx.serialization アーキテクチャ アーキテクチャ
KMPはレイヤードアーキテクチャで設計 KMPはレイヤードアーキテクチャで設計 iOSとAndroidはKMPから生成した共通モジュールを呼び出し iOSとAndroidはKMPから生成した共通モジュールを呼び出し KMPによる解決策 13
KMPのアーキテクチャ 14
関心の分離 関心の分離 テスタビリティの向上 テスタビリティの向上 よく知られているアーキテクチャ よく知られているアーキテクチャ オンボーディングしやすい オンボーディングしやすい レイヤードアーキテクチャの利点 15
共通化 共通化 通信のI/Fの実装は1つになる 通信のI/Fの実装は1つになる 開発速度 開発速度 通信のI/F実装は1人で行い、実装が1回済む 通信のI/F実装は1人で行い、実装が1回済む 各プラットフォーム間での仕様調整や設計がなくなる 各プラットフォーム間での仕様調整や設計がなくなる
品質向上 品質向上 ユニットテストをKMP側で行い、想定されない挙動は減る ユニットテストをKMP側で行い、想定されない挙動は減る -> 学習コスト削減のため「Kotest」を導入し、テストフレームワークをバッ -> 学習コスト削減のため「Kotest」を導入し、テストフレームワークをバッ クエンドと揃える クエンドと揃える 導入後の改善効果 16
第2章:AI伴走開発フェーズ(AI-assisted phase) 17
従来の開発フロー 従来の開発フロー 要件定義 → 設計 → 実装 → テスト →
デプロイ 要件定義 → 設計 → 実装 → テスト → デプロイ AI伴走開発フロー AI伴走開発フロー 要件定義 → AI対話設計 → 実装 → AIレビュー → テスト → デプロイ 要件定義 → AI対話設計 → 実装 → AIレビュー → テスト → デプロイ AIとの協働による開発革新 18
設計段階でのAI活用 設計段階でのAI活用 アーキテクチャ検討 アーキテクチャ検討 複数パターンの比較分析 複数パターンの比較分析 技術選定や検証 技術選定や検証 簡単なものをAIを使って、実装し、比較検討 簡単なものをAIを使って、実装し、比較検討
調査 調査 仕様調査や不具合調査で活用 仕様調査や不具合調査で活用 具体的な活用例 19
実装段階でのAI活用 実装段階でのAI活用 コード生成 コード生成 既存実装を参考にして、新規の実装をする。 既存実装を参考にして、新規の実装をする。 7-8割の完成度のコードをAIが生成し、細かい微調整は人間が修正 7-8割の完成度のコードをAIが生成し、細かい微調整は人間が修正 ユニットテストの生成にも活用 ユニットテストの生成にも活用
パターン適用 パターン適用 ベストプラクティスの自動適用 ベストプラクティスの自動適用 I/Fの設計やユニットテストはパターン化することで生成の精度を上げる I/Fの設計やユニットテストはパターン化することで生成の精度を上げる デバッグ支援 デバッグ支援 エラーの原因特定と解決策提案 エラーの原因特定と解決策提案 具体的な活用例 20
第3章:AI補完設計 — 知識の外部化と循環 21
知識の外部化プロセス 知識の外部化プロセス 1. 1. 開発履歴の蓄積 開発履歴の蓄積 プロンプトやノウハウ、ドキュメントを作成し、知識を貯める プロンプトやノウハウ、ドキュメントを作成し、知識を貯める 2. 2.
ガイドラインの整備 ガイドラインの整備 守るべきコーディングルールなどを定義 守るべきコーディングルールなどを定義 組織知識の集約 22
開発実践 → 知識蓄積&ドキュメント化 → 開発支援 → 新たな実践 開発実践 → 知識蓄積&ドキュメント化
→ 開発支援 → 新たな実践 循環システムの構築 23
うまく行ったプロンプトをドキュメントにまとめて共有し、生成の精度向上 うまく行ったプロンプトをドキュメントにまとめて共有し、生成の精度向上 Corsorルールの整備 Corsorルールの整備 具体例 24
第4章:AI自立開発フェーズ(AI-autonomous phase) 25
自立開発の段階 自立開発の段階 1. 1. 初期段階 初期段階 人間の指示による開発 人間の指示による開発 2. 2.
自立段階 自立段階 要件から自動実装 要件から自動実装 3. 3. 進化段階 進化段階 自己改善による最適化 自己改善による最適化 人間の役割の変化 人間の役割の変化 指示者 指示者 → → 協働者 協働者 → → 戦略立案者 戦略立案者 AIが自律的に開発する 26
AIエージェントの導入 AIエージェントの導入 Devinのセットアップ Devinのセットアップ 品質保証システム 品質保証システム CI/CDの整備、レビューガイドライン CI/CDの整備、レビューガイドライン 実現に向けた技術基盤 27
指示による実装完了 指示による実装完了 簡単なAPIの仕様をInputにして人間の指示だけでKMPの実装完了 簡単なAPIの仕様をInputにして人間の指示だけでKMPの実装完了 人間の役割の変化 人間の役割の変化 実装者から設計・指示・レビュー担当への移行 実装者から設計・指示・レビュー担当への移行 具体例:Devinによる自立開発 28
開発速度 開発速度 並行で開発可能 並行で開発可能 人間は設計、レビューや結合部分に注力 人間は設計、レビューや結合部分に注力 品質向上 品質向上 人間のミスを大幅削減 人間のミスを大幅削減
リソースのアップ リソースのアップ 少ない人数で作業を回せる 少ない人数で作業を回せる 期待される効果 29
第5章:組織補完 — 越境的チーム構築 30
個人スキル重視 個人スキル重視 知識の属人化 知識の属人化 リソースの確保が難しい リソースの確保が難しい 従来のチーム構造 31
AI活用による越境支援 AI活用による越境支援 集合知の活用 集合知の活用 ガイドラインやドキュメントの整備によって、コード生成の質を担保 ガイドラインやドキュメントの整備によって、コード生成の質を担保 知識の民主化 知識の民主化 個人のスキルに依存せずに開発ができるための環境を整備 個人のスキルに依存せずに開発ができるための環境を整備
フラットな協働 フラットな協働 AIを駆使して、バックエンド、iOS、Androidという技術スタックは関係ない AIを駆使して、バックエンド、iOS、Androidという技術スタックは関係ない 越境的チーム構造 32
具体的な越境事例 具体的な越境事例 CI/CDを整備して、KMPの成果物をDeploy可能にする CI/CDを整備して、KMPの成果物をDeploy可能にする AndroidエンジニアがiOS向けのモジュールを準備 AndroidエンジニアがiOS向けのモジュールを準備 iOSエンジニアがAIを使って、KMPの修正commitを行う iOSエンジニアがAIを使って、KMPの修正commitを行う リアーキ部分はバックエンドエンジニアがKMPを実装 リアーキ部分はバックエンドエンジニアがKMPを実装
33
終章:補完計画完了とその先へ 34
技術的目標 技術的目標 KMPによるクロスプラットフォーム統一 KMPによるクロスプラットフォーム統一 AI伴走開発の定着 AI伴走開発の定着 AI自立開発の実現 AI自立開発の実現 並列で自立開発 並列で自立開発
達成目標の再確認 35
組織的目標 組織的目標 越境的チーム文化の形成 越境的チーム文化の形成 知識の民主化 知識の民主化 AI技術の進歩に合わせた開発手法の更新 AI技術の進歩に合わせた開発手法の更新 達成目標の再確認 36
直面している問題 直面している問題 仕様理解 仕様理解 サービス仕様などのドキュメントの整備が足りない部分の設計 サービス仕様などのドキュメントの整備が足りない部分の設計 -> AIのインプットや人間の理解のため -> AIのインプットや人間の理解のため
学習不足 学習不足 チームメンバーのAI活用の理解や経験不足 チームメンバーのAI活用の理解や経験不足 統合困難 統合困難 既存システムとの結合や連携 既存システムとの結合や連携 iOS側KMPのObjective-C変換コードによる開発負荷が上がる iOS側KMPのObjective-C変換コードによる開発負荷が上がる 現在の課題 37
解決に向けた取り組み 解決に向けた取り組み サービス仕様理解 サービス仕様理解 ドキュメントの整備 ドキュメントの整備 教育プログラム 教育プログラム エンジニア全体の取り組み ->
AI縛りで一日作業する日を設定 エンジニア全体の取り組み -> AI縛りで一日作業する日を設定 ペアプロやモブプロの実施 ペアプロやモブプロの実施 フィードバックループ フィードバックループ AIが実装しやすいための継続的な改善や計画的なリファクタリング AIが実装しやすいための継続的な改善や計画的なリファクタリング 辛い部分を吸収するための設計改善 辛い部分を吸収するための設計改善 iOSでは「SKIE」というライブラを導入し、Swiftへの変換をサポート iOSでは「SKIE」というライブラを導入し、Swiftへの変換をサポート 38
3つの補完の相乗効果 3つの補完の相乗効果 技術補完 技術補完 Kotlinおよび、KMPによる統一基盤 Kotlinおよび、KMPによる統一基盤 AI補完 AI補完 知識の外部化と自動化 知識の外部化と自動化
組織補完 組織補完 チーム全体の能力向上 チーム全体の能力向上 まとめ 補完計画の核心 39
AIは開発者を置き換えるのではなく、開発者を補完し、組織全 体を進化させる 40
ありがとうございました 41