Skip to content

shop_suggestion

Yutaro Matsui edited this page Jul 18, 2017 · 2 revisions

Shop Suggestion

ごはんを食べるお店に迷ったらどうぞ.

使い方

とりあえず

meshi

と投げてみると

とある飯屋 が提案されました

と返してきます.

場所を絞りたいとき

例えば近場に行きたいときは

meshi walk

と投げると,データ内で近場であると「設定されている」候補から店を選び出します.

食べたいものが決まっているんだけれど

🍜が食べたいときは

meshi ramen

とか投げると:ramen:屋の中から選んで返します.

店データの追加方法

plugins/data/shop.json に JSON 形式でデータが書いてあります.追加したいときはこのファイルへ:pencil:

  1. 追加したい店のカテゴリーを選びます.カテゴリーは現在:ramen:,定食,ファミレス,その他の 4 種類です.
  2. カテゴリーを決めたら,すでに書かれている例にならって「店の名前」,「エリア」,「開店時間」を書きます.
    • 「エリア」は現在「近場 nearby」,「春日 kasuga」,「天久保 amakubo」,「桜 sakura」,「その他 other」の 5 種類あります.適切そうなのを適当に選んで書いておいて下さい.
    • 「開店時間」は配列方式で書きました.1 次元は曜日(月から始まって日で終わる),2 次元は開店・閉店時刻の集合,3 次元は開店・閉店時刻です.分かりづらいと思うので例を下に示します.
  3. コミットを作ってプルリクエストを投げます.

店データの時刻について
例: 平日は 11:30-13:30, 19:00-21:00 で休日は 18:00-25:00 で営業しており,水曜日が定休日である場合

  • 月,火,木,金の項目,すなわち第 1, 2, 4, 5 要素に [[1130, 1330], [1900, 2100]] と書きます.
  • 水は営業時間がないので第 3 要素に [] と書きます.
  • 土,日は第 6, 7 要素に [[1800, 2500]] と書きたいところですが,時刻は 24 時までしか対応していません.そこで,翌日の 0 時から 1 時も営業している時間であると考えます.すなわち日,月に [0, 100] を追加しておきます.
    土: [[1800, 2400]] 日: [[0, 100], [1800, 2400]] 月: [[0, 100], [1130, 1330], [1900, 2100]]
  • 最終的にこうなります.
"open": [[[0, 100], [1130, 1330], [1900, 2100]], [[1130, 1330], [1900, 2100]], [], [[1130, 1330], [1900, 2100]],
[[1130, 1330], [1900, 2100]], [[1800, 2400]], [[0, 100], [1800, 2400]]]

備考

実装があんまりキレイじゃないのでもうちょっとどうにかしたいなあ.

さしあたっての問題点

  • カテゴリーは絞って list に入れているが,エリアに関してはランダムで list の中から選ばれたものを確認し,選択エリアと合致していなければもう一回ランダムで選択するという方法を取っている.無限ループに陥る可能性もあります.
  • 無限ループの回避方法は 50 回やり直してもだめだったら:end:ということに...
  • 飯屋を複数提案できるようなオプションをつけようという話もあるけれどやってません.

何となく現在この方法しか思い浮かばないのでこんな感じでやっていますが,何か良さげな案がありましたら教えて下さい:pray: