RAD Studio XE7でアプリをマルチデバイス化―PC/Mac/モバイルアプリを単一コードベースで実現!

この記事を読むのに必要な時間:およそ 3 分

はじめに

こんにちは,伊賀敏樹です。先日,スマートフォンをiPhone 6に変えて楽しいさかりです。最近のスマートフォンってすごいですよね。こんな小さなボディに通信機能,バッテリー,そしてもちろんコンピュータ機能一式と,よくコンパクトに収まっているものです。NEC PC-8001や東芝Librettoの購入および利用経験のある私としては隔世の感があり,IT関連技術の進歩に驚くとともに,そのメリットをありがたく享受させてもらっています。

IT関連技術は,広く世間に普及,浸透してきました。みなさんの身の回りでも,スマートフォンやタブレットなどのモバイルデバイスがどんどん増えてきているのではないでしょうか。また一方で,喫茶店などでちょっとPCを使うという方々の間で,MacBookが急速に普及しだしています。MacBookって,機能/性能が小気味良く,デザインも格好良いですよね。

アプリ開発の過去と現在

これまでのソフトウェア開発

スマートフォンやタブレットなどのモバイルデバイスは,⁠基本的には⁠ハードウェアにあたります。一般にハードウェアを利用,活用するためには,ソフトウェアの存在が不可欠です。そして,それらのソフトウェアは,ハードウェアと⁠基本的に⁠セットとなるOSに対応する形で開発される必要があります。

ひと昔前までは,OSとしてMicrosoft Windowsを搭載したハードウェアが驚くほど広く普及しており,Windows向けのソフトウェアを開発すれば良いことが多かったです。しかし,スマートフォンやタブレットなどのモバイルデバイスの普及により,その⁠一般法則⁠は成り立たなくなってきました。スマートフォンやタブレットには,iOSやAndroidといった,Windowsとは異なるOSが搭載されているからです。Macの場合はOS XがOSにあたります。このため,スマートフォンやタブレット,Mac向けのソフトウェアを開発するには,各OS向けのソフトウェアを開発する必要があるのです。バリエーションが富んできて楽しいのやらたいへんなのやら……。

このような状況により,これまでWindows向けのソフトウェア開発に注力していた方々にとっても,Windows以外のOS向けのソフトウェア開発の方法を考える必要が生じてきているのではと推察します。

現在流行しているハードウェア

それでは今の時点で流行しているもの,今後直近で流行しそうなハードウェアには,どのようなものがあるでしょうか。私の身の回りでは,Windowsデスクトップ,Windowsノート,MacBook,iPhone,iPad,Androidフォンが流行している,あるいは普及しているように見えます。また,直近で流行しそうなものとしては,WindowsタブレットやGoogle Glass,Apple Watch,Android系腕時計などのウェアラブル端末が挙げられると思います。みなさんの周辺でも似たような傾向にあるのではないでしょうか。

ソフトウェア開発はハードウェアに左右される

これらのハードウェアが流行するということは,実は,それに付随するOSに適合したソフトウェア開発の必要性を示しています。つまり,Windowsアプリ,OS Xアプリ,Windowsタブレットアプリ,iPhoneアプリ,iPadアプリ,Androidフォンアプリ,Androidタブレットアプリ,Google GlassやApple Watchなどのウェアラブルアプリをソフトウェアとして開発する必要があります! なんだか対応しないといけないOSの種類が多いですね。

さらにこれは,異なる開発環境と異なるプログラミング言語を用いて,各ソフトウェアを開発する必要があることも示唆しています。

Webアプリケーションという解

そのような,異なるOS,異なる解像度の画面,異なるルック&フィール(異なるUIガイドライン)に対応するための最も一般的な方法は,アプリをHTML5(リッチなHTML)で開発することです。各デバイス向けのブラウザはさまざまな形で提供されています。HTMLでアプリを作ってしまえば,ブラウザを搭載したさまざまなデバイス,さまざまなOSの上で動作するソフトウェアを開発できます。

Webアプリケーションの限界

ところが,そうも簡単ではない状況があるのです。というのも,モバイルデバイスの多くは各デバイス固有の機能を搭載しており,アプリでもそれらの機能を利用できることが求められます。しかし,HTML5/HTMLベースのWebアプリケーションでは,デバイス固有の機能を引き出すことは難しいのです。

HTML5ではデバイス固有の機能を引き出しづらいが,一方でデバイス固有の機能を引き出すことが望まれる。こういった事情から,Webアプリケーションではないもの,そう,ネイティブアプリが求められる状況が出てきたのです。

デバイス固有の能力を引き出すネイティブアプリ

デバイス固有の能力を引き出したい,だからネイティブアプリで開発する,という流れは非常に自然です。実際,この記事の執筆時点でも,数多くのすばらしいネイティブアプリが開発および提供されています。これでデバイス固有の能力を引き出せるソフトウェアを開発できます。

ネイティブアプリ開発の難しさ

しかしながら,またもやそうも簡単ではない状況があるのです。一般的にネイティブアプリの開発環境は,そのOSを提供する企業や組織から提供されます。そして,その開発環境を用いて開発できるのは,たいていその企業や組織が提供するOSのみに対応するアプリです。たとえば,iPhoneやiPadのアプリを作るためにはXcode上でObjective-CやSwiftというプログラミング言語を用いてアプリ開発をし,AndroidフォンやAndroidタブレットのアプリを作るためにはEclipse ADT上でJavaに似たプログラミング言語を用いてアプリ開発をし,果てはWindowsのアプリを作るためにはVisual Studio上でC#やVisual Basicといったプログラミング言語を用いてアプリを開発することになります。OSを提供する組織や企業の単位で開発環境やプログラミング言語が分断されてしまうのです。

これをそのまま受け入れると,複数の開発環境を駆使して複数のプログラミング言語を扱い,複数の開発プロジェクトを管理しないと,マルチデバイスに対応したソフトウェアを提供できないことになります。しかも,さらにデバイスごとに複数の画面解像度への対応も必要になります。さすがにここまで手間がかかると非効率的過ぎて困りますね。

著者プロフィール

伊賀敏樹(いがとしき)

1968年生まれ。筑波大学卒業。エンバカデロ・テクノロジーズにて,ソフトウェア開発技術に関するエヴァンジェリズム活動や製品販売の技術的支援などを行っている。C++言語やJava言語を中心としたプログラミング技術をもち,さまざまなシステム開発への従事経験を有す。趣味はヴァイオリン演奏で,アマチュアオーケストラなどに所属しています。

コメント

コメントの記入