読者です 読者をやめる 読者になる 読者になる

Xojo日本語ブログ

マルチプラットフォーム対応アプリが開発できるXojoのブログです。

Swift/Java/Objective-C以外のスマートフォン開発言語について

Xojo プログラミング言語 まとめ

iOS/Androidアプリを開発する際には専用の言語を使うのが一般的です。つまりiOSであればSwiftやObjective-CAndroidであればJavaを使ってアプリを開発します。

しかし世の中には多くの代替言語、代替手法が存在します。Xojoもその一つです。今回はそんな技術をまとめて紹介します。

Xojo

f:id:moongift:20161108010043p:plain

XojoはXojo IDEを使ってiOSアプリが開発できます。Xojo IDE上でiOSアプリのビルドまで行うのが特徴で、ブレークポイントを使ったデバッグもXojo IDE上でできます。

あらかじめ用意されているコントロールドラッグ&ドロップで配置してアプリ開発を行うスタイルはデスクトップ、Webアプリケーション開発と同じです。Xojoを習得している人であれば、すぐにiOSアプリ開発をはじめられるでしょう。

Xojo(ゾージョー)仕事に。研究に。”使える”アプリを瞬速×クロス開発|グレープシティ株式会社

Titanium

f:id:moongift:20161108010101p:plain

TitaniumはJavaScriptを使ってiOS/Androidアプリを開発します。スマートフォンJavaScript実行エンジンを使って、JavaScriptのコードをそのまま実行します。専用のタグやAPIを使ってネイティブのUIコンポーネントを呼び出せます。

基本はiOS/Androidともに共通のコードで動くのですが、UI周りはそれぞれ分離したり処理分けする必要があります。iOSのバージョンが古かった時にはJavaScript実行エンジンの速度が遅く、Titaniumアプリ全般的に実行速度が遅かったという問題がありました。

Mobile App Development & MBaaS Products | Appcelerator

React Native

f:id:moongift:20161108010117p:plain

React NativeもTitanium同様にJavaScriptを使ってiOS/Androidアプリ開発が行えます。ReactというJavaScriptとJSXと呼ぶ独自のタグ機構を組み合わせて開発します。

iOS/Androidの殆どのコードは共通化できますが、元々Learn Once, Run anywhereというコンセプトがあり、全く同じコードを動かすという前提ではありません。

React Native | A framework for building native apps using React

RubyMotion

f:id:moongift:20161108010140p:plain

Rubyを使ってiOS/Androidアプリを開発できます。年間購読制の有料フレームワークです。Objective-CJavaの薄いラッパーであることが特徴で、Rubyを使ってObjective-Cの書きづらい点を解決したところがスタートであったように思います。

Swiftがスクリプト言語のように動くこともあり、目指しているところが若干被っているかもしれません。とは言えRuby好きであれば見逃せないフレームワークでしょう。

iOS、Android、OS X アプリを Ruby で。 | RubyMotion

Xamarin

f:id:moongift:20161108010233p:plain

元々有料でしたが、Microsoft社に買収されたタイミングで無料化されました。.NETを使ってiOS/Androidアプリが開発できます。Visual Studioに統合されていますので、これまで.NETを使って開発を行ってきた方には使い慣れた仕組みで開発が進められるでしょう。

Windows上でiOSアプリを開発することはできますが、実機ビルドなどを行う際にはmacOS/Xcodeが別途必要なのでご注意ください。

Mobile Application Development to Build Apps in C# - Xamarin

Cordova

f:id:moongift:20161108010258p:plain

HTML5/JavaScript/CSSといったWeb標準の技術を使ってiOS/Androidアプリを開発できます。アプリの中にWebブラウザがあるようなもので、JavaScriptを使ってスマートフォンネイティブの機能にタッチできるようにアプリがAPIを提供しています。

HTML5なのでiOS/Androidの動作違いがあまり大きくなく(提供されているAPIの違いはありますが)、レスポンシブに作ることでほぼ同じUI/UXで開発できます。ただしWebブラウザで動いているのと同じ状態なため、実行速度はネイティブに比べると劣ります。

プラグインによって機能を拡張できますが、プラグインObjective-CやSwift、Javaといったネイティブの言語で開発する必要があります。そのためCordovaを使うだけの開発者にとっては若干敷居が高いと言えます。

Apache Cordova

Unity

f:id:moongift:20161108010320p:plain

3Dゲームの開発エンジンとして知られるUnityですが、数年前から2Dにも対応したり、ゲーム以外の分野でもUnityを使うケースが見られるようになっています。Android/iOS向けにバイナリが出力できます。ネイティブのコードであり、性能は非常に高いです。

プログラムはC#またはBooScriptで記述します。BooScriptよりもC#を採用するケースのが多いように感じます。

Unity - Game Engine

代替言語を使うメリットは?

代替言語はObjective-C/Swift/Javaといった言語を習得せずにスマートフォンアプリ開発に参入できるというメリットがあります。すでに使い慣れた言語がある場合、新たに言語を習得するのは敷居が高いと感じるかもしれません。

また、多くの代替言語はiOS/Androidの両プラットフォームをサポートしています。一企業ですべてのプラットフォームに対応できる体制を整えるのは大変ですが、代替言語を使った方法であれば敷居は下がります。別な開発(サーバサイドやフロントエンドなど)を行っているメンバーを充てられるようになるでしょう。

代替言語を使うデメリットは?

デメリットとしては実行速度がネイティブで開発した場合に比べて若干遅い傾向があります。Unityのようにネイティブコードに変換して実行する場合は別ですが、多くの代替言語はJavaScriptWebKitのようなエンジン上で動作します。そのため100%のパフォーマンスが発揮できない可能性があります。

代替言語では最新OSの機能を100%活かしきれないことが多いです。どうしても後から追従する形になってしまったり、両OSに対応するために最大公約数的な実装になりがちです。iOS/Androidだけにしかない機能は実装されない傾向が強いです。

他の言語と比較した場合のXojoのメリット・デメリットは?

こうした代替言語ではJavaScript、またはC#を採用するケースが多いようです。その中にあってXojoはXojoを使って実装します。つまりXojoさえ習得していれば、デスクトップアプリケーションやWebアプリケーションを開発してきた人でもすぐにスマートフォンアプリ開発に参入できるということです。

もう一つの特徴は開発手法です。ウィンドウではなくビューという言い方に変わっていますが、基本的にビューを追加してUIコントロールを配置、各コントロールやビューにアクションを追加していくという方法はデスクトップでもWebでもすでに慣れた方法です。スマートフォンアプリ開発は画面を重ね合わせるスタックと言う考え方で実装するために、Webやサーバサイドの開発とは異なる考え方が求められるのですが、Xojoの場合はこれまでと変わらない考え方でアプリを作れます。

難点としては執筆時点(2016年11月)ではAndroidに対応していないということでしょう。予定では2017年中にAndroid対応すると発表されており、リリースが待ち望まれます。共通のUIコントロールで作れるかは不明ですが、iOSAndroidではUIの考え方が異なるため、別なUIとして開発し、ロジックだけ共有化するという方法になるかもしれません。


代替言語を採用することでこれまで別なレイヤーで開発を行っていたエンジニアでもアプリ開発に参入できるようになります。代替言語の種類によってアプリジャンルの向き不向きはありますが、多くの場合業務アプリのように速度よりも適切な動作が求められる系統のジャンルには対応できます。顧客ニーズもWebからアプリへと移り変わってきています。しかも多くの場合iOSAndroidへの両対応が求められるでしょう。そうした時こそ代替言語の出番と言えそうです。