ラーメンアプリ


趣味で開発中のプロジェクト。まだ名前も考え中です。
行きつけのお店のおいしいラーメンや、今度行ってみたいお店なんかをリスト化して管理するwebアプリです。

ものとしては割とありがちなものだと思います。他のものと異なる点としては、店でなくラーメンというメニューに評価ができる点、他のユーザーとリストを共有できる点です。 メインはこのリスト共有で、同僚の先輩がラーメン仲間と手軽にシェアしたいけどうまくできるものが無いと言っていたのが作るきっかけになりました。 ラーメンを単体を評価するという点は、僕が個人的にやりたいことで、お店の評判がまとまっているグルメサイトはよく見るのですがラーメン単体を評価したものってあまり無い気がします。
そもそもお店のメニューがしっかり乗っているページも少ない気がします。 せっかく評判を見てお店に足を運んだけど、注文に迷うみたいなことが僕はよくあるのでラーメン駆動でお店を決められる仕組みを作りたいと思ってます。 一応100~1000人スケールを目指したプロダクトとして開発しています。

まだまだ開発中ですがこんな感じのものです。



構成はかなりクライアントに寄っていて、バックエンドはFirebaseに頼っています。
これは極力低コストで運用するために0円から利用できるfirebae functionsにApolloを使ってGraphQLのサーバーを構築し、リクエストを減らすことで低コスト運用を図っています。 そしてfirebase roleでアクセスをコントロールしつつ、ユーザー認証が必要無いデータ(店舗情報など)はクライアントから直接取ってくることでリクエストを減らしています。

また今回始めて使ったGraphQLは本当にいい知見になったと思っており、今後趣味でも仕事でも積極的に使っていきたいと思っています。


フロントのAngularはいつもどおりですが、別の趣味プロジェクトのwicollでステート管理がイマイチだったのでそこは意識して書くようにしました。 最近ではデファクトであろうngrxを採用しても良かったのですが、一度Fluxパターン的なものを自分で表現してみたかったのであえて不採用。 コンポーネントのステートをSingletonなServiceに置きつつ、ちょっと雑なFacadeにして参照透過性を意識しつつ書き副作用を起こすメソッドは切り離すといった感じで管理しています。

ひとまず公開できるとこまで作って公開。その後最終的にはservice wokerやCDNキャッシュなどを活用することでパフォーマンス向上かつ、さらなるコスト低下を図るつもりです。

Nifty tech tag lists from Wouter Beeftink