クロスプラットフォームの比較の記事を書こうと思ったのですが、どれがどれと横並びに比較できるのかが色々なサイト見てもバラバラでした。
整理をしてみようと思い、記事を作成します。
クロスプラットフォーム開発とは
今回はアプリ開発においてクロスプラットフォームの種類について個人的に調べてみました。クロスプラットフォームがなにか知っている方は次の見出しまで読み飛ばしてください。
クロスプラットフォームとは。
クロスプラットフォーム(英: cross-platform)とは、異なるプラットフォーム(例えばPC/AT互換機とMacintosh、あるいはWindows・macOS・FreeBSD・Linuxなどのように、仕様が全く異なる機械(ハードウェア)またはオペレーティングシステム)上で、同じ仕様のものを動かすことが出来るプログラム(ソフトウェア)のことを言う。同様の呼称にマルチプラットフォーム[1]がある。(wikipedia引用)
要は異なるOSでも、同じ動作のものを動かそうと言うものです。
皆さんはスマホでLINEなどのアプリを使っているとおもいますが、Androidの人もiPhoneの人も同じように使ってますよね。ほぼ同じ機能ですよね。
ですが全く同じプログラミングで動いているわけではありません。動作環境が異なるので、それぞれのOSに合わせて作らなければなりません。
しかし、ほぼ同じ機能のものをわざわざそれぞれのOS用に作成するのはめんどくさいです。
そのため、OSの違いを吸収するようなプラットフォームの上にプログラミングする事で、さまざまなOSでもほぼ同じコードで動作します。
それがクロスプラットフォームです。
クロスプラットフォームの種類
クロスぷらっとフォームの種類は大きく分けると3つあります。
- ネイティブ型
- ハイブリッド柄
- 独自レンダラ型
ネイティブ型
描画はOSのシステムを利用します。フレームワークからOSのUI部分を操作するようなイメージです。
ネイティブを操作しているので、動作としては、後述のハイブリッド型よりも早くなります。
ネイティブフレームワーク→OS UIシステム
ハイブリッド型
WebView上にHTMLを描画する事で、描画が行われます。WebView自体はOSのUIシステムを利用しています。つまりはこういった感じですね。
ハイブリッドフレームワーク→WebView→OS UIシステム
独自レンダラ型
簡単に言うと、描画エンジンが独自のものです。
先述した2個はOSのレンダラやWebViewではなく、それぞれのプラットフォーム独自のUIエンジンを用いて描画しています。
独自レンダラフレームワーク→独自UI
代表的なクロスプラットフォーム
さて、代表的なクロスプラットフォームをあげてみましょう。
比較表
PF名 | 言語 | ジャンル |
---|---|---|
Unity | C# | 独自レンダラ型 |
Flutter | Dart,C言語 | 独自レンダラ型 |
Xamarin | C# | ネイティブ型 |
React Native | Javascript ,JSX | ネイティブ型 |
cordova | HTML5,Javascript,css | ハイブリッド型 |
Telerik Platform | HTML5,Javascript,css | ハイブリッド型 |
Unity
独自レンダラ型です。完全に用途がゲーム用となっています。GUIを用いてのアプリ作成が多くなります。また利用者も非常に多く、検索すればかなり情報量はあります。
クロスプラットフォームでゲームを作りたいならUnityで間違いないかとおもいます!
Flutter
読み方はフラッターです。作ったのはあのGoogleです。独自レンダラ型です。
2018年12月に正式にリリースされました。まだ歴史が浅いので情報が少ないかもしれませんね。
Dartという言語を使うので、多少ハードルがありますが、最近の言語を使える人であれば、学習コストは低いと言えます。
Xamarin
ザマリンと読みます。近年Microsoftに買収されたため、VisualStudioなどで編集したりが基本かと思います。.NETのライブラリもそのまま使えたりするので、その辺りに慣れている人は良いかもしれないです。
React Native
これはFacebook製ですね。やはりネイティブ型というところが特徴ですね。Javascriptが使えるので、この辺の学習コストは低いですね。
Cordova
ハイブリッド型のかなり王道ですね。様々なフレームワークのコアの部分に組み込まれていたりします。Monacaなどが利用していることもあり、かなり取っつきやすいです。
ちなみに私もよく使っています。
Telerik Platform
ハイブリッド型です。WEB上でアプリ開発が可能となります。公式サイトには多くのテンプレートが用意されていたので、まず触ってみてすぐに動かせると思います。
Google検索で「Telerik Platform」って検索してもあまり出なかったので、他と比べると情報量少ないかもしれません。
まとめ
とりあえず形式ごとにクロスプラットフォームをまとめました。歴史の違い等もあるし、用途による部分が大きいとは思いますが、少しでも参考になれば幸いです。