多くの起業家にとって、AndroidとiOSのどちらを選ぶかは常に悩ましい問題です。最近では、Androidの市場シェアがすでに80%を超えているというデータもあります。そのため、多くの人は開発者が2つのプラットフォームのどちらかを選ぶ方が簡単だと考えるかもしれません。しかし、必ずしもそうではありません。ソフトウェアエンジニアでありTechCrunchのコラムニストでもあるJon Evansは、開発環境、コンフィギュレーション、UXデザイン、言語、API、ネットワーク、共有、フラグメンテーション、ディストリビューションなど9つの側面からAndroidとiOSのプラットフォームをPKしています。
現在、iosの方がエクスペリエンスの面で優れているという意見もありますが、全体的な傾向としては、アンドロイドはすでにインターネットTV、ウェアラブルデバイス、モノのインターネットの大部分を獲得しており、また、オープンソースハードウェアにおける良好なシステムサポートを実現しており、将来的にさらなる価値を生み出すことができます。
Androidは最大の勝者になるでしょう。
開発環境
多くの人はプレーンテキストやコマンドラインでコードを書きますが、統合開発環境やIDEを活用した方が効率的なのは明らかです。
アップルの開発環境はXcodeであり、高速で強力で、高度に安全であり、侵入されることは容易ではありません。そして、継続的な改善と最適化により、Xcodeの奇妙なコンパイルメカニズムや、iOSアプリケーションのデバイスを制御する権利について開発者に課された複雑な証明書のメカニズムは、徐々に開発者によって無視されるようになりました。また、Xcodeのデバッガはシームレスで完璧にバグをデバッグでき、シミュレータの応答速度も非常に速いです。
Androidに話を戻すと、現在の最先端のIDEはAndroidプラグインを使ってカスタマイズされたEclipseですが、これはひどいものです。動作の遅さや不便さという欠点は明らかで、Androidの断片化は不必要な複雑さをもたらします。デバッガーは非常に不親切で、ほとんどの場合、開発者はログファイルのエラーを自分でデバッグしなければなりません。一方、エミュレータは起動に数分かかることが多く、Android Debug Bridgeへの接続に失敗することもよくあります。
Googleもこの問題を認識し、新しいAndroid Studio IDEを発表する準備が整いました:Android Studioは現在試用版です。
Android Studioの評判は賛否両論です。最新バージョンでは、まだ未完成または未実装の機能がかなりあるため、不明なエラーメッセージに遭遇する可能性があります。未完成の製品を使いたくない場合は、ADT Bundleをダウンロードして使うことができます。
Googleがそれに取り組み始めるのを見ることができるのはいいことだと思いますが、猿が一周するのにどれくらいかかるかわかりません。
評決:明らかにiOSの勝ち。
コンフィグ
先に書いたように、XcodeとObjective-Cの完璧な組み合わせの下には、恐ろしいコンパイルメカニズムがあります。開発者は、マクロ、ヘッダーファイル、プロジェクト、プラン、ビルド構成などのビルド構成の長いリストに直面します。ああ、サードパーティのコードはARCをサポートしていないので、-fn-objc-arcフラグを追加して修正してください!簡単でしょう?"
Androidは比較的シンプルで、マニフェストファイルが別にあり、開発者が任意のファイルを保存すると、Eclipseは通常、システム全体で一度アプリケーションをビルドします。もちろん、パーミッションが正しく設定されておらず、アプリケーションが実行されなかった場合に明確なヒントがあれば良かったと思います。全体的に、Androidアプリは比較的シンプルで設定も簡単です。
評決:アンドロイドの勝ち
ユーザー・エクスペリエンス・デザイン
Interface Builderは、Mac OS X上でユーザーインターフェイスを設計およびテストするためのアプリケーションです。Mac OS X上のすべてのユーザーインターフェイス要素はコードを使用して直接生成できますが、IBを使用すると、開発者はMac OS Xのヒューマンインターフェイスガイドラインに準拠したGUIを簡単かつ迅速に開発できます。IB は、Mac OS X のすべてのユーザーインターフェイス要素をコードで直接生成することができますが、IB は、Mac OS X のヒューマンインターフェイスガイドラインに準拠した GUI を迅速かつ容易に開発することができます。 IB は、GUI リソースを保存するために Nib ファイルを使用します。IBは、CocoaアプリケーションとCarbonアプリケーションの両方のGUIリソースを保存するためにNibファイルを使用します。Nib ファイルは、必要なときにすばやくメモリにロードできます。
理論的には、Androidプラットフォームにも同等のビジュアライゼーション・ツールがありますが、それは置いておいて、Androidプラットフォームでのアプリ開発は、様々なスクリーンサイズに直面することになり、これは無視できない問題です。もちろん、iOSデバイスのサイズも徐々に多様化しており、iOSプラットフォームも将来的に同じ問題に直面することは間違いありません。もちろん、Androidも開発者にアイコンパッケージを提供しており、開発者はより簡単にUXデザインを完成させることができます。しかし、iOS開発者はIcons8などのサードパーティのアイコンパッケージを利用することもできます。
この比較では、iOSが特に有利です。第一に、画面の種類が比較的シンプルで、3つのサイズと2つの解像度しかありません。第二に、ポップアップメニューやメッセージングなど、iOSのデフォルトの視覚的要素は、Androidのそれよりもはるかに視覚的に魅力的です。
結論:iOSの方が良い
多言語主義
AndroidはJava、iOSはObjective-Cを使用します。もちろん、Xamarinのような例外もあります。Objective-CはJavaよりも冗長で、例えば、Javaで文字列を定義するこの文は、Javaで定義されています:
String
s2
=
s1.replace(「abc”,”xyz”);
になります:
NSString
*s2
=
[s1
stringByReplacingOccurrencesOfString:@"abc"
withString:@"xyz"];
Objective-Cにはコードブロックがありますが、Javaにはありません。Objective-Cにはクラスがありますが、Javaにはありません。Objective-Cは例外処理にtry/catchを使う必要がありませんが、Javaにはあります。
もちろん、JavaにはJavaの利点があります。たとえば、スタック・トレースが向上しているため、散発的なエラーの追跡がずっと簡単になります。数年前まで、Androidはゴミ収集メカニズムで大きな優位性を持っていました。そして今、iOSの自動参照カウントによって、Androidの優位性は薄れつつあります。
評決:iOS版Objective-Cの勝利!
エーピーアイ
AndroidとiOSはどちらも開発者に巨大なソフトウェアライブラリを提供しますが、基本的には広い意味で似ています:携帯電話の機能や機能のAPIを提供し、ネットワークアクセスを提供し、強力なWebViewを含むビューオブジェクトのフルセットを提供します。最も重要なことは、同時にコントローラを提供することです。基本的にiOSのViewControllerはAndroidのActicityに非常に似ています。
例えば、iOSのCore Dataフレームワークに匹敵するフレームワークやその他の機能を提供しているAndroidシステムはありません。また、iOSはAndroidよりもクリーンでデザインも優れています。
もう一つの指標は、コード行数です。同じような機能を持つアプリの場合、iOSでは通常、ヘッダーファイルも含めて1,596行のコードで実装できますが、AndroidのJavaコードとXMLでは2,109行と、32%も多くなります。
結論:iOSの方が良い
ネットワーク通信の実現
現在、ほとんどのアプリはインターネットAPIを使用しており、iOSとAndroidの両方が、開発者がそのような機能を実現するためのあらゆるツールとAPIを提供しています。
ネットワーク接続は基本的にバックグラウンドで実行されるため、一般的にアプリケーションのメインスレッドをブロックすることはなく、マルチスレッド化はより困難です。iOSも似たようなものを提供していますが、それに比べると低レベルで満足できるものではありません。
しかし、AFNetworkingのように、iOSでネットワーク通信機能を実装するのに役立つオープンソースライブラリがいくつかあります。
結論:Androidはサードパーティライブラリを考慮しなくても有利、iOSはサードパーティライブラリで有利。
分かち合う
アプリからソーシャルネットワークにコンテンツを共有するのは簡単ですか?Androidには以前からIntentsと呼ばれる強力なアプリ内コミュニケーションシステムがあり、アプリ間でデータを共有するのは比較的簡単です。
共有に関しては、iOSは基本的にAndroidに追いついています。Scanvineのストーリーを共有するソースコードは、Android版とiOS版の2つがGitHubにあります。 iOS版のコードは、Google Analyticsのコードを追加したため、少し長くなっています。
評:互角
フラグメンテーションの問題
比較するまでもなく、Androidはその断片化が批判されています。しかし、グーグルがデフラグ整理に取り組んでいることは注目に値します。
結論:アンドロイドが深刻な問題を抱えているのは明らか
アプリケーションリリース
Androidプラットフォームアプリケーションのリリースは非常に簡単で、Eclipseのガイドに従ってアプリケーションに署名するだけです。開発者はこのAPKファイルを様々なプラットフォームに公開してプロモーションを行い、ユーザーはそれをインストールすることができます。アプリの使用中に問題が発生したり、コードエラーが発生した場合、開発者はすぐに修正版をアップロードして、ユーザーがダウンロードできるようにすることもできます。
iOSでアプリを公開するのは悪夢です。証明書とDistribution Profilesセッションの作成だけで、多くの開発者は1日を費やす必要があります。そしてテストは、TestFlightのようなアプリがなければ、絶対に筆舌に尽くしがたいほどひどいものです。
評決:アンドロイドの大勝利
あらゆることを考慮すると、iOSはAndroidよりも有利です。Androidにもそれなりの利点はありますが、優れたiOSアプリの開発がAndroidアプリの開発よりも容易であることは明らかです。独自の要素に加えて、iOSのユーザー人口は比較的ハイエンドであるため、ほとんどの開発者はアプリ開発の最初のプラットフォームとしてiOSプラットフォームを選択します。





