clock2015.04.15 09:18
SERVICE
home

既存のスキルを使い健全な開発を目指す|スマホアプリ開発を考える(第2回)

AUTHOR :   ギックス

スマホアプリ開発は1つではない。Webアプリ開発者をスマホアプリ開発者にスキルチェンジさせる方法。

前回は、スマホアプリ開発の難しさに触れました。今回は、スマホアプリの開発方法から、既存のWebアプリ開発者のスキルを使用した、スマホアプリ開発について、記載しようと思います。

スマホのOS

ご存知の通り、日本で使われているスマホは、Apple社のiOS、またはGoogle社のAndroidの二極化になっています。この2つのOSの日本での2015年2月の販売シェアは、ほぼ半々であり、開発途上国は、スマホ本体が安く購入できるAndroidのシェアが多い傾向にあります。

ios-android-share

新しいスマホアプリが発売されたとき、日本では当然のようにiOSとAndroidの2つのOSに対応しています。しかし、2つのOSは、全く違う開発方法であるため、通常の方法ではプログラムなどの開発資源の共有を行うことは出来ません。本題に入る前に、簡単に2つのOSの開発方法の概要について、説明したいと思います。

iOSアプリ開発

iOSアプリの開発には、Xcodeという統合開発環境(IDE)を使用して、開発を行います。ボタンの配置等は、視覚的に行えるため、簡単なアプリならプログラム経験が浅い開発者でも開発できます。しかし、通信制御などの深部の開発を行おうとした場合、Xcode特有のプログラムの手続きに悩まされます。このような、コアの開発には、熟練プログラマが必要ですが、開発者が不足しています。なぜなら、Xcodeは、Mac OS、iOSのアプリ開発を行う専用の開発環境であり、ほかの開発言語の経験者とのシフトチェンジが難しいためです。

また、Xcodeは、Windowsパソコンでは開発が行えません。MacBookなどのMac OSが入っているパソコンを購入する必要があるため、初期投資を必要になります。

Androidアプリ開発

Androidアプリの開発には、Java言語でEclipseという統合開発環境(IDE)を使用します。Java言語は、若手のプログラマの殆どといって良いほど、扱うことが出来ます。また、Eclipseは、Java開発者の必須の環境です。そのため、iOSに比べ、既存のJava開発者をシフトチェンジは容易です。しかし、ボタンをタップしたときのイベント処理、画面レイアウトの開発など、既存のJava開発者が未経験の領域も多いです。

更に、近年のJava開発は、効率化を考え「Javaフレームワーク」と呼ばれるテンプレートのようなものを導入した開発スタイルが一般的になっており、Java開発者は、自分の担当の部分的なプログラミングスキルがあれば、開発が行えてきました。しかし、Androidアプリ開発には、「Javaフレームワーク」の考えがないため、担当範囲が広がり、それによって求められるスキルも高くなります。そのため、全てのJava開発者が、シフトチェンジできるとは限りません。

クロスプラットフォームによる開発方法

ここまで、iOS、Android双方のスマホアプリの開発について、問題点を列挙してきました。では、どうすれば健全な開発が行えるかと考えた場合、Webアプリの開発スキルを応用し、OSに依存しないクロスプラットフォームによって開発すれば良いのです。これから、クロスプラットフォームによるアプリ開発とは、どのような手法を取り入れているかについて、記載していこうと思います。

Webアプリ開発

最も簡単な方法が、ブラウザで動作するWebアプリを開発することです。スマホには、機種、OSを選ばず、全てブラウザがインストールされています。そのため、パソコンと同じWeb画面を閲覧、操作できます。最近のECサイトは、パソコン、スマホと別々の画面を用意していますが、ブラウザからサーバーに送られてくる端末情報からパソコンかスマホかを判断し、表示する画面を切り替えているだけのため、基本的に決済処理などのコアの処理は、パソコンと同じものを流用しています。そのため、開発言語は、Java、phpなどが使えるため、既存の開発スキルをそのまま流用できます。ただし、WebアプリでもFlash画面は、iOSで表示できないため注意が必要です。

アイコンからのアプリ起動に拘らないのでしたら、Webアプリでスマホ対応もありです。

ブラウザ機能を実装したスマホアプリ開発

スマホのブラウザ上でWebアプリを動作させたとき、当然のことですが、電波が届かない場所では、使用できません。また、カメラなどのスマホに搭載されている機能を使用することが出来ません。これらの問題を解決するために、ブラウザ機能を実装したスマホアプリを開発します。iOS、Androidともに開発環境でブラウザパーツ(コントロール)が用意されているため、パーツを利用すれば、ブラウザアプリを簡単に作成できます。

このブラウザパーツを使用すれば、画面をHTML、ボタンタップなどのイベント処理をJavaScript、カメラ操作などを各OSのネイティブ(iOSはXcode、AndroidはJava)で処理できます。これにより、画面とイベント処理は、iOSとAndroidで同じものを流用可能になり、OSに依存するカメラ制御などをネイティブで行うことで、自由度が高いスマホアプリを比較的容易に開発できます。また、HTML、JavaScriptなどのブラウザで表示する情報をスマホアプリ内部から取得することも可能なため、電波が届かない場所でもスマホアプリを操作できます。

PhoneGap/Cordovaによるスマホアプリ開発

ブラウザ機能を実装したスマホアプリを開発すれば、大部分をHTML、JavaScriptで開発できるため、技術者の負担は少ないですが、ネイティブ部分の開発には、新しいプログラミングスキルを身に付ける必要があります。これらをネイティブ部分を無償フレームワークとして提供しているのが、PhoneGapとCordovaです。

PhoneGapとCordovaは、Nitobi社が開発していたPhoneGapが源流になっています。その後、アドビシステムズ社がPhoneGapと共にNitobi社とを買収した際、枝分かれし、OSSとして開発が進められたフレームワークがCordovaとなりました。源流が同じであるため、現在、2つのフレームワークの開発上の違いは殆どありません。

PhoneGap、またはCordovaは、ブラウザ機能を持ったスマホアプリのようなものです。開発者は、ブラウザに実装するHTMLとJavaScriptを作成し、フレームワークに組み込みます。カメラなどのネイティブの機能を利用したい場合、JavaScriptの処理として、フレームワーク側で用意しているJavaScriptを使用するだけで、OSの違いを意識する必要なく利用可能です。cordova-phonegap-build

クロスプラットフォームで画面開発に注力することが健全な開発方法

スマホアプリの開発で最も困難な課題は、各OSごとに違う開発環境です。これらのOSに依存する課題を解決するため、ブラウザ機能を中核としたクロスプラットフォーム開発が、最近のスマホアプリ開発のトレンドとなっています。OSに依存しない部分の比率を上げることで、生産性を上げ、短期間にiOSとAndroidの両方のOSに対応したスマホアプリを開発しています。次回は、私自身のCordovaなどでの開発経験をもとに、クロスプラットフォーム開発のメリットとデメリットを書きたいと思います。

【以下連載記事】
1. スマホを取り巻く環境を見てみよう
2. 既存のスキルを使い健全な開発を目指す
3. クロスプラットフォームアプリ開発の落とし穴
4. クロスプラットフォームのすみわけ

SERVICE