読者です 読者をやめる 読者になる 読者になる

ぴよぴよエンジニアの日記

ぴよぴよエンジニアの日記です 技術系のことや日常のことをつぶやきます

JXUGC #11 Xamarin ハンズオン大会

Xamarin C#

Xamarin ハンズオン大会に行ってきました!

jxug.connpass.com

本日のハンズオンはXamarin初心者向けの内容でしたが,ネイティブ(Xamarin.Android,Xamarin.iOS)とXamarin.Formsの両方を一度に体験できる盛り沢山なハンズオンでした.

講師の方も全員で5人(?)いらっしゃって,非常に質問しやすい環境だったと思います.

またハンズオン用のレポジトリがとても丁寧に作られていてコピペがしやすかったです!
github.com

会場

田町駅から徒歩12分ほどのエクセルソフトさんが会場でした.

1テーブルに2~3人だったので資料を広げながら作業しやすかったです.

ハンズオン~ネイティブ編~

f:id:Santea:20160326230705p:plain

文字列を電話番号に変換し電話を掛けるアプリを作りました.

AndroidはIntentで,iOSはSharedApplicationで電話アプリを呼び出します.


Xamarin.Androidは書いたことがあったのでサクサク書けたのですが,Xamarin.iOSは初めてだったのでConstraintsでだいぶ苦しんでいたところ...

「StoryboardはXcodeで開けます」

と教えて頂きました.

f:id:Santea:20160326233049p:plain

いつも通りにConstraintsをポチポチできる!!

Xamarin Studio,まだまだ色々な機能がありそうですね.

ハンズオン~Forms編~

f:id:Santea:20160326235413p:plain

Formsでも同様のアプリを作りました.

Formsだとテーマがデフォルトで5系のものになっています.
むしろXamarin.Androidで5系のテーマにならないところが変ですかね?


f:id:Santea:20160327000244p:plain

もちろんFormsでもカスタムテーマを実装できます.

View一つひとつは完全にネイティブのViewにマッピングされるので,Viewのテーマは自由に変えられます.
ここはネイティブライクな感じでいいですね!!

ただ、やはりViewの自由度は下がってしまう感じです.
例えばAndroidのCollapsingToolbarLayoutなどはネイティブで実装する他ないです.

田淵さんもおっしゃっていましたがFormsは,

  • 短時間で作りたいモック
  • UIに凝らないで良いビジネス用のアプリ
  • 簡単な可視化用のアプリ

などが良さそうです.

アドバンス的な内容

Custom Renderers

Customizing Controls on Each Platform - Xamarin

「FormsでもネイティブのViewをゴリゴリ使うことはできますか?」と質問したところ,Custom Renderersを紹介頂きました.

実際に田淵さんは角丸のボタンを作られていました.

しかし,凝れば凝るほど結構大変...
「そこまでやるならコアな部分だけ共通化してネイティブで書いたほうがむしろ楽だと思います」とのことw


Plugins for Xamarin

GitHub - xamarin/plugins: Plugins for Xamarin

デバイス固有の機能に簡単にアクセスできるPlugins for Xamarinです.

GPSや加速度センサなどのデバイス固有の機能の利用に際し,少しの共通化コードを書くだけでネイティブ側によしなに変換してくれる素晴らしいライブラリ群.

センサ類はOSによって使い方が違いますし,更に言うとセンサによっても違いますので,ここを共通化できるのはかなり魅力的ですね!!

けっこう真面目にFormsでロガー作るのありな気がしています...

感想

とても楽しくハンズオンができました!

資料自体もとても充実していたのですが,加えて口頭で補足説明頂けたのがとても良かったです.
また環境面でも電源,Wifiは完備でしたし,講師の方にも質問しやすく,とても良い環境でした.

田淵さん,スタッフの皆様,会場を提供して頂きましたエクセルソフトさん,ありがとうございました!
また機会があれば参加させて頂きたいと思います!

f:id:Santea:20160327005340j:plain