先日、イエメシというテイクアウト対応店舗の地図アプリをほいほいつくるためのフレームワークをオープンソースで公開しました。
地元のテイクアウトが利用可能なお店を Google スプレッドシートで管理できる地図アプリをつくりました。
このイエメシは、地域ごとの派生サイトに対してサブドメインを発行して、さらに iemeshi.jp のポータルから各地域のウェブサイトを探すこともできるようになっています。
このイエメシの開発には約1週間ちょっとかかったのですが、これを始める当初から SaaS のような感覚で広めることはできないかなと考えていて、以下のような仕様となることを意識していました。
サーバーレス
開発を始める前の時点で、このイエメシに収益性は期待していなかったので(笑)、飽きたらほっとける仕組みであることは超大事でした。
そのために、バックエンドにデータベースを使うなどの仕組みは嫌だなと思っていて、Google スプレッドシートに店舗データを保存する仕組みにしました。
あと、GitHub Actions などの CI ツールは、単純にフォークしてもらう時にめんどくさいだろうなと思い、Netlify 上にホストしてもらうことを前提としました。
Netlify に依存することでややハードルが上がるだろうなーとは思いましたが、無料でも使えるサービスですしね!
結果的には、フォークして Google スプレッドシートでデータを用意して、アプリの設定を書き換えて、Netlify へのデプロイという一連の手順が、すべてブラウザだけで行えるようになりました。
イエメシレジストリ
イエメシレジストリというのは勝手に今思いついてなづけたものですが、このイエメシでは、以下のリポジトリに必要事項を記述した JSON のプルリクエストを貰えれば、それをマージした時に、xxx.iemeshi.jp
というサブドメインが自動的に付与され、冒頭で紹介したイエメシのポータルにも掲載されます。
以下は、そのためのプルリクエストの一例です。
イエメシのポータルへの掲載は、シンプルにこのリポジトリの JSON を AJAX で読み込んでいるだけですが、DNS の方は AWS の Route53 を CircleCI で蹴っ飛ばして、サブドメインを登録するということをしています。
以下は、そのための Node のスクリプトです。
この部分に関してはコストを負担をしている感じにはなっていますが、ドメインの管理費と Route53 のコストだけなので、タダ同然と言っても問題ない程度のコストではあります。
イエメシでサーバーサイドのコードを書いたのはこれだけです。便利な世の中になりましたよね。
まとめ
というわけで、イエメシを使って自分の地域のテイクアウトマップを作る際に、それ用のインフラを用意したりとか、特定のコマンドとかは必要なく、立ち上げまでのすべてのプロセスをブラウザだけでも行うことができ、まさに SaaS と呼べるのではないかと思っています。
本体側のアップデートを反映させるためには Git の操作が必要で、そこだけが残念。。。
こういう仕組み、応用できるのではないかと思いまとめてみました。