窓を作っては壊していた人のブログ

この謎のブログタイトルの由来を知るものはもういないだろう

サポーターズCoLabの勉強会で、Xamarin.FormsでFirebase Cloud Firestoreを使うことを発表した

いつの話やねんという感じではあるのですが、自分の活動を振り返る機会があり、そういえば書いてないや…ということに気づいたので、ちゃちゃっと書いておこうと思います。

supporterzcolab.com

今回の勉強会を開こうと思ったきっかけとしては、自分が学生時代に作成した学祭アプリは実はFirebase Cloud Firestoreを使うとだいぶ楽に実装できたんじゃないかな?では今からこういったカタログアプリを作るにはどういうアプローチを取っただろうかみたいなifのルートを参加者の人と見ていきたい、と思ったことと、当時(2018年7月)XamarinでFirebase Cloud Firestoreを動作させているサンプルコードがGitHubを漁ってもiOS向けのプロジェクト しか出てこなくて、そういうとこやぞ…って辛い思いをした2点が動力源でした(他は自分でREST API叩けばいけるよ!みたいなサンプルはあったのですが、いやそうではなくてだなぁ…という思いになったのを記憶しています。)

先に成果物

github.com

勉強会準備期間

準備始めたのがツイートを見ると勉強会の4日前らしいです。

言うてぱぱっと動くやろ、内容としてはバックエンドをFirestoreにするだけでオフラインファーストなモバイルアプリケーションに出来るよって言うだけやしな、みたいな楽観的な考えがあったのは言うまでもありません。 ですが実際にやってみると単純にInitializeするだけでは動かず(そもそもアプリがクラッシュする)なんでだろうな、と頭を悩ましました。 なんとしてでも動かしたかったので、すごい雑な解決策で動かすことに決め、同じことで困ってそうな人がいそうなのでIssueに投下したりもしてました。

Firestore ProjectId is always null · Issue #104 · xamarin/GooglePlayServicesComponents · GitHub

これでAndroid版は動作が確認できたのですが、iOSが結局手元では間に合いませんでした。 この状態で当日を迎えます。

勉強会当日

自分のやってきたことと、過去に戻って再度例のプロジェクトを進めることになったらFirebase Cloud Firestoreを使っていたかもしれないみたいなifのルートを話しました。 実際のコードはこうで、みたいなことはその時は話さず(見せず)、こういうパターンではこういうクラウドサービスを組み合わせると楽が出来る、みたいな内容で進めました。

正直当日はめちゃくちゃテンパっていたので、参加者の方と何話したっけなーっていうのがあまり思い出せないですね。 会話で印象に残ったのが私も大学時代ガリガリ使っていたQtの話が出来てよかった、ってことですかね(完全に趣味の話)。

そして時は過ぎ、結局資料上げるとか言いつつ上げてないことに気づいたのが今日になっての出来事です。 どこに保存したんだろう…

勉強会が終わってから

やはりiOSが出来ていないまま終わらせるのは気分的によくなかったので、こっちも動くようにしてました。 自前でnupkgをビルドすればいいじゃんって思ったときからは一気に進みました。 当時はまだ NuGet Gallery | Xamarin.Firebase.iOS.CloudFirestore 0.9.4 しか公開されていなかったので NuGet Gallery | Xamarin.Firebase.iOS.CloudFirestore 0.12.5 を待つか、自分でビルドするかの二択でした。

今後もこういうことは起こるだろうなとは思っているので、自分でビルドしてなんならデバッグまでやるぜ、みたいなことは続けていきたいです。

最後に

Xamarin(.Forms)でもFirebase Cloud Firestoreは使うことが出来ます。 それに限らず、既存の資産を上手く使い回すことがXamarinでは可能となっています。

ref: .NET Conf 2018 Tokyo で Xamarinのネイティブバインディングのことを発表した - 窓を作っては壊していた人のブログ

クロスプラットフォーム開発したいけど、さて何使おうかな、という時にぜひXamarinも入れてみてくだい。

XamarinでFirebase Cloud Firestore使うぞのリポジトリを再掲して終わり。

github.com