shimaimo
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    ###### tags: `Qrest` # システム開発演習Ⅴ ITスキルSSS * 飲食店注文支援システム:Qrest ## 残課題 * WEB(ログイン)をReact.jsに置き換え * アプリ(メニュー一覧)デザイン更新 ## 変更後 ### Cloud Functions WEBで編集可能で ### 入店時 1. アプリ:QRコード読取(レストランUID・座席UID) 2. アプリ:店のhistory(自分UID・座席UID) <- トリガー 3. サーバー:inTime, 座席のstateを入力 ### メニュー取得 1. レストランUIDを使って、メニューを取得 ### 注文 1. アプリ:レストランのhistoryにメニューUIDと個数を入力 <- トリガー 2. サーバー:maxOrderが入力されていれば、注文数引く 4. サーバー:メニューUIDを元にhistoryのメニュー(名前・時間・金額・合計金額)入力 ### 作り終えた時 1. WEB:historyのメニュー(作成)チェック ### 退店 1. アプリ:座席のstateトグル <- トリガー 3. サーバー:historyのusersのuserIdを元に、ユーザーのhistoryを入力 4. サーバー:店のhistoruのoutTime **全て税込価格** ``` [ - rest { - name - desc - address - openingTime [ - wday - open - lastorder - close ] - seats [ - name - state ] - categorys [ - index - title - menu [ - index - name - desc - soldout - creatable? // null:上限なし 0:soldout 1~:在庫数 - price ] ] - history [ - users [ - userid ] - seatId - inTime - outTime - menus [ - menuId - name - time - price - count - created ] - price ] } ] { - name - age - sex - active - history [ - restName - menus [ - name - price - count ] - price - outTime ] } ``` ### 嶋村 - 入店の処理は複数人の確認が必要なことから、functionsを使用 - クーポンは配布条件の照合はfunctionsを使用 - チップは項目数が多いため、functionsを使用 ``` [ - レストラン { - 店名 - 店舗概要 - 住所 - 営業時間 [ - 曜日 - 開始時間 - 終了時間 ] - 座席情報 [ - 座席名 - 許容人数 - 満席・空席・清掃待ち ] - チップ情報 [ - 日時 - 金額 ] - 従業員情報 [ - ID - 名前 - 労働時間 [ - 開始時間 - 終了時間 ] - チップ情報 [ - 年月 - 金額 ] ] - カテゴリ [ - カテゴリー名 - メニュー [ - メニュー名 - メニュー概要 - 個別注文が可能か - 提供時間 [ - 曜日 - 開始時間 - 終了時間 ] - 最大数 - 金額 { - 店内(税込) - テイクアウト(税込) } - 売り切れ - カテゴリ [ - カテゴリ名 - 選択可能数 - オプション [ - オプション名 - オプション概要 - 金額 - 売り切れ ] ] ] ] - お客様情報 [ - 座席名 - 大人人数 - 子供人数 - 来店時間 - 退店時間 - 客 [ - 客UID - 注文 [ - 注文時間 - カテゴリ [ - カテゴリ名 - メニュー [ - メニュー名 - 金額 - 注文数 - 作成済み - カテゴリ [ - カテゴリ名 - オプション [ - オプション名 - 金額 ] ] ] ] ] - 支払い方法 - 支払い金額 - 支払い済み ] ] - クーポン [ - 名前 - 概要 - 配布後の期限 - 配布期限 - 割引金額 - 併用可能 - 配布条件 { - 店舗利用回数 - 特定のメニュー { - 利用回数 } } ] - 配布済みクーポン [ - お客様UID - 名前 - 概要 - 利用期限 - 割引金額 - 併用可能 - 使用 ] - 支払い情報 [ - 支払い先 (支払い方法による) ] } ] - お客様情報 { - 名前 - 生年月日 - 性別 - 利用店舗 [ - 店舗名 - 来店時間 - 退店時間 - 支払い方法 - 利用金額 - チップ金額 - 大人人数 - 子供人数 - 注文 { - 合計金額 - 客 [ - 支払い方法 - 支払い金額 - カテゴリ [ - カテゴリ名 - メニュー [ - メニュー名 - 金額 - 注文数 - カテゴリ [ - カテゴリ名 - オプション [ - オプション名 - 金額 ] ] ] ] ] } ] - クーポン情報 [ - 名前 - 概要 - 利用期限 - 割引金額 - 使用 ] } ``` #### データ構造見逃したとこ 営業時間のラストオーダー ### 杉村 ``` [ レストラン[ 店名 店舗概要 営業時間[ 開始時間 終了時間 ] 座席情報[ 座席名 許容人数 ] 店舗サービス メニューカテゴリ[ メニュー[ メニュー名 メニュー概要 最大数 売り切れ 金額 オプションカテゴリ[ オプション[ オプション名 金額 ] ] ] ] 来店者情報[ 在客時間[ 来店時間 退店時間 ] 座席情報[ 座席名 着座人数[ 大人人数 子供人数 ] ] 注文[ メニューカテゴリ[ メニュー[ メニュー名 メニュー概要 金額 注文数 売り切れ オプションカテゴリ[ オプション[ オプション名 注文数 ] ] ] ] ] 支払い情報[ ] ] ] ] ``` ### 竹村 ``` 店舗アカウント情報内に座席の情報を restaurant{ //(店舗) restaurantID[ //店舗ID restaurantname:String //店舗名 restaurantinf:String? //店舗情報 seatinf{ //席情報 seatID[ seatStatus:Int //(0:空席1:使用中2:清掃待ち3:予約席) ] menuinf[ カテゴリ名{ menu1{ menuID:String // menuName:string 金額: 最大数: オプション{ オプション名: オプション説明: 金額: } } 注文: // 注文 ``` # 基本情報 | チーム名 | ITスキルSSS | |:-------- |:----------- | | メンバー | 杉村(Ld)・嶋村・竹村・稲葉・阪川 | | コンセプト | カフェを作ろう! | | 内容 | 加盟店の店の席にQRコードを貼っておき、読み取るだけで、注文・会計ができる。 | | 言語 | iOSアプリ(Swift・SwiftUI) <br> Web() <br> Firebase(Authentication・Realtime Database) | | ツール | Backlog HackMD [draw.io](https://app.diagrams.net/) | ### 用語集 | 読み方 | 概要 | | ----- | --- | | 客 | 店舗利用者 | | 店舗 | 店舗運営者 | # 予定 開発手法は**アジャイル開発**とする。 主な機能を実装し、のちに追加実装を行う。 ## 【1週目】ログイン・新規登録 お客さんが使うiOSアプリの開発を行う。 WEBはまだ手をつけない。デザインは行う可能性あり。 ### 新規作成 1. アプリでメールアドレスとパスワードを入力 2. Firebaseに送信 //この段階では仮登録の状態 3. メールのURLをクリック 4. アプリを再度開いたら、ユーザ情報(名前・年齢・性別)を入力 ※アプリを開いた時点で画面遷移ができる事を確認済み 6. Firebaseに送信 7. 登録完了 ### ログイン Firebaseの標準機能を使用する。 * メールアドレス・パスワード * Google (メールリンク認証) * Apple (メールリンク認証) ※メールアドレス・パスワード方式とメールリンクが共存できるみたいです。 ### パスワード忘れた Firebsaeの標準機能を使用する。 ## 【2週目】 # 書類 ## DFD(データフローダイアグラム) ![](https://i.imgur.com/4CcqE1m.png) ## STF(画面遷移フロー) ログイン部 ![](https://i.imgur.com/qNqgQpj.png) ※Firebaseでざっと調べたので、変わる可能性はあり。 ## 画面遷移 アプリサイド(仮) ![](https://i.imgur.com/rBG1Anz.png) # 議事録 2021/04/13 ### メモ オブジェクトで管理することの多い -> Firebaseを使用したほうが、期間が短く、良いものができるのではないか 結果:Firebaseを使用することになった。 アカウント情報に関しては、チームメンバーで共有することにする。 Teamsにて共有済み。 --- メンバーの役割を変更 阪川:WEB(全般) > WEB(マークアップ) 稲葉:バックエンド > WEB(ロジック関連) 竹村:バックエンド > Firebase(全般) --- アプリ名を決めた。Qrest(クレスト) ### アプリ名を決める会 **想起:**オーダー モバイル スマホ スマート QR レストラン  **候補:** ~~mobiQモビックモビッキュー~~ Qrestクレスト ~~スマートグルメ~~ ## 次までにすること | 名前 | やること | |:-- | :-- | | 杉村 | 画面遷移フロー(メイン機能) | | 嶋村 | Firebaseのログイン機能を調べる <br> 画面遷移フロー(ログイン)を作る <br> 画面設計書のフォーマットを作る | | 阪川 | お客さん側アプリのデザイン | | 稲葉 | お客さん側アプリの機能一覧作成 | | 竹村 | データの項目と説明の書類作成 | # 議事録 2021/04/12 ## メモ チーム名を決めた。ITスキルSSS ### チーム名候補集 ~~足釘刺さり男と愉快な仲間たち 4人と1匹 サラブレッド五大始祖 真・改訂版チーム名ver.2.01_最終原稿 縺吶◆縺励>縺(文字化け) おまじないサンド チームの名前が魔王倒せそうなヤバい世界線な件ののむら シン•変人 進撃の変人 独立行政法人 IT 3S ファイブ珍味 繝√?繝?蜷肴アコ縺セ繧薙?縺?↑縺?シ~~ **ITスキルSSS** ## メイン機能 お客様が使うアプリと店舗が使うシステムがいる。 店舗側にはQRコードを座席に貼ってもらう。 そのQRコードをアプリで読み取り、注文ができるようになる。 #### QRコードで読み取らなきゃいけない情報 > 店番号 > 座席番号 --- #### 店舗のシステムは何で実装する? アプリかWEB?? -> 店舗の導入コストを考えるとWEBの方がいい **メニュー表示はアプリ側、会計関連はサーバーで行う。** 店側はアプリだと、導入コストがかかりそうだよね -> WEBの方がいいんじゃね? ## あればいいなと思う機能 **お客様の意識を高めるために** 個人をIDで管理して、なんらかの方法で個人を評価し、良い人にはクーポンを配布する。 ## フロー ### 客側フロー 1. 客が来る 2. 座る 3. QRコードを読み取る(アプリ) 4. そのお店の情報+席番号をサーバーに送る 5. メニュー情報を取得する 6. 注文してもらう 7. 会計をしてもらう(PayPayとか?) 8. バイバイ!! ### 店側フロー(WEB) 1. 注文が来たら調理 * リストにぶち込まれる 3. 運んだら(完了ボタン) * キャンセルボタンいるよね 5. 会計済んでるか見る * 座席ランプ(緑:おる、赤:会計済み、無色:空) ### 店舗フロー 登録編 * メニューの登録 * 商品名・値段 * 席番号 * QRコード印刷してもらう * エクセルインポートできたらいいね ## 次までにすること | 名前 | やること | |:---- | -- | | 杉村 | ・企画を整理する | | 嶋村 | ・デザインを考える。(iOS) <br> ・メニュー作成に必要な項目の洗い出し。 | | 阪川 | ・デザインを考える。(Web) <br> ・メニュー作成に必要な項目の洗い出し。 | | 稲葉 | ・ログイン <br> ・メニュー作成に必要な項目で正規化する。 | | 竹村 | ・ログイン <br> ・メニュー作成に必要な項目で正規化する。 | # 【使用しない】API ## 【POST】 メールを送信 入力されたメールアドレスに認証コードを送る。 **URL** ``` ``` **Respons(JSON)** ``` ``` ## 【POST】 認証コード認証 メールアドレスに送信した認証コードとあっているかを認証 **URL** ``` ``` **Respons(JSON)** ``` ``` ## 【POST】 ユーザ情報登録 以下の情報を登録する。 | 項目 | 型 | メモ | | -------- | -------- | -------- | | パスワード* | String | 英数字記号? | | 名前* | String | ニックネーム | | 性別 | Int | 0:男性, 1:女性, 2:その他 | | 年齢 | Int | | | 有効 | Bool | アカウント停止などを扱う | **URL** ``` ``` **Respons(JSON)** ``` ``` ## 【POST】 ログイン メールアドレスとパスワードで認証し、トークンを返す。 **URL** ``` /auth/login ``` **bodyParameters** ``` { email: '' password: '' } ``` **Respons(JSON)** ``` { - access-token - user { - user_name } } ``` ## 【GET】 メニュー取得 **URL** ``` /menu ``` **headers** ``` { Accept: 'application/json' Authorization: '' } ``` **queryParameters** ``` { rest_id: '' seat: 1 } ``` **Respons(JSON)** ``` { - results_available // マッチするメニュー数 - results_returned // jsonに含まれるメニュー数 - results_start // 結果の開始位置 - rest { - rest_name - rest_desc - menus [ - sold_out - menu_img - menu_name - menu_desc - menu_price - max_count // 最大の注文数 - option { - sold_out - option_name - option_price // マイナスもあり } ] } } ```

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully