新記事【2019年版】スマホアプリ開発環境のオススメ考察を投稿しました。
スマホアプリを開発するにはPC上に開発環境を構築する必要があります。
この開発環境を構築するという作業は結構大変です。
色々と必要なものをインストールしたり、PCの設定を変更したり、途中でハマってググってみたり、結構な労力を伴います。
AndroidやiPhoneが出た当初、開発環境の選択肢は少なかったため迷うことはなかったのですが、最近は選択肢が多すぎて何を選べばいいのか分からない方は多いと思います。
基本的に作りたいアプリのジャンルや方向性、個人のスキル、今までの経験など、様々な要因によって開発環境の最適解は異なります。
絶対これだ!というものはありません。
しかし、苦労して開発環境を構築し開発を始めた直後、たまたまググって見たサイトの情報で
「今の開発環境より、こっちの方がよくね?」
みたいな悲しい出来事は事前に防ぎたいですよね。
そのためにも最近はこんな開発環境があるんだという情報を把握することが大事です。
開発環境の選び方
まずは、スマホアプリについての理解を深めておきましょう。そうすることでベストな開発環境が選択できます。
スマホアプリの分類
スマホアプリとは、名前の通りスマートフォン(smartphone)で利用できるアプリケーションを略した用語です。
スマホで利用できるアプリには以下の3種類があります。
- WEBアプリ
- ネイティブアプリ
- ハイブリッドアプリ
WEBアプリとは、端末にインストールされているインターネットを閲覧するためのブラウザ(ChromeやSafari)を使って利用できるものです。
従って、インストール不要なアプリとも言えます。
Google Map や Gmail 、Google Drive がそれに該当しますが、これらはインストールする専用のアプリもあります。
ここで言うWEBアプリとは、インストールせずにブラウザーだけで利用できるアプリ、かつ、アプリっぽく動くものを指します。
先に例題に出したGmailも、ブラウザーでアクセスしてログインすると左上にメニューボタンがあり、タップすると画面遷移なしに、左側からメニューがウニョっと出てきます。アプリっぽいですよね?
スマホアプリでWEBアプリと言えば、記憶に新しいのはFacebookです。一時期スマホ用にWEBアプリ(HTML5)でFacebookの開発を進めていましたが、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の開発環境
以前は『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』を使って開発します。
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』一択です。
Unityとは、ゲーム開発プラットフォームで、スマートフォン向けゲーム開発のデファクトスタンダードです。3Dでグリグリ動くゲームは大体このUnityを使って開発されています。
2Dのゲームも作れますから、ゲームなら全てお任せという感じですね。
Unityについては@itの「ゲーム開発初心者のためのUnity入門」最新記事一覧から必要な基礎知識は、大体キャッチアップできそうです。
任天堂の「スーパーマリオラン」や、スクエニの「ドラゴンクエストVIII」も『Unity』で作られています。そんな話を聞いたら、何のゲームでも作れそうな気がしますね。
Unity体験談
実際にUnityをインストールして、飛んでくる物体を跳ね返す簡単なゲームを作ってみました。
Xamarin(ザマリン)
Xamarinとは、2016年2月24日に Microsoft が買収したことによって Visual Studio に無料で同梱されるようになりました。
.NET技術 でネイティブの Android、iOS のアプリが開発できる環境です。
Microsoftが提供するものなのでVisual Studioで開発を行います。ただし、クロスプラットフォームで共通にできるのは「コア」部分だけのようです。
上記の公式HPは日本語が一切ないため、理解するのが大変です。QiitaのXamarin(ザマリン) とはなんぞやに詳しい情報がありますので、私と同様に英語が苦手でしたら、こちらをご覧いただくのがよろしいかと存じます。
Titanium Mobile
2018-10-07 追記
久しぶりにネットで Titanium Mobile に関する情報を検索してみましたが、全て古い情報であり、新規に作成された記事は見当たりませんでした。
これから開発環境を構築しようと考えているのならば、最新の情報がネットから取得できないことは致命的な問題です。よって、個人的に Titanium Mobile は選択しない方が賢明な判断かと思います。
以下内容は参考までに。
gihyo.jpで連載しているTitanium Mobileで作る! iPhone/Androidアプリに詳しい情報があります。実際に作ってみようという方には参考になります。
Adobe AIR for Mobile
アドビ・システムズ社が提供する開発ツールです。「Adobe AIR」を端末にインストールすることで動作するようになるアプリが作れます。
Flex、Flash、ActionScript、HTML、JavaScriptを使って開発できるようですが、私はFlex、Flash、ActionScriptに触れたことがないため、未知の領域です。
ざっとググって情報を見る限り、Flashで何か作れる方には良さそうな感じです。
クロスプラットフォーム開発環境(ハイブリッドアプリ)
現状、ハイブリッドアプリを開発するために様々なクロスプラットフォームの開発環境が提供されており、コア部分は『Cordova』を利用しているケースが多いです。
それぞれ開発手法が異なり、メリット、デメリットもありますので、これらを把握し最適な開発環境を選びましょう。
Monaca(モナカ)
Monacaとは、アシアル株式会社が提供する統合開発環境です。一番特徴的なのがクラウド上に開発環境があるため、環境構築の作業が不要なところです。ブラウザで開発、ビルドが行えます。
また、Onsen UIというフロントエンド開発用のツールも用意されています。こちらはAngularJS をベースとしたHTML5ハイブリッドアプリ用のUIフレームワークで、アプリのようなUIをWEB開発のスキルで実装することができます。高速に動作するUI基盤として開発されました。
私はスキル的にデザイン周りが苦手なので、このようなUIフレームワークにはとても魅力を感じます。
PhoneGap(フォンギャップ)
PhoneGapとは、Adobeが提供するオープンソースのモバイルアプリ開発フレームワークです。Cordovaという下層のフレームワークの上にAdobeのサービスと連携するレイヤーとして被さっている感じです。
このPhoneGapとCordovaの関係が複雑で、元々Nitobiという会社がPhoneGapを開発していて、そのNitobiをAdobeが買収し、それと同時にPhoneGapのソースコードをApache Foundationに寄付してCordovaが誕生。その後にAdobeがCordovaのラッパーとしてPhoneGapをリリース。正直、買収して寄付する意図が全く分かりません。
色々歴史がありますが、結局 PhoneGap と Cordova は大体同じものと認識しておけば問題ありません。
Telerik Platform
Telerik Platform とは、Monacaと同様にWEB上のサービスでアプリが開発できます。ググった感じ、日本語の情報が少なく、まだ浸透していないようです。しかし、公式サイトを見ると多彩なテンプレートが用意されており、いい感じにベースソースを作ってくれそうな感じです。
「AppBuilder」という専用のWEB開発画面が用意されていますが、WEB上でソースを弄るのが嫌いな方のために、「Visual Studio」を使って開発することも可能です。
一つ言えることは、私と同じ英語が苦手な方には敷居が高そうです(笑
「必要な情報を得ることが容易かどうか?」
開発環境を選ぶ際には、この点についても充分に留意してください。この見極めに失敗すると開発コストが想像以上に増加します。熟練の技術者が枯れた技術を好む傾向にあるのは、この部分が大きいのです。
Cordova(コルドバ)とは
Cordovaとは、オープンソースで提供されるハイブリッドアプリを開発するためのフレームワークです。
上記図の通り、WEB技術(HTML5、CSS、Javascript)を用いて開発するSPA(シングルページアプリケーション)からアプリをビルドすることが可能なため、SPAを開発するための以下ツールやフレームワークが利用可能です。
- jQuery
- Knockout
- Angular
- Riot
- Vue
- React
基本的に作業は「Node.js」をインストールしたPC上でコマンドラインを使って行います。
通常、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でも即効作れます。
直感で選択して問題なし
2017-08-17 追記
次のアプリ制作の開発環境には Cordova を使おうと決心してたのですが、本当にその選択で後悔しないか不安になってきました。
仕事で多少 Cordova に触れる機会があるのですが、3ヵ月くらい前にビルドできてた環境なのに急にビルドが通らなくなりました。
原因を調査した結果、以下の情報を発見。
Android SDK Toolsがr25.3.1になってtools/templatesは削除されたらしい。これが原因でcordovaビルドできず。対策がアップデートを控えるしかないとは(汗)
— 会社員shira (@ShiraAndroid) August 16, 2017
https://t.co/8PjqOh6hs6
どうやら、Android Studio 起動時、気まぐれでアップデートした結果、cordova のビルドで必要なファイルが削除されてしまったようです。
このような問題は、スタンダードな開発環境である Android Studio や、Xcode では発生しません。
サードパーティーが提供する開発環境ならではの問題ですね。
こういう点も考慮するとスタンダードな開発環境も捨てがたい。と考えてしまいます。
ただ、サードパーティーと言っても Microsoft は別格の安心感があります。
「Visual Studio」もいい感じになってきたので「Visual Studio」を使った Cordova 環境なら問題ないかなーという気持ちもあります。
結局、検討に検討を重ねて選択した開発環境であっても後悔する事はある。
だからあまり悩まず、直感で選んじゃっても問題ないって事です。
開発環境を選んだ方へ
開発環境の選択が済んだら、次はアプリを開発してリリースしてみましょう。
また、折角リリースするのなら、マネタイズも考えて収益化を行いましょう。
そのための戦略をこちらで紹介しています。
「アプリやWEBサービスを作ってお金が稼ぎたい!」
けど
「何を作ればいいのか分からない!」と考えているあなたにはこちらをどうぞ。
以上、『【2017年版】スマホアプリ開発環境の種類一覧と選び方』の解説でした。
あなたのお役に立てれば幸いです。
補足
本記事は開発環境を選択する際の参考にしていただくことを目的としています。
そのため、間違った内容は記載しないよう努力しているのですが、間違っていたらごめんなさい。
もし間違った内容がありましたら、コメント欄やTwitterなどで、ご指摘いただけると大変助かります。
上記理由のため、訂正した箇所について履歴を残すことにしました。
2017-09-07 訂正
Xamarinについて「Microsoftが開発した」と記載してましたが、「Microsoftが買収した」の間違いだったので訂正しました。
- LINE公式アカウントの活用事例 - 2023年12月2日
- LINE公式アカウントの導入によるスタッフの教育 ~セキュリティ面の考慮も重要~ - 2023年12月2日
- LINE公式アカウントの導入によるセキュリティ面の懸念 - 2023年12月2日
コメント
わかりやすい説明をありがとうございました。
70歳になった私がFlash AS 3.0を捨てて、新しい言語をどれにしようかと迷っていましたが、大変参考になりました。
峯様
とても励みになるコメントありがとうございます!
大変嬉しいです。
70歳から新しい言語にチャレンジする精神、とても素晴らしいと思います。私も生涯現役できるよう精進致します!
とても参考になりました。
ゲームの開発環境を調べていて、コチラにたどり着きました。
本業はITでは無いんですが、ガンバってみます!
赤松様
コメントありがとうございます。
ゲームの開発環境ならUnityがオススメですね。
ぜひ頑張って作ってください!応援します!
いまちょうど迷っている真っ最中なのでとても参考になりました。iPhoneネイティブが正統派なのは分かっていますが、Cordovaを使ってのCross-Platformも魅力ありますね。
また、いろいろと発信してください。楽しみにしています!
工藤様
コメントありがとうございます。
参考にして頂き嬉しいです。
最近はwebも大分進化してきて、ネイティブでしかできなかったことが、webのみでも実装できることが多くなってきました。
そのため、個人的にはネイティブよりもクロスプラットフォームを意識したほうがコスパが高いと感じています。
ご期待に応えられるよう、また色々と発信するよう頑張ります!