mobileで新規案件を始める前に
さあ始めよう、と言っても考慮すべき事が一杯ある。
moblie案件といえばiOSとAndroidだが今後iOSがiPhone/iPodとそれ以外に分かれるようになった流れもある。一方のAndroidもGoogleがJetpackフレームワークを導入してごちゃごちゃになっていた開発環境を整理しようとしている。Kotlin対応の問題もある。
どちらも岐路に立たされているのだ。
5Gも待ったなしで大量のデータをmobileデバイスで扱う必要のあるアプリケーションを開発しなくてはならなくなるだろう。
特にこの観点で現場開発者や設計者が考えておかないといけないことを挙げてみる。
- 非同期処理
- オフライン時の対応
- 国際化対応
- 開発言語
非同期処理について
Reactiveプログラミングについてしっかり学んでおく。JavaでいうところのGenerics, Lambdas, Functional Interfacesなどになれておく必要がある。この辺りからしっかり復習しておいて入らないと「魔法の呪文」「念仏」の羅列に見えてしまう。
オフライン時の対応
mobileデバイスはオフラインになる、当たり前のことだがこれに対する対応を怠ってはいけない。古くて安全なsqlite3がどのデバイスでも使えることを思い出そう。
国際化対応
これは少し毛色の違った話だが、開発コストが高止まりする中、最初からローカライズ対応を考慮して開発を行わないと、払わなくて良いはずのコストを払うことになる。ややこじつけだが5G対応はグローバル化とも関係する話でもあるのだ。
開発言語
開発言語はApple系はSwift、AndroidはKotlinだろう。
なぜSwiftか
Appleは次世代UIをSwiftUIと発表している。4.xから5.xへの言語としての進化はプログラマー側にとっては大きくなかったし、相当こなれた言語といっていいだろう。
Objective-CからSwiftへ、これはもう止められない流れだと思う。
もちろん、古いドキュメントやコードベースの中にObjective-Cで書かれた重要なものが少なくないので「読む」力は必要だろう。
なぜKotlinか
GoogleはLambdaのようなJava 8の機能がAndroidでも使えるようにはしているが、それはAPIレベル24以降、つまりAndroid 7以降である。Reactiveプログラミングのような先進的な事をAndroidでやろうとすると色々メンドウなことになるか、Android 7以降に限定するかなどしなくてはならない。
どちらも嫌な選択である。
Kotlinもまだ十分に練り込まれた言語とは言えないものの、Versionも1.3で安定してきている。Android Studioの機能でJavaをKotlinに書き換えることもできる。またKotlinそのものがJavaと並列的に使えるように設計されている。
Reactiveプログラミングのような先進的なプログラミングスタイルにも対応するし、新しい機種(API)限定ということもない。オフィシャル文書にどのAndroidでも動作するとある。
またSwiftとNull参照処理など似たところが多いのもよい。
まとめ
mobileデバイス向けの新規案件を開始するに当たって
- Kotlin or Swiftで
- Reactive Programmingを視野に入れ
-
sqlite3でデータバックアップをとる。
-
Localizationに配慮した作りにしておかなくてはいけない。
と言うポイントを外さないようにしたい。