昨日、Flutter × Firebase の boilerplate を書き始めたに書いた通り、Flutter を使ったボイラープレートを書き始めた。
で、Firebase を使う上で、Flutter からのアクセスだけでよしなにできれば良いんだけど、そうもいかない場面がありそうだったので、やっぱり Functions も書かないとなーと。でも Node.js で書くのはイマイチ気が乗らなかった。言語のコストはなるべく下げたいってのが主な理由。Flutter が Dart なんだから、サーバーサイドも Dart で書きたい。
Dart で Functions を書こう
さて、Dart には(一応)dart2js
という JS 変換用のコンパイラ(トランスパイラ?)がある。これを使えばよしなに、、、という面倒くさいことを考えなくても、良いみたいだ。
Fireabse 公式のところにある、
REST API のインストールと設定 | Firebase
各種ヘルパーライブラリの、
の中で紹介されている(非公式の)パッケージを使えば楽に実装できそうなことがわかった。
firebase_functions_interop | Dart Package
サンプルも結構充実してるし、GitHub にはサンプルコードもちゃんとおいてある。普通に JS 側で実装する(していた)ものに関しては不自由なく書けそうな感じはする。コミットも新しいし。ライセンスは BSD だった。
とりあえずサンプルコードの Hello World は Firebase 上へのデプロイ、疎通確認まで出来た。ファーストインプレッションは、なかなかいい。フロントエンドとバックエンドで言語を揃えられるのは、個人的には非常に嬉しい。技術は、狭く、深く。
注意点
dart2js
で JS にしてからデプロイするわけだが、dart2js
は自分で入れる必要がある。もともと Flutter の環境は作っていたので、Dart SDK
に含まれてるかと思いきや、Flutter を入れる時には付属してこないようだ。まぁ Flutter では使わないもんね。
なので、Dart SDK
を別で入れてあげないといけない。Dart SDK
を入れれば、dart2js
が付属してくる。自分の環境で試したところ、Flutter 配下のディレクトリを見に行っていたので、シンボリックを貼っておいた。
Dart SDK
のインストールについては公式のままやれば良い。
今後の検証項目
Node で、Express を書いていた時は、Middleware を挟んで処理していたので、ここの処理が書けるのかを先行して確認していく。挟めないと独自でラップして書いていく感じになるかな。エラーハンドリングも。あとは config(メモリとかの)が使えるかとか、まぁ実務で使ったようなものが一通りイケるかイケないかを見ていくつもり。
Flutter やるぞ!と思ってたのに、いつの間にか Functions の方を見てるのはなんでだろう。