Giter VIP home page Giter VIP logo

kb_1909's Introduction

RE:Site

製品概要

GeoTech

リサイト(RE:Site)は,その場所に行かないと投稿することも投稿を読むことも出来ないSNSです.

背景(製品開発のきっかけ、課題等)

インターネットの登場は,「どこでも情報にアクセスできる」時代の幕開けでした.しかし,その便利さと承認欲求に溺れた私達は,TwitterなどのSNSに時間を費やし,心を砕き,目の前にあるものを見失ってしまっています.
私達の提案する「リサイト」は,「実際に行かないと見ることのできない情報」を提供することで,私達と情報の関係を再定義し,現実世界を再び冒険と出会いに溢れたものに変えます.

製品説明(具体的な製品の説明)

リサイトは,TwitterやFacebookのように誰もが情報及び現在位置(必須です)を投稿(モニュと呼びます)し,それを閲覧することができるSNSです.しかし,"モニュ"の内容の全てを簡単に得ることは出来ません.
具体的には,半径200m以内の投稿しか読むことは出来ません. 例えば,知り合いがどこかで"モニュ"をした場合,知り合いが"モニュ"をしたということ自体はわかりますが,実際にその場所に行かないとどのような内容が"モニュ"されたのか知ることは出来ません.
また,あらゆる人のモニュを時系列で見ることができる,いわゆるタイムラインも存在しますが,タイムラインに表示されるのも近傍のモニュだけです.

特長

「その場所に行かないと情報にアクセスすることが出来ない」

これは一見,ただのデメリットであるように思えます.しかし,Instagramのストーリーやツイッターのタイムラインなど,情報へのアクセスを制限することがユーザーにとっての便益になる例は数多くあります.得られる情報が多すぎるとユーザーは情報にアクセスしづらいからです.
InstagramのストーリーやTwitterのタイムラインは,情報の拡散を時間的に縛るものであるのに対し,リサイトは情報の拡散を地理的・空間的に縛ります.これまでのSNSに見られなかったこの特徴が,リサイトに以下に述べるような興味深い長所を与えます.

特長1 あなたの投稿がより長期間に渡って残り,その場所の「歴史」となる

通常のSNSでは,あなたの投稿は他の投稿によって瞬時に見えなくなり,歴史に残るのはごくごく一部の"バズった"投稿だけです.バズることを目的として語調の強い感想をつぶやき続けるアカウントが生まれるのも頷けます.
しかし,通常のSNSでは,膨大な投稿の中に埋もれてしまう, 「このお店のご飯美味しかった」「ここ,隠れた穴場!」「ここから見える夜景はキレイだった!」と言った日常のちょっとしたつぶやきこそ,私達が本当に見たい,共有したい,伝えたいものだったのではないでしょうか. そして,それはしばしば,あなたの現実の身体や,あなたが実際にいた場所と紐付いています.そのため,場所と投稿を紐付けることが重要になります.
あなたのモニュは,モニュされた場所に自動的にタグ付けされてサーバーに保存されます.そして,何年もあと,その場所を訪れた友達や,もしかすると全く知らない人に届き,その人から「いいね」が帰ってくるかもしれません.これまでのSNSとは全く異なる喜びがここに生まれます.
なお,住所を特定される危険を防ぐため,知らない人に対してはあなたのモニュは匿名化されます.

特長2 現実世界に目を向ける機会となる

旅行に行ったとき,ピクニックにでかけたとき,ごはん屋さんを探すとき.そんなときに,現実世界の場所とリンクしたSNSであるリサイトは,そこを訪れた人たちの残していった情報を探すのに便利だというのは簡単に想像できます.

しかし,リサイトが使えるのは,何も目新しい場所を訪れたときだけではありません.学校や会社,いつも通っている場所でも,リサイトを開けば,その場所を訪れた人の新たなモニュに出会えます.あなたが普段は見落としていた,日常の中に眠っていた素敵な場所に出会うことができるかもしれません.
逆に,リサイトで「いいね」をもらうためには,実際にその場所に行き,その場所に関連したことをモニュしなければなりません. リサイトでは,わたしたち皆が持っている承認欲求が,自然と現実世界に私達の目を向けさせるのです.

解決出来ること

人類のSNS中毒を解決できます.

今後の展望

公開期間・公開半径の設定

リサイトは,リーチアウトにもとても有用です.その場所に行かないと見ることが出来ない情報をリサイトに投稿しておけば,町や観光地,お店に人を集めることが可能になります.
例えば,アニメのキャラの非公開イラストや,アフターストーリー小説,芸能人の限定インタビュー動画などのURLをリサイトに投稿することができるでしょう.
しかし,この機能の実装のためには, モニュした内容の公開距離・公開期間を設定できるようにする 必要があります.お店の宣伝のために投稿したのに,200m先から/何年後でも読めるようでは貴重さが薄れてしまうからです.
また,その場所に行くだけでなく, QRコードによる認証 ができるようになるとより利用の幅が広がりそうです.お店で買い物をしたときにもらえるQRコードで情報にアクセスできるようにするなどの利用が考えられます.

開発内容・開発技術

投稿を読み書きするためのウェブサイトと,投稿を位置情報毎にデータベースに乗せて管理するバックエンドサーバに分けて設計しています.
フロントエンドはVue.js,バックエンドはRuby on Railsで構築されており,それらがjsonldを用いてやり取りします.

活用した技術

フレームワーク・ライブラリ・モジュール

  • Vue.js
  • Ruby on Rails

デバイス

  • スマートフォン,タブレットなど,外で使うことのできる情報端末一般

独自開発技術(Hack Dayで開発したもの)

  • アイデア出しから開発まで全てHack Dayで行いました

API仕様

base_url: https://monu-geometry.herokkuapp.com/v1/

get /posts

Request

params
param value
longitude 34.684860
latitude 135.1994354
delta 0.003

Response

正常系

post のリスト 距離近い順

{
    "posts": [
        {
            "distance": 12, // number: メートル単位
            "body": "this is body", // string: ツイート本文
            "url": "https://<slug>", // string: ツイートに含まれるURL
            "created_at": 1571454012 // number: UNIX時間
        },
        {
            "distance": 13, // number: メートル単位
            "body": "this is body", // string
            "url": "https://<slug>", // string
            "created_at": 1571454012 // number
        },
    ]
}
異常系
failure mode HTTP status
longitude or latitude が未指定 or numberじゃない 400 Bad Request
上記以外 500 internal server error
{
    msg: "error message"
}

post /posts

新しいpostを作成

Request

body
{
    "longitude": 34.684860, // number
    "latitude": 135.1994354, // number
    "url": "http://hogehoge",
    "body": "this is body"
}

Response

正常系

post のリスト 距離近い順

{
    post: {
        "body": "this is body", // string: ツイート本文
        "url": "https://<slug>", // string: ツイートに含まれるURL
        "created_at": 1571454012 // number: UNIX時間
    }
}

異常系

failure mode HTTP status
どれかが未指定 400 Bad Request
上記以外 500 internal server error
{
    msg: "error message"
}

apilists

v1_users GET    /v1/users(.:format)           v1/users#index
         POST   /v1/users(.:format)           v1/users#create
 v1_user GET    /v1/users/:id(.:format)       v1/users#show
         PATCH  /v1/users/:id(.:format)       v1/users#update
         PUT    /v1/users/:id(.:format)       v1/users#update
         DELETE /v1/users/:id(.:format)       v1/users#destroy
   v1_me GET    /v1/me(.:format)              v1/users#me
v1_login POST   /v1/login(.:format)           v1/users#log_in
v1_posts GET    /v1/posts(.:format)           v1/posts#index
         POST   /v1/posts(.:format)           v1/posts#create
 v1_post GET    /v1/posts/:id(.:format)       v1/posts#show
         PATCH  /v1/posts/:id(.:format)       v1/posts#update
         PUT    /v1/posts/:id(.:format)       v1/posts#update
         DELETE /v1/posts/:id(.:format)       v1/posts#destroy
      v1 POST   /v1/images/:post_id(.:format) v1/images#create
         GET    /v1/images/:post_id(.:format) v1/images#show
         POST   /v1/posts/:id/good(.:format)  v1/posts#good
v2_users GET    /v2/users(.:format)           v2/users#index
         POST   /v2/users(.:format)           v2/users#create
 v2_user GET    /v2/users/:id(.:format)       v2/users#show
         PATCH  /v2/users/:id(.:format)       v2/users#update
         PUT    /v2/users/:id(.:format)       v2/users#update
         DELETE /v2/users/:id(.:format)       v2/users#destroy
   v2_me GET    /v2/me(.:format)              v2/users#me
v2_login POST   /v2/login(.:format)           v2/users#log_in
v2_posts GET    /v2/posts(.:format)           v2/posts#index
         POST   /v2/posts(.:format)           v2/posts#create
 v2_post GET    /v2/posts/:id(.:format)       v2/posts#show
         PATCH  /v2/posts/:id(.:format)       v2/posts#update
         PUT    /v2/posts/:id(.:format)       v2/posts#update
         DELETE /v2/posts/:id(.:format)       v2/posts#destroy
      v2 POST   /v2/images/:post_id(.:format) v2/images#create
         GET    /v2/images/:post_id(.:format) v2/images#show
         POST   /v2/posts/:id/good(.:format)  v2/posts#good

Auth方法

  1. (GET)/login または (POST)/createでログインかユーザー作成
  2. json形式の{"token": "huahkdailno"}をもらう
  3. headerにAuthorizationBearer {token}を追加し、送信
  4. 簡単にauthできてるかの確認として(GET)/meにアクセス(ユーザーオブジェクトがもらえる)

POST /v2/users

//request
{
    "name": "hoge1",
    "email": "kooala",
    "password": "password",
    "image": "url_to_image"
}

//response: user_obj(include token)

GET /v2/me (==need Auth==)

//response: user_obj(include token) 

POST /v2/login

//request
{
    "email": "kooala",
    "password": "password",
}

//response: user_obj(include token)

GET /v2/users/:id

//response: user_obj

POST /v2/posts (==need Auth==)

//request
{
    "longitude": 34.684860, 
    "latitude": 135.1994354, 
    "url": "http://hogehoge",
    "body": "this is body"
}
//response: post_obj

POST /v2/posts/:post_id/good (==need Auth==)

//response good_obj

GET /v2/posts

//request => /v2/posts?longitude=34.684860&latitude=135.1994354&delta=0.05
//response: arrayof posts_obj

GET /v2/posts/:id

//response: posts_obj

kb_1909's People

Contributors

maximum80 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.