
「クロスプラットフォームに対応した言語は?」
「クロスプラットフォームをどう活用していけばいい?」
このような思いを抱えていないでしょうか。
アプリの動作環境の変化に伴い、クロスプラットフォームの需要が高まっています。今後さらに動作環境が変化する可能性もあり、クロスプラットフォームは必須の技術となりつつあります。
しかしクロスプラットフォームとはどんなもので、どういった言語が対応しているかなど、疑問に感じることもあるでしょう。
そこでこの記事では、クロスプラットフォームの詳細や、対応している言語について解説します。
詳しく知りたい方は、ぜひご一読ください。
1.クロスプラットフォームとは
クロスプラットフォームとは、iOSとAndroidなど、異なるプラットフォームで同じアプリを起動させるプログラムです。異なるOSに対応したアプリを開発したいなら、必須の技術です。
通常アプリは、動作環境を想定してプログラムを作成するので、他の環境では使えません。仮にiOSを想定して作れば、Androidではアプリを使えません。
2021年11月現在は動作環境が多様化しているので、特定の環境でしか使えないのは不便です。しかし2つのアプリを開発するのは、工数やコストが増加してしまいます。
そのため、プログラムひとつで複数の環境に対応したアプリを作れるクロスプラットフォームの需要が高まったのです。
モバイルアプリはiOSとAndroid両方で使えるものが増えましたが、これはクロスプラットフォームが浸透した結果です。
2. クロスプラットフォームに対応する言語
クロスプラットフォームには、複数のプログラミング言語が対応しています。具体的には、以下の6つです。
- JavaScript (Cordova/Monaca/Ionic・React Native)
- Dart/Flutter
- C++(UnrealEngine)
- C#(Unity /Xamarin)
- Delphi/RAD Studio
- Ruby/RubyMotion
順番に見ていきましょう。
JavaScript (Cordova/Monaca/Ionic・React Native)
JavaScriptは、もともとはWebブラウザ上で実行されるプログラミング言語でした。しかし、実行エンジンを活用したことで、iOSやAndroid上でも実行できる言語になっています。
JavaScriptを使ったフレームワークには、以下のものがあります。それぞれの特徴を、以下の表にまとめました。
Cordova |
・Apacheソフトウェア財団が提供するモバイルアプリ開発環境 ・プラグインが豊富で使いやすい |
Monaca・Ionic |
・Cordovaをより使いやすくするサービス ・Web上で開発できる環境や、アプリ開発に便利なコンポーネントを提供 |
React Native |
・JavaScriptフレームワークをスマートフォン向けに開発 ・FacebookやInstagramといった大型なアプリでも使われている |
同じJavaScriptを使ったものでも、特徴やできることは異なります。開発したいものに合わせて、適したものを選びましょう。
Dart/Flutter
Dartは、的型付け・静的型付けの両方に対応したプログラミング言語です。Flutterによるフレームワーク開発は、Dartを使って行われています。
Flutterは、Googleがオープンソースとして提供しているフレームワークです。スマートフォンアプリ開発に適したフレームワークでしたが、対応範囲を広げてクロスプラットフォームに対応しました。
その結果スマートフォンアプリ以外での開発でも採用されるようになり「トヨタ自動車」も車載システムの開発に採用しています。
具体的には運転手が操作する機器のUIの開発で、トヨタ自動車は今後UI/UXを重視していくと公表しています。
トヨタ自動車が採用したことで、今後は製造業を含め、多種多様な業種で活用される可能性が高いです。
今までのアプリ開発では、プログラム変更後にアプリを再起動させる必要がありました。
しかし、Flutterには「ホットリロード」という、機能があります。この機能により、プログラム変更に、修正点がエミュレーターの実行画面や実機上の画面にすぐに反映されます。
そのため、プログラム修正からコンパイル(コンピュータが直接実行可能な形式に変換する)完了までの待ち時間が短縮され、迅速な開発が可能です。
C++(UnrealEngine)
C++とは、多くのシステムで使われている「C言語」の拡張です。「電子機器」や「家電製品」を制御するプログラムや、Windows・MacなどのOSも作成できます。
C++は、部品を作成しモノを組み立てるようなイメージでプログラムを作成する「オブジェクト指向」を採用しています。
オブジェクト指向には、
- プログラムの全体像を把握しやすい
- 分業しやすい
- 改良・修正がしやすい
といったメリットがあります。
このC++を活用したフレームワークが「UnrealEngine」です。iOS、Android、PlayStation 4などの開発に使われており、2Dゲームにも3Dゲームにも対応できます。
グラフィック性能が高くリアルなビジュアル表現が特徴的なため、CG映像制作での活用事例も増加しています。
開発環境が基本無料ですが、扱える人がまだ少なく、普及には時間がかかると思われます。
C#(Unity /Xamarin)
C#は、マイクロソフトが開発したプログラミング言語です。一般的にはWindows向けアプリケーション開発に使用されるという認識ですが、Mac OSやiOS、Androidといった他のOSに対応しています。
C#の文法は、JavaScriptに似ています。そのため、C#を使えるとJavaも扱えるようになります。
Microsoft・Windowsとの相性が良く、Windows向けアプリやマイクロソフト製品との連携を開発するのに最適です。
このC#を使ったフレームワークが、UnityとXamarinです。
Unityは、国内のスマートフォン向けゲームアプリのほとんどで使われています。ただ、スマートフォンだけでなく、Webやデスクトップ向けにもアプリを実行形式にできます。
Xamarinは、アメリカのXamarin社が開発していた、スマートフォンアプリ開発用フレームワークです。通常iOS向けの開発時にはmacOSが必要ですが、XamarinならAndroid/iOS両OS向けの開発が可能です。
Delphi/RAD Studio
Delphiは、Windows向けのアプリケーションが開発できるプログラミング環境です。
Windows上でしか作動しませんが、作成可能なプラットフォームが幅広く、mac OS・iOS・Android・Linux向けのアプリ開発も可能です。
また、オブジェクト指向の要素もあるため、比較的高速で大きなプロジェクトにも対応できます。
RAD Studioは、Delphiを使ってiOSやAndroid、macOS/Windowsなど多彩なアプリケーションを開発できるフレームワークです。2021年9月には、最新版の「RAD Studio 11 Alexandria」が提供開始となりました。
最新の高解像度ディスプレイでもフォントとアイコンがきれいに表示されるため、快適に利用できるものを作れます。
さらにスタイルの変更がUIにどのような影響を与えるのかを手軽にチェックできるので、迅速に設計していけます。
Ruby/RubyMotion
Rubyは、日本で開発されたオブジェクト指向スクリプト言語で、Webサイト制作、SNS開発などが可能です。
フリーソフトウェアなので、無料で使用できますし、複製・変更、再配布も可能です。さらにRubyのコードはシンプルで書きやすく読みやすいので、プログラミング未経験者にもおすすめの言語といえます。
RubyMotionは、このRubyを使ってiOS・Android、macOSアプリを開発できるフレームワークです。「MacRuby」をベースとしており、iOSでのアプリ開発をターゲットにしています。
Objective-Cという言語でもiOSアプリの開発は可能でしたが、RubyMotionならよりスムーズに設計を行えます。
3.マルチプラットフォーム対応のプログラミング言語
クロスプラットフォームは1つのソースコードでWindowsやMac、iOS、Androidなどの複数のプラットフォームのアプリ開発が可能で「マルチプラットフォーム」とも呼ばれます。
マルチプラットフォームに対応する動きが本格化しており、対応するプログラミング言語が増加中です。
ここからは、マルチプラットフォームに対応しているプログラミング言語について解説します。
- 野心的な取り組みを見せる「.NET」
- モバイルアプリ開発からマルチプラットフォームへ「Dart」
- KotlinもAndroidからマルチOS対応へ
- プログラミング言語のマルチプラットフォームへの条件
順番に見ていきましょう。
野心的な取り組みを見せる「.NET」
.NETは、マイクロソフトが開発したプログラミング言語で、Windowsアプリケーション開発のためのフレームワークとして登場しました。2014年に.NETのマルチプラットフォーム対応と、オープンソース化を発表されています。
さらに2021年11月には「.NET 6」が登場し、以下のようなあらゆるプラットフォームに対応しました。
- モバイルアプリ
- クラウド上で実行できるサーバーアプリ(LinuxやWindowsサーバーなど)
- Webアプリ
- IoTアプリ
- ゲーム
マイクロソフトでは、すべてのプラットフォーム向けのアプリケーション開発を統合するという戦略を進めています。
.NETは、アプリケーション開発の統合に向けた、大きなきっかけとなるでしょう。
モバイルアプリ開発からマルチプラットフォームへ「Dart」
Dartは、Googleが主導してオープンソースで開発しているプログラミング言語です。Dart言語にも、フレームワークとして「Flutter 2」が用意されています。
Flutter 2は、2021年3月に登場した、マルチプラットフォームのアプリケーション開発に対応するフレームワークです。
単一のコードベースで、
- モバイルアプリ
- デスクトップアプリ
- Webアプリ
- 組み込みデバイスのアプリ
を生成できます。
トヨタ自動車が、新しい自動車向けのシステム開発にFlutter 2を採用したからも、大きな注目を集めています。
KotlinもAndroidからマルチOS対応へ
Kotlinは、Android用の開発言語として人気が高いプログラミング言語です。2017年にGoogleが、KotlinをAndroidの正式な開発言語にしています。
さらに2018年には対応言語を拡張した「Kotlin/Native」が登場し、iOS・Windows・Mac・Linuxのネイティブアプリも開発できるようになりました。
2021年には、デスクトップアプリケーション・Webアプリケーションの開発に対応した「Jetpack Compose for Web」も発表されています。Kotlinにより、さまざまなアプリケーションの開発が容易になっています。
AndroidからさまざまなOSへの対応が広がっているため、今後もさらに多様化していくでしょう。
プログラミング言語のマルチプラットフォームへの条件
プログラミング言語とフレームワークを発展・成長させる選択肢のひとつとして、マルチプラットフォーム対応があります。
コンピュータプラットフォームは、
- スマートフォン
- タブレット
- PC(WindowsやMac)
- Linuxのデスクトップ
- IoT・クラウド
など、多数です。
特定のプラットフォームしかサポートしていないと、システム自体が衰退していく恐れがあります。
マルチプラットフォーム対応はシステム衰退を防ぐ施策のひとつですが、時代の流れとして必須になりつつあるのです。
4. リアルタイム通信アプリを作るためのポイント
リアルタイム通信アプリを作るには、以下4つのポイントがあります。
- クロスプラットフォーム
- 通信セキュリティ
- 高可用性
- 拡張性
順番に見ていきましょう。
クロスプラットフォーム
リアルタイム通信アプリは 、iOS・Android・Windows・Macなど、さまざまなプラットフォームに対応することが重要です。
動作環境が多様化しているため、iOSだけのようにどれか一方の対応だけではユーザーを逃し、無意味な機会損失につながります。
多様化に対応し数多くのユーザーを獲得するには、プログラムひとつで複数の環境に対応したアプリを作れるクロスプラットフォームが必要です。
通信セキュリティ
通信内容のセキュリティ対策を強化し、悪意のある第三者に傍受されても問題ないよう通信内容を暗号化する必要があります。
セキュリティ対策が弱いと、盗聴・改ざん・なりすましなどの恐れがあるためです。
例えば通信が暗号化するようになっていれば、アプリケーション側で暗号化や複合化を実装しなくていいので、スムーズかつ安心です。
高可用性
安定運用のためには複数のサーバに処理を分散し、障害発生時やプログラム更新時にも処理を継続できることが求められます。
アプリケーションの利用者が多くなれば、その分サーバーへの負荷が大きくなります。そうなるとサーバー停止の恐れが増加し、復旧のためにサービスを停止させないといけなくなるのです。
障害が発生しないのが1番ですが、発生した場合のサービス影響を最小限に抑える、プログラムの更新時もサービス停止せずにすむことが望ましいです。
そのため、リアルタイム通信アプリには、優れた高可用性が求められます。
拡張性
ユーザーの増加による負荷増への対応のために、サーバーを追加するだけで動作を維持できる拡張性を確保することも重要です。
拡張性の強化は、分散型サーバ構成だと可能です。サービスを停止することなく拡張するのはもちろん、縮退を行えます。
5.クロスプラットフォームの運用には「Dirakis」をご活用ください。
最後にここまでの内容をまとめます。
- クロスプラットフォームによって、異なるOSに対応したアプリを開発できる
- 特徴の異なるさまざまなプログラミング言語を活用可能
- リアルタイム通信アプリにはクロスプラットフォームの技術が必要
クロスプラットフォームを活用し、アプリ開発を効率的に行ってみてください。
また、クロスプラットフォームの運用は、株式会社dirkisの「dirkis」がおすすめです。
- サーバー障害が起きても接続を切り替えるだけでサービスを継続できる
- サービスを中断せずにサーバー更新が可能
このような強みがあり、効率的に運用できます。クロスプラットフォームを活用したいなら、ぜひ利用を検討してみてください。