カテゴリー: Xamarin

  • 「Xamarin.Forms」はC#でのWindowsアプリ開発とは別物!

    「Xamarin.Forms」はC#でのWindowsアプリ開発とは別物!

    「Xamarin.Forms」でモバイルアプリ開発をし始め、簡単なアプリを今作成中であるが、「Xamarin.Forms」は言語は「C#」ではあるが、今まで「Microsoft Visual Studio」でWindowsアプリの開発をしていた人には全くの別物と感じます。

    事実、私がそのように感じています。

    Windowsアプリの開発を「VC#」でやってきた人にとっては、少し混乱してしまう事が多々あります。

    「C#」であることは確かですが、「Xamarin.Forms」特有のコーディング方法を確立する必要があります。少し「Java」の慣習があるのでしょうかね。関数や変数を定義する際に頭文字を大文字にしなくてはいけないケースがあったり、意味不明なコンパイルエラーに悩むことがあります。

    最初から別物であると認識した方が良い!

    勿論「VC#」で開発経験してきたことは活かせますが、「Xamarin.Forms」に関しては一から始める必要がありそうです。「Microsoft Visual Studio」でWindowsアプリを開発してきた人は、少し戸惑います。結構面倒な事が多いです。

    特に私のようにWindowsアプリ開発の経験はあってもモバイルアプリ開発経験が無い人にとっては慣れるまでに多少時間が掛かるような気がします。

    それだけ「Microsoft Visual Studio」での開発が快適過ぎたせいなのでしょうか?

    クロスプラットフォーム開発なので「UWP(ユニバーサルWindowsプラットフォーム」も可能なのですが、「iOS」、「android」、「windows」アプリを一つの言語でまとめて開発できるメリットは大きいのですが、それぞれ特有の機能を利用するとなるとかなりキツイものを感じます。

    何処までを共通化できるのかが未だ見えません!

    「Xamarin.Forms」に関しては日本語の情報がまだ少なすぎますね。恐らく、画面だけネイティブで開発している方が多いのではないかと感じます。もしくはハイブリッドアプリで開発しているかのどちらかですかね。

    全てのOSに対応できる「Xamarin.Forms」は魅力的ですが、どれ位のアプリまで全共通化コードで記述できるか?まだ未知数です。

    Windowsだけの開発なら簡単に出来たことが簡単に出来ない!

    ストレスが溜まります。

    モバイルアプリ開発って意外と大変だったんですね。今までやったことが無かったので痛感させられています。あとは久しぶりのコーディングという事もあるのでしょう。

    やはりデバッグ機で動作すると楽しい!

    ちょっとしたモヤモヤ感は否めませんが、デバッグ機で自分のプログラムが動作すると楽しいですね!久しぶりです。このようのワクワクした気分は。

    だけどプログラミングは面倒!

    「Xamarin.Forms」を完全に使いこなせるようになれば、面倒なことは無いのでしょうけど。まだタマタマ動いているプログラムにしか思えない。完璧主義の自分にはそれが許せない。

    理解して記述したプログラムとタマタマ動作してしまったプログラムでは大きく違う。これではまだまだ世に出せないな。自分のアプリは。バグが発生した時に原因が追究出来ないかも知れない。

    「Xamarin.Forms」を完全に理解するには、まだ時間が掛かりそうです!

    やはり「Xamarin.Forms」の経験値が必要です。

    ちょっとマイナス的な事を記載しましたが・・・。

    何だかんだ言ってもオブジェクト指向言語であることは変わりません。C#でのクラスを作ったりする事は何も変わりがありません。今のところ私が悩んでいる点を箇条書きしましょう!

    • 画面周り(画面パーツ)の使い方と何処まで共通化できるか?イベントの飛び方と引数はどのようになっているか?「XAMLファイル」への記述と「C#」での記述を何処まで別けた方が良いか?これは線引きに悩みますね。何処までを「XAMLファイル」に頼るかは。
    • ファイルアクセスはどこまで共通化できるのか?
    • アドレス帳(連絡先)等のアクセスは何処まで共通化できるか?

    先ずは一番最初に書いたポイントで今悩んでいます!下の二つは作るアプリによって必要となった時に悩めば良いのかなと思っているところです。結局どこまで「Xamarin.Forms」でアプリ開発をすれば良いのか?

    これが最大の難点です!

  • XamarinのADV「エミュレーター」は使物にならない!デバッグに実機を使用する方法!

    XamarinのADV「エミュレーター」は使物にならない!デバッグに実機を使用する方法!

    ちょっと衝撃的でした!いきなり訳の分からないところで挫折!当初XamarinのADV(Androidエミュレーター)を利用して「Hello World!」を表示するところまでは順調でしたが、エミュレータにアプリが配置されるのに時間が掛かりすぎるのは気になっていましたが

    エミュレーター自体の起動はそこそこ早いのですが、XAMLファイルでデザインを加えてADVを使用するとアプリの配置と起動までに時間が掛かりすぎるため使い物になりません。時間が掛かりすぎるというよりもアプリが起動しません。色々調べて「x86_64」が早いという情報もあるのですがそれでもお話になりません。デザインを入れただけのアプリの起動がされなくなるってどうなの?

    C#を知っていても、いきなり挫折しました。結局行きついたところは実機の使用です。試しに実機で試してみたらあっけなく表示されました

    最初は「Xamari.Forms」での開発が遅いのかな?って思っていましたが、「ネイティブアプリ」でも同じです!残念ながらADVは使い物になりません!

    実機ベースで開発しないと駄目ですね。Android端末を沢山所有している訳ではないので画面サイズ等の問題を上手くクリアする必要はありますが、現時点では実機ベースのデバッグが一番良いです。こんなところで無駄な時間を使ってしまいました。

    ADV「Androidエミュレーター」の問題点

    まず私の開発環境のスペックですが、下のような構成です。

    OSWindows10Pro
    プロセッサIntel(R)Core(TM) i5-7400 CPU @ 3.00GHz
    実装メモリ(RAM)16.0GB(15.9GB使用可能)
    ドライブCドライブ:SSD(222GB)
    Dドライブ:HDD(2TB)
    システムの種類64ビットオペレーティングシステム、x64ベースプロセッサ

    「Microsoft Visual Studio Community 2017 Version15.4.2」をCドライブにインストールして使用しています。開発ソリューションはDドライブに作成しております。

    確かに今は「i7」というCPUがありますが、開発するには十分過ぎる環境であるはずです。これでも不足しているというのであれば、常にパソコンを買い替えないと開発環境に追い付けない。自分の知っている「Visual Studio」をWindowsアプリの開発ではデバッグが簡単に行えていました。

    しかしADVの速度に問題があるのか、アプリ展開が遅いのかは不明ですが、Xamarin.Forms.Previewer」で表示できているのに、「Hellow World!」からデザインを変更しただけで反映されない。新規にエミュレータを作成してもダメ。何もかもダメ。

    ADVを使って開発すること自体が現実的ではない」と言う結論に至りました。

    これはもうハードスペックの問題ではない!

    上記で説明した通りですが、ADVを利用した開発は幾ら開発環境が良くても遅いと思います。私も「Hyper-V」を無効にして「x86」で高速化したエミュレータを作成して試しましたが、ビルドとエミュレーターの起動までは順調です。配置に関しても少し待っていると、「準備完了!」と表示されるのですが、肝心の開発しているアプリが起動してきません。デザインを少しいじっただけで

    これ何か重大な問題点があるような気がしてなりません。そのうち解決するような気がしますが、実機を使用するとあまりにもあっけなく表示されたので、デザインコードが間違っていたとは考えられない。ビルド時もエラーはなしです。

    もはや意味不明です!

    恐らく同じような事で悩まれている方いるのでは?

    ちなみに「Xamarin Live Player」で「iPhone」ではあっけなく表示されます。

    ADV「エミュレーター」の使用で悩まれている方いましたら、エミュレーターの利用は薦めません!とりあえず2017年11月時点においては使うこと自体が時間の無駄になりますので、ここで躓いている方は実機でのデバッグをお薦めします。

    実機でのデバック方法!

    android端末を用意してください。これは余りにも古いバージョンのandroid端末は何とも言えません。ネットオークション等で安く手に入れるのもありですかね。「Nexus7」あたりが丁度良いような気もしますね。

    まずandroid端末を開発者モードにする必要があります。これandroidのバージョンによって方法が異なるようです。

    ただ、android端末の「設定」-「端末情報」-「ビルド番号」が表示されている部分をクリックすると開発者モードに切り替えできます。ちなみに私の端末は「エイスース 8型タブレットパソコン ZenPad 8.0 Wi-Fiモデル (ブラック) Z380M-BK16」なのですが、ビルド番号が「ソフトウェア情報」という部分に表示されていたので、そこを連続5回クリックしたら開発者モードになりました。

    開発者モードに切替えたらするべきこと

    android端末の「設定」の中に「開発者向けオプション」とうものが表示されますので、「USBデバッグ」をONにして下さい。

    これでデバッグ端末側の準備は終了です。まだパソコンとUSBで繋がないで下さい。

    「Android SDK Manager」で必要なドライバーをインストール

    下図「Android SDK Manager」の赤枠部分で囲ったGoogle USB Driver」をインストールして下さい

    Google USB Driver

    恐らくandroid端末のバージョンによっては、そのバージョンに必要なSDKもインストールが必要になるケースもあると思います。

    デバッグするまであと少しです!

    ここまで来ましたら、一応一度「Visual Studio」を閉じておいてください。USBでandroid端末を繋ぎ、「Visual Studio」を起動してみて下さい。下図の赤枠部分のエミュレータ選択部分に実機名が表示されるはずです!

    エミュレータ選択

    これでデバッグしてみて下さい。

    あっけなく実機に開発アプリが表示されます!

    最後にまとめると

    恐らく、ADVに拘っていたことが馬鹿みたいに思えませんか?とりあえずandroidアプリの開発には実機が少なくとも必要になるという事です。最終的には実機で確認作業も必要となるので、画面サイズが小さいものと大きいもの2台は欲しいところですね。

    最初から実機でデバッグをした方が効率が良いという事が今回わかりました!

    この記事でエミュレーターの事で悩まれている方いましたら、最初から実機を使用することをお薦めいたします。最終的に世の中にリリースするには端末で確認作業が必須ですので、無駄にエミュレーターの事で悩まない方が良いです。

  • 【Xamarin.Forms】にはデザイナーがない。「Xamarin.Forms Previewer」を利用してGUI開発!?

    【Xamarin.Forms】にはデザイナーがない。「Xamarin.Forms Previewer」を利用してGUI開発!?

    昨日から触り始めた「Xamarin」だが、いきなり拍子抜けしてしまった。【Microsoft Visual Studio】を利用したことがある人なら知っていると思いますが、Windowsアプリケーションの画面作成って簡単にできますよね?それが、「Xamarin.Forms」に関して言うとユーザーインターフェース(GUI)を作成するのに、デザイナーがありません。これは流石にビックリしました。

    ネットで調べても「androidアプリ」と「iPhoneアプリ」で簡単な画面なら「Xamarin.Forms」だけで全て完結するのではないかと期待してたのだが、画面の作成を全て手書きすることになるとは意外でした。

    ホームページで言うと「メモ帳のみでHTMLを記述してページを作成しろ」と言っているのと同じである。Windowsアプリの開発で画面作成に苦労なんてしたことが無かったので、流石に考えてしまいました。

    ネイティブである「android」と「iphone」用のデザイナーは準備されています。恐らく、基本的に画面に関しては別々に作成した方が良いと言っているようなものである。そういうのが嫌だから「Xamarin.Forms」に期待していたんですけどね。今少し戸惑っています。どうするべきか?モバイルアプリの手法は色々あるので「Xamarin.Forms」を覚えていくのが妥当なの之か?それとも別の手法を採用するかは思考中です。とりあえず「Xamarin.Forms」を手書きで簡単なアプリを作ってみて考えてみようかと思っています。

    確かに複雑な画面の場合には「Xamarin.Forms」は画面作成には向いていないオブジェクトであると思います。別々に画面を作成するのはデザイナーがあるので問題はないのですけどね。

    「Xamarin.Forms Previewer」は必須です

    デザイナーはありませんが、どのような画面になるかを確認できるXamarin.Forms Previewer」という機能があります。この画面を見ながらコーディングしてくのが現実的なようです。恐らく慣れてしまえば、「Xamarin.Forms」での画面作成も簡単にできるようになるのでしょうけど、コードで画面作成するケースは「Visual Studio」で開発してきましたが、動的にボタンやタブを増やしたりするケース位ですね。

    まさか画面の作成に苦戦するとは思いませんでした。しかも私の購入した本には「Xamarin.Forms」の利用に関しては殆ど触れられていませんでした。画面に関してはネイティブ開発の方が良いという著者の考え方なのでしょう

    しかし、恐らくMicrosoftの事です。きっと「Xamarin.Forms」用デザイナーがその内に搭載されるのではないかと思います。とりあえず現状の「Microsoft Visual Studio Community Version15.4.0」には搭載されておりません。逆に利用できるような方法を知っている方いましたらご教授お願い致します。

    モバイルアプリ開発は「Xamarin」が本命!

    どちらにせよ「Microsoft Visual Studio」の「Xamarin」を利用した開発手法が今後は主流になるはずです。ここはMicrosoft社がWindowsというプラットフォーム以外の事もきちんと考えていることを称賛したいところです。だからこそ色々試して、どういう開発の仕方が良いのかを見極める必要がありますね。特にiOSの開発で「AppStore」に出品するとなると審査が厳しいです。キチンと認められた開発手法である必要があります。「Xamarin」に関しては承認しているということなので何も問題がありません。

    それと「C#」はとても良い言語であることは確かです。きちんとしたオブジェクト指向言語としてクラス作成することができるので、作成したクラスは色々流用することが可能です

    作成したプログラムが資産となり、次から次へとアプリ開発の効率性が向上すること間違いなしだと思います。今まで「C#」で作成したプログラムも少し改良すれば使いまわせそうなので、そこら辺も有難いところです。

    私が「Xamarin」についてもう少し理解したら、どんどん記事にしていこうと思いますのでよろしくお願いします。「Xamarin」について詳細に説明されているサイトはまだ少ないので、私の方も少し苦労しそうな気がします。どうせ取組むならキチンと覚えた方が良い。ただ動けば良いアプリではメンテナンスが大変なので。