Continuity is The Father of Success

Androidアプリとかゲームとか。毎日続けてるものについて。

FirebaseUIのFlutterプラグインをメンテしている話

blog.dr1009.com

去年こんなブログを書いたのだけれど、細々とメンテナンスを続けている。

github.com

1年前はFlutterで個人アプリを作ろうかと思っていたのだけれど、家に篭りっきりだとそういう気分も落ち気味で、今ではメンテナンスするだけに。 作ってよかったことといえば、FirebaseUIのweb対応をしようとFirebaseAuthのweb版をひたすら読んだことで、なんとなくFirebase Authのリクエスト方法に詳しくなったことぐらい。 なおpub.devを眺めてみると、同じようなことをしているライブラリはあるものの更新はとまりがちであったりする。変に大変だものね、わかるわかる。

FirebaseUIのFlutter版については、今のAndroid/iOSSDKを呼び出す方式は事前の策ではあるものの、本当はDartフルスクラッチで書いてもらうべきなんだよなーと感じていたりする。 というのも、Andorid/iOSSDKに依存しているままだとmacwindowsに対応するのは難しく、マルチプラットフォームとしてのFlutterの良さが出ないからだ。 せっかくDartでFlutter用にコードを書くのだから、ライブラリ側もDartで各プラットフォームに依存しないように作るのが良いな、というのがこの1年の知見です。

チャレンジしたflutter webむけの拡張の話。2021年1月時点で成功していない。 これはAndroidiOSの場合MethodChannelを通じて行った先で「新しい画面」を呼び出すのは比較的用意なのだけれども、webの場合そうでもないのが一番の原因だったりする。 またFirebaseUIでログインした情報を、FirebaseAuthのSDKから取得するみたいなことをしているので(Dartの世界で触っているFirebaseのインスタンスと、Java/Obj-Cの世界で触っているFirebaseのインスタンスが同一である状態を利用している)、そういったことがwebでできるのかすらよくわかっていないのもあったりする。 FlutterはAndroid/iOSの世界とべったりして作られていた2019年までの世界と、真のマルチプラットフォームをやっていくぞという気持ちで生まれ変わった2020年以降の世界をどう繋いでいくかが、これから大変なんでしょうね。

flutter webのHTMLElementが全くわからないので、この辺りのサンプルコードが増えないことにはなんともならない予感。 あと、pubspec.yml の中でJSライブラリのロードを定義できるようになったりしないですかね……。 現状、マルチプラットフォーム対応する時にDartのライブラリを使わなければならないのだけれど、これって本当はJSの資産(欲を言えばTSの資産)を使える方がいいと思うんですよ……。 dart:js ライブラリでなんとかしようとしたけれど、サンプルコードも少ないし、何より dart:js を使いこなせるのはJSのライブラリを作った人たちになる(印象がある)ので、Dartの世界に色々と持ち込むのが難しすぎると思うんですよね……。

pub.dev

なお、今はFirebaseUI-iOSの10系が出たので取り込んでみたところ、FB SDKの内部でheaderファイルが2重にインポートされてビルドができないと怒られてしまったので、ライブラリの更新が入るのをひたすら待っています。 Flutter、難しいなぁ。