知人の依頼で、初めてアプリを作成することに。
慣れ親しんだ(といっても使い始めたのはここ1、2年ですが)Visual Studioで作成できるXamarinで開発してみることにしました。
内容は非常にシンプルで10点ほどの数値データの平均値、標準偏差、相対標準偏差を求めるアプリが欲しいとのこと。
簡単にできそう!と思ったもののいざ取り組んでみると、あちこちで躓いてしまったため、その内容を備忘の意味も含めてまとめておきます。
##ハマりポイントその1
「ツール→Android→Publish Android」が無い!
まずはblankモデルをコンパイルしてみることにしました。
visual studio2015でBlank App(Android)を選択して、まずはコンパイル、、、の方法がまずわかりません。
色々とHPを調べると、例えばこちらのxlfsoftさんのHP等は非常に分かりやすくて参考になったのですが、肝心のPublish Android...というコマンドがツールの中にありませんでした。
かなり長い時間調べ、漸くたどり着いたのが、こちらのブログ。正にドンピシャの内容で非常に助かりました。
ビルドの中に確かにArchiveコマンドありました。更にキーの発行方法まで詳しく解説してあり、この通りの手順で問題なくコンパイル→発行できることが確認できました。
ただ、違うPCで確認した時にはツール→Android→Publish Androidが確認できたので、Visual Studio 2015のupdateバージョンか、Xamarinのバージョンで違うのかもしれません。
##ハマりポイントその2
知人の依頼は元々10点ほどのデータに対しての統計計算だったのですが、20点ほどに変更して欲しいという話に。そうなると、画面の中にテキストボックスが収まらなくなってしまいます。なんとかスクロールできるようにしたいなと思ってツールボックスを見ていると、Scrollviewというそのままズバリのツールを発見。早速Designer画面でScrollViewを置いて、Source側で自動生成したコードを、以下のように、コンテンツを丸ごとScrollViewの中に入れ込むような形に変更してみました。
これで上手くいくだろうと思ったのですが、いざDesigner画面に戻ると以下のように直属の子要素は複数にできない旨のエラーメッセージが、、、。
こちらもかなり調べるのに時間がかかりましたが、最終的にはこちらの動画を見て解決しました。9分程度の動画ですが、余計な個所も多いので結論だけ乗せると、複数の子要素をまとめてScrollViewの中に入れ込みたい場合は、すべての子要素を一旦TableLayoutの中にまとめて入れれば良いようです。
具体的には、以下のようにコーディングします。
これで、すべての要素をスクロールの中に入れ込むことができます。
##ハマりポイントその3
これで完璧と思って知人に渡した所、小数点以下の数字が入れられないという連絡が、、、。確かめてみると確かに小数点が入れられません。
なにか入力規則を入れるところでもあったのかと思って、長いプロパティ欄を小まめに確認していたところ、Input FormatのinputTypeがNumberになっていました。
後で気が付いたのですが、ツールボックスの中にNumberとNumber(Decimal)がありました。作成当時は数値だからとなにも意識せずNumberを選んで配置していってしまったのですが、よく見ればテキストボックスも様々なタイプがあり、とりあえずで進めると痛い目を見るなと痛感しました。
##最後に
3つ目のポイントは小さいことなのですが、ここで苦戦した一番大きなポイントがデバッグでした。Visual Studio付属のデバッグでは「配置エラー」という謎のエラーで動作検証ができないため、都度都度アプリを作成して、Nox(私が今回検証に使用したandroidのエミュレーターでお勧めです)で動作検証するというサイクルを繰り返していました。このため、動作検証が結構面倒で、端折っていた(1~20の1サンプルでしか評価していなかった)ために、入力値の制約に気づかなかったという問題がありました。
デバッグが上手く動作しない原因は調べて分かればまたまとめたいと思います。
作成したアプリは以下のように、標準偏差を求めるようにしています。(一応エクセルで計算の精度は検証しておきました)なお、知人に渡すだけの目的だったので、メールで渡すだけでストアにはアップしていません。メールで渡す方法については、こちらのサイトを参考にさせていただきました。
色々苦戦はしたものの、基本的にはC#の知識でアプリ開発ができる(しかも無料で)というのは素晴らしいですね。