こんばんは。モバイルアプリエンジニアのアベユウタです。
先日弊社で運営しているニュースメディア「新潟永住計画」のiOS・Androidアプリを両方リリースさせていただきました。
「新潟永住計画」のiOS・Androidアプリをリリースしました
無事なんとかリリースに辿り着けたのですが実は私、モバイルアプリエンジニアと言いましたがどちらかと言うとiOS担当なのです。。。
本格的に(1人で)両OSネイティブで開発することは今までになかったので、この機会にアプリに詳しくない方にもiOSとAndroidのそれぞれの違いと、アプリ開発自体の空気感を簡単に知っていただければと思います。
何気ない「同じアプリなんだから」と言う認識
iOSとAndroidとは言うけど「同じアプリなんだから」「そもそも同じスマホじゃん」と言う認識を持たれている方いらっしゃると思います。
少なからず「同じアプリなんだから仕様や要件定義にはさほど手間かからないよね」と言う意見はよく耳にします。
確かに「仕様・要件定義」に関して単純に2倍の手間がかかるかと言ったら、それは「かからない」のですが、各OSでの実現可能性などを考慮しつつ決定していかなければならないので、その意味でアプリ開発においての手間はかかるのかなと思ってます。
また細かな技術的要素に関して、ほぼ「全く違うアプリ」を作っている状態にも当たらずとも遠からずなので、場合によっては工数やコスト面で各OSでバラツキが出てしまうこともあります。(またそれが初期段階で想定できないケースもあるのが厄介)
受注者様、あるいは営業さん・ディレクターさんとアプリエンジニア間でのこの単純な認識齟齬によって、スケジュール感やコスト面でヤケドを負ってしまうこともちらほらあるようですので、簡単な範囲でそれぞれの違いについて比較して見ました。
iOS | Android | |
---|---|---|
言語 | Swift | Kotlin |
開発環境(IDE) | Xcode | AndroidStudio |
ライブラリ管理 | CocoaPod/Carthage | Gradle |
主なライブラリ | RxSwift/Alamofire/ | RxJava/Retrofit/okhttp |
Viewレイアウト | XIB/UIKit | ConstraintLayout/XML |
画面構成 | NavigationController/ViewController | Activity/Fragment |
ガイドライン | Human Interface Guidelines | Android MaterialDesign |
マーケットプレイス | AppStore | PlayStore |
この業界に関連する方や、アプリ開発に興味のある方ならおおよそ理解できそうな点での違いだけで、これだけの差がある状態です。
Androidに手をつける時にある程度覚悟はしていたのですが、深掘りしようとすればするほど中々大変でした。(笑)
結果として、これに気づけたのはAndroid/iOS両ネイティブ開発をすることの大きなメリットだと思うので個人的にすごく楽しかったし、勉強になりました。
※記事タイトルに関してはIT業界あるあるの「何気ない仕様変更がプロジェクト全体をきずつけた」をモチーフにした単なる遊び心で、実際に受注者様や営業さんなどとトラブルが生じた訳では一切ございません。