# インターン2021夏Aチーム
## テーマ:学生 x 旅行・観光
## みんなが考えてきたアイデア
- サウスケイ+
ブラウザ版観光地
ブラウザ上で仲見世のようなストリートビューなどから買い物ができる
- かずりゅう++
スマホで行きたい場所の経路、時間、金額を整理できるなにか
- あろー+++
Instagramで人気のある観光系の投稿から、それに関連する最寄りのスポットや学割の効く宿等の情報をいい感じに提供するなにか
- るーくん++
学生同士の旅行ブログ
## ビジョン
- 友達との行き先をサポートする
- 保存ができる
- シェアできる
- 予算設定できるとか
- グループ作れる
- 予定が作れる
## アイデア
- 行きたい数に合わせて画像が大きくなる
-
## PO
- あろー
---
## 必要な機能
- インスタから人気の旅行先を持ってくる機能 +++++
- マップにピンを刺す機能 +++
- ピンの情報を保存する機能 +++
- おすすめの旅行先を分析 +++++
- 行きたい数に合わせて画像が大きくなる機能
- 調べた情報や、旅行の行き先をもとに、別の行き先をおすすめする機能 ++++
- 個人個人のアカウントを作成する機能 +
- アカウントに旅行先データ等を紐付ける機能 +
- アカウントからグループを作る機能 +
- 予算を提案する機能 ++
- 一緒に行くメンバーどうしで共有できる機能 ++
- 日程の調整ができる機能
---
## タスクの洗い出し
### 優先度高
- インスタから人気の旅行先を持ってくる機能
- 関連するおすすめの旅行先を分析・提案
- おすすめ度に合わせて画像が大きくなる(分析結果)
- 調べた情報や、旅行の行き先をもとに、別の行き先をおすすめする機能
### 優先度中
- マップにピンを刺す機能
### 優先度低
- 予算を提案する機能
- 一緒に行くメンバーどうしで共有できる機能
- 個人個人のアカウントを作成する機能
- アカウントに旅行先データ等を紐付ける機能
- アカウントからグループを作る機能
---
## 個人のタスク
### あろー
- [x] 観光系の使えそうなAPIを探す
- [x] キーワードから周辺のホテルを検索する
- [x] 位置情報から周辺のホテルを検索する
- [x] キーワードから画像を取得する
- [x] 位置情報から住所を取得する
- [x] 画像をランダムな順で返す
- [x] フリーワードで画像検索(ちょっと変えるだけ)
### かずりゅう
- [x] ハッシュタグから関連したハッシュタグを取得する
- [x] キーワードから画像のurlを取得する
- [x] instagramの投稿から位置情報を取得する
- [x] 緯度経度から付近の観光地を取得する
- [x] 作ったAPIをまとめる
- [x] `/api/findNerlyPlace` の実装(server.jsに無いのでお願いします...!)
- [ ]
### サウスケイ
- [x] サーバーサイドから送られてきたjsonをブラウザに反映させる。
- [x] 画像のモーダルを作る
### るーくん
- [x] jsonから、写真を読み込んでWeb上に張り付ける。
- [x] jsonの写真を並び変えて表示する。(サーバー側が実装)
- [x] 検索フォームを作る。
- [x] 写真を並び変えができるようにする。
---
## 既存のサービスとの違い
### 似たサービス
近い機能を持ったサービスとして次のサービスが挙げられる
- Instagram
- Google 画像検索
- 個人ブログ
大きい点で差別化されているのは、人気、投稿数を集約した画像が挙げられていると言う点である
このサービスはInstagramの投稿から多くの人が訪れている観光地を分析して作られているので、厳選され、よりわかりやすいデザインがなされている
また、個人ブログと違い、1個人の見解で決めたランキングではなく、多くの人が行く傾向にあると言うことを分析することで、人気を分析することができるのもポイントである
---
## API一覧
### 緯度経度から付近の観光地に関する記事のurlを取得
> **/api/findNerlyPlace**
#### パラメータ
| プロパティ名 | 説明 | 備考 |
| - | - | - |
| lat | 緯度 | 省略不可 |
| lon | 経度| 省略不可 |
| count | 取得件数| 省略不可 |
```json
// 例
{
"lat": 35.65858,
"lon": 139.745433,
"count": 2
}
```
#### 戻り値
Jsonが入った配列が返ります。
```json
[
{url:"https://~~~~",img:"https://~~~~",label:"観光"},
{url:"https://xxxx",img:"https://~~~~",label:"グルメ"}
]
```
### キーワードから関連する画像を取得
> **/api/getPictures**
#### パラメータ
| プロパティ名 | 説明 | 指定できる値 | 備考 |
| - | - | - | - |
| keyword | 検索キーワード | | 省略不可 |
| orderBy | ソート条件 | 昇順 : "asc"<br>降順 : "desc"<br>ランダム : "rand" | 省略した場合は "asc" |
| count | 取得件数 | | 省略不可 |
| usePixabay | フリー素材を含める | true / false | 鯖江は出ません... |
```json
// 例
{
"keyword": "浅草",
"orderBy": "desc",
"count": 20,
"usePixabay": false
}
```
#### 戻り値
検索結果無し・エラーの場合は空の配列が返ります。
| プロパティ名 | 説明 | 備考 |
|-|-|-|
| title | タイトル名 | |
| pref | 都道府県名 | 無い場合は空文字 |
| author | 撮影者名 | |
| place | 画像のURL | |
| view | 閲覧数 | |
| from | 取得してきたサイト名 | "FIND47" か "pixabay" |
| url | 画像のサイトのURL | |
| authorurl | 撮影者のサイトのURL | 無い場合は空文字 |
| geo | 位置情報のオブジェクト | |
| geo.exists | 位置情報が存在するか | trueなら lat, lng が存在する |
| geo.lat | 緯度 | |
| geo.lng | 経度 | |
```json
// 例
[
{
"title": "沖縄 西表島のマングローブ林",
"pref": "沖縄県",
"author": "T-KIMURA",
"place": "https://find47.jp/ja/i/YzxDo/image_file",
"view": 59,
"from": "FIND47",
"url": "https://find47.jp/ja/i/YzxDo",
"authorurl": "https://app.find47.jp/ja/u/ugvpk",
"geo": {
"exists": true,
"lat": 24.330060819266592,
"lng": 123.81879748750202
}
}
]
```
### Instagramの人気タグに関連する画像を取得
> **/api/getPictures**
#### パラメータ
| プロパティ名 | 説明 | 指定できる値 | 備考 |
| - | - | - | - |
| tag | ハッシュタグ | | 省略不可<br>複数ある場合は半角スペースで区切る |
| orderBy | ソート条件 | 昇順 : "asc"<br>降順 : "desc"<br>ランダム : "rand" | 省略した場合は "asc" |
| count | 取得件数 | | 省略不可 |
```json
// 例
{
"tag":"#旅行 #旅"
"orderBy": "desc",
"count": 20
}
```
#### 戻り値
[キーワードから関連する画像を取得](#キーワードから関連する画像を取得) と同じです。
### キーワードからホテルのリストを返す
> **/api/searchHotels**
#### パラメータ
| プロパティ名 | 説明 | 指定できる値 | 備考 |
| - | - | - | - |
| keyword | 検索キーワード | 県名・地名だとよりいい感じ | 省略不可 |
| count | 取得件数 | | 省略不可 |
```json
// 例
{
"keyword": "神戸",
"count": 10
}
```
#### 戻り値
検索結果無し・エラーの場合は空の配列が返ります。
| プロパティ名 | 説明 | 備考 |
|-|-|-|
| name | 施設名 | |
| desc | 簡単な説明文 | |
| tel | 電話番号 | |
| address | 住所 | |
| infoUrl | 施設についてのサイトのURL | |
| planUrl | 施設の旅行プランについてのURL | |
| imageUrl | 施設の外観画像のURL | |
| reviewAvg | レビュー平均 | 0~5の間 |
| reviewText | レビュー文 | 無い場合が多いです |
```json
// 例
[
{
"name": "ホテル星立 西表島<西表島>",
"desc": "満天の星、コバルトブルーの海のもと なにもない、なにもしない「島じかん」で日常を忘れる極上ステイを…",
"tel": "0980-85-7528",
"address": "沖縄県八重山郡竹富町西表949",
"infoUrl": "https://img.travel.rakuten.co.jp/image/tr/api/kw/JBe8h/?f_no=172112",
"planUrl": "https://img.travel.rakuten.co.jp/image/tr/api/kw/3VTwt/?f_no=172112&f_flg=PLAN",
"imageUrl": "https://img.travel.rakuten.co.jp/share/HOTEL/172112/172112.jpg",
"reviewAvg": 4.4,
"reviewText": ""
}
]
```
### 緯度・経度からホテルのリストを返す
> **/api/searchHotels**
#### パラメータ
| プロパティ名 | 説明 | 備考 |
| - | - | - |
| lat | 緯度 | 省略不可 |
| lng | 経度 | 省略不可 |
| count | 取得件数 | 省略不可 |
```json
// 例
{
"lat": 35.65858,
"lng": 139.745433,
"count": 10
}
```
#### 戻り値
[キーワードからホテルのリストを返す](#キーワードからホテルのリストを返す) と同じです。
# プロダクト紹介文
##
チーム名: Aチーム
チーム構成: (PO)あろー,かずりゅう,るーくん,サウスケイ,(Mentor)よしろーさん
タイトル: pulchra(ぷるくら)
ビジョン: あまり旅行慣れしていない高専・大学生に現在トレンドの観光地を提案し、行きやすいメジャーな旅行を提供する。
ターゲット: あまり旅行慣れしていない高専・大学生
推奨動作環境:Google Chrome
概要:今トレンドの観光地が一目でわかるサービス。その付近の観光地やホテルの情報も得られる。
# 最後のチームでのKPT
## K
- かずりゅう:形になった 全員で作れた
- あろー : 思っていたよりもしっかりしたものになった!
- サウスケイ : 一人じゃ絶対に作れないものができた
- るーくん : すごくおしゃれなアプリができた。
## P
- かずりゅう:画像の精度が悪かった
- あろー : 発表前にサーバーが落ちた...
- るーくん : 携帯だとうごかなかった。
- サウスケイ : 検索結果がありませんでした実装するの忘れた
## T
- かずりゅう:サーバーサイドの経験を活用する
- あろー : これからも何か作っていきたい
- るーくん : 携帯で動くように。検索機能を充実
- サウスケイ : 来週も頑張る