« 2016年11月 | トップページ | 2017年1月 »

2016年12月

2016年12月31日 (土)

2016年ふりかえり

今年1年大変お世話になりました。もう少しで今年も終わりですので、ちょっとだけ振り返ってみました。

今年はいきなり出張先(仙台)で年越しをするという、ある意味定常運転状態からのスタートでしたが、コミュニティ関連にはあまり出れなかった感があります。
(というか、ここ数年で出張回数が減った+日程がギリギリでコミュニティに出るスケジュールが組めない(;´Д`))

そんな中で、「Xamarinすげー」ということで、ついにMacBook+iPhoneを購入してしまうという状態になり、少しは新しい技術に手が付けられたのはよかったと思ってます。

あと、ご縁があり、TFSUGとして書籍「アジャイルでやってみた。ウォーターフォールしか知らなかった僕らSIerのスクラム日記」を出させていただくことができました。
自分の力量不足でいろんな方にご迷惑をお掛けしました。改めてご尽力いただきありがとうございました。<m(__)m>

そして、今年もMVP Awardを受賞させていただくこともできました。こちらも皆様のおかげで受賞できたものと思っております。

来年は、VSVS+Xamarin系の情報整理が残ってるので、まずはそれを片付けて、そろそろAzureもやってみたいなと思います。

MacやXcodeを知らないやつが始めるXamarinアプリ開発 - HockeyAppとは

アプリの動作を実機で確認したい場合、個人レベルならVSから実機に接続してのリモートデバッグでも十分ですが、ある程度の規模で開発している場合(例えば、複数種類の実機で確認するなど)、実機展開に手間がかかったり、平行で確認するとなるとその台数分デバッグ環境が必要になります。
また、利用状況(「アプリがどんな環境で実行されているか」「利用者からフィードバックが欲しい」など)とか、アプリがクラッシュしたときのデバッグ情報が欲しいということもあります。
こういった内容をサポートしてくれるサービスとして、HockeyApp(https://www.hockeyapp.net/)というものがあります。
単体で利用することもできますが、VSTSのビルドと連携させることも可能です。
2つのアプリケーションまでは無料で利用できますので、個人でも気軽にお試しできます。

VSTSとの連携を行う前に、HockeyApp側にアプリ登録が必要になります。
初期画面(Dashboard)にある「New App」をクリックすると、アプリの登録画面が表示されます。
001
002
ここにアプリのファイルをドロップすることで登録できるようになっていますが、今回はVSTSとの連携なので、一番下の「manually」部分をクリックします。

次の画面でアプリ情報を入力します。
003
・Platform
 アプリの実行環境を選択します。
004
・Release Type
 リリースの扱いを選択します。但し選択肢に「store」がありますが、さすがにここからはstoreに展開はできませんw。
005
・Title
 HockeyApp内での表示名を入力します。
・Bundle Identifier
 ビルド時に指定するIdentifierですが、「証明書発行 その2」(http://blackssi.cocolog-nifty.com/blog/2016/11/macxcodexamar-2.html)でBundle IDに指定した内容を入力します。
 (VSのプロジェクト設定だと、「iOS Application」にある「Identifier」の内容(青枠のところ)になります)
006
すべて入力したら、「save」ボタンをクリックします。すると、登録アプリの概要を表示する画面に移ります。
007
この画面に表示されている「App ID」(32桁の16進数:キー情報なので、ここでは消してます)をVSTSでHockeyAppとの連携で使用します。

続いてはVSTSとの連携についてです。

2016年12月23日 (金)

MacやXcodeを知らないやつが始めるXamarinアプリ開発 - VSTSビルド定義作成

Connect(); 2016でVisual Studio Mobile Centerが発表されたりとか、CLR/Hさんのセッション準備とかでちょっと間が空いてしまいましたが、今回はVSTSのビルド定義についてです(Visual Studio Mobile Centerについては一通りまとめた後で紹介したいと思っています)。
※画面/設定内容などは現時点のものになります(クラウド系怖い)。

早速ですが、VSTSのチームプロジェクト作成とかソースコードの登録については省略します。
なお、バージョン管理についてはGitのほうが良さそうです(外部サービスとの連携はGit対応が多いので)。
ビルド定義の作成ですが、テンプレートとしては「Xamarin.iOS」を使用します。
001

ビルド定義作成の画面でビルドエージェントのデフォルトを指定するところがあります。
通常はAzure側で準備される「Hosted」を使用しますが、今回はMacに作成したエージェントを使用するので、エージェント環境構築時に作成したエージェントプール「localhost」を選択しておきます。
002

「create」ボタンをクリックすると、ビルド定義の編集画面に変わります。
最初の「Xamarin component restore」タスクはXamarinのコンポーネントをエージェント環境にリストアするときに使用します。
NuGetで組み込み可能なコンポーネントのみでVSプロジェクトが構成されているのであればこのタスクを使用する必要はありません。
使用予定がなければ、右側の×ボタンで削除しても構いません。
※ビルド定義作成時点では、EnabledがOFFになっていますので、実行されません。
003

「Build Xamarin.iOS solution」タスクでアプリのビルドが実行されます。
004

詳細はこちら(https://www.visualstudio.com/en-us/docs/build/steps/build/xamarin-ios)を参照してください。
今回作成する定義の設定概要はこんな感じです。
・Solution
 VSのソリューションファイルを指定します。パス指定は「・・・」ボタンをクリックしたあとの選択画面で指定することもできます。
005

・Create App Package
 実機転送で.IPAファイルを使用するのでONのままにしておきます。
 (デフォルトはON)
・Build for iOS Simulator
 実機転送するのでOFFのままにしておきます。
 (デフォルトはOFF)
・Override Using (Optional)
 署名証明書やProvisioning Profileを切り替えるときに指定します。今回は事前に作成したProvisioning Profileや署名証明書を指定するために「File Contents」を選択します。
・P12 Certificate File
 PKCS #12形式(.p12)の署名証明書ファイルを指定します。事前にバージョン管理システムに登録されている必要があります。
・P12 Password
 PKCS #12形式(.p12)の署名証明書ファイルを作成するときに指定したパスワードを入力しますが、パスワードが丸見えなのはよろしくないので、ビルド定義の変数として指定し、その値自体を秘密にしておくことができます。
 最初に変数名をこの項目に指定します。ここでは"$(P12_Password)"としておきます(カッコ内が変数名になります)。
 次にビルド定義画面の「Variables」タブをクリックします。
006

 変数一覧が表示されるので、一番下にある「Add variable」をクリックすると、変数の入力行が追加されます。
 Nameに"P12_Password"を、Valueにパスワードを入力し、右側にある鍵マーク(青色の枠のところ)をクリックすると、Valueに入力した内容が「●」に変わります。
 もう一度鍵マークをクリックすると、Valueに入力した内容はクリアされるので、別の人が入力内容を見ようとしても見れないようになっています。
007

・Provisioning Profile File
 Provisioning Profileのファイルを指定します。事前にバージョン管理システムに登録されている必要があります。
・Arguments
 詳しく確認はしていないのですが、ビルド時のプラットフォームとして「iPhone Simulator」が使われてしまったことがあったので、自分は念のために"/p:Platform=iPhone"を指定しています。

「Test **/*.ipa with Xamarin.UITest in Xamarin Test Cloud」タスクですが、Xamarin Test Cloudでテストを実行する際に使用します。
今は連携しないので使用しません(デフォルトはEnabledがOFFになっています)。

「Copy Files to: $(build.artifactstagingdirectory) 」タスクと「Publish Artifact:drop」タスクはデフォルトのままにします。

ビルド定義の設定が終わったら、「Save」で保存します。「Queue new build...」をクリックするとビルドが実行されます。

やっとVSTSでのビルドを実行するところまで来ました。次はMicrosoftが提供しているモバイルアプリの開発や運用を支援するためのサービス「HockeyApp」を使って、作成したアプリを実機展開したり、利用統計を取得することについて書いていきます。
※最初に書いたように、モバイルアプリ開発/運用支援サービスとしてVisual Studio Mobile Centerが発表されましたが、現時点ではPreviewなのと、基本的なところはVSTS+Xamarin Test Cloud+HockeyAppなので、このまま続けていきます。

MacやXcodeを知らないやつが始めるXamarinアプリ開発 - 証明書発行 その1.1

今更ですが、その1で説明予定だったPKCS #12形式(.p12)の証明書作成の内容が丸々抜けてました。<(_ _)>
早速ですが、抜けていた内容の説明です。
その1でダウンロードした証明書ファイル(.cer)をダブルクリックすると、Macに証明書情報が登録されます。
キーチェーンアクセスを開き、キーチェーンの種類から「ログイン」を、分類から「自分の証明書」を選択すると、ダブルクリックで登録した証明書が表示されているはずです(名前は作成した証明書の種類によって変わります)。
101
その証明書にぶら下がっている秘密鍵を選択した状態で、メニューから「ファイル」-「書き出す...」をクリックします。
フォーマットから「個人情報交換(.p12)」を選択し、書き出すファイル名と場所を指定して「保存」ボタンをクリックします。
102

証明書を保護するためのパスワードを入力し、「OK」ボタンをクリックするとファイルが保存されます。
103

この作業はMacで作業したほうが楽なはずです(証明書の操作なので、Windowsでもコマンドで対応できるはずなんですが)。
続きは「証明書発行 その2」になります。

2016年12月18日 (日)

CLR/H #103に参加してきました

毎年恒例ですが、CLR/Hさんのカソウ化イベントに参加してきました。
ありがたいことに、セッションも担当させていただきました。
(使用した資料に、各種サービスの画面を追加で張り付けたものをこちらに置いています)
今回は「Xamarinアプリ、作ったそのあと・・・」というタイトルで、
 ・iPhone用はMac持ってないからビルドできない
 ・いろんな機種でテストしたい
 ・クローズドベータとして展開したい
 ・クラッシュ時の情報がほしい
 ・利用統計が取りたい
といったことに対して使えるツールを超概要レベルでお話させてもらいました。
ザックリ言うと、
<現状(正式版)の範囲では>
 ・ビルドはmacOS上でXcode+VSTSのエージェント環境を作成
  ※当然、Mac上でXamarin Studioを使ってビルドすることもできます。
 ・高いけど、Xamarin Test Cloudを使えば複数の機種でテスト可能
 ・クローズドベータ/クラッシュ時の情報/利用統計はHockeyAppでまとめて管理
  ・アプリが更新されたときにHockeyAppからメールで通知され、メール中のインストール用リンクからインストール可能
   (スマホ実機をPCに接続する必要がない)
  ・クラッシュ時の情報や利用統計はSDKを組み込んでおけば簡単に取得可能。
   自分が個別に取得したい情報(どの画面がよく使用されるか?など)も簡単に取得できる
という感じですが、この前発表されたVisual Studio Mobile Center(現時点はプレビュー)だと、VSTS+Xamarin Test Cloud+HockeyAppが1つにまとまってる感じで、複雑な設定は気にせずに使えるようになっています。
<Visual Studio Mobile Centerでは>
 ・iOSのビルドにMac不要 ← 個人的には超重要!!
 ・テストもXamarin Test Cloudとほぼ同じ感覚で使用できる(はず) ← まだきれいに動かせてません<m(__)m>
 ・クローズドベータ/クラッシュ時の情報/利用統計は、ほぼHockeyAppと同じ使い方
但し、Visual Studio Mobile CenterではVSTSのRelease Managerのような承認フローがなかったり、VSTSのビルドだとタスクを組み合わせることで細かい制御ができていたところが対応できなかったりといった違いがありますので、利用場面によってどちらのサービスを使用するのかを考える必要があると思います。
今回の内容については、VSのXamarinアプリのテンプレートからデモ用アプリの作成やMac上でのVSTSエージェント環境の作成、各種サービスでの自動連係まで一通り実機確認していますが、細かい点になるといろいろ使いずらい点やうまく動かないものもあります。
→例えば、Visual Studio Mobile Centerのテストを動かすには、画面から連携情報を設定するのではなく、作成したアプリをコマンド(mobile center CLI)で登録する必要があります。
 しかも、コマンドを実行するには「node.jsが必要+NuGetのPackageが格納されているフォルダから実行する必要がある+コマンドの引数にテストプロジェクトのバイナリが格納されているフォルダの指定が必要」という、VSTSのビルドタスクの作りやすさはどこ行った!! という感じです。
ですが、これだけの内容を自作することは(コストメリットまで考慮すると)無理ですので、こういったサービスは使っていかないと損だなと実感しました。
(ビルドにMacが要らないのは大きいな・・・)

« 2016年11月 | トップページ | 2017年1月 »