GitHubのリポジトリをコレクションして眺めるサービスを作りたい

f:id:syonx:20180203194649p:plain

はじめに

日々不満に思っていたことと、それを解決するためのネタを蓄積する習慣があります。 今回ふと思い立って、以前の投稿 で示したように思考の過程を残してみます。

プログラミングが流行しつつある今、出来上がったものばかりを紹介するのではなく 実際に作っている人が何を考え、どう判断し、行動していくのかの実例をお届けできればと思いました。

以降のテキストは「課題解決の検討フレームワークとして自分が用意した枠組みをもとに記述されています。 これまで、考えが発散していつまでもゴールにたどり着かないのを幾度となく繰り返し時間を無駄にしてきました。 これをちゃんとやりさえすれば、少しはマシに議論というか一人脳内会議が建設的に進みます。 今回はプロダクトの要件を固めるところまで書きました。実現方法や技術選定がその後に追記されるといった流れです。

蓄積しているアイデアは自分の中に秘めて、いつか作り上げたときに公開するスタイルでした。 必ずしも自分が作り上げたい訳でもないものは積極的に公開して、あわよくば誰か作って欲しいとかそんな感じです。

それでは、どうぞ。


背景、具体的なユースケースの提示

  • シーン①
    • MkDocs をきっかけに、ドキュメント生成OSSを探していた。
    • しかし、過去に知った ReadTheDocs の名前を思い出せず見つけるまでに時間がかかった。
    • また、比較に必要なネタ探しに困った。最終更新日?最終リリース日?Themeは?
    • ほかに似たようなOSSはあっただろうか?それらの最近の動向がわからない。
  • シーン②
    • Semantic-UI を思い出した。最近どうしてるんだろう。
    • 前回自分がチェックしてからどれだけ進化しただろうか。

課題・不満と要望の整理

<語尾「〜ない」で記述>

  • 今見つけたこのリポジトリについて、最近の動向がパッと見でわからない
  • 過去にGitHubで見つけたリポジトリが、最近はどうしているのかわからない
    • 何が気になっていたのかすぐに思い出せない
    • アレとはわかるがOSSの名称を思い出せない
      • 関連情報を使って見つけ出すこともできない
  • 自分が過去に見つけて知っているものが何か把握できていない
    • Starは最近になってようやく足あとのかわりに気軽につけるようになったが足りない

どうしたいのか、理想・要件の洗い出し

<語尾「〜たい」で記述>

  • 自分用にひとことコメントを添えて補足説明を添えたい
  • リストアップして眺めたい
    • UI Frameworkみたいな比較検討したいやつとか
    • カテゴリ(タグ)でくくりたい
  • 1日1回くらいのペースでチェックしたい
    • 動きのあったものをトップに上げて消化していく
    • でも活発なやつが毎日上がってきても邪魔
    • リポジトリごとにチェック頻度を設定したい
  • リリースの単位ごとに既読管理したい
    • リポジトリが吐き出すRSSイベントの処理?
    • ものによって Commit / Release などフィルタレベル設定
    • これは機能のひとつでしかない
  • 変化を検知したい and 知っているOSSコレクションを眺めたい
    • 知りたい内容が一緒だからゴチャゴチャする
      • 見つけた時に動向を知って比較したい
      • 毎日チェックして変化のあるものを検知したい
      • ふと思い立ったときに状況を確認したい
  • コレクションはStarとは分けて管理したい
    • 時は流れるので、過去Starしたものがベースだとアレ
    • 「足あと」「応援」の意味でも使っていたりするのでデータソースとしてイマイチ
    • 気になっているけどStarを付けていないものもある
    • 一般的ににはわざわざ解除して新鮮さを保つとかしない
    • Followの概念がよさそう。興味がなくなれば解除。

達成条件の明確化

<語尾「〜こと」で記述>

  • 任意のリポジトリについて、最近の動向がわかること
    • <何をもって最近の動向がわかったと言えるのか?>
      • 最終コミット日、最終リリース日
      • Insights (Pulse) のサマリ
  • コレクションを用意できること
    • 一覧で眺められること
    • StarではなくFollowで管理できること
  • 過去に見つけたリポジトリが、名前以外の情報を使って見つかること
    • タグを使って関連がヒットすること
  • 気になっているものに動きがあったら通知されること
    • 既読管理できること

競合調査、既存サービスではダメな理由

  • GitHub Star
    • 何をスターしたか探すためのものに見える
  • GitHub Watch
    • あれもこれも通知されて煩わしい。自分が面倒を見るやつ用。
  • GitHub Insights (Pulse)
    • 最近の動向はこれでわかる
    • 単発リポジトリの状況を見るならこれでよいかも
  • Googleトレンド
    • 流行度を知りたいわけではない
    • とはいえ傾向は見る価値あるかも
  • Git Awards - スターランキング
    • 人気度を知りたいわけではない
  • Star history
    • 人気の動向を知りたいわけではない
  • Sibbell - リリース通知
    • 滅多にリリースされないやつは?
      • ものによってはCommitがあっただけでも知りたい → Watch
      • それをたまに思い出して状況をチェックしたい
    • 通知されてから行動というユースケースではなくて、こちらのタイミングで。
    • リリース状況を眺められたらそれが一番近い??
      • Projects you follow ページ
      • 一覧はあるがタグ管理はできない、でもそんなに数はいらないか
    • "Follow"の概念のほうが合っている
  • Astral - Starのタグ管理
    • 関連を探すのには向いているので、課題は一部解決できる
    • 閲覧できるのが Star / Forked だけなのが不満
    • ここに一覧で Palse ・ Release があれば。。
    • 最近リリースされたものがあれば、ニュースとして通知されればよい?
    • 一般公開されないので、自分しか見られない、ログインしないと見られない
  • StackShare
    • Software and technology stacks used by top companies
    • 比較

何があれば達成条件をクリアできるのか

  • Followリポジトリのコレクション
    • タグ管理機能
    • Starからインポート、継続自動インポート
  • リポジトリ情報
    • 最終コミット日、最終リリース日
    • Insights (Pulse) のサマリ
  • 通知と既読管理
  • 検索(フィルタ)
  • ユーザごとにURLを保持、一般公開