大きな注目を集めた新プログラミング言語「Swift」
Appleの開発者イベント「WWDC 2014」で発表された「Swift」は、プログラミング言語の話題で久々に世間の注目を集めた。同社によれば、「(これまでAppleプラットフォームでメインの開発言語だった)Objective-Cから“C言語”の要素を除外した」とのことで、オブジェクト指向に特化し、よりモダン化された新しいプログラミング言語となる。
Objective-Cはオブジェクト指向に対応すべくC言語を拡張したものだ。かつてNeXTの開発言語として利用され、それをベースとして開発されたOS Xへと引き継がれ、iOSにおいても主要な開発言語となっている現役30年選手のプログラミング言語である。その意味で、久々の世代交代といえるかもしれない。
プログラミングの世界からは離れて久しい筆者だが、目まぐるしく動くこの分野を見る度に「どのプログラミング言語とプラットフォームを選べば、この業界で生きていけるのか」ということを考えてしまう。もちろん最適解はなく、その日そのときで最新情報をキャッチアップしなければいけないわけだが、そんな感覚をSwiftのニュースは思い起こしてくれた。
今回は、もし自分が「Microsoftプラットフォームのアプリケーション開発者」だったとして、その辺りの最新事情を探ってみたい。
アプリストアに登録可能な開発言語を選ぶ
Microsoftのプラットフォームは開発ツール類が充実しており、パフォーマンスを要求されるガチガチのコア開発から、比較的初心者でも参加できる簡易プログラミングまで非常に門戸が広い。受け入れるプログラミング言語の幅も広く、ビギナーからプロフェッショナルまで誰でもウェルカムな世界だ。
一方で、自身の作ったプログラムをMicrosoftのアプリストアに登録しようとすると、利用可能な環境はある程度絞られてくる。このアプリストアで利用可能な開発言語やフレームワークが、Windowsプラットフォームの主要開発環境といえるだろう。
Windows 8/8.1ではWindowsストアに登録可能なストアアプリとして、3つの開発手法(言語)が選択できる。大枠では「ネイティブ開発(C++)」「.NET+XAML(C#やVBなど)」「HTML+CSS+JavaScript」といった具合だ。
C++は昔ながらの開発手法で、主にゲームやパフォーマンスを要求されるアプリケーションで主に利用される。.NETは汎用アプリでは標準的な開発手法で、表中にもあるSilverlightアプリの開発にも利用される。
そして比較的新しいスタイルなのがHTML+CSS+JavaScriptで、こちらはWebアプリケーションの開発技法をそのままWindowsのネイティブアプリに持ち込んだものだ。後述するが、Chrome OSなどで動作するGoogle Web Appsはこの手法で開発されたアプリケーションとなっているほか、BlackBerryの最新バージョンやFirefox OSでも中心的な開発手法に位置付けられ、最近のモバイルOSではメジャーな存在といえる。
従来は比較的ハードルが高かったJavaScriptによるアプリケーション開発だが、最近ではツール類が充実したこともあり、以前に比べると利用が増えてきた。Web技術との親和性も相まって、重要度が高まっている。
このストアアプリに登録可能なアプリの開発言語というのは、プログラミング手法選択の大きな目安になる。
例えば、Androidであれば「Dalvik」というJavaVM(Java仮想マシン)上で動作する「Java」が主要なプログラミング言語となる。Androidにおいて、アプリは基本的に仮想マシン上で動作させるものだからだ。しかし最近のAndroidはNDKによるネイティブコード開発も許容しており、その場合はC/C++が選択可能になる。
iOSに関しては、冒頭でも紹介したObjective-Cがその主役だ。Appleでは基本的にObjective-Cを使ったネイティブコードのアプリ開発を推奨している。iOS 8とOS X Yosemite以降では、これに加えて冒頭のSwiftも利用可能となった。
SwiftとObjective-Cのコードは混在可能で、既存のObjective-Cで記述されたアプリの一部をSwiftで置き換えてApp Storeに登録……といったこともできる。最終的にAppleはSwiftを主要言語としたい考えだとみられるが、当面は徐々にObjective-Cからの移行を促し、やがては置き換えというロードマップを想定していると予想する。
もし、現在流行のモバイルアプリ開発に参加したいと思った場合、このようにWindowsは.NET(C#)、AndroidはJava、iOSはObjective-C/Swiftを選択することになる。どの開発言語もC言語が根底にあるとはいえ、それぞれのプラットフォームの知識や開発テクニックも要求される。つまり、複数のプラットフォームを対象にアプリ開発を行いたい場合、その負担はさらに増すことになるわけだ。
クロスプラットフォーム開発ツールという選択肢
そこで登場するのがクロスプラットフォーム開発ツールだ。このツール上でアプリケーションを記述すれば、後はターゲットとするプラットフォームに対応した実行コードを出力してくれるので、プラットフォームごとに開発言語を学習したり、あるいはコードを書き分ける必要がないというメリットがある。
クロスプラットフォーム環境にもいくつかの実現方式があり、システムロジックやUIの画面パーツといった共通コードでアプリケーションを作成し、最終的にWindowsやAndroidといったプラットフォームで直接実行可能なコードを別個出力する方式と、各プラットフォーム向けにランタイム環境を用意し、この上で共通コードを動作させる方式の主に2種類が挙げられる。
前者はAppcelerator Titaniumなどが有名だ。後者の代表格はJavaVMやAdobe Flash Playerで、Flash Player向けに記述されたアプリは、Adobe CSを使ってAndroidやiOS向けのパッケージを出力することもできる。これはFlash Playerが動作するWindowsに対し、AndroidやiOSといったモバイルOSでは、Flash再生環境がないための措置と考えられる。
もともとはJavaも「Write Once, Run Anywhere(一度記述すれば、どこでも動作する)」を掲げて登場した技術だったが、さまざまな理由でこれは実現せず、結局現在では数あるプログラミング言語の1つという扱いに収まっている。
Copyright© 2014 ITmedia, Inc. All Rights Reserved.