CONTENTS

開発会社が選ぶおすすめのアプリ開発言語とは?

GeNEE_アプリ開発言語のおすすめ

「アプリ開発」に使用する開発言語は多岐に渡ります。アプリが動作する環境にもいくつか種類があり、その環境上で開発できるアプリ開発言語にも違いがあります。アプリの開発を成功させるためには、アプリを載せる環境やアプリ開発言語のメリット、デメリットを適切に理解することが大切です。そこで、本記事では開発経験のない方や初心者の方を対象として、各アプリ開発言語のメリット、デメリット、具体的な特徴を説明できたらと思います。

 

(1)アプリ開発における「環境」とは何か

アプリ開発を載せる環境にはいくつか種類がございます。環境によって、使用するアプリ開発言語も異なってきます。環境は大きく3つに分かれます。1つ目は、iPhoneなどのスマートフォン端末やiPadなどのタブレット端末などに直接インストールする「ネイティブアプリ」と呼ばれるもので、環境は「端末」そのものになります。世間一般的には、スマホアプリとも呼ばれています。2つ目はGoogle ChromeやEdge、SafariなどのWebブラウザを経由して動作する「Webアプリ」と呼ばれるもので、こちらは「ブラウザ」環境上に載せるイメージです。最後が上記の「ネイティブアプリ」と「Webアプリ」の2つを組み合わせた「ハイブリッドアプリ」と呼ばれるもので、アプリ自体は「端末」環境上に載せるのですが、アプリ内の一部の画面や機能をブラウザ環境で作っており、それぞれの特徴を持ち合わせることからハイブリッドと呼ばれています。次章では、上述した「ネイティブアプリ」、「Webアプリ」、「ハイブリッドアプリ」の具体的な特徴について、触れていきます。

 

(2)ネイティブアプリの特徴とは

先述しました通り、「ネイティブアプリ」とは、スマートフォン端末やタブレット端末に直接アプリをインストールして利用するアプリです。PC端末にインストールするアプリもネイティブアプリ(スマホアプリと区別するために、PCアプリとも呼ばれます。)として扱われます。有名なPCアプリとしては、ビジネスチャットアプリのSlackや音声通話アプリのSkypeなどがあげられます。ネイティブアプリは、iOSアプリ、Androidアプリ、PCアプリに大別されます。それぞれのアプリによって、開発する言語も異なってきます。ネイティブアプリのメリットとしては、

 

・オフラインでも一部の機能を使用できる

・端末に搭載された機能、性能を活用できる

・Webアプリ以上の機能表現ができる(可能性が高い)

・Webアプリ以上にUI/UXを追求できる(可能性が高い)

・Life Time Value(顧客生涯価値)の向上を狙いやすい

 

などがあげられます。最近ではWebブラウザも進化しており、それに伴い、Webアプリの機能や性能も向上を見せていますが、それでもまだネイティブアプリの方がアプリサービスとしての優位性はあると思います。ネイティブアプリの場合、スマートフォン端末やタブレット端末に直接インストールしますので、Push通知機能や写真撮影機能、位置情報機能(GPS)などの機能と連携が可能です。こちらに加えて、ネイティブアプリはオフライン環境でも使用ができるので、アプリ上に動画コンテンツなどをダウンロードしておくと、NetflixやHuluなどのコンテンツをインターネット接続無しで視聴できます。また、スマートフォン端末やタブレット端末のホーム画面にネイティブアプリがインストールされますので、Webアプリと比べた場合、ユーザの目に留まる位置にアプリを配置できますので、継続利用されやすい傾向にあります。継続利用の結果、Life Time Valueなどの指標が向上します。

 

ただネイティブアプリにもデメリットがあります。具体的には、

 

・OSの度重なるアップデートに対応しなければならない

・定期的なメンテナンスが必要

・Webアプリと比べると、開発コスト(お金、時間ともに)が高い

・App StoreやGoogle Playのストア運営側の審査が必要

・アプリ手数料が発生する

・コンテンツによっては、ストア上に掲載できない可能性がある

 

などです。Webアプリと比較すると、ストア運営側の制約を受けますので、時間もお金もかかります。プログラムコードを修正後、ストア運営側に即座に申請しても内容によっては数日待たされるケースもあり、そのあたりも一つのリスクとして考える必要があります。またコンテンツの内容によっては、ストア運営側が申請を受理しない可能性もあります。特に、App Storeを運営するApple Inc,は、ストアの健全性を保つため、アプリ審査を厳格に行っています。

 

先述しました通り、ネイティブアプリにはiOSアプリ、Androidアプリ、PCアプリがあることをお伝えしました。またそれぞれのアプリによって、使用するアプリ開発言語も異なります。iOSアプリの場合、おすすめしたい開発言語はSwift(スイフト)になります。Objective-Cと呼ばれる言語も有名ですが、Objective-Cの上位互換がSwiftになり、Swiftの方がリッチな表現、機能実装、コードの品質が綺麗に保たれやすいといったメリットがあります。Swiftは、2014年にApple Inc,によって開発されたアプリ開発言語です。iPhoneなどのスマートフォン端末、iPadなどのタブレット端末、Mac bookなどのPC端末のアプリを開発する際に、使用されます。一方のObjective-Cは、古くから存在するC言語を踏襲し、Apple Inc,の製品で広く利用されているアプリ開発言語です。2000年後半に登場した初期のiOSアプリの大半は、このObjective-Cで作られていました。2014年にSwiftが登場した後はSwiftにコードを置き換える事例も増えていますが、今でもObjective-Cで動くiOSアプリは多数存在しています。そのような実情を踏まえると、保守性等の観点からObjective-Cという言語が消滅することはないとは思います。ただ、Apple Inc,が毎年主催する、WWDC(Worldwide Developers Conference)と呼ばれる国際イベントの中で、Swiftの魅力を訴求しており、それに伴い、年々Swiftを扱うアプリエンジニアの数も増え続けていますので、今後のiOSアプリ開発にはSwiftが選ばれるのではないでしょうか。

 

次に、Androidアプリについてです。Androidアプリの開発には、主にKotlin(コトリン)かJavaが用いられます。Swiftと同様、Kotlinも比較的新しいアプリ開発言語でして、2011年に誕生しました。今では、Google LLCからAndroidアプリ向け開発言語として公式認定を受けています。KotlinはJavaをベースに改良が加えられたアプリ開発言語でして、Javaよりもシンプルなプログラムコード生成が可能となっています。またJavaとの互換性も持ち合わせていますので、Javaで作られたアプリをKotlinに変換させることもできます。このようなメリットがあるため、弊社ではKotlinによるAndroidアプリ開発を推奨しております。一方のJavaは1996年にサン・マイクロシステムズ社によってリリースされたアプリ開発言語です。Google LLCが開発に使用する三大開発言語(Java, Python, C++)の一つでもあり、全世界的に有名な開発言語ですが、2011年に登場した改良版JavaのKotlinと比べると、コード量が増える傾向にあります。コード量が増えると、開発にかかる実装コストも比例して増えてしまいますので、速度感やコスト感を踏まえますと、Kotlinに軍配が上がるでしょう。

 

近年では、クロスプラットフォーム開発と呼ばれる、1つのプログラムコードで2つのネイティブアプリ(iOSアプリとAndroidアプリ)を動かす環境が整ってきました。1つは、Flutter(フラッター)と呼ばれるアプリ開発フレームワークです。こちらは2018年にGoogle LLCによって作られました。クロスプラットフォーム開発によって、開発すべきコード総量を減らせるメリットはあるのですが、Push通知機能や写真撮影機能、位置情報機能など、端末独自のOSの影響を受ける部分があり、技術実装上の課題を持つといったデメリットも生まれやすいです。Flutterと同様、React Native(リアクト・ネイティブ)もクロスプラットフォーム開発に使用されるアプリ開発フレームワークです。こちらはFacebookによって開発されました。ただ、できたばかりということもあり、度重なるアップデートが行われており、現段階ではまだ安定性があるとは言えない状況です。

 

(3)Webアプリの特徴とは

ネイティブアプリとは異なり、Webアプリは、Google ChromeやEdge、SafariといったWebブラウザ上で動作するアプリを指します。一例をあげますと、最近SaaS系のサービスが広がりを見せていますが、Webブラウザ上で動くMoney ForwardやSmart HRなどもWebアプリの一種となります。スマートフォン端末やPC端末など、インターネットに接続できる端末があればインストール不要で利用できる点がWebアプリの特徴と言えます。

 

Webアプリのメリットとしましては、

 

・ネイティブアプリと比べて、機能改修がしやすい

・ネイティブアプリと比べて、開発コストが低い

・ネイティブアプリと比べて、フレームワークが充実している

・OSによるアップデートの影響をほぼ受けない

・アプリストアを経由しないので、審査手続き等が不要

・手数料等もかからない

 

などがあげられます。先程「フレームワーク」という言葉を使用しましたが、こちらは、よく使用される共通機能を一つのパッケージとしてまとめたもので、フレームワークを利用することにより、開発工数を減らすことが可能となります。Webアプリの場合、App StoreやGoogle Playといったストアに登録する必要がありませんので、審査無しでブラウザ上にWebアプリを置くことができます。ネイティブアプリの場合、ストア運営側に手数料を支払う必要がありますが、Webアプリの場合はこちらの手数料が発生しないことも一つの魅力としてあげられるでしょう。またスマートフォン端末やタブレット端末に直接インストールするわけではありませんので、OSの影響をほぼ受けません。そのため、アプリ上市後のアップデート対応などもネイティブアプリと比べると、少なく済ませることができます。最近ではPWA(Progressive Web Apps)と呼ばれる、Webアプリをスマートフォン上でネイティブアプリのように動作させる仕組みが整いつつあり、Webアプリであってもネイティブアプリと同じように、高速な表現、リッチな表現を実現できるようになってきました。機能全般で見ると、まだネイティブアプリに軍配が上がりますが、近い将来、WebブラウザとWebアプリの進歩により、機能や性能面では大差が付かないようになるかもしれません。

 

次に、Webアプリのデメリットです。ネイティブアプリのご説明の際に少し触れたのですが、やはりWebアプリはネイティブアプリと比べて、リッチな表現や端末に搭載された機能との連動部分に弱みがあります。例えば、ネイティブアプリで動くRPGゲームのようなリッチなコンテンツ表現を実現したい場合、Webアプリでは難しいでしょう。またWebアプリはブラウザ経由が前提となりますので、インターネットに接続できる環境がない場合、Webアプリを動かすことはできません。この辺りも大きなデメリットとしてあげられるでしょう。

 

続いて、Webアプリの開発体制について触れたいと思います。小規模なWebアプリでしたら、大きくフロントエンドエンジニアと呼ばれる人間とバックエンドエンジニアと呼ばれる人間が役割分担して開発することになります。フロントエンドとは、Webブラウザ上でWebアプリを操作するユーザが実際に目にするビジュアルの部分を意味します。一方のバックエンドは、裏側の機能や性能など、ユーザからは見えない部分を意味しています。いくつか例を挙げますと、フロントエンドエンジニアは画像の選定やテキストの調整、ボタンの配置、デザイン面などを作り、バックエンドエンジニアは新規会員情報のデータベース登録・管理、ユーザの挙動に合わせたコンテンツの表示といった機能部分を作る存在です。主に使われるアプリ開発言語(一部マークアップ言語を含む。)は以下の通りです。

 

<フロントエンド側>

・HTML

・CSS

・JS(Java Script)

 

<バックエンド側>

・Ruby(Ruby on Rails)

・Python

・PHP

・Scala

・Perl

・Java

・Go

・C言語

 

フロントエンドエンジニアは、HTML, CSS, JSを組み合わせながらユーザから見える部分を作り込んでいきます。バックエンドエンジニアはお客様のニーズなどに沿って技術選定を行い、上記のアプリ開発言語を用いて動的部分(機能など)を作り込んでいきます。上記だけでは、なかなか伝わりにくい部分もあるかと思いますので、各言語についてもう少し説明していきます。

 

まずHTMLですが、こちらはHyper Text Markup Languageと呼ばれるもので、正確にはアプリ開発言語ではなく、マークアップ言語と呼ばれるものです。例えばですが、「タイトルは〇〇〇」、「本文には▲▲▲」、「フッダーには×××」といった形でWebアプリの構造部分を作ります。続いてCSSですが、こちらはCascading Style Sheetsと呼ばれるもので、Webアプリのビジュアル(見映え)を調整するための言語となります。具体的には、フォント、フォントサイズ、カラーなどのバランスを調整するために使用されます。前述しました通り、フロントエンド開発にも便利なフレームワークが存在しており、最近では、Bootstrap(ブートストラップ)と呼ばれるものがよく使われています。このフレームワークは、HTML, CSS, JSによって構成されています。続いて、JS(Java Script)ですが、こちらの言語を使用すると、ポップアップ表示や画像の挙動調整といったことが実装できます。Bootstrapと同じように、フレームワークが多数存在しており、有名なものをあげると、Angular、React、Vue.js、などがあります。

 

上記はフロントエンドエンジニアが使用する言語になります。続いて、バックエンドエンジニアが使用する言語についても少し触れたいと思います。まずはRuby(Ruby on Rails)です。こちらは日本人エンジニアであるまつもと・ゆきひろ氏によって生み出されたオブジェクト指向型のスクリプト言語になります。生成するコード量が少なくシンプルなため、プログラミングを学ぶ初学者向けにも推奨されるアプリ開発言語です。日本人エンジニアによって開発されたアプリ開発言語ということもあり、ブラウザ上に豊富な情報があり、解説書なども多数存在しています。先程あげたBootstrapやAngular、Reactのように、RubyにもRuby on Railsと呼ばれるフレームワークが用意されています。フレームワークを活用することで開発速度、改修速度が上がりますので、スタートアップ企業などによく好まれるアプリ開発言語です。続いて、PHPです。グローバルに展開されるCMS(Contents Management System)の一つ、Word Pressの動的要素にはこちらのPHPが使用されています。Rubyと同様に、文法や仕様がとてもシンプルで分かりやすく、初学者向けのアプリ開発言語として選ばれやすいです。PHPにもフレームワークが用意されており、有名処ではLaravel(ララベル)、CakePHP(ケイクピーエイチピー)、Symfony(シンフォニー)などがあげられます。

 

おわりに

いかがでしたでしょうか。アプリ開発を行う際、アプリ開発言語の選定も重要です。詳細が分からないからと言って開発会社に丸投げする方がいましたら非常に危険な行為です。アプリ上市後に後悔がありませんように、本記事の観点からアプリ開発について調査いただくことをおすすめします。もしご不明な点等がございましたら、GeNEE社では無料相談等も受付しておりますので、お気軽にご連絡いただけたらと思います。

 

株式会社GeNEE ブログ編集局

https://genee.jp

  • コンテンツ
  • 開発会社が選ぶおすすめのアプリ開発言語とは?
↑