【2017年版】スマホアプリ開発環境の種類一覧と選び方

この記事は約 20 分で読めます。

スマホアプリを開発するにはPC上に開発環境を構築する必要があります。

この開発環境を構築するという作業は結構大変です。

色々と必要なものをインストールしたり、PCの設定を変更したり、途中でハマってググってみたり、結構な労力を伴います。

ノートPCとスマホ

AndroidやiPhoneが出た当初、開発環境の選択肢は少なかったため迷うことはなかったのですが、最近は選択肢が多すぎて何を選べばいいのか分からない方は多いと思います。

基本的に作りたいアプリのジャンルや方向性、個人のスキル、今までの経験など、様々な要因によって開発環境の最適解は異なります。

絶対これだ!というものはありません。

しかし、苦労して開発環境を構築し開発を始めた直後、たまたまググって見たサイトの情報で

今の開発環境より、こっちの方がよくね?

みたいな悲しい出来事は事前に防ぎたいですよね。

そのためにも最近はこんな開発環境があるんだという情報を把握することが大事です。

スポンサーリンク

開発環境の選び方

まずは、スマホアプリについての理解を深めておきましょう。そうすることでベストな開発環境が選択できます。

スマホアプリの分類

スマホアプリとは、名前の通りスマートフォン(smartphone)で利用できるアプリケーションを略した用語です。

スマホで利用できるアプリには以下の3種類があります。

  • WEBアプリ
  • ネイティブアプリ
  • ハイブリッドアプリ

WEBアプリとは、端末にインストールされているインターネットを閲覧するためのブラウザ(ChromeやSafari)を使って利用できるものです。

従って、インストール不要なアプリとも言えます。

Google Map や Gmail 、Google Drive がそれに該当しますが、これらはインストールする専用のアプリもあります。

ここで言うWEBアプリとは、インストールせずにブラウザーだけで利用できるアプリ、かつ、アプリっぽく動くものを指します。

先に例題に出したGmailも、ブラウザーでアクセスしてログインすると左上にメニューボタンがあり、タップすると画面遷移なしに、左側からメニューがウニョっと出てきます。アプリっぽいですよね?

スマホアプリでWEBアプリと言えば、記憶に新しいのはFacebookです。一時期スマホ用にWEBアプリ(HTML5)でFacebookの開発を進めていましたが、WEBアプリでは「起動が遅い、反応が重い」などの不満が多かったことからネイティブアプリに移行しました。

WEBアプリの利用イメージ

上記図の通り、アプリを操作するには毎回サーバーとの通信が必要になります。そのため、レスポンスは悪くなり、通信速度が貧弱だとイライラすること間違いなしです。地下鉄に乗っていたら利用することもできません。

しかし、アプリをインストールすることなく手軽に利用できる点は魅力的です。用途や目的がマッチしていれば十分選択の余地はあります。

ベンダーとしては、スマホ用にわざわざ開発する必要がなくコストを抑えることができるのが最大の利点ですね。(スマホ用に見た目のチューニングは必要な点は忘れずに。特にAndroidはメーカー毎に特殊仕様も沢山盛り込まれているため、機種によって表示が乱れることも多々ある印象です。)

WEBアプリの開発環境は、スマホの開発環境とは基本的に異なるため、本記事では説明を割愛します。

ネイティブアプリとは、Google Play や App Store からインストールして利用するアプリです。

ハイブリッドアプリもネイティブアプリ同様、Google Play や App Store からインストールして利用するアプリなのですが、その内部構造に違いがあります。

ハイブリッドアプリとは、WebViewというHTMLを表示するコンポーネント(ブログラム内部で利用できるブラウザのようなもの)を利用して、シングルページWebアプリケーション(SPA)のようなUI(ユーザーインターフェース)を提供するアプリです。

そのため、外側はネイティブ、内側はWEBアプリなので『側アプリ』とも呼ばれています。

ネイティブアプリとハイブリッドアプリの利用イメージ

以前の『側アプリ』は操作性が悪いイメージでしたが、最近はネイティブアプリと見分けがつかないレベルにまでパフォーマンスは向上しているように感じます。

開発環境の分類

スマホアプリのOS(オペレーションシステム)には、Android と iOS があります。iOSはiPhoneで使われているOSです。このOSの種類によって基本的に開発環境が異なります。

開発環境は大きく分類して以下の2種類があります。

  • スタンダードな開発環境
  • クロスプラットフォームの開発環境

スタンダードな開発環境とは、Androidのアプリだけを開発するためだけの環境、およびiOSのアプリだけを開発するためだけの環境です。

クロスプラットフォームの開発環境とは、Android、iOS、両方のアプリを同時に開発し、一つのソースとして管理することができる環境です。

この環境で開発したアプリは、選択したフレームワークによってハイブリッドアプリ、またはネイティブアプリが作れます。

基本的にAndroidとiPhone(iOS)の両方でアプリをリリースしたいと考えている場合は、クロスプラットフォームの開発環境の構築をオススメします。

じゃあ、クロスプラットフォームの開発環境でアプリを作るのがいいのね。

ってことになってしまいそうですが、スタンダードな開発環境にも魅力があります。

それはパフォーマンスです。クロスプラットフォームの環境だと、流石に細部のチューニングを行うことは困難です。その点を考慮すればスタンダードな開発環境で作られたアプリには適いません。

ヌルヌル操作できる快適なアプリを開発したいならスタンダードな開発環境構築をおススメします。

開発環境を比較

スタンダードな開発環境でAndroidのアプリ開発しか経験のない私が、独自視点でスタンダード環境とクロスプラットフォーム環境の比較を以下にまとめました。

こちらを参考にあなたに合った開発環境を選んでください。

スタンダードクロスプラットフォームUnity (※2)
開発コスト苦労する (※1)WEB開発者が有利慣れが必要
メンテナンス大変 (※1)
操作性快適まぁまぁ快適
処理速度早い普通早い
機能の制約なしあるかもしれないあるかもしれない
環境構築ものによるとても楽
イメージ職人な感じ今時な感じゲームならUnity

(※1)AndroidとiOSの両方やる場合
(※2)Unity もクロスプラットフォームですが特殊なので分けて記載

これだけで選択できるわけないだろ!

って言われそうなので、それぞれの情報を広く浅く説明します。

開発環境による開発可能なアプリ

まずは全体を把握するために以下 4タイプのアプリが、それぞれどの開発環境で作れるのかを図にしてみました。

      1.ネイティブアプリ(Android)
      2.ネイティブアプリ(iPhone)
      3.ハイブリッドアプリ(Android)
      4.ハイブリッドアプリ(iPhone)

開発環境による開発可能なアプリ

中央に作成できるアプリのタイプを4つ並べてあります。
上段に「スタンダードな開発環境」、下段に「クロスプラットフォームの開発環境」を配置、それらの環境から作成可能なアプリのタイプに線を繋げてあります。

この図を参考に必要な情報だけチェックしてみて下さい。

スタンダードな開発環境

スタンダードな開発環境ではネイティブアプリが作れます。やろうと思えばハイブリッドアプリも作れます。まぁ制限がないので、何でも作ろうと思えば作れるのです。

Androidの開発環境

Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.

以前は『Eclipse』での開発がスタンダードでしたが、今は『Android Studio』が主流です。

これからネイティブアプリのAndroid開発を行う場合は、必ず『Android Studio』で開発環境を構築しましょう。

また、ソース管理には『git(ギット)』を利用することをオススメします。利用したことがない場合、学習コストは高くなりますが、Linuxのソース管理にも利用されているソース管理ツールのデファクトスタンダードです。

Androidの開発言語

ネイティブアプリのAndroidを開発する言語は『Android Java』になります。通常のJAVA言語とは若干異なり、Android用にGoogleがカスタマイズしたものになります。

JAVA は『Java仮想マシン(JVM)』上で動作するのですが、『Android Java』は Google が開発した 『Dalvik仮想マシン』上で動作します。Android 5.0 からは『Android Runtime(ART)』上で動作するようになり、動作速度の向上と省電力化が期待できます。

また、パフォーマンスに関しては組み込みアプリの考え方が重要となります。ネット上に沢山の情報がありますので、必要に応じてググってみてください。

追記(2017-05-23)
2017年5月17日に行われた Google I/O で、Kotlin(コトリン)をAndroidアプリの開発言語としてサポートすると公式に発表がありました。

JavaとKotlin、どちらを使うべきなのか考察した記事を投稿しましたので、興味がありましたらご覧ください。

Androidの開発OS

Androidのネイティブアプリは以下のOSで開発できます。

  • Windows
  • Mac OS X
  • Linux

iPhone(iOS)の開発環境

Xcodeには、iPhone、iPad、Mac、Apple Watch、Apple TV向けの優れたアプリケーションを作成するために必要なあらゆる機能が用意されています。

『Xcode』を使って開発します。
Xcodeとは、Apple社が提供する「Mac OX X」向けの統合開発環境です。

とりあえずMacを持ってないと開発することはできません。どうしてもスタンダードな環境で iPhone 向けのアプリを開発したいならMac購入を検討してください。私は諦めました。

iPhoneの開発言語

iOSでネイティブアプリを開発する言語は『Objective-C』というC言語をベースにオブジェクト指向機能を持たせた上位互換言語でした。

今は『Swift』という2014年にAppleが開発した言語がありますので、これから始める方は、必ず『Swift』を使うようにしてください。その方が幸せになれます。

iPhoneの開発OS

iPhoneのネイティブアプリは以下のOSで開発できます。

  • Mac OS X

Macでしか開発できないというのが厳しいですね。マイナビニュースの『Windows 7/10/XPが増加 – 12月OSシェア』の情報によると、2016年12月の時点でMacを利用しているのは全体の6%程度です。これだけ見ても敷居が高いのが理解できると思います。

クロスプラットフォーム開発環境(ネイティブアプリ)

ネイティブアプリの開発は、それぞれのOS(プラットフォーム)用に別々のソフトを開発するイメージがありますが、両方同時に開発できる開発環境も存在します。

Unity(ユニティー)

Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web...

ゲームを開発するなら、この『Unity』一択です。

Unityとは、ゲーム開発プラットフォームで、スマートフォン向けゲーム開発のデファクトスタンダードです。3Dでグリグリ動くゲームは大体このUnityを使って開発されています。

2Dのゲームも作れますから、ゲームなら全てお任せという感じですね。

Unityについては@itの「ゲーム開発初心者のためのUnity入門」最新記事一覧から必要な基礎知識は、大体キャッチアップできそうです。

任天堂の「スーパーマリオラン」や、スクエニの「ドラゴンクエストVIII」も『Unity』で作られています。そんな話を聞いたら、何のゲームでも作れそうな気がしますね。

Unity体験談

実際にUnityをインストールして、飛んでくる物体を跳ね返す簡単なゲームを作ってみました。

クリックで体験談を見る。

環境構築はとても簡単です。

上記 Unity 公式ホームページからダウンロードを選択しインストーラーを落としてインストールするだけ。

ソースは Unity専用にカスタマイズされた Javascript か、C# で実装します。

トレンドは C# らしいので、そちらを選択しておいた方が良いです。

ネット上にあるサンプルソースも C# が多めなので、きっと幸せになれます。

ソースをコーディングするIDE環境として VisualStudio が利用できるので、一緒にインストールしておくと作業が捗ります。

Unity 起動後、何をすればよいのか困惑します。

マルチプラットフォームのゲームエンジンであるUnityについて、その基本的な使い方を学んでいきます。

私は上記、ドットインストールの「Unity入門」を活用しました。

この動画は #1 ~ #26 まであり、一つの動画は 3 分程度です。

これらを全て視聴することで、開発の段取りがマスターできます。

とてもオススメです。

残念だったのは、説明で利用しているソースが C# ではなく Javascript だったことくらいです。

この動画を見ながら同じように作業を行い、最後にアレンジを加えたアプリがこちらです。

ちなみにこのアプリをリリースすることはありません。

なぜなら面白くないからです。

ただ Unity のポテンシャルは充分に感じる事ができました。

特に物理エンジンによる重力を適用した物体挙動を簡単に再現できることは素晴らしいの一言。

他の開発環境で同じようなものを作ることは、かなり困難を極めることは間違いないでしょう。

ゲームを作るなら Unity 。これは間違いないと思います。

Xamarin(ザマリン)

Visual Studio Tools for Xamarin Deliver native Android, iOS, and Windows apps with a single shared .NET code base. Download for Windows Community 2017 Professio...

Xamarinとは、2016年2月24日に Microsoft が買収したことによって Visual Studio に無料で同梱されるようになりました。

.NET技術 でネイティブの Android、iOS のアプリが開発できる環境です。

Microsoftが提供するものなのでVisual Studioで開発を行います。ただし、クロスプラットフォームで共通にできるのは「コア」部分だけのようです。

上記の公式HPは日本語が一切ないため、理解するのが大変です。QiitaのXamarin(ザマリン) とはなんぞやに詳しい情報がありますので、私と同様に英語が苦手でしたら、こちらをご覧いただくのがよろしいかと存じます。

Titanium Mobile

Titanium Mobileとは、米国 Appcelerator 社が提供する JavaScript で iOS / Android のネイティブアプリを開発することができるEclipse ベースの統合開発環境です。

gihyo.jpで連載しているTitanium Mobileで作る! iPhone/Androidアプリに詳しい情報があります。実際に作ってみようという方には参考になります。

Adobe AIR for Mobile

アドビ・システムズ社が提供する開発ツールです。「Adobe AIR」を端末にインストールすることで動作するようになるアプリが作れます。

Flex、Flash、ActionScript、HTML、JavaScriptを使って開発できるようですが、私はFlex、Flash、ActionScriptに触れたことがないため、未知の領域です。

ざっとググって情報を見る限り、Flashで何か作れる方には良さそうな感じです。

クロスプラットフォーム開発環境(ハイブリッドアプリ)

現状、ハイブリッドアプリを開発するために様々なクロスプラットフォームの開発環境が提供されており、コア部分は『Cordova』を利用しているケースが多いです。

それぞれ開発手法が異なり、メリット、デメリットもありますので、これらを把握し最適な開発環境を選びましょう。

Monaca(モナカ)

Monacaは、Cordovaを内包したHTML5ハイブリッドアプリ開発プラットフォームです。HTML5でマルチプラットフォーム対応のモバイルアプリ開発が行えます。

Monacaとは、アシアル株式会社が提供する統合開発環境です。一番特徴的なのがクラウド上に開発環境があるため、環境構築の作業が不要なところです。ブラウザで開発、ビルドが行えます。

また、Onsen UIというフロントエンド開発用のツールも用意されています。こちらはAngularJS をベースとしたHTML5ハイブリッドアプリ用のUIフレームワークで、アプリのようなUIをWEB開発のスキルで実装することができます。高速に動作するUI基盤として開発されました。

私はスキル的にデザイン周りが苦手なので、このようなUIフレームワークにはとても魅力を感じます。

PhoneGap(フォンギャップ)

Easily create apps using the web technologies you know and love: HTML, CSS, and JavaScript.

PhoneGapとは、Adobeが提供するオープンソースのモバイルアプリ開発フレームワークです。Cordovaという下層のフレームワークの上にAdobeのサービスと連携するレイヤーとして被さっている感じです。

このPhoneGapとCordovaの関係が複雑で、元々Nitobiという会社がPhoneGapを開発していて、そのNitobiをAdobeが買収し、それと同時にPhoneGapのソースコードをApache Foundationに寄付してCordovaが誕生。その後にAdobeがCordovaのラッパーとしてPhoneGapをリリース。正直、買収して寄付する意図が全く分かりません。

色々歴史がありますが、結局 PhoneGap と Cordova は大体同じものと認識しておけば問題ありません。

Telerik Platform

Learn how NativeScript and Kinvey combine to produce the most stable, performant cost-effective and highly productive mobility platform for JavaScript developer...

Telerik Platform とは、Monacaと同様にWEB上のサービスでアプリが開発できます。ググった感じ、日本語の情報が少なく、まだ浸透していないようです。しかし、公式サイトを見ると多彩なテンプレートが用意されており、いい感じにベースソースを作ってくれそうな感じです。

「AppBuilder」という専用のWEB開発画面が用意されていますが、WEB上でソースを弄るのが嫌いな方のために、「Visual Studio」を使って開発することも可能です。

一つ言えることは、私と同じ英語が苦手な方には敷居が高そうです(笑

必要な情報を得ることが容易かどうか?

開発環境を選ぶ際には、この点についても充分に留意してください。この見極めに失敗すると開発コストが想像以上に増加します。熟練の技術者が枯れた技術を好む傾向にあるのは、この部分が大きいのです。

Cordova(コルドバ)とは

Cordovaとは、オープンソースで提供されるハイブリッドアプリを開発するためのフレームワークです。

Cordovaのアプリビルドイメージ

上記図の通り、WEB技術(HTML5、CSS、Javascript)を用いて開発するSPA(シングルページアプリケーション)からアプリをビルドすることが可能なため、SPAを開発するための以下ツールやフレームワークが利用可能です。

  • jQuery
  • Knockout
  • Angular
  • Riot
  • Vue
  • React

基本的に作業は「Node.js」をインストールしたPC上でコマンドラインを使って行います。

Node.jsとは、サーバーサイドのJavaScriptです。JavaScriptは本来クライアント側のブラウザで動作するものですが、Node.jsを利用することでサーバー上でJavaScriptが実行できる感じです。

通常、Cordovaでアプリをビルドするときには、Android や iOS の SDK も PC にインストールする必要があるのですが、Adobeのクラウドビルドサービス「PhoneGap Build」を利用することで、SDK のインストールなしでビルドできます。

Macが無くてもiOSがビルドできるなんて魅力的ですね。

まとめ

如何でしたでしょうか。

以下に要点をまとめておきます。

  • スマホアプリには、WEBアプリ、ネイティブアプリ、ハイブリッドアプリがある。
  • 開発環境にはAndroidのみ、iOSのみ、両方一緒に作れるものがある。
  • ヌルヌル快適なアプリが作りたいならネイティブアプリが良い
  • MacがないとiPhoneのアプリは作れなかったが今は作る方法がある
  • 最近のハイブリッドアプリは侮れない
  • サードパーティーが提供する開発環境は、急にビルドが通らなくなるリスクがある。
  • cordova 環境を1から構築するのはとても大変です。

開発環境の選択肢が多すぎですね。

これら全てを試した方がいたら本当尊敬します。

開発環境が選べない方へ

人は情報がありすぎると迷って選択できません。それはしょうがないことです。

だから私が決めて差し上げます。素直に従って、アプリをリリースしてください。

  • ゲーム開発なら Unity がオススメ
  • 開発環境の構築がめんどくさいなら Monaca がオススメ
  • Visual Studioが好きなら Xamarin がオススメ
  • WEB開発にも興味があるなら Cordova を使ったハイブリッドアプリがオススメ
  • 上記に該当しない方はスタンダードなネイティブアプリ開発を行う

ちなみに私は『Visual Studio 2017 Community をインストールして Cordova + Ionic2 を使ったハイブリッドアプリを開発』します。

2017-12-14 追記

Cordova + Ionic2 でアプリを作ろうと思ってましたが、最近 riot(ライアット)というモダンなWeb画面がお手軽に作れる javascript(ジャバスクリプト) の UIライブラリに興味があり、今はCordova + Riot の組み合わせでアプリを作ろうと考えています。

Riot を使うメリットですが、Visual Studio や Android Studio って起動にめちゃくちゃ時間がかかるじゃないですか?

私は会社員で妻子持ちのため、アプリ開発に利用できるプライベートの時間がとても限られています。そんな少ない開発時間が開発環境の起動待ちで消耗されると激しくやる気がなくなります

その点、Riotを使って画面のプロトタイプを作るような開発ならば、Visual Studio Code と Google Chrome を起動するくらいなのでストレスフリーで楽しめます。同じような不満を感じてましたら、是非試してみて下さい。

Riotの開発環境は、Windows10でも即効作れます。

どうも、会社員Shiraです。 最近 Riot.js(ライアット)という、モダンなWeb画面を開発する javascript(ジャバス...

直感で選択して問題なし

2017-08-17 追記

次のアプリ制作の開発環境には Cordova を使おうと決心してたのですが、本当にその選択で後悔しないか不安になってきました。

仕事で多少 Cordova に触れる機会があるのですが、3ヵ月くらい前にビルドできてた環境なのに急にビルドが通らなくなりました。

原因を調査した結果、以下の情報を発見。

どうやら、Android Studio 起動時、気まぐれでアップデートした結果、cordova のビルドで必要なファイルが削除されてしまったようです。

仕事で構築した開発環境は、Windows 上で nodejs やら npm やら bower やら、色々インストールして作った「Cordova + Angular」のフレームワークです。

このような問題は、スタンダードな開発環境である Android Studio や、Xcode では発生しません。

サードパーティーが提供する開発環境ならではの問題ですね。

こういう点も考慮するとスタンダードな開発環境も捨てがたい。と考えてしまいます。

ただ、サードパーティーと言っても Microsoft は別格の安心感があります。

「Visual Studio」もいい感じになってきたので「Visual Studio」を使った Cordova 環境なら問題ないかなーという気持ちもあります。

結局、検討に検討を重ねて選択した開発環境であっても後悔する事はある。

だからあまり悩まず、直感で選んじゃっても問題ないって事です。

開発環境を選んだ方へ

開発環境の選択が済んだら、次はアプリを開発してリリースしてみましょう。

また、折角リリースするのなら、マネタイズも考えて収益化を行いましょう。

そのための戦略をこちらで紹介しています。

アプリを適当に開発してリリースしたところで大したお金は稼げません。 だからといって、検討に検討を重ねた結果、開発したアプリでお金を稼げ...

アプリやWEBサービスを作ってお金が稼ぎたい!

けど

何を作ればいいのか分からない!」と考えているあなたにはこちらをどうぞ。

最近は個人でもお手軽にアプリやWEBサービスがリリースできる時代になりました。 「アプリやWEBサービスを作って金が稼ぎたい!」 ...

以上、『【2017年版】スマホアプリ開発環境の種類一覧と選び方』の解説でした。

あなたのお役に立てれば幸いです。

補足

本記事は開発環境を選択する際の参考にしていただくことを目的としています。

そのため、間違った内容は記載しないよう努力しているのですが、間違っていたらごめんなさい。

もし間違った内容がありましたら、コメント欄やTwitterなどで、ご指摘いただけると大変助かります。

上記理由のため、訂正した箇所について履歴を残すことにしました。

2017-09-07 訂正

Xamarinについて「Microsoftが開発した」と記載してましたが、「Microsoftが買収した」の間違いだったので訂正しました。

The following two tabs change content below.
会社員Shira
IT系の会社員。1978年生まれ。個人開発でAndroidのアプリをリリース、総ダウンロード数は96万くらい。36歳で初めての転職、未経験のweb業界で日々悪戦苦闘してます。
最新記事 by 会社員Shira (全て見る)
スポンサーリンク
スポンサーリンク
スポンサーリンク

当記事がお役に立ちましたらシェアして頂けると嬉しいです。

フォローする

コメント

  1. 峯 慎一 より:

    わかりやすい説明をありがとうございました。
    70歳になった私がFlash AS 3.0を捨てて、新しい言語をどれにしようかと迷っていましたが、大変参考になりました。

    • 会社員Shira より:

      峯様
      とても励みになるコメントありがとうございます!
      大変嬉しいです。

      70歳から新しい言語にチャレンジする精神、とても素晴らしいと思います。私も生涯現役できるよう精進致します!

  2. 赤松 より:

    とても参考になりました。
    ゲームの開発環境を調べていて、コチラにたどり着きました。
    本業はITでは無いんですが、ガンバってみます!

    • 会社員Shira より:

      赤松様
      コメントありがとうございます。
      ゲームの開発環境ならUnityがオススメですね。
      ぜひ頑張って作ってください!応援します!

スポンサーリンク
スポンサーリンク