読者です 読者をやめる 読者になる 読者になる

ぺぷしのーげん

アプリケーションエンジニア(C#er)による雑記ブログ

アプリ開発の難易度は大きく3つに分けることができる

f:id:hazakurakeita:20150720001830j:plain

こんなアプリを作ってみたいけど、難しいでしょうか。そんな声を最近たまに聞きます。先日、いきなり難しいアプリを作ろうとしても挫折するだけと記事に書きました。しかし、そもそも難しいかどうかの判断ができないという人も多いのではないでしょうか?実はアプリを作る上で難易度は簡単に3つに分けることができるのです。

 

最も簡単なのはユーザーのデバイスで完結するアプリ

最も簡単なのは、ユーザーの入力に対して反応するアプリまたは、ユーザーのデバイスに保存されているデータだけを使って動くアプリです。例えば前者は、電卓・占い・ゲームなどがあります。後者は、カメラ・音楽などがあります。要するに通信を必要とせず、iOSが標準で実装している機能やサービスを利用したアプリの開発は簡単です。サンプルのコードもたくさんあるので調べやすいというメリットもあります。

 

他のサービスと連携するアプリ

次に簡単なのは他のサービスと連携するアプリです。例えば、TwitterクライアントアプリやGoogleマップを利用したアプリなどです。一見難しそうですが、多くの機能がアプリ開発者向けに公開されており、ダウンロードして自分のアプリに組み込んだり、インターネット経由で簡単にデータを取得することが可能です。しかし、これらデータの利用やXcodeへの組み込みなど、SwiftやObjective-Cの勉強とは違う勉強が必要な分、先に紹介した種類のアプリよりも難易度が上がります。Xcode(AndroidならAndroid Studioなど)の使い方で挫折してしまうケースも少なくないのです。

 

他のユーザーと交流したり連絡したりするアプリ

最も難しいのは他のユーザーのデバイスと通信したり、交流できるアプリです。例えば、Rettyのような口コミサイトのアプリなどです。つまりはWebサービスのアプリということですね。ゲームは簡単と書きましたが、もし他のユーザーと対戦するような場合は一気に難易度が上がります。

なぜこれが難しいかというと、アプリ開発の範疇を超えてしまうからです。どこかに通信を行うサーバーを設置しなければいけませんし、サーバーで動くプログラムを作成しなければなりません。さらに、サーバーではSwiftやObjective-Cといったアプリで使用するプログラムは動きません。新たに別のプログラミング言語の勉強が必要です。最初からこのアプリの開発を始めるのは、いきなりエベレストを登るのに近いかもしれません。

 

エンジニアは頭の中で必要なことを考えている

エンジニアに「こういうの作って欲しいんだけど?」と質問すると、たぶん上のようなことを考えていると思います。ユーザーのデバイスだけで完結していると、エンジニアは自分の知識だけで開発できます。他のサービスと連携する必要がある場合は、利用したい機能が公開されているかどうか、公開されていたら使用方法を調べる時間が必要だとエンジニアは考えます。他のユーザーと交流するなど、サーバーの設置が必要な場合は、サーバーのエンジニアが必要だという話になります。もちろん全部やってしまうエンジニアもいるでしょうが、企業だと両方やるケースは少ないと思います。

 

以上、アプリの難易度の簡単な識別方法でした!