Skip to content

Instantly share code, notes, and snippets.

@kuy
Last active June 9, 2016 13:38
Show Gist options
  • Save kuy/ef866e8089c4eaac8d85396e568840d6 to your computer and use it in GitHub Desktop.
Save kuy/ef866e8089c4eaac8d85396e568840d6 to your computer and use it in GitHub Desktop.
SSリーダー開発メモ

目的

日々たくさん更新されるSS(ショートショート)まとめサイトの新着には古いものがまざっていたり、 すでに読んだことのあるSSだったりして巡回が面倒になってきている。 自分の好きな作品の新着SSの発見と既読管理、よかった作品のストック、評価を付けたりできるような サービスとそのクライアントアプリケーションの開発をする。 どこでも読めることが大事で、基本的にはスマホで使うことが多い。

機能

  • 作品の検索と購読
  • 新着SSの通知
  • 既読管理(閲覧履歴)
  • 作品のブックマーク(と評価)

シナリオ

リーダー部分

  • ユーザーは作品名で検索する
  • その作品の収集済みのSSが一覧表示される
  • 新着通知を受け取るため購読しておく
  • SS一覧の中からまだ読んだことのないSSを開く
  • SSを読む(そのSSが既読になる)
  • その作品が気に入ったのでブックマークしておく
  • 新着SSの通知が届く

収集部分

  • 登録されているサイトを巡回して、新着SSの候補を集める
  • 収集したSSのメタデータを保存する
  • 過去のSSと比較して新着SSを絞り込む
  • ユーザーに新着SSを通知する

管理部分

  • 巡回先のサイトを登録する
  • 微妙に異なっているタイトルのSSを既知のSSにマージする

ドメインオブジェクト

ユーザー(User)

  • username

記事(Story)

  • title_id
  • name
  • mark_as_read()
  • mark_as_unread()
  • bookmark()
  • unbookmark()

作品(Title)

  • name
  • subscribe()
  • unsubscribe()

購読(Subscription)

  • user_id
  • title_id
  • remove()

履歴(History)

  • user_id
  • story_id
  • remove()

ブックマーク(Bookmark)

  • user_id
  • story_id
  • remove()

通知(Notification)

  • user_id
  • story_id
  • is_read
  • mark_as_read()

サイト(Site)

  • name
  • url
  • title_id

ドメインサービス

クローラ(Crawler)

  • check()

リポジトリ

ユーザーリポジトリ(UserRepository)

  • findById()
  • store()

サイトリポジトリ(SiteRepository)

  • findAll()
  • store()

作品リポジトリ(TitleRepository)

  • findById()
  • findByUser()
  • store()

記事リポジトリ(StoryRepository)

  • findByTitle()
  • store()

通知リポジトリ(NotificationRepository)

  • findByUser()
  • store()

購読リポジトリ(SubscriptionRepository)

  • findByUserAndTitle()
  • store()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment