スマホアプリ開発するなら どのプログラミング

あなたは「スマホアプリ開発は未経験なのだけど、まずどうすればいいのか知りたい!」「スマホアプリ作るのにどのツールを使えばいいかよく分からない」といったようなことを考えてはいませんか?

アプリを作成する方法は、WindowsやMacなどPCのOS、Android・iPhoneという機種ごとに、使用する開発環境やプログラミング言語は異なります。

実際にアプリ開発を始める前に、アプリ開発のために何が必要なのかという知識を得て、対象にするOSを選定したり、開発環境を整えたりする必要があります。今回は、スマホアプリ開発に「必要な知識」、「必要な環境」と「開発に使用される言語」について解説していきます。

スマホアプリ開発に必要な知識

スマホアプリを開発する流れ

開発と言ってもいきなりパソコンに向かってプログラムを入力するのではありません。

[別記事参照]  【超入門】プログラミングはじめの一歩 はじめてのプログラミング

でご説明したとおり、プログラミングの手順があります。

  1. 企画
    「こんなものが欲しいな」とか「もう少しこうだったらよいのに」など、アイデアをだしてどんな仕様のアプリにするかを検討します。
    アプリの使いやすさは「台本」で決まります。この段階で十分に使い勝手や機能を検討しておきましょう。
  2. 要件設計 
    1の企画を元に、画面の設計図を作ったり画面遷移といって次に出てくる画面の動きなど徐々に詳細な内容にしていきます。設計図は文章でなくても簡単な絵として描いておくと動作もイメージしやすくなります。
  3. 開発
    要件設計をもとに、いよいよプログラムを入力して実装していきます。開発は開発環境やプログラミング言語によって異なってきます。
  4. テスト
    スマホアプリのテストはスマホの実機ですることもありますし、シミュレーターを使用するがあります。テストで問題があればデバックを行い、開発とテストを繰り返します。
  5. 審査・公開
    開発したアプリをApp Storeにリリースするためには、審査・登録が必要です。登録することで「有料販売する」「アプリ内に広告を設置する」ことが可能となります。App Storeにアプリを公開し続ける限りは契約を続ける必要があります。電車で隣の人が、自分が作ったアプリを持っていたりしたらむちゃくちゃ嬉しいですよね。

開発前に知っておきたい スマホアプリの種類

私たちが普段何気なく使っているスマホアプリには、実はさまざまな種類があります。まずは知っておきたいスマホアプリの種類それぞれの特徴などについてご紹介したいと思います。

ネイティブアプリ

ネイティブアプリとは、アプリをGoogle Play や App Store からスマホなどの端末にダウンロードし、端末内で演算や処理、保存をさせてプログラムを実行させるアプリのようなものを言います。スマホが動作しているOSが直接実行できるアプリのことです。

Android用アプリではJava言語を使用し、iOS用アプリではObjective-CやSwiftなどの言語を使って開発します。

<メリット>
ダウンロードの手間はかかりますが、一度インストールしてしまえば端末上で演算を行いアプリ内で完結するため、動作は軽快です。また、カメラやGPSを起動させるといった、端末のコントロールもしやすいといった特徴もあります。

さらに、公式のアプリマーケットに登録することができるので、ユーザーが容易に検索でき、信頼性や集客力に優れている点もメリットの1つです。

<デメリット>
逆にデメリットとしては、OSの種類ごとにプログラムを書く必要があったり、アプリマーケットなどの登録や審査などもあったりと、開発コストやリリースまでの時間がかかってしまう点が挙げられます。

また、プログラムの容量が多くなってしまうことがあり、古い端末の場合は、インストールできなかったり、メモリ不足になったりすることもあります。

ネイティブアプリに向いているコンテンツとしては、スケジュール帳や目覚まし時計、多機能カメラなど、ネット通信を多用せず、端末単体で使用するものが挙げられます。

Webアプリ

Webアプリは、スマホなどの端末に特別なアプリをダウンロードすることなく、Webブラウザ(ChromeやSafari)上で演算や処理、保存を行う方式のことを言います。開発は主にWebサイトの作成に必要なHTMLやCSS、JavaScriptを使用します。
メルカリやFaceBookのように他社とのデーのやり取り、共有が可能となります。

<メリット>
端末に専用アプリをダウンロードする必要がなく、端末のメモリを圧迫したりすることがありません。またOSに依存されないため、開発コストや時間が少なくて済み、アプリマーケットを通す必要もないので、開発からリリースまでが比較的容易に行えるのも魅力です。

<デメリット>
デメリットとしては、動作速度はサーバや通信環境に依存するほか、ネイティブアプリに比べると動作のレスポンスが遅い、カメラなどのデバイス機能のコントロールが難しいなどが挙げられます。

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

ハイブリッドアプリ

ハイブリッドアプリとは、ネイティブアプリWebアプリの特徴を組み合わせたタイプのアプリです。ネイティブアプリのようなレスポンスや機能性を備えながら、Webアプリのような開発環境で作成できるというメリットがあります。

ネイブリッドアプリには主にWebサイト作成に必要なHTML5やCSS、JavaScriptなどの言語を中心に開発を行いますが、アプリの種類や開発内容によってはJavaやObjective-Cといったネイティブアプリに必要な言語も使用します。OSに依存しないアプリ開発ができるほか、コンテンツの更新が容易に行えたり、アプリマーケットに登録することで、安定した集客を期待することもできます。

ハイブリットアプリの代表的なコンテンツとしては「クックパッド」が挙げられます。クックパッドはWebサイトからも閲覧することができますが、専用のアプリをダウンロードして使うことで、「より素早く」、「使いやすく」コンテンツを楽しむことができます。「Gmail」や「Twitter」なども、専用アプリをダウンロードすることで、素早くメールを確認できたり、つぶやきをすぐ発信することもできます。

このように一部のWebアプリは今後ハイブリッドアプリに移行するとみられ、これからも高い需要が見込める開発分野と言えるでしょう。

これからスマホアプリ開発に取り組む方は、上記の3つのアプリの特徴を理解し、最適なものを選択するようにしてみてください。

目的に応じた種類を極端に処理が遅かったり、使いづらかったりといった問題が発生する場合があるので。企画の段階から適切な種類を検討するようにしましょう。

スマホアプリ開発時に使用されている言語の種類

iOSAndroidの開発言語の違い

スマホアプリ開発では、Appleの「iOS」とGoogleの「Android」のどちらをサポートするかから始まり、アプリの種類・開発手法をどうするか決めていかなければなりません。

それぞれ開発言語や開発環境が異なり、iOS系のアプリケーションは基本的にObjective-Cという言語を使用し、開発環境にはXcodeを使用します。一方、Android系にはJavaという言語、Android Studioという開発環境を用います。

ただし、最近ではiOS系の新言語Swiftが登場したり、両方のOSに対応した言語が人気を集めたりとアプリ開発の状況は変わりつつあります。

アプリ開発に使用される言語の種類と特徴

実際にそれぞれの言語の特徴を見ていきましょう。

Java

GoogleがAndroidアプリの公式開発言語としているオブジェクト指向のプログラミング言語。さまざまなデバイスで使われている一般的な言語です。開発者は再利用可能なコードを作成できます。Javaは習得が難しいですが、Androidアプリの統合開発環境(IDE)「Android Studio」には開発に便利な機能が各種備わっています

Androidアプリを開発する際には、Java言語の基本的なプログラミング作法を学んだうえで、Androidアプリ固有のAPIの利用方法などを身につける必要がありますが、入門書も多く、初心者にも学びやすい環境が整っているといえるでしょう。

Kotlin

UberやPinterest、Evernoteなどが採用している新しいAndroidアプリ開発言語。企業の開発者の間でも人気が高いです。Javaコードとの相互運用が可能です。文法がシンプルで、Javaにはない便利な機能を幾つか備えています

KotolinはSwiftとよく似ている」という感想を抱くエンジニアもあり、iOS向けアプリとAndroidアプリの双方の開発を手掛けるような場合は、SwiftとKotolinを使うことで開発を効率よく進められる可能性もあります。

難点としては、やはり新しい言語であるだけに、情報ソースが少ないということ。初心者が独学で学ぶにはややハードルが高いかもしれません。まずはJavaやSwiftなどでアプリ開発の基礎を学んだうえで、その知識を足掛かりにKotolinにトライしてみるのがおすすめです。

Objective-C

AppleのmacOSとiOSを対象としたプログラミング言語。多くの開発者はAppleの新しい開発言語Swiftに移行しつつあるが、iOS用のソフトウェア開発キット(SDK)やサードパーティーの大半のコードライブラリは依然としてObjective-Cに依存しています。そのため開発者は今後も、高度なプログラムの作成や既存アプリの修正にはObjective-Cを使うことになりそうです。

現在もiPhoneやiPad向けのアプリ開発に広く利用されていますが、後述するSwiftの登場により、現在ではやや影が薄れつつあります。言語仕様にやや癖があり、初心者には若干ハードルの高い言語だといえるかもしれません。

Swift

Appleが独自の言語として2014年に公開し、その1年後にオープンソース化した開発言語。コード量が少なくて済み、特殊文字が少ないので、Objective-Cよりも読み書きが簡単です。ただしiOSアプリの開発では多くの場合、Objective-CとSwiftの両方のスキルが求められます。

Swiftはいわば「Objective-Cに代わるもの」として誕生した言語で、Apple社はSwiftによるアプリ開発を推奨しています。Objective-Cと比べて言語仕様がシンプルで、習得も容易だといわれています。

今からiOS向けアプリの開発を学ぶのであれば、まずはSwiftから始めるのがおすすめです。

C言語/C++

C言語は処理速度がとても速いので、Javaでは苦手な画像処理などは、Android系であってもC言語で開発することもあり、一部を補う用途でも使われます。また、iOS系はObjective-Cがネイティブ言語ですが、元となっているのはC言語であるため、これらの知識も必須と言えます。

C#

Windowsにしか使えないと思われがちなC#ですが、Macでも「Xamarin」を使うことでAndroidアプリ開発が可能になります。

ビルド時にネイティブコードにコンパイルされるため、実行速度も高速です。開発は「Visual Studio」で行い、統合されたUIデザイナーで画面設計もできます。

Xamarin・Visual Studioともに無償で使用できます。

Python

習得のしやすさから人気が高い。インデントでコードブロックを表現でき、少ない文字数でコードを書ける。AndroidアプリとiOSアプリに利用でき、他の開発言語との連携も可能です。

HTML5CSSJavaScript

HTML5、CSS、JavaScriptは、スマホ向けのWebコンテンツを制作する際によく使われる言語です。スマホ用にコンテンツを見やすくしたり、操作しやすくしたりなど、Webサイトのレイアウトでの用途やWebアプリの開発にこれらの言語を使います。

最近ではiOS、Androidなど複数のプラットフォームで動くハイブリッドアプリケーション開発にもこれらの言語は必須と言え、いかに利用者に喜ばれるコンテンツを作れるかが問われる部分です。

JavaScript

Androidアプリと同じく、iOSアプリにも「Cordova」などのフレームワークがあり、JavaScript+HTML+CSSでの開発が可能です。

こちらは、開発自体はWindowsでも問題ありませんが、ビルドはMacで行う必要があります。もし、どうしてもWindowsのみで開発したい場合にはビルドサービスを使いましょう。

Monaca」など、開発環境と統合されたサービスもあります。



スマホアプリの開発に必要な環境

開発環境を構築が必要となりますが、初心者にとってはハードルが高いですよね。御多分に洩れず『Android Studio』もXcode』もインストールするには時間がかかります。

Androidの開発環境(ネイティブ)

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

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

Androidの開発言語

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

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

Android のネイティブアプリを開発するための統合開発環境である Android Studio では、次世代のリビジョン v3.0.0 で Kotlin のサポートがデフォルトになっています。

ですから、これから始める方は、必ず『Kotlin』を使うようにしてください。

Androidの開発OS

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

  • Windows
  • Mac OS X
  • Linux

IPhone(iOS)の開発環境(ネイティブ)

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

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

iPhoneの開発言語

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

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

クロスプラットフォーム

まず、クロスプラットフォームとはどういうものか、そしてどのようなメリットがあるのかについて基本を説明しましょう。

通常、プログラム開発には上記のような各OSに対応したツールで個別に開発する必要があります。iOS とAndroidそれぞれに対応した開発を必要としています。

このクロスプラットフォーム開発ツールを使えば、どちらのプラットフォームでも同じ処理を 行う部分は共有し、異なる処理をおこなう部分はそれぞれの仕様に応じてカスタマイズすることができます。これによって、開発にかかる時間を大幅に削減することが可能になりました。

しかし、最近になり1つのツールで双方に対応したアプリを同時に開発できるクロスプラットフォーム開発ツールがリリースされ注目を集めています。以下でいくつかのツールを紹介します。

1.Visual Studio

Visual Studioはマイクロソフトが提供する開発ツールです。基本的にWindows上で動作するプログラムを開発するツールですが、Xamarin やCordovaなどの拡張機能を実装することによりC#やHTML5でネイティブアプリを開発することができます。

Mac OS XではVisual Studio Tools for Xamarinを使います。

Visual Studioの公式サイト

2.Xamarin

Xamarinは、C#で記述し.Net環境でクロスプラットフォーム開発がおこなえるツールです。OSに依存するインターフェイスやデバイスなどの処理についてはソースを分け、ロジックについては共通化するという特徴があります。

1,のVisual Studioの拡張機能を使用します。

Xamarinの公式サイト

3.Cordova

Cordovaは、以前はPhoneGapと呼ばれていた比較的歴史の長い開発ツールです。オフィシャルツールとしてCordova CLIが提供されており、これを利用するとコマンドラインツールでPC上でのシミュレートからビルドまでおこなうことができます。

JavaScriptやHTMLといったウェブ開発の技術でモバイルアプリを開発できる点も特徴です。

cordovaの公式サイト

4.React Native

React NativeはFacebookによって開発されました。こちらもオープンソースのフレームワークです。3のCordovaと異なるところはReact Nativeは「ネイティブな」クロスプラットフォーム対応のモバイルアプリを開発できる点です。

React Nativeでは、JavaScriptのみを使用してモバイルアプリを構築できます。これはReactと同じデザインを使用しており、宣言的なコンポーネントから豊富なモバイルUIを作成できます。

React Nativeの公式サイト

5.Monaca

使い慣れたVisual Studioでクロスプラットフォーム開発をおこなえるのがMonacaです。もちろんクラウドビルド可能となっています。

面倒な開発環境のセットアップなしで利用でき、開発スキル習得に関する多くの講座が開講されているため初心者でもとっつきやすいツールであるといえるでしょう。

Monacaの公式サイト



まとめ

プログラミングの知識や経験のない方は、スマホアプリ開発を始めるのをためらってるかもしれません。そんな初心者の方がスマホアプリ開発を行うため、どのような知識が必要なのか、開発のためにどのようなツールが必要なのかご紹介しました。

以下に要点をまとめると

  • MacがないとiPhoneのアプリは作れなかったが今は作る方法がある
  • スマホアプリ種類には、WEBアプリ、ネイティブアプリ、ハイブリッドアプリがある
  • 開発環境にはAndroidのみ、iOSのみ、両方一緒に作れるもの(クロスプラットフォーム開発ツール)がある
  • 動作が軽快なアプリが作りたいならネイティブアプリが良い
  • 最近のハイブリッドアプリは侮れない

多くの開発ツールをご紹介しましたが、どれか1つに決められない方は

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

是非参考にしてみて下さい。

シェアする

  • このエントリーをはてなブックマークに追加