10/1に Microsoft MVP を受賞しました。カテゴリは Visual Studio and Development Technologies です。

Microsoft 関連のテクノロジーを使用した開発を行う上で各コミュニティの先輩方の助けがあってなんとかなった部分は数え切れません。

感謝するとともに、自分もより多くの人の役に立てるようにいっそうがんばります。

以下、自分とコミュニティの関わりについて書きます。

MS MVP が何か、どういうメリットがあるか等については何も触れていないので、そういう情報が必要な方は公式サイトをご覧ください。

C# との出会い

僕は「エンジニア」という職業に憧れ、2015年1月に SIer 営業から転「職」しました。

SIer企画営業をやめ、クラウド会計ソフトのfreeeでエンジニアとして働きます

最初の7ヶ月くらいは大体 Ruby を書いて(※書けない)過ごしましたが、2015年7月頃突然 Windows デスクトップアプリのプロジェクトにアサインされました。

それが C# や Visual Studio との出会いです。

まぁ何もわからなかったです。

前職で C# で書いていた UXデザイナーさんに Visual Studio の使い方を教えてもらったのは今となってはよい思い出です。

レビュー以外は基本的に自分しか触らない、ということは自分が開発を進められなかったらこの機能は世に出ない…!というプレッシャーがすごかったです。

(会社の中でわからないことを聞いても教えてくれる人はいたのかもしれませんが、)そのタイミングで利用し始めたのが teratail (もちろん Stack Overflow とかも)だったりします。

@Tak1wa さんを始めたくさんの方にすごいスピードで助けていただきました。

その助けがなければリリースまでたどり着かなかったかもしれない機能もたくさんあります。

感謝してもしきれません。

ここからオンライン・オフラインでの「コミュニティ」との関わりが始まりました。

はじめての Qiita

助けてもらってばかりの日々が続きましたが、無事大きな機能もリリースにこぎつけ、今度は自分も何か書いてみよう!と思っていると、世間は Qiita の( Qiita をはじめとする?) Advent Calendar で賑わっていました。2015年の12月のことです。

はじめての Qiita 記事は C# の Advent Calendar です。

Windowsアプリで出たバグをBugsnagで管理し、Trelloでタスク化し、slackに通知する

C# との闘争

2016年になり、Windows アプリのメンテや機能拡張が半稼働、Ruby で書くのが半稼働という日々が続きました。

正直頭切り替えるのしんどいし、どっちも中途半端だし、C# での開発は社内でメインストリームではない…ということでだいぶモヤモヤしていました。

しかし、紆余曲折を経て、腰を据えて C# を勉強することに決めました。

2016年の5、6月には C# の基本書を改めて読み、 Qiita 記事も色々と書き始めます。

設計もできるようになりたいという思いで、『Java言語で学ぶデザインパターン入門』を C# で書き直すという Qiita 記事も書き始めました。

C#で学ぶデザインパターン入門 ①Iterator

はじめての .NET 関連勉強会

そういう言えば C# なり .NET なり勉強会行ったことないよな…と思い、行ってみることにしました。

近々開催予定だったのが .NET Fringe Japan 2016です。(2016/10/1)

Ruby や JavaScript の勉強会と雰囲気(いる人の層?)が全然違うし、何より何言ってるかさっぱりわからなかった気がします。

今思えば最初に行く勉強会としては誤りだったと思う一方、メンバーの濃い本当に貴重な勉強会だったと思います。

はじめての Xamarin

C# でモバイルアプリの開発ができるとか何とか?という話を聞き、へ〜って思っていると、Xamarin Dev Days Tokyo というイベントがあるというのを知りました。

世界中で Xamarin のハンズオンイベントをやるとのことで、参加してみることにしました。

環境構築が全然進まず困っていたところ、@_shunsuke_kawaiさんや @atsushienoさんに助けていただきました。

atsushieno さんが Xamarin の中の人だということは後から知りました。

Japan Xamarin User Groupという日本の Xamarin ユーザグループもあり、勉強会もほぼ毎月行なっているということを知りました。

その年の会社 Advent Calendar では C# というかなんというかな話を書きました。

技術的マイノリティプロジェクトで幸せに過ごすための5つの方法

年が明けるともっと Xamarin のことを知りたいと思い、 Xamarin.Forms 本の邦訳読書会にも参加し始めました。

XamarinFormsBookReading

そして自分でも Xamarin.Forms を使って簡単なアプリを作り始めました。(2017年4月)

Xamarin.Formsで家の日用品管理アプリを作り始めたお話

はじめての機械学習

Xamarin に触れる一方で、社内では機械学習の勉強会に参加していました。

Coursera の機械学習を見つつ、その演習問題をやってみたり、Kaggle の問題を解いてみたり。

その文脈で Azure Machine Learning に出会い、そのわかりやすさに感動してこの本をベースに社内でハンズオンをやってみました。(2017年4月)

インサイド Xamarin

会社でも Xamarin で開発をすることが決まり、de:code にも参加して Xamarin の話を聞くぞ!予習するぞ!というときにある連載に出会いました。

インサイドXamarin

Xamarin に限らず、ビルドとかコンパイルって何することなんやろう?そもそも .NET って何?みたいなことがとても気になり始めていた時期(遅)で、衝撃的に面白かったです。

理解できてない部分は多いとは思いますが、詳しく知りたい気持ちが増す大きなきっかけになりました。

はじめての LT

思うところがあり、2017年6月から LT をし始めました。

その経緯はこの記事に詳しく書いています。

Tokyo Jazug Nightで「Azure FunctionsとAWS Lambdaの開発フローの違い」を話してきました。初めての登壇とその理由 #jazug

はじめての LT は日本の Azure のユーザグループである JAZUG で行いました。

これからもっと Azure を使って行く予定なので、もっともっと実践的な知見を共有できたらと思います。

Microsoft MVP

その後もイベントでの登壇やサポートをしたり、業務関連の Xamarin 記事を書いたり翻訳したり、たまにコードを GitHub に上げたりしていました。

その結果、2017年8月までの1年間の活動を評価していただき、Microsoft MVP を受賞しました。

自分のエンジニアとしてのキャリアと Microsoft 関連技術は密に結びついており、とても嬉しくて受賞した日はほとんど眠れませんでした。

(訳あって9月以降の実績を含まずに受賞できたら嬉しいなぁ…と思っていたりもしました)

会社のチームに報告したり、全社集会で報告したり、察して祝っていただいたり、全社集会で報告する日にMVP Kitが届き開封の儀を執り行ったり、自分のことのように喜んでくれる人がいたりで徐々に実感も湧いてきました。

ただ、評価指標はあくまでコミュニティへの貢献で「エンジニアとしてどうか」ということではないと思っています。

今後、MVP を受賞したことで得られる機会を最大限活用し、これまでお世話になった方々のように多くの人が一歩踏み出す力になれるよう努力し、エンジニアとしてより大きな問題を解決できるよういっそう精進していきます。

2017/8/30の 初心者歓迎XamarinのLT会!Xamarin入門者の集い #3 で LT して来ました。

発表した資料はこちらです。

もうちょっとだけ詳しく Qiita に書いた記事はこちらです。

LottieXamarinで始めるXamarinアプリのアニメーション

今日は

  • 登壇のきっかけ
  • テーマ選定の理由
  • 振り返り

について書きます。

登壇のきっかけ

Xamarin に強くなりたい!以上。

テーマ選定の理由

今回は単なる興味です。

LT のテーマは「身近な問題に向き合う」にすると決意していながら、自分が Xamarin について何か発表する姿がイメージできな過ぎて、

  • 取り組んでいる人あまり見かけない
  • もともと気になっていた

ということで、アニメーションのライブラリ Lottie の Xamarin 版を調べることにしました。

振り返り

結論としてはやっぱり何か直面してる問題を解決したかった一方で、特定のライブラリを(ある程度危機感を持ちながら継続的に)追いかけるのは良かったなぁと思いました。

K

ライブラリ(github上のリポジトリ)を追いかけるようになったこと

ライブラリの動作検証しているとき、最初に試したバージョンが iOS でバグがあり動かない状態でした。

リポジトリを見てみると issue が立っていて、何人か同じ問題で困っている模様。

リポジトリにスターをつけて issue に動きがある度に届くメールを見ていると、数日後に issue は解決。

(正確にはリポジトリで Watching 状態にして、特定の条件でメール通知するように設定)

本来使っているライブラリの動きくらい追えよという感じかもですがやってなかったので習慣にします。

ついでにこれまでスルーしてたメールのフィルタも整理したので業務効率もアップですw

あと、リポジトリにスターつけたら twitter に垂れ流すやつ( IFTTT )割とこけるので困ってます。

Microsoft Flow なんとなく見てみたら GitHub 系は issue 立てる系とかしかなかったのでリクエストしようと思います。

こんな感じで使える IFTTT みたいな iPaaS です。

Microsoft Flowを使ってSlackからVisual Studio Team Servicesのビルドを実行する

スライドの枚数少なくして DEMO 入れた

前回、前々回とスライドの枚数が多く、時間もキツキツで喋る方もしんどかったのでスライドの枚数を減らし、せっかくのアニメーションだったので DEMO (ってほどでもないですが)スライドから別ページに切り替えて動かしました。

趣旨にもよるとは思いますが、今回は動いてて楽しいやんなーみたいなのが伝わればよかったので…伝わってたら嬉しいです。

詰め込み過ぎもやめてよさそうです。

記事書くのマークダウンにしたら捗った(ブログの話)

効率は上がった気がします。

今更ながら読んでる『達人プログラマー』の影響です。

P

自分が解決したい問題ではなかったこと

今回はこれに尽きる気がします。

気になっていたライブラリだとは言え、自分がアニメーション導入したかったわけでもなく気合が足りませんでした。

気合とは具体的に

  • サンプルよりもっと踏み込んだ使い方をしてみる
  • どういうコードなのか追ってみる
  • ライブラリを使ったときと使わなかったときの実装を比較する

などのことです。

いきなり本質に切り込めなくても改善していこうと思います。

T

テーマ設定時に問いかける

  • 何が問題で、どうやって解決したのか
  • なぜ解決する必要があるのか
  • その解決策はどのように成り立つのか
  • 考え疲れた?まぁ LT は LT やし全部満たせんでもええよ

Microsoft Flow に GitHub スターのパーツリクエスト

とりあえず言ってみる。

Japan Xamarin User Group (JXUG)主催のイベント、初心者向けXamarinハンズオン! #3でメンターをやってきました。

と言っても、 今回のハンズオンのテーマになっていたXamarin Dev Days Tokyoに参加したのが去年の11月、それを元にアプリを作って少しいじっただけ、という感じなので「メンター」と名乗るほど詳しくないですし、メンター枠でイベントに参加するのも初めてでした。

そんな前提のもと、

  • やっといてよかったこと
  • 答えられた質問
  • 答えられなかった質問

をまとめておこうと思います。

やっといてよかったこと

実際にハンズオンの題材をやってみる

事前に題材を嫁氏(エンジニア)とやってみました。

Xamarinの概要説明、環境構築、ハンズオンを一緒にやってみることで、つまずきそうなところに事前につまずきw、ある程度解決策・回避策を予習したり、自分が特にわかってない部分を勉強し直したりできたのはよかったです。

ハンズオンの題材をいじる

ちょっと前ですが、ハンズオンの題材をベースに簡単なアプリを作りました。

Xamarin.Formsで家の日用品管理アプリを作り始めたお話

ハンズオンを単になぞるのに加えて、いじってる方が次どういう風に勉強してったらいいのか実感がわくのはよかったです。実際参加者の方とそういう話をすることはなかったですが…!

答えられた質問

"XamlCTask" task failed unexpectedly

数人。今回の題材だと、Xamarin.FormsのバージョンアップすればOKでした。本質的な理解ができているわけではない…

Androidの実機デバッグをするとき、デバッグ対象に接続した実機が出てこない

その場で一緒に調べたところ、XamarinとかVisual Studio以前にドライバが端末を認識できていない状態でした。

この辺(Windows のデバイス マネージャーのエラー コード)見ながらの対応でした。

どんな質問にも怯まずとりあえず一緒にぶつかってみる姿勢大事そうでした。

ビルドし直しても変更内容がエミュレータに反映されない

コード絶対正しいはずなのに何でだろう…と思って、最終的にVisual Studio再起動したら反映されました。

本質的な理解はしていませんが、どこでVS側で新しいソースビルドできてかったのか、エミュレータが古いソース見ていたのか、もう少し問題切り分けできたいなと思いました。

コード正しいはずなのにコードビハインドで赤線が表示されている

多分できるのでビルドしてみください、でビルドできました。

正しいコードでも即座に反映(コード解析的な意味で)してくれないこともある…けど何でなんだ…

APIからデータ引っ張ってきてくれない

データ引っ張ってくる部分コメントアウトされていたので、コメント外してもらいました。

基本コードのコピペで進めていくハンズオンだと気付けないこともあると思うので、実際追ってみてから参加するのとても大事だと思いました。

Azureのポータルの見方よくわからない

本筋はXamarin.Formsであるがゆえに、バックエンドのサービス構成の基本事項等々まで説明するわけではないので、なおさらこういう部分まで丁寧にサポートできると安心して本来の勉強したい部分にフォーカスできるのかなと思いました。

Commandの書き方がしっくりこない…どう勉強したらいいか?

MVVMでUIからビジネスロジックを呼ぶ手段であること、メソッドと動作可否を引数にとること、ActionやFuncの元になるラムダ式の仕組みがあることをお話したものの、自分でもあまりしっくりこず…

勉強していくための記事とか添えれたらよかった気がしました。

他にもあった気がしますが、覚えてるのはこれくらいです。

答えられなかった質問

iOSのプロジェクトをiPhone実機でデバッグするために必要なこと

iOS持ってなくて、事前にも調べてなくてその場で調べました。

が、強い人が教えてくれてました。

Xcodeから設定してましたがよくわかったないので調べてみよう。

Androidのエミュレータが起動できない

今の自分の環境では特に問題なく動いた(理解してるわけではない)ので、何かあったときに何もわからず…

別の方に助けていただきました。

エミュレータ系は環境構築でハマるお決まりなのでもうちょい勉強しといてもよかったかもですね。

まとめ

自分の力不足感は否めなかったものの、自分が勉強できたこと、本質的な提案ではないけどハンズオンを進めるための手助けにはなった(はず)ということで勇気を出して申し込んでみてほんとによかったなぁと思いました。

次はこのイベント(初心者歓迎XamarinのLT会!Xamarin入門者の集い #3)で、JXUGでは初めての登壇です。

まだ1ヶ月半くらいあるので、それまでにもっと強くなって臨みます。

弊社freeeでもXamarin案件があるので、興味ある方ぜひお声がけください!!

日本を変えたいWindowsアプリエンジニア募集!!