Xamarin.Forms社内勉強会を企画することになりました。
私の略歴としては、仕事でWindowsForm、WebForm、.Net MVCとかその辺りを触ってきたC#エンジニアです。
事前準備から勉強会本番までの流れとかを書いていきます。
事前準備
ターゲット層を考える
社内勉強会をするにあたって、メインのターゲット層を考えました。
- (どの言語でも)プログラミング経験がある
- C#に触ったことがない
- Xamarin(というよりスマホアプリ開発)に興味がある
だいたいこれぐらいのレベルを対象にしようと。
C#エンジニアが数えるぐらいしかおらず「社内でC#を触れる人が増えたらなあ…」というのがきっかけの一つなので、話題性のあるXamarinから引き込めたらいいのではと。
というか、企画した時点ではXamarinの存在は知っていても私自身触れたことがなかったのでどうなるかどきどきでした。
ここから一月でサンプルプロジェクトからスライドまで作成していきました。
Xamarinに初めて触れる
Xamarinには大きく分けて2つの存在があるそうです。
- Xamarinネイティブ
- Xamarin.Forms
両方触ってみた感想は以下。
Xamarinネイティブ
- ざっくりとの感想でいえば、裏側だけC#、表側はAndroidとiOSそのまま
- iOSやAndroid開発をしたことある人ならばこちらのほうがとっつきやすいかも?
- しかしiOS開発もAndroid開発もしたことがない…
Xamarin.Forms
- 裏側はC#、表側はXMLな感じ?
- なんとなくWebFormsやWindowsFormsを思い出す
- XamarinもiOSもAndroidも触ったことがない人としては覚えることがXamarinネイティブより少なそう
- 覚えることが(比較的)少ないのは参加者も僕も嬉しい
ということでXmarin.Formsを勉強会のテーマとして使おうと決めました。
勉強会の構成
いくつかアイデアを出し合った結果、2日構成にしようと決めました。
理由は2つ。
- 1日で納得できるレベルまで触れるのか?
- 軽いハッカソンみたいなの、やってみたい
主に2つ目が理由です。企画者だからやってみたいことをやろうと。
ざっくりと決めた構成の流れは以下。
1日目
- C#とは
- Linqとは
- VisualStudioとは
- nugetとは
- Xamarinとは
- XamarinネイティブとXamarin.Formsの違いとは
- Xamarin.Formsプロジェクトの作成の仕方
- Xamarin.Formsでアプリ作成
- 成果物発表
C#開発で誰でも触るところを重点的に話し、一人で簡単なアプリの作成を行う計画。
2日目
- 1日目で得た経験から、複数人で開発を行う
1日目で作ったものを元手になんかかっちょいい・使えるラインまで作りこんでしまおう、というものです。
結局仕事でこの手のものを扱うには複数人開発になります。
なので、仕事になったときにどういう流れになるのかというのを経験したい・させたいというのがありました。
あとわいわい開発するの面白そうだったからというのもあります。
1日目終了時点のサンプルプロジェクトを用意し、それを元に仕様を満たすもの考えて作ろう!って感じに落ち着きました。
勉強会
勉強会で使ったスライドを投稿しました
https://qiita.com/tomopy03/items/18451523e6b8c2f86fbd
参加者がそこまで多いわけではなかったので、Slackで情報交換しながら進行しました。
所感
- デモが動かなくて辛かった
PropertyChanged.Fodyがちゃんと動かなくてデモで時間をとられました。
nugetでインストール後にFodyをアップデートしないとちゃんと動きませんでした。
投稿したスライドにはアップデートすることと書いてありますが、本番ではこのことを失念しており、原因特定まで時間がかかりました…。
今回はXamarin.Formsのプロジェクト作成、nugetでFodyをインストール、xamlにlabelの追加、モデルの追加、バインディング、デバッグ実行…とこんな風に作っていくんだよという例を見せながら進めていたので、バインディングがうまく効いてないのは「デモにならないじゃん!」ととにかく焦りました。
不意な出来事に対応できるように動画でも撮っておけばよかったなと思いました。
- アプリ作成は適正な難易度・時間を確保できていたのか
アプリ作成の課題としてタイマーを指定したのですが、参加者がタイマーを動かすところまでなかなか到達できませんでした。
「すぐに全部実装できてはつまらないかもしれない」と思っていたのですが、そもそも最初の課題ならばもうちょっと要件を絞ってやるべきだったなと。
取り掛かり始める選択肢を多くしすぎたのはまずかった気がします。
よかったこと
時間をかけてデモした甲斐あってわかりやすかったと言ってもらえたのは本当にうれしかったです。モチベーション上がりました。
少人数だったのでそれぞれの問題に対応でき、大勢が最初のデバッグ実行すらできない!という事態にはならなかったのでそこは良かったのかなと。
悪かったこと
C#、VisualStudioの説明に時間を取られすぎて作業時間が短かったなと思いました。
C#初めてでも大丈夫だよ!という話で始めたのでその辺りの説明をしないわけにもいかなかったのですが、いかんせん初めからがっつり説明するとなるとC#勉強会なのかXamarin.Forms勉強会なのかわからなくなり…。
この辺りの切り分けをちゃんとすべきでした。どちらに寄せるにも中途半端になってしまった感があります。反省点です。
おわりに
Xamarinというより勉強会の内容になってしまって技術的な内容書けてない…。
こういう勉強会を最初から企画するのは初めてだったのでなかなか良い経験になりました。
XamarinはC#(WebForm、WindowsForm)経験者にとってかなり取っつきやすい部類の技術だと感じました。
簡単なアプリやデモの作成ぐらいであればサクッと作れちゃうのが魅力ですね。
なかなか踏み出せなかったiOS、Androidアプリ開発への第一歩となったわけで、この取っつきやすさはすごいです。Xamarin.Formsはいいぞ!
あと実は12/8に「Xamarin.Formsでスリープ状態にしないために」も投稿してます。併せて読んでいただければ幸いです。
明日は sun_bacon さんです。よろしくお願いします。