About このプロジェクト
Stack Overflow の質問12,000件とDeveloper Survey を組み合わせ、 「学習者がどこでつまづくか」をマクロ・メゾ・ミクロの3層で定量分析したデータアナリストポートフォリオ第3作。 公的統計(第1作)・商業データ(第2作)に続き、テキスト+メタデータの分析を扱う。
分析パイプライン
データ取得(Day 2–3)
Stack Exchange API v2.3 でPython・JavaScript・Java・Go の質問を言語・年別に各300件取得(計12,000件)。tenacity によるバックオフ自動制御、SQLite キャッシュで再取得コストを抑制。
前処理(Day 4)
質問本文のHTML除去(BeautifulSoup4)→ NLTK英語ストップワード+ドメイン固有語の除去 → Parquet 形式で保存。
マクロ分析(Day 5)
Developer Survey 2022–2024 の使用率・希望率を言語別に集計。質問の回答率10年推移も算出。pandas + PyYAML で設定外出し。
メゾ分析(Day 6)
タグ共起行列を構築し networkx でグラフ化 → Louvain法でコミュニティ検出 → 媒介中心性上位50ノードを抽出してD3.js用JSONを生成。
ミクロ分析(Day 7–8)
質問タイトル+タグを TF-IDF(sklearn)でベクトル化 → LSA(TruncatedSVD)で50次元に削減 → HDBSCANでクラスタリング(クラスタ数自動決定)。クラスタラベルはグローバルIDF(セントロイド方式)で上位語を選択。
フロントエンド(Day 9–12)
スクロールテリング型SPA。Plotly.js でトレンドグラフ・横棒グラフ、D3.js v7 でforce-directed network。IntersectionObserver でスクロール連動アニメーション。
利用技術スタック
| ライブラリ | 用途 | バージョン |
|---|---|---|
| Python | 分析全般 | 3.13 |
| pandas / pyarrow | データ処理・Parquet保存 | 2.x / 19.x |
| scikit-learn | TF-IDF・LSA(TruncatedSVD) | 1.x |
| hdbscan | 密度ベースクラスタリング | 0.8.x |
| networkx | タグ共起グラフ・中心性計算 | 3.x |
| python-louvain | コミュニティ検出 | 0.16 |
| nltk | 英語ストップワード・トークナイズ | 3.9.x |
| tenacity | API バックオフ制御 | 9.x |
| loguru | ロギング | 0.7.x |
| Plotly.js | トレンドグラフ・横棒グラフ | 2.35.2 |
| D3.js | force-directed ネットワーク図 | 7.9.0 |
データソースと利用規約
-
Stack Exchange API v2.3
Stack Overflow の質問・タグデータを取得。 Stack Exchange Network 利用規約 に基づき CC BY-SA 4.0 で利用。 出典: Stack Overflow(stackoverflow.com) -
Stack Overflow Developer Survey 2022–2024
年次開発者調査。 survey.stackoverflow.co/datasets より取得。ODbL ライセンスで公開。