Skip to content

Firebase FunctionsをDartで書く

Posted on:December 11, 2018 at 05:12 AM

昨日、Flutter × Firebase の boilerplate を書き始めたに書いた通り、Flutter を使ったボイラープレートを書き始めた。

で、Firebase を使う上で、Flutter からのアクセスだけでよしなにできれば良いんだけど、そうもいかない場面がありそうだったので、やっぱり Functions も書かないとなーと。でも Node.js で書くのはイマイチ気が乗らなかった。言語のコストはなるべく下げたいってのが主な理由。Flutter が Dart なんだから、サーバーサイドも Dart で書きたい。

Dart で Functions を書こう

さて、Dart には(一応)dart2jsという JS 変換用のコンパイラ(トランスパイラ?)がある。これを使えばよしなに、、、という面倒くさいことを考えなくても、良いみたいだ。

Fireabse 公式のところにある、

REST API のインストールと設定  |  Firebase

各種ヘルパーライブラリの、

firebase | Dart Package

の中で紹介されている(非公式の)パッケージを使えば楽に実装できそうなことがわかった。

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のインストールについては公式のままやれば良い。

Dart SDK | Dart

今後の検証項目

Node で、Express を書いていた時は、Middleware を挟んで処理していたので、ここの処理が書けるのかを先行して確認していく。挟めないと独自でラップして書いていく感じになるかな。エラーハンドリングも。あとは config(メモリとかの)が使えるかとか、まぁ実務で使ったようなものが一通りイケるかイケないかを見ていくつもり。

Flutter やるぞ!と思ってたのに、いつの間にか Functions の方を見てるのはなんでだろう。