(1/2)Appleによる新プログラミング言語「Swift」の発表は、一般ユーザーにも開発言語の世界が久しぶりに注目されるトピックだった。現在そして今後の開発言語環境をWindows視点から見ていこう。2014」で発表された「Swift」は、プログラミング言語の話題で久々に世間の注目を集めた。同社によれば、「(これまでAppleプラットフォームでメインの開発言語だった)Objective-Cから“C言語”の要素を除外した」とのことで、オブジェクト指向に特化し、よりモダン化された新しいプログラミング言語となる。Objective-Cはオブジェクト指向に対応すべくC言語を拡張したものだ。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のネイティブアプリに持ち込んだものだ。OSでも中心的な開発手法に位置付けられ、最近のモバイルOSではメジャーな存在といえる。従来は比較的ハードルが高かったJavaScriptによるアプリケーション開発だが、最近ではツール類が充実したこともあり、以前に比べると利用が増えてきた。Web技術との親和性も相まって、重要度が高まっている。サイロ的な手法といわれる、個々のプラットフォームに応じた開発言語とツールを選ぶ方式。専業開発であれば問題ないが、横断的なアプリ開発には効率が悪いこのストアアプリに登録可能なアプリの開発言語というのは、プログラミング手法選択の大きな目安になる。Androidであれば「Dalvik」というJavaVM(Java仮想マシン)上で動作する「Java」が主要なプログラミング言語となる。Androidにおいて、アプリは基本的に仮想マシン上で動作させるものだからだ。最近のAndroidはNDKによるネイティブコード開発も許容しており、その場合はC/C++が選択可能になる。iOSに関しては、冒頭でも紹介したObjective-Cがその主役だ。Appleでは基本的にObjective-Cを使ったネイティブコードのアプリ開発を推奨している。Yosemite以降では、これに加えて冒頭のSwiftも利用可能となった。Storeに登録......といったこともできる。最終的にAppleはSwiftを主要言語としたい考えだとみられるが、当面は徐々にObjective-Cからの移行を促し、やがては置き換えというロードマップを想定していると予想する。現在流行のモバイルアプリ開発に参加したいと思った場合、このようにWindowsは.NET(C#)、AndroidはJava、iOSはObjective-C/Swiftを選択することになる。どの開発言語もC言語が根底にあるとはいえ、それぞれのプラットフォームの知識や開発テクニックも要求される。複数のプラットフォームを対象にアプリ開発を行いたい場合、その負担はさらに増すことになるわけだ。クロスプラットフォーム開発ツールという選択肢そこで登場するのがクロスプラットフォーム開発ツールだ。このツール上でアプリケーションを記述すれば、後はターゲットとするプラットフォームに対応した実行コードを出力してくれるので、プラットフォームごとに開発言語を学習したり、あるいはコードを書き分ける必要がないというメリットがある。クロスプラットフォーム環境にもいくつかの実現方式があり、システムロジックやUIの画面パーツといった共通コードでアプリケーションを作成し、最終的にWindowsやAndroidといったプラットフォームで直接実行可能なコードを別個出力する方式と、各プラットフォーム向けにランタイム環境を用意し、この上で共通コードを動作させる方式の主に2種類が挙げられる。Titaniumなどが有名だ。CSを使ってAndroidやiOS向けのパッケージを出力することもできる。Playerが動作するWindowsに対し、AndroidやiOSといったモバイルOSでは、Flash再生環境がないための措置と考えられる。Anywhere(一度記述すれば、どこでも動作する)」を掲げて登場した技術だったが、さまざまな理由でこれは実現せず、結局現在では数あるプログラミング言語の1つという扱いに収まっている。利用規約ITmediaはアイティメディア株式会社の登録商標です。