2017年1月22日日曜日

スマホのアプリを作る

PCでスマホのアプリでも作ってみようかとフリー版が公開されたDelphiXE10Starterを起動してみたのですが、StarterEditionではAndroidのアプリは作れないことがわかって終了。Embacaderoさん、スマホアプリ機能も無料公開お願いします。
他にないか探してみたところ、先日インストールしたフリーのMicrosoft統合開発環境VisualStudio2015Communityで、C#を使ってAndroidアプリを作成できることがわかったので、さっそくインストール。
Xamarin(ザマリン)というソフトをインストールすることでVisualStudioのIDEを使ってC#でスマホアプリが作れてしまいます。インストールに数時間かかりました。
Xamarin.Formsというクラスライブラリを使うと、iPhoneとAndroidのアプリが共通化して作れちゃうのですが、我が家はAndroidスマホしかないので、Xamarin.Androidアプリのスケルトンをコンパイルして動かしてみたところ、
デバッグ実行がとにかく遅い…
VisualStudioでWindowsアプリの開発をする分には、それなりの速さで作業できるのですが、Android端末エミュレーターを動かしてのデバッグは実行開始してアプリが動き始めるまで20秒くらい待たされる。
エミュレーターの動きが遅いので速くする方法はないか調べてみましたが、Xamarin4.2.2のユニバーサルインストーラでは、既にエミュレーターの高速化を行うintelのHAXMを入れてx86用のエミュレータを作ってくれるみたいで、既にアクセラレーションが効いている状態になっており、これ以上の高速化の術がないことがわかりました。
エミュレータがダメなら、実機で動かしたものをデバッグできれば速いんじゃね?
ということで調べたら普通にできるようです。
Android SDK ManagerでGoogle USB Driverをインストール。
XPERIA ZL2は、パソコンに接続して連携するソニーのソフトPC Companionをインストールしていれば、実機用のドライバのインストールは完了している状態。
USBケーブルで繋いでみたところ、あっさりとVisualStudio2015で認識されました。

さっそくデバッグ実行。最初はADB(Android Debug Bridge)のサーバープログラムのデプロイをするのか知りませんが数十秒かかったものの、その後はデバッグ実行開始から動作は軽快。当たり前ですが、ソースにブレークポイントを設定すれば停止してステップ実行も可能。すげー。
ちなみにXPERIA ZL2でUSBデバッグを可能にするには設定が必要です。
うちは未だにAndroid 4.2.2のままなので、設定→端末情報を7回タップ→開発者向けオプションを表示→USBデバッグをONという操作でした。
さらにコマンドラインからadb connect IPアドレスでwifi接続にすれば無線接続でのデバッグも可能。
XamarinによるC#で開発したアプリは、Javaで作成するよりもずっと高速らしいです。これを開発して無料で公開するなんて、素晴らしい貢献だと思います。
とりあえず軽量な音楽プレイヤーを作ってみる予定。