---
# System prepended metadata

title: 2023/03/19 要件整理・工数だし

---

# 2023/03/19 要件整理・工数だし

ちなみになんでこんなことするかっていうと
1歩目ミスると全部最初から作り直しみたいなことが平気で起こりまくるので最初にめちゃ考えています。

## 要件
- **GroupA**
    - funsIDとlineIDの紐付けを行うことができる
    - funsからユーザーのデータを取り込むことができる
        - csvをimport
    - 条件を絞ってユーザー検索を行うことができる
        - 最終来店日
    - 何かしらの方法でLINE@から特定のユーザーにメッセージを送ることができる
        - csv出力してline@の機能を使ってメッセージ送信する

- **GroupB**
    - funsからトーナメント情報を取り込むことができる
        - csvをimport
    - funsからトーナメント参加情報を取り込むことができる
        - csvをimport
    - 条件を絞ってユーザー検索を行うことができる
        - トーナメント参加履歴

- **GroupC**
    - funsID, lineID, airレジの紐付け
        - メモ：funsId, lineIdを紐付けるときにairレジ用のIDを別途払い出して登録する方針 

    - funsからトーナメント情報を取り込むことができる
        - スクレイピングする
        - apiで取得する（できるかの確認に問い合わせが必要）
    - funsからトーナメント参加情報を取り込むことができる
        - スクレイピングする
        - apiで取得する（できるかの確認に問い合わせが必要）
    - funsからユーザーのデータを取り込むことができる
        - スクレイピングする
        - apiで取得する（できるかの確認に問い合わせが必要）
    - 何かしらの方法でLINE@から特定のユーザーにメッセージを送ることができる
        - line apiを用いてアプリ上からメッセージ送信する
    - 条件を絞ってユーザー検索を行うことができる
        - 使用料金
```
# Groupの意味
GroupA
→最低限達成したいミニマム要件

GroupB
→ジョアさんがいったん作って欲しいと思って欲しそうな内容

GroupC
→現状聞いている中で思いついている最大の要件
```

https://script.google.com/macros/s/AKfycbx4r_-OiUffTqDY89BGFzG5K2mSnwMyfG9enECQcEt_4lu3AU8aZkcUaMsEQh5SCwofmw/exec

## 非機能要件
- いったんミニマムでできるだけお金をかけない方針でやりたい

## 選択肢（ミニマム要件）
### 1. スプレットシートで頑張るタイプ
- **メリット**
    - ミニマムを作るだけだったら割とすぐにできそう
- **デメリット**
    - GroupB以降を作るとなったら２以降の選択肢を使った方が良さそう
        - 一応GroupBなら頑張ればスプレットシートだけでもいけそうな気がするが相当きつい。。。
            - 工数は読めてない
- **工数**
    - もうできてますw（デザインは修正余地ありですがw）
        - https://docs.google.com/spreadsheets/d/1ldC-AuFEn1_TF6wfZlezFMmvyEbyoGr_3iE7u7-OKs0/edit#gid=0

### 2. javascript + スプレットシートでいい感じにアプリを作るタイプ
- **メリット**
    - GroupCまで結構いけそう
    - おそらく維持費が0円
        - [google drive apiは無料](https://groups.google.com/g/google-apps-api-japan/c/Q7IZ_z6AfWY?pli=1)
        - dockerで動かせばいけるw
        - ホスティングするなら認証機能を実装が必須

- **デメリット**
    - 複数店舗展開を考え始めるとかなり難しいかも
    - かなりイレギュラーな作り方するので僕しか管理できない
    - googleアカウントを作ってもらわないといけない

- **工数**
    - GroupAまではわりとサクッといけそうな気がしている
        - 4,5営業日くらい

<details>
<summary>一応もっとリッチな方法もあります。くらいの共有です</summary>

### 3. ガッツリruby使ってアプリ作るタイプ
- **メリット**
    - GroupCまで作れる
    - 多店舗展開にも対応できる
    - 学生エンジニアとかだったら雇いやすそうな布陣

- **デメリット**
    - 店舗用のスマホアプリを作ろうとすると別途対応が必要
    - シンプルに時間がかかる
    - GroupAを作るにも結構時間がかかる
- **工数**
    - GroupAまで
        - 20営業日くらい？（設計をやらないと正確な工数は出せない）

### 4. golang + javascriptを使ってリッチに作るタイプ
- **メリット**
    - GroupCまで簡単作れる
    - 多店舗展開にも対応できる
    - スマホアプリ作りますってなってもより対応しやすそう
    - エンジニアを比較的集めやすい気がする
- **デメリット**
    - これを運用するなら完全にテック企業になる必要がある
        - １人ずつ欲しい
            - server　
            - web
            - スマホ
    - 時間かかる
    - 金もかかる

- **工数**
    - GroupAまで
        - 30営業日くらい？（設計をやらないと正確な工数は出せない）
</details>


# 2023/03/01できることは？
## そもそも現状できること
- funsからcsvデータの出力
    - 顧客情報
        - funsId
        - 名前
        - 保有リングチップ
        - トーナメントチップ
        - 最終入店日
    - トーナメント参加情報

## 前提
### 毎日のタスク
- 顧客のcsvデータを毎日ダウンロード→入稿する
- トーナメント情報を毎日ダウンロード→入稿する

### 新規来店タスク
1. LINE@の登録
    - webhookでユーザーをフォローしたことを検知
2. funs
    - funsIdを取得

1, 2を紐付けるようなアプリを作成してそこの紐付けだけ行う


## できそうなこと
上記をが可能な上で。。。
- [ ] 特定日数来店していないユーザーに対してLINE＠からメッセージ送信
- [ ] line@から今日参加したトーナメントのハンドを共有

このあたりは聞いてもらえればできるできないは答えられるかと！

---

# 依頼内容
> 早速なんだけど、LINE＠の友達追加等の履歴や顧客情報を、そのアクションと連動する形でスプシなどのデータベースに自動展開する方法ってないんかな？
> LINE@友達追加→自動で顧客情報などをスプシに転記で

# 調査
- [友達追加をフックとして何かするはできそう](https://developers.line.biz/ja/reference/messaging-api/#follow-event)
- [プロフィールの取得もできそう](https://developers.line.biz/ja/reference/messaging-api/#get-profile)
    - 取得可能データ
        - 表示名
        - ユーザーの言語
        - プロフィール画像
        - ステータスメッセージ
    - 取得条件
        - ユーザーがプロフィール情報取得の同意を行なっていること
            - https://developers.line.biz/ja/docs/messaging-api/user-consent/

# 結論
- 表示名
- ユーザーの言語
- プロフィール画像
- ステータスメッセージ
上記4つのデータの取得自体は普通にできそう
（ただドキュメント読んだだけなので本当に想定通り動くかは未検証）

# 参考文献
- ちょっと近しいことをやってたLINE Developer Communityのユーチューブ動画
    - https://www.youtube.com/watch?v=ICnTa1LTSu0
- LINE公式apiリファレンス
    - https://developers.line.biz/ja/reference/messaging-api/


