こんにちは、山本です。

さて、Goで作るAndroidアプリの続きの予定、、、だったんですが実際使ってみると問題が色々と浮き彫りとなってまいりました。

まず、GPSを使いたかったんですが、Go mobileに取得するモジュールが見つからなかったり、画面表示をOpenGLで直にで行うなどコストが高すぎたり、やっぱりIDEが使いたかったりと、このまま進めていくのが少々難しくなってきました。

なんというか、Goでスマホアプリを作るのはまだまだ発展途上ということですかね。

とはいえ、ここで終了というのも面白くありませんので、別のアプローチを取ろうかと思います。

さて、Androidアプリの開発となると、Andoroid限定とするか、iPhone対応も考えクロスプラットフォームでの開発とを選ぶことになるかと思います。

今後を考えた時、iOS対応も出来たほうが何かと良い気がしますので、クロスプラットフォームを前提に考えていきます。

とはいえ、クロスプラットフォームだからといって一度書けばどちらもで問題なく動くといった、都合のいいもんでは無いんでしょうけどね。

では、色々と調べてみたこ事をつらつらと書き連ねていこうかと思います。

クロスプラットフォーム

クロスプラットフォームでの開発となった場合、また分かれ道があります。

ネイティブアプリか、ハイブリッドアプリか、順番に試していきます。

ネイティブアプリ

まずはネイティブアプリから

  • Xamarin

使用言語はC#

2013年ぐらいから、Visual Studioでも使えるようになり、最近Microsoft買収され、無料になりました。
それまでは、ライセンスが年別でわりと高額だった記憶があります。

軽く使ってみた感想ですが
まず、普段からVisualStudioを使わないので、使い方は分からないわ、インストールに時間がかかるわ、そもそも私のPCのディスク容量が足りなくなったりと大変でした。

なんで、Visual Studioはこんなにディスク領域使うんでしょうね。

で、簡単なチュートリアルが公式にあり、ちょっと試してみる分には良い感じでした。

001

検証用のエミュレータには、Visual Studio Emulator for AndroidとXamarin Playerのどちらかが使えるようでした。
それ以外にもエミュレータがあるのですが、使う気がしない程に重いので、どちらかを使うようになると思います。

Xamarin Playerは非常に軽快に動き、エミュレーションはこれで事足りる印象です。
もう一つの、Visual Studio Emulator for Androidは、うまくインストールすることが出来ませんでした。

どうも、Hyper-Vが必須のようだったので。
(Hyper-VはWindows8ではProから対応)

iPhone対応については、コアのロジック部分を共有化して、GUIについては個別に対応といったスタンスのようです。
一応、Xamarin.Formsといったものもあるので、ある程度共通のUIを使い回すことも出来るようですね。

ビルドについては、Mac上でXamarin Studioをインストールしてといった流れですね。

  • Qt

使用言語はC++

使ってみた限り、私の環境なのでしょうか?

起動は早いんですが、IDEが起動後よく応答なしになってしまいます。

そして、Android用のビルドに結構手間がかかりました。

NDKが必須だったり、Antも必要だったりとありましたが、その辺はそれ程問題ではありませんでした。
まあ、QtのAndroidビルド用のパッケージが足りなかったせいなんですが、、、

とはいえ、設定画面にAndroidの項目があったりするので、普通にインストール済みだと勘違いする気がしますね。

004

一応、Hello World
サンプル実行しただけなんですが、息切れしました。

Qtでは独自のエミュレータがあるわけではないので、エミュレータが遅すぎる。。。
Xmarin Playerが使いたい。

iPhone対応については、MacにQtを入れて同じコードをコンパイルすることで対応のようです。
う~ん、どのみちiPhone対応にはMacが必要ってことですかね。

私、初めて触った言語はCからなんですが、すぐにJavaで、Perl、PHPといった流れなんで、C++もC#も使ったことないんですよね。

まあ、やればなんとかなるとは思いますが、使えるようになるには時間がかかりそうですね。

ハイブリッドアプリ

次は、ハイブリッドアプリです。

  • Cordova

使用言語はhtml5/javascript

Visual Studioで動かせるようなので、これでやっていきます。

また、公式にBeginner’s guideがあるのでそれにそっていきます。

エミュレータには、RippleがありChrome上で動くのでとても軽快です。

加速度を試してみたり、GPSを操作してみたりと、かなり多機能になっていますね。

002

実機で見ても同じように動きますね。

iPhone対応については、MacをLan内に設置した状態でVSからremotebuildを実行して対応を行うようです。
正直良くわからないです。

  • monaca

使用言語はhtml5/javascript

これもVisual Studioで動かせるようなので、これでやっていきます。

なんかVisual Studioばっかですね。

尚、monacaは無料で利用できるサービスらしいのですが、作成出来るアプリの数に制限があったりするようです。

001

一応、出来たんですがビルドしたアプリを実機で試す方法が、QRコードだったり、ローカルへのダウンロードだったりテストするのが面倒そうです。

何は他に方法がないものかと思い調べてみましたが、どうもスマホにデバッガを入れて、そこからネットワークインストールするのが手軽なようですね。

iPhone対応については、ビルドがクラウドなのでそのまま出来るようです。

まとめ

環境構築には時間がかかりますね。
実は今回の記事、今まで一番時間がかかっています。(いつもの3倍ぐらい)

さて、結論ですが行う前はハイブリッドアプリでどこまで出来るのかな~といった疑問があったんですが、軽く触った感じでも結構色々出来そうな印象です。

基本的に、ハイブリッドで作り、複雑なものとか速度が必要なもの、或いはハイブリットではサポートしていない機能が必要な場合はネイティブを使うといった住み分けになりそうですね。

あと、iOS用にビルドするのは結構手間が掛かりそうです。
monaca以外ではMacが必須ですし、ビルドの仕方もそれぞれ癖がありそうでした。

もっとも、iPhoneアプリを作るには、Mac+Xcodeでもない限り、一万ちょいのお布施がかかるんですが。。。

と、結論付けていますが、Xamarinに、わりと魅力を感じてはいます。
とはいえ、VSにある程度慣れて、C#にもある程度なれた上でないと、グダグダになる気がします。

Qtでも同じ問題にあたってしまいますね。

なので、次から何かアプリを作るときは、monacaかCordovaを使ってになりそうです。

まあ、どっちが良いか少しは使ってみないと分からないので、次回ブログを書くぐらいまでには試して見ようかと思っています。
では。