GraphHub は、GitHub アカウントでログインしたユーザーが、任意の GitHub ユーザーを指定し、そのフォロー関係を動的なネットワーク図として可視化できるアプリケーションです。フォロー・フォロワー情報をもとに、それぞれのユーザーをノードとして描画し、関係性を矢印で表現します。
- GitHub OAuth を使ったログイン機能(NextAuth.js)
- アクセストークンを利用し、GitHub API の高レート(5000 req/h)で操作可能
- 入力欄で任意の GitHub ユーザー名を指定(バリデーションあり)
GET /users/:username/followers(最大100件/ページ)
GET /users/:username/following
- 各ユーザーの以下情報を取得:
- ユーザー名(login)
- アイコン(avatar_url)
- プロフィールURL(html_url)
- 中央に対象ユーザー(入力されたユーザー)
- 周囲にフォロワー/フォロー中ユーザーをノードとして配置
- 各ノードには以下を表示:
- GitHubのアバター画像
- ユーザー名(ホバーまたは下部)
- エッジ(線)のルール:
- 相互フォロー(両方向):⇔ 両矢印
- フォロー中のみ:→(対象ユーザー → 他ユーザー)
- フォロワーのみ:←(他ユーザー → 対象ユーザー)
- 色分け(オプション):
| 層 |
使用技術 |
内容 |
| フロントエンド |
Next.js, TypeScript, Tailwind CSS |
UI構築、入力、ページ遷移 |
| バックエンド |
tRPC |
GitHub APIラッパーとして機能 |
| 認証 |
NextAuth.js(GitHub) |
GitHubログイン用、トークン取得 |
| ネットワーク描画 |
vis-network(推奨), Cytoscape.js |
インタラクティブなネットワーク図 |
| HTTPクライアント |
axios |
GitHub API通信 |
| 状態管理 |
React hooks / zustand |
入力値、選択中ノード等の管理 |
| デプロイ |
Vercel |
CI/CD対応のクラウドホスティング |
- 「GitHubでログイン」ボタン
- ログイン完了後、トップページへリダイレクト
- GitHubユーザー名の入力欄
- 「相関図を表示」ボタン
- ローディング中表示
- エラー通知(無効なユーザー名、APIエラーなど)
- 対象ユーザーを中心にネットワーク表示
- ノード:ユーザーアイコン+名前(クリックで再描画)
- エッジ:
- ⇔(相互フォロー)
- →(対象が他をフォロー)
- ←(他が対象をフォロー)
- 操作性:
- ズーム・パン対応
- ノードクリックで他ユーザーの図に遷移
| 問題 |
対応策 |
| 無認証状態でのレート制限(60件/時) |
GitHubログインでトークン取得し、5000件/時に緩和 |
| 多すぎるフォロワー数 |
初期取得数制限(例:30件ずつ、設定可能) |
| 非公開ユーザー |
API上取得不能、表示しないよう除外 |
- 二次・三次ネットワーク展開(フォロワーのフォロワー)
- ノードクリック時のプロフィール詳細表示
- 相関図のPNG/SVGエクスポート
- ダークモード切り替え
- 履歴機能(最近表示したユーザー)
↖︎ ↑ ↗︎
[follower] [⇔] [follower+followed]
↙︎ ↓ ↘︎
[You]
⇧
↓
[followed]
- 相関図の描画は
useEffect + vis-network でDOMマウント後に初期化
- avatar画像サイズは50px前後推奨
- ユーザー名はリンク付きにする(GitHubプロフィールへ)