Javaは古くからプラットフォーム非依存を掲げており、マルチプラットフォームのアプリ、近年ではAndroid向けアプリ用の開発言語として使われている。C#では.NET Frameworkの基本となる言語として使われており、Xamarinを通じてクロスプラットフォーム化が進んでいる。一方、Swiftにおいては昨年12月にオープンソース化 ((当該ブログにおいてはSwiftがWindowsで使えるようになる日は来るのかで言及)) がなされ、クロスプラットフォーム化への対応の初歩段階に向かっている状態である。今後、Swift、C#、Javaなどが熾烈な主導権争いを繰り広げるのだろうか?
現状ではC#が優位か
現時点で、クロスプラットフォームの対応についてはC#が優位に立っている模様である。というのも、Xamarinによる.NET Frameworkの互換環境MonoによってAndroidを含めたLinux、OS X、iOS、Windowsなどで動作するようになっているからである。これについては、Javaについても複数のプラットフォームに対応はしているものの、iOSへのサポートの見込みは考えづらいことも理由の一つである。
一方、Swiftについては、昨年12月にオープンソース化、現時点でフルにサポートしているのはOS X及びiOSのみ、Ubuntuにおいては学習用程度のレベルしか維持できていないこと、Swiftに対応したフレームワーク等の不安要素等が多く、現時点では不透明な部分が多いものと考えられる。
当たり前のことだが、アプリ開発で使える選択肢はC#、Java、Swiftにとどまらない
とはいえ、そもそもだが、アプリ開発での選択肢においては、フレームワークにもよるが、PHPやPython、Ruby、HTML、JavaScript、CSSなど多岐に渡るという現状がある。依然としてC言語やC++も有力な選択肢となっているほか、独自にフレームワークを作ってしまうという選択肢すらあり得る。
重要なのは、何を作りたいかでは?
結局のところ、プログラム言語はあくまでアプリを開発するための手段であり、目的ではないため、重要なのは何で作るかではなく、「何を作りたいか」となるだろう。その上でどういうプラットフォームで動かせるようにしたいのか、何をできるようにしたいのかなどを考えることによって、選択肢は自ずと絞られるのだろう。
最後に
近年、自分の親しんでいる言語で他のプラットフォームへ容易に移植できるようにする試みが行われており、ものによって進み具合が違っているものの、今後、各プログラミング言語をめぐって熾烈な主導権争いが発生するのだろうか?それとも・・・。
とはいえ、言語はあくまで手段であり目的ではないので、必要に応じて使いこなせるようにしたいところである。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。