Special
» 2015年12月01日 10時00分 UPDATE

Windows 10時代のアプリ開発に乗り遅れないために(3):将来を見据えたWindows 10アプリ開発――クロスプラットフォーム対応はどうする?

将来的に社内システムをPCだけでなく、スマートフォンやタブレットにも最適化して、生産性を高めようと考えるならば、Windows OS以外の環境も視野に入れるのは必然だ。その場合、クロスプラットフォーム対応の開発環境が大きなポイントとなる。

[鈴木淳也(Junya Suzuki),PR/ITmedia]
PR
このエントリーをはてなブックマークに追加

 本稿では過去2回(第1回第2回)にわたって、旧Windowsと旧Internet Explorerのサポート期限を目安に、Windowsシステム上で構築された過去のアプリケーション資産をいかに新環境へ移行させていくのかを考えてきた。

 今回はもう少し将来を見据えて、Windowsを含む複数のプラットフォームが混在するビジネス環境において、どのようにアプリケーション開発を進めていけばいいのかを検討してみる。

Windows以外のプラットフォームをターゲットにする必要性

 デスクトップやノートなど、いわゆるPCのみの環境をアプリケーション開発対象とした場合、現状では基本的にWindows 10をターゲットにしていれば問題ない。Net Market Shareの2015年9月時点でのデータによれば、デスクトップOSにおける世界シェアはWindows 7が6割弱と圧倒的で、次いでWindows XP、Windows 8.1、そしてWindows 10と続く。

tm_1512_vs2015_01.jpg 2015年9月の世界におけるデスクトップOSシェア(出典:Net Market Share)

 Net Market Shareのデータは必ずしも実態を反映したものではないため、あくまで参考値と捉えてほしいが、それでもグラフ中に現れているWindows OSのシェアを合計すると88.69%と全体の約9割を占めている。

 最近ではiPhoneブームに押されてMac OS Xのシェアが微増しているが、それでも1割には満たない。Win32やUWP(Universal Windows Platform)アプリといった、いわゆるWindowsネイティブアプリの数々はOS Xではそのまま動作しないが、ParallelsやVMwareなど仮想マシンを活用することである程度は動作可能になる。

 また、以前にも触れたように、IE6やIE8などIE依存の企業Webアプリケーションが存在していた場合、将来的にこうした環境はサポートされない可能性があり、Microsoftでも「Edge」などの最新のWeb技術を使ったWebブラウザへの乗り換えを推奨している。

 そのため、今後4〜5年をかけて企業のイントラネットを中心としたIE依存のシステムは順次HTML5+JavaScriptなどを活用した環境へと乗り換えを模索していかなければならない。HTMLだけでできることが限られていた以前に比べ、HTML5時代ではネイティブアプリに匹敵する機能やパフォーマンスを備えており、かつ異なるWebブラウザ間での互換性がより重視されるようになっている。

 こうしたHTML5時代のWebブラウザでは、極端な話を言えばEdgeを利用する必要はなく、動作検証の確認さえ取れればChromeやFirefoxといったMicrosoft以外のブラウザを全社展開しても問題ない。OS Xの標準ブラウザはSafariだが、同様に業界標準を重視したブラウザであり、基本的に他のブラウザとも互換性を維持している。OS XにChromeやFirefoxを導入して利用することも可能であり、企業のWebアプリケーションに関して、ボーダーレスの時代が到来しつつある。

 一方で、スマートフォンやタブレットなど、いわゆるモバイルOSのシェアとなると話が変わってくる。Microsoftは「Windows 10 Mobile」を搭載したスマートフォンや(2in1)タブレット、PCにおいて、共通して動作可能な「UWPアプリ」という仕組みを用意した。

 これにより、共通動作が可能なアプリさえ一度用意してしまえば、以後はどういったスクリーンサイズやユーザーインタフェースを持つデバイスであっても問題なく動作し、ターゲットごとにアプリを別個用意する必要がない、というメリットがある。

 しかし、下記のように、特にスマートフォン市場におけるWindows(Windows Phone)のシェアは極小だ。

tm_1512_vs2015_02.jpg 2015年9月の世界におけるモバイル/タブレットOSシェア(出典:Net Market Share)

 例によってシェアの数字は参考程度としてほしいが、スマートフォンならびに、2in1ではない中型以下のタブレットを基準にすれば、そのシェアの大部分はiOSとAndroidが握っている。市場ではiPhone(ならびにiPad)が5割近いシェアを獲得しており、残りをAndroid搭載のデバイスが占めている状況だ。

 日本ではWindows Phone 8.1搭載スマートフォンがリリースされなかったという背景もあり、Windows 10時代の到来によって、ようやく6社のメーカーがWindows 10 Mobile端末の日本市場投入を表明したばかりで、黎明(れいめい)期にある。当初は大手携帯キャリア経由で販売されないことから、しばらくはシェアの低空飛行が続くと予想される。

 近年において、仕事に使うコンピュータの環境は多様化が進んでおり、出先や自宅でも企業システムにアクセスするケースがある。その場合、スマートフォンやタブレット、そしてノートPCは有力な作業デバイス候補となるだろう。

 またBYOD(Bring Your Own Device)といった言葉もあるが、個人が所有する普段使い慣れたデバイスをそのまま業務に利用するケースもある。となると、会社から支給される業務デバイスがWindowsであっても、自宅やプライベートではMacやiPhone、あるいはAndroid端末を利用しているケースもあるだろう。

 もし、将来的に社内システムをこうした環境に適応させて生産性を向上させようと考えるならば、Windows以外の環境も視野に入れるのは必然だ。

デバイスを横断したシステム構築はクロスプラットフォーム開発で

 ここで問題となるのは、以前であればWindows、さらに言えばWindowsの特定バージョンに依存しても問題なかったシステム開発が、Windowsだけではない多様なプラットフォームを同時にターゲットにしなければならない点だ。

 デスクトップ/ノートPC、タブレット、スマートフォンでは操作方法の流儀も、スクリーンサイズも、想定する利用環境も大きく異なるため、OSの違いだけでなく「フォームファクタ」という、機器の形状や利用スタイルの違いも考慮に入れなければいけない。

 それぞれのプラットフォームのアプリ開発に合わせて異なる開発環境やテスト環境を用意し、さらにプラットフォームごとに異なる開発言語やAPIをマスターとして……となると、そのコストや負荷は膨大なものとなる。そこで、各種ツールのほか、共通して利用できる開発環境に注目すべきだろう。

(1)「Windows Bridge」を活用する

 Microsoftでは、既存のアプリケーション資産をUWPアプリとして活用するための仕組みとして「Windows Bridge」というツールを提供している。

 Windows Bridgeは4種類あり、それぞれ次のような状況だ。

他プラットフォームからの移植を促すUWPアプリ開発プロジェクト
名称 旧名 提供時期
Windows Bridge for iOS Project Islandwood プレビュー版をオープンソースで公開、2015年秋頃に正式提供
Windows Bridge for Android Project Astoria 招待制で限定プレビューを行っていたが、計画が遅れている状況
Windows Bridge for Classic Windows apps Project Centennial 2016年以降にテスト開始
Windows Bridge for Web apps Project Westminster 提供済み

 前回も紹介したように、「Windows Bridge for Classic Windows apps」は既存のWin32や.NETアプリケーションをUWPアプリに変換する仕組みだが、提供時期は2016年以降順次となっており、当面は利用できない。

 一方で「Windows Bridge for iOS」は、iOS向けに開発されたアプリをWindows 10上で利用するための仕組みで、必要最小限の変更のみで元となるアプリをそのままUWPアプリとして利用できるようになる。

 iOSとAndroidの間でアプリの共通化はできないが、Windows 10であれば、デスクトップであってもスマートフォンであっても、iOSアプリがそのまま利用できるため、少なくとも開発工数の削減は可能だろう。

tm_1512_vs2015_03.jpg 「Windows Bridge for iOS」は製品版のリリースに向け、MITオープンソースライセンスの下、GitHubで公開されている

 なお、AndroidアプリをWindows 10に移植するための「Windows Bridge for Android」は、当初より計画が遅れている状況だ。

(2)Webアプリケーション開発を模索する

 複数のプラットフォームが混在する環境において、IE依存のような仕組みを排除した先に見えるのは、業界標準のHTML技術を使ったアプリケーション開発だ。

 前述のように、Windowsを含むAndroidやiOSデバイスから共通してアクセス可能なWebアプリケーション開発を志向した場合、HTML5+JavaScriptという組み合わせは必須の仕組みとなる。画面のレイアウトが崩れることがあったりと、若干の検証は必要だが、基本的にどのプラットフォームからでも閲覧できて互換性が維持される。

 また、ASP.NETのような仕組みを使っても、出力されるWebページはプラットフォーム間で互換性があるため、問題なく共通環境として利用できる。

(3)Web技術をアプリ開発に応用する

 Web技術が共通仕様になるのなら、そのまま各デバイス上で動作するネイティブアプリ開発そのものもWeb技術で記載してしまえばいいのでは……という発想で生まれたのが「PhoneGap」や「Titanium」といったクロスプラットフォーム開発環境だ。

 記述言語としてはJavaScriptをベースにしており、Webのプログラミング技術をそのままモバイルアプリ開発に応用できる。さらに、ここで記述されたソースコードは各プラットフォーム向けの実行形式に変換された形でアプリとして出力できるため、必要最小限の手間で複数のプラットフォームを同時にカバーできる点が特徴だ。

 以前のこうしたWebプログラミングでは、ネイティブアプリからのみ利用可能だった各プラットフォーム固有の機能(カメラや各種センサーなど)に直接アクセスする手段を持たなかったが、こうした部分をツールが提供するAPIを通して吸収することで、Webアプリでも実装可能にしたのが、クロスプラットフォーム開発環境の特徴でもある。

 現在、前述のPhoneGapはAdobe Systemsに買収された後、Apache 2.0 Licenseでオープンソース化(OSS)され、「Apache Cordova」として利用可能になっている。かつて、こうしたクロスプラットフォーム開発環境はプラットフォームの優位性を揺るがすとして、これらツールを使って作成されたアプリはAppleからApp Store上への登録を拒否されるということがあった。

 しかし現在、OS X+XcodeとPhoneGapを組み合わせ、ライセンス上の必要事項を満たしたせば登録が可能になっている。もちろん、スマートフォン以外にもWindows用のデスクトップアプリ開発にも応用できるため、プラットフォームを横断しての開発に有望だ。これは、前回も紹介した「Windows Bridge for Web apps」の発想に近い。

(4).NET技術をクロスプラットフォーム開発に応用する

 「.NET」は、クロスプラットフォーム開発におけるHTML5+JavaScript以外のもう1つの選択肢となる。このMicrosoft由来の技術として最近同社がプッシュしているクロスプラットフォーム開発環境が「Xamarin」だ。

 Xamarinは2011年に設立された企業だが、その主力製品である同名のXamarinは、10年以上も前から続いてきた.NET技術のWindows以外へのプラットフォーム移植を目的とした「Mono」プロジェクトがベースとなっている。

 MonoはもともとNovellの技術者であったミゲル・デ・イカザ氏を中心に開発されていたが、後にAttachmateによってNovellが買収されると大量の技術者解雇でMonoプロジェクトの分散が危惧されたこともあり、Monoプロジェクト関連の技術者が権利を買い取る形でXamarinを設立し、Mono関連のリソースを集約した経緯がある。

 .NETをベースにしているだけでなく、Visual Studio上でAndroidやiOSアプリの記述も可能なため(iOSアプリ開発には検証のためにMacが必要)、Windowsアプリケーション開発者が次のステップを踏むうえでハードルが低い点が大きな特徴だ。

tm_1512_vs2015_04.jpg 「Xamarin」を導入すれば、Visual Studio上でAndroidやiOSアプリの記述も可能だ

クロスプラットフォームを視野に入れたアプリ開発を

 今やMicrosoft自身が「モバイルファースト」を強調する時代でありながら、同社自身はモバイルにおいて鍵となるプラットフォームを握っておらず、どうしても開発環境が分散してしまうという問題があった。

 しかし、共通言語であるWeb技術の発展拡大や、信頼できるクロスプラットフォーム開発環境の出現は、こうした問題を少しずつ解決しつつある。

 特に膨大な数がいるWindowsアプリケーション開発者が将来を見据えた場合、どうしてもクロスプラットフォームは視野に入れなければいけない状況だ。まずは目の前にあるWindows 10時代のプラットフォームへの対応を進めつつ、次のステップを考えてみることをおすすめしたい。

Copyright© 2016 ITmedia, Inc. All Rights Reserved.


提供:BBソフトサービス株式会社
アイティメディア営業企画/制作:ITmedia PC USER 編集部/掲載内容有効期限:2015年12月14日