チームにマルチプラットフォームモバイル開発を導入する方法
新しいテクノロジーやツールを組織に導入する際には、課題が伴います。ワークフローを最適化し、効率化するために、チームがモバイルアプリ開発のマルチプラットフォームアプローチを採用するのをどのように支援すればよいでしょうか?ここでは、開発者がネイティブプログラミングの利点を維持しながら、プラットフォーム間でコードを共有できるJetBrainsが開発したオープンソース技術であるKotlin Multiplatform (KMP)をチームに効果的に導入するための推奨事項とベストプラクティスをいくつかご紹介します。
- 共感から始める
- Kotlin Multiplatformの仕組みを説明する
- ユースケースを使ってマルチプラットフォーム開発の価値を実証する
- サンプルプロジェクトを作成して実証する
- チームからのマルチプラットフォーム開発に関する質問に備える
- 適応期間中にチームをサポートする
共感から始める
ソフトウェア開発はチームゲームであり、それぞれの重要な決定にはすべてのチームメンバーの承認が必要です。あらゆるクロスプラットフォーム技術の統合は、モバイルアプリケーションの開発プロセスに大きな影響を与えます。そのため、Kotlin Multiplatformをプロジェクトに統合し始める前に、チームにその技術を紹介し、採用する価値があることを丁寧に説明する必要があります。
プロジェクトで働く人々を理解することが、統合を成功させるための第一歩です。上司は、可能な限り最短時間で最高品質の機能を納品する責任を負っています。彼らにとって、新しい技術はすべてリスクです。同僚も異なる視点を持っています。彼らは「ネイティブ」技術スタックでアプリを構築した経験があります。UIやビジネスロジックの書き方、依存関係の扱い方、IDEでのコードのテストとデバッグ方法を知っており、言語にもすでに慣れています。異なるエコシステムに切り替えることは、常にコンフォートゾーンを離れることを意味するため、常に不便です。
これらすべてを考慮すると、Kotlin Multiplatformへの移行を提唱する際には、多くの偏見に直面し、多くの質問に答える準備が必要です。その際、チームが必要としているものを見失わないようにしてください。以下のいくつかの助言は、あなたの提案を準備するのに役立つかもしれません。
Kotlin Multiplatformの仕組みを説明する
この段階では、Kotlin Multiplatformを使用することでプロジェクトに価値をもたらし、チームが抱いているクロスプラットフォームモバイルアプリケーションに対する偏見や疑念を払拭できることを示す必要があります。
KMPは、アルファ版のリリース以来、本番環境で広く使用されてきました。その結果、JetBrainsは広範なフィードバックを収集し、安定版でさらに優れた開発エクスペリエンスを提供することができました。
- すべてのiOSおよびAndroid機能を使用する能力 – 共有コードでタスクを達成できない場合や、特定のネイティブ機能を使用したい場合は、expect/actualパターンを使用してプラットフォーム固有のコードをシームレスに記述できます。
- シームレスなパフォーマンス – Kotlinで書かれた共有コードは、Android用にはJavaバイトコードに、iOS用にはネイティブバイナリに、異なるターゲットに対して異なる出力形式にコンパイルされます。したがって、これらのコードをプラットフォーム上で実行する際の追加のランタイムオーバーヘッドはなく、パフォーマンスはネイティブアプリに匹敵します。
- 既存コードとの互換性 – プロジェクトの規模がどれほど大きくても、既存のコードがKotlin Multiplatformの統合を妨げることはありません。いつでもクロスプラットフォームコードの記述を開始し、通常の依存関係としてiOSおよびAndroidアプリに接続したり、すでに記述したコードを修正してiOSと互換性を持たせたりすることができます。
技術がどのように機能するかを説明できることは非常に重要です。なぜなら、誰もが議論が魔法に頼っているように見えるのを嫌うからです。何か不明瞭な点があれば、人々は最悪の事態を考えるかもしれないので、説明するにはあまりにも明白だと考える間違いを犯さないように注意してください。代わりに、次の段階に進む前に、すべての基本的な概念を説明するように努めてください。このマルチプラットフォームプログラミングに関するドキュメントは、この経験に備えるために知識を体系化するのに役立つでしょう。
ユースケースを使ってマルチプラットフォーム開発の価値を実証する
マルチプラットフォーム技術がどのように機能するかを理解することは必要ですが、それだけでは十分ではありません。チームはそれを使用することの利点を見る必要があり、それらの利点を提示する方法はあなたの製品に関連しているべきです。
この段階では、製品でKotlin Multiplatformを使用する主な利点を説明する必要があります。一つの方法は、すでにクロスプラットフォームモバイル開発の恩恵を受けている他の企業の事例を共有することです。これらのチーム、特に同様の製品目標を持つチームの成功経験は、最終決定の重要な要因となる可能性があります。
すでに本番環境でKotlin Multiplatformを使用しているさまざまな企業のケーススタディを引用することは、説得力のある議論を行うのに大いに役立ちます。
- McDonald's – グローバルモバイルアプリにKotlin Multiplatformを活用することで、McDonald'sはプラットフォーム間で共有可能なコードベースを構築し、コードベースの冗長性を排除しました。
- Netflix – Kotlin Multiplatformの助けを借りて、Netflixは製品の信頼性と提供速度を最適化しています。これは顧客のニーズに応える上で非常に重要です。
- Forbes – iOSとAndroid間で80%以上のロジックを共有することで、Forbesは現在、プラットフォーム固有のカスタマイズの柔軟性を維持しながら、両プラットフォームで同時に新機能を展開しています。
- 9GAG – FlutterとReact Nativeの両方を試した後、9GAGは徐々にKotlin Multiplatformを採用しました。これにより、現在は機能をより迅速に提供しながら、ユーザーに一貫したエクスペリエンスを提供しています。
サンプルプロジェクトを作成して実証する
理論は重要ですが、最終的には実践が最も重要です。あなたの主張をより説得力のあるものにし、マルチプラットフォームモバイルアプリ開発の可能性を示す選択肢の1つとして、Kotlin Multiplatformで何かを作成するために時間を費やし、その結果をチームで議論することができます。あなたのプロトタイプは、アプリケーションで必要とされる機能をデモンストレーションする、ゼロから作成する一種のテストプロジェクトである可能性があります。 KtorとSQLDelightを使ってマルチプラットフォームアプリを作成する - チュートリアルが、このプロセスを詳しくガイドしてくれます。
既存のプロジェクトで実験することで、より関連性の高い例を作成できるかもしれません。 Kotlinで実装された既存の機能の1つをクロスプラットフォームにしたり、 既存のプロジェクトに新しいマルチプラットフォームモジュールを作成し、 バックログの下位にある優先度の低い機能を取り出して共有モジュールで実装することも可能です。 AndroidアプリケーションをiOSで動作させる - チュートリアルは、サンプルプロジェクトに基づいたステップバイステップガイドを提供します。
チームからのマルチプラットフォーム開発に関する質問に備える
どんなに詳細な提案をしても、チームからは多くの質問が出るでしょう。注意深く耳を傾け、忍耐強くすべての質問に答えようと努めてください。質問の大部分はiOSチームから来る可能性が高いでしょう。彼らは日常の開発ルーティンでKotlinを目にすることに慣れていない開発者だからです。よくある質問のリストが役立つかもしれません。
Q: クロスプラットフォーム技術に基づいたアプリケーションはApp Storeで却下される可能性があると聞きました。このリスクを負う価値はありますか?
A: Apple Storeにはアプリケーション公開に関する厳格なガイドラインがあります。その制限の1つは、アプリがアプリの機能や動作を導入したり変更したりするコードをダウンロード、インストール、または実行してはならないというものです(App Store Review Guideline 2.5.2)。これは一部のクロスプラットフォーム技術には関連しますが、Kotlin Multiplatformには当てはまりません。共有されたKotlinコードはKotlin/Nativeでネイティブバイナリにコンパイルされ、通常のiOSフレームワークをアプリにバンドルし、動的なコード実行機能を提供しません。
Q: マルチプラットフォームプロジェクトはGradleで構築されており、Gradleの学習曲線は非常に急です。これは、プロジェクトの設定に多くの時間を費やす必要があるということですか?
A: その必要は実際にはありません。Kotlinモバイルアプリケーションを構築する作業プロセスを整理する方法は様々です。まず、Android開発者のみがビルドを担当し、iOSチームはコードを書くか、生成された成果物を消費するだけでよい場合があります。また、Gradleを扱うタスクに対応する際に、ワークショップを組織したり、ペアプログラミングを実践したりすることで、チームのGradleスキルを向上させることもできます。マルチプラットフォームプロジェクトのチームワークの組織方法を検討し、チームに最も適した方法を選択できます。
チームのAndroid部分のみが共有コードを扱う場合、iOS開発者はKotlinを学ぶ必要すらありません。しかし、チームが次の段階に進み、全員が共有コードに貢献する準備ができたら、移行に多くの時間はかかりません。SwiftとKotlinの構文と機能の類似性により、共有Kotlinコードを読み書きするために必要な作業は大幅に削減されます。Kotlin Koansで試してみてください。これは、Kotlinの構文といくつかのイディオムに慣れるための一連の演習です。
2023年末に、JetBrainsはユーザビリティ、オンボーディング、IDEサポートに焦点を当てた新しい実験的なプロジェクト設定ツールであるAmperを発表しました。Amperの機能の詳細については、チュートリアルをご覧ください。
Q: Kotlin Multiplatformは本番環境に対応していますか?
A: 2023年11月に、Kotlin Multiplatformが安定版になったことを発表しました。これは、本番環境での使用に完全に準備ができていることを意味します。
Q: アプリのビジネスロジックを実装するのに十分なマルチプラットフォームライブラリがありません。ネイティブの代替を見つける方がはるかに簡単です。なぜKotlin Multiplatformを選ぶべきなのでしょうか?
A: Kotlin Multiplatformのエコシステムは活気に満ちており、世界中の多くのKotlin開発者によって育成されています。長年にわたるKMPライブラリ数の急速な増加をご覧ください。
Kotlin Multiplatformのオープンソースコミュニティでは、iOS開発者にとっても素晴らしい時代です。なぜなら、iOSの経験が求められており、iOSに特化した貢献で評価を得る機会が豊富にあるからです。
チームがマルチプラットフォームモバイル開発を深く掘り下げれば掘り下げるほど、彼らの質問はより面白く、より複雑になるでしょう。答えがなくても心配しないでください。Kotlin Multiplatformには、Kotlin Slackに大規模で協力的なコミュニティがあり、専用の#multiplatformチャンネルでは、すでにそれを使用している多くの開発者があなたを助けてくれます。チームから最もよく聞かれた質問を私たちと共有していただけると、大変感謝いたします。この情報は、ドキュメントでどのトピックをカバーする必要があるかを理解するのに役立ちます。
適応期間中にチームをサポートする
Kotlin Multiplatformを使用することを決定した後、チームがこの技術を試す適応期間が設けられます。そして、あなたの任務はまだ終わりません!チームメイトに継続的なサポートを提供することで、チームがこの技術を習得し、最初の成果を達成するまでの時間を短縮できます。
この段階でチームをサポートするためのヒントをいくつかご紹介します。
- 前段階で受けた質問を「Kotlin Multiplatform:よくある質問」のWikiページにまとめ、チームと共有する。
- #kotlin-multiplatform-support Slackチャンネルを作成し、そこで最もアクティブなユーザーになる。
- ポップコーンとピザを用意して、Kotlin Multiplatformに関する教育的またはインスピレーションを与える動画を視聴する、非公式なチームビルディングイベントを企画する。以下にいくつかの良い動画の選択肢があります。
実際には、一日や一週間で人々の考えや気持ちを変えることはおそらくできないでしょう。しかし、忍耐力と同僚のニーズへの配慮は、間違いなく結果をもたらすでしょう。
JetBrainsチームは、Kotlin Multiplatformでのあなたの経験についての話を聞くことを楽しみにしています。
この記事の作成にご協力いただいたTouchlabチームに感謝いたします。