燃えるざっぷ

えるざっぷの日記とか 旧ブログ: http://blog.elzup.com

どこで食事するか選ぶためのアプリを作った

北千住に住み始めてだいぶ時間がたった。基本外食で済ませるのだが、いくつか問題が出てきた。飯をどこで食べるのか選ぶのが面倒くさくなってきたのである。近場に通うとすぐ飽きてしまうので、「今日はどこで食べようか」と毎日悩んでいるのである。(「料理しろ」は置いといて)
そして「店閉まってんじゃん問題」である。店前まで足を運んでから知らされ、ガッカリしたことが何度もある。情弱乙である。


あと1年は北千住にいるし、これらの問題と向き合うのはそろそろ嫌なので、ツールをつくった。

単純な話、飯屋の候補をリストアップしたいのである。レストランでメニューを見ながら食事を選ぶのと同じだ。北千住で普段行く飯屋がリストアップされていれば選ぶストレスも減るはずだと考えた。ついでに営業時間を可視化すれば悲しまずに済むのである。

そこだけシンプルに実装したのがこれである
f:id:elzup:20170505021133p:plain
https://elzup.github.io/senju-eat/
↑深夜 2時にスクショしたので24時間営業以外閉まっている。

構成はよくある「 react app から Google App Script のエンドポイントにリクエストして Google Spread Sheet のデータを取る」という流れである。

予想より面倒になったのは営業時間のデータ構造だった。曜日や祝日によって営業時間が違うパターンや、昼がすぎたら休憩時間を入れる店があるので少し複雑になった。

日常的に使いたいので「ホーム画面追加」のアイコンやスマホ表示に雑に対応した。
f:id:elzup:20170505021614p:plain

まだ、まとめてる店に偏りがあるけど、公開してるのでよかったら使ってみてね。

オマケ

開発の仕方について振り返る。
最近は「xの実装にy時間以上時間をかける価値はない」という考え方を大事にしている。「xの実装にy時間かかりそう」はどうでもいい。決めた実装時間内に終わらなかったらキッパリ諦めるのである。これが難しくて、今回も戦うこととなった。まるでギャンブルにハマった人間のように、「もう少し続ければ解決する」「せっかくここまで時間をかけたのにやり方を変えてたまるか」と心がエセヒーローになりたがるのである。
今回は本当に小規模のアプリだったので、全体的に何を使えば最小限で実現できるかもすぐに想像出来たし、gh-pages や Google Spread Sheet を使って正解だと思う。当たり前だけど最近勉強してる react-native で無駄に native 実装はしなかったし、サーバーを立てることもなければ JS の Build 構成やらプロジェクト構成にこだわり時間を浪費することはなかった。このアプリの開発に多くの時間を捧げる価値はないと初めから決めていたからだ。
最終的にポモドーロの記録のから数えると20ポモ(25分セット)使っていたので10時間ほどこれに費やしていた。どんなにグダグダやることになっても8時間くらいしか費やしたくないと思っていたのでちょっとオーバーした。それぞれの実装についてみても決めた時間が来ても実装を続けてしまうことが多かった。ただし、いらない機能を実装してる時の切り捨ては早いタイミングで起こった。例えば開店時間でソートする機能をどう実装しようかとコードを書き始めていたが、そんな無駄な事(や方法)に手をだす余裕はないのである。全体の実装に対する制限時間を意識することで実装するものの選択が洗練されることは、とても実感できてよかった。

ちなみにこの記事を書く時間の目標を決めなかったせいか、気づいたら2時間も使っていた。やはり時間を制限するのは大事だ。