
2026/03/15 2:12
**Show HN:** *Hacker News アーカイブ(4,700万件以上、11.6 GB)をParquet形式で提供 – 5分ごとに更新*
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要:
本稿では、2006年10月から2026年3月16日までのHacker News(HN)の完全なミラーを提供する公開データセットを発表します。データセットは47,360,671件のアイテム(ストーリー、コメント、Ask HN、Show HN、求人、投票)で構成されます。データは毎月のParquetファイルと現在の日付に対する5分ごとのライブブロックとして保存されており、新しいブロックが5分ごとにコミットされ、完全な月間ファイルはUTC午前0時に更新されます。ファイルには各月のメタデータ(アイテム数、ID範囲、ファイルサイズ、フェッチ/コミット時間、コミットタイムスタンプ)が記載されており、stats.csvはライブブロックをカバーします。stats_today.csv
コンテンツは主にコメント(87.2 %)で構成され、ストーリーが12.7 %、求人/投票が<0.1 %です。ストーリーの84.8 %が外部URLへリンクしており、平均23.9件のコメントが各ストーリーに寄せられています(トップストーリーは9,275件)。ストーリースコアは急峻なパワーローを示し、平均1.5、中央値0、最高6,015であり、100点以上のストーリーが175,896件、1,000点以上が2,169件あります。トップ共有ドメインにはgithub.com(197 214)、youtube.com(134 767)、medium.com(124 527)、nyt.com(77 635)、wikipedia.org(54 377)が含まれます。主要な投稿者はrbanffy(36 772)、Tomte(26 167)、tosh(24 022)、bookofjoe(20 562)、mooreds(20 346)です。
パイプラインはGoで実装され、DuckDBを使用してParquet変換とZstandard圧縮レベル22を行います。過去データはClickHouse Playgroundから取得し、ライブデータはHN Firebaseからフェッチします。スキーマは公式Hacker News APIアイテム形式(id, deleted, type, by, time, text, dead, parent, poll, kids, url, score, title, parts, descendants, words)に一致し、には5値のint8列挙型が使用されています。type
Open Data Commons Attribution License (ODC‑By 1.0) の下でリリースされており、データセットはユーザー名・テキスト・タイトルといった公開されたユーザー生成コンテンツのみを含み、追加のPIIフィルタリングは行われません。
利用用途としては、技術的ディスコースに対する言語モデルの事前学習、20年以上にわたる感情・トレンド分析、コミュニティダイナミクス研究、情報検索ベンチマーク、および推奨システム開発が挙げられます。データはHugging Faceのdatasetsライブラリ、DuckDB、またはCLIツールを通じて利用可能であり、研究者は完全な履歴をストリームしたり、特定の年/月だけをロードして分析することができます。
本文
Hacker News – 完全アーカイブ
2006年以降のすべての Hacker News アイテムを 5 分ごとにライブ更新。
これは何ですか?
このデータセットは、Hacker News の完全なアーカイブを収録しています:ストーリー、コメント、Ask HN、Show HN、求人投稿、投票(poll)およびそのオプションまで、サイトに提出されたすべての項目です。
Hacker News は 2007 年から Y Combinator が運営している、最も長く続いてきた技術コミュニティの一つであり、創業者・エンジニア・研究者・テクノロジストが集まり、重要なトピックを共有・議論するデファクトポータルとなっています。
現在のアーカイブは 2006‑10 から 2026‑03‑16 23:55 UTC までで、合計 47 360 671 件 がコミット済みです。新しいアイテムは 5 分ごとに取得され、個別の Parquet ファイルとして自動パイプライン経由でコミットされるため、データセットはサイトと同時に更新されています。
Hugging Face 上で利用可能な最も完全かつ定期的に更新された Hacker News データミラーの一つだと考えています。データは月次 Parquet ファイルとしてアイテム ID 順にソートされて保存されるため、DuckDB で簡単にクエリを実行したり、datasets ライブラリで読み込んだり、Parquet を扱う任意のツールで処理できます。
リリース内容
データセットはカレンダーマンスごとに1つの Parquet ファイル(+本日分の5分ライブファイル)で構成されています。
毎 5 分ごとに新しい項目が取得され、単一の Parquet ブロックとしてコミットされます。UTC の深夜になると、現在の月全体を再取得し、1 つの権威ある Parquet ファイルとして書き出します。その後、本日分の5分ブロックは
today/ ディレクトリから削除されます。
data/ 2006/2006-10.parquet ← HN データが最初に登場した月 2006/2006-12.parquet … 2026/2026-03.parquet ← 最も新しい完全な月 today/ 2026/03/16/00/00.parquet ← 5 分ライブブロック(YYYY/MM/DD/HH/MM.parquet) … 2026/03/16/23/55.parquet ← 最新コミットブロック stats.csv ← 月次統計(1 行/月) stats_today.csv ← 5 分ブロック統計(1 行/ブロック)
stats.csv には、各月のアイテム数、ID 範囲、ファイルサイズ、取得時間、コミット時刻などが記録されているため、完全性とパイプライン進捗を簡単に検証できます。
本日(2026‑03‑16)のブレークダウン
以下は本日の 24 時間にコミットされたアイテム数の時間別チャートです(2026‑03‑18 22:20 UTC 現在更新)。
00:00 ████████████████████░░░░░░░░ 976 01:00 █████████████████████░░░░░░░ 1.0K 02:00 ██████████████████████░░░░░░ 1.1K 03:00 █████████████████░░░░░░░░░ 850 04:00 █████████████████░░░░░░░░░ 845 05:00 ██████████████░░░░░░░░░░░░ 709 06:00 █████████████████░░░░░░░░░ 817 07:00 ██████████████████░░░░░░░░ 893 08:00 █████████████████░░░░░░░░░ 839 09:00 █████████████████████░░░░░░ 1.0K 10:00 █████████████████░░░░░░░░░ 854 11:00 ███████████████████████░░░░ 1.1K 12:00 ██████████████████████████████ 1.4K 13:00 ███████████████████████████░░ 1.3K 14:00 █████████████████████░░░░░░░ 1.0K 15:00 █████████████████████████████░ 1.4K 16:00 ████████████████████████████░░ 1.4K 17:00 ████████████████████████░░░░░░ 1.1K 18:00 ██████████████████████████░░░░ 1.2K 19:00 ██████████████████████░░░░░░░ 1.1K 20:00 ████████████████████░░░░░░░░░ 990 21:00 ██████████████████████░░░░░░░ 1.1K 22:00 █████████████░░░░░░░░░░░░░░░ 654 23:00 █████████░░░░░░░░░░░░░░░░░ 453
年別ブレークダウン
以下は年ごとにコミットされたアイテム数を示すチャートです。
2006 █░░░░░░░░░░░░░░░░░░░░░░ 62 2007 █░░░░░░░░░░░░░░░░░░░░░░ 93.8K 2008 ██░░░░░░░░░░░░░░░░░░░░░░ 320.9K 2009 ███░░░░░░░░░░░░░░░░░░░░░ 608.4K 2010 ██████░░░░░░░░░░░░░░░░░░ 1.0M 2011 ████████░░░░░░░░░░░░░░░░ 1.4M 2012 ██████████░░░░░░░░░░░░░░ 1.6M 2013 █████████████░░░░░░░░░░░ 2.0M 2014 ███████████░░░░░░░░░░░░░ 1.8M 2015 █████████████░░░░░░░░░░░ 2.0M 2016 ████████████████░░░░░░░░░ 2.5M 2017 █████████████████░░░░░░░░░ 2.7M 2018 ██████████████████░░░░░░░░░ 2.8M 2019 ████████████████████░░░░░░░ 3.1M 2020 ████████████████████████░░░░ 3.7M 2021 ███████████████████████████░ 4.2M 2022 █████████████████████████████░ 4.4M 2023 ██████████████████████████████ 4.6M 2024 ████████████████████████░░░░░░ 3.7M 2025 █████████████████████████░░░░░ 3.9M 2026 ██████░░░░░░░░░░░░░░░░░░░░░ 955.4K
データセットのダウンロードと利用方法
DuckDB で直接読み込む
DuckDB は Hugging Face 上の Parquet ファイルを直接読み取れるため、データを先にダウンロードする必要はありません。
-- 全期間でスコアが高い上位20件 SELECT id, title, "by", score, url, time FROM read_parquet('hf://datasets/open-index/hacker-news/data/*/*.parquet') WHERE type = 1 AND title != '' ORDER BY score DESC LIMIT 20;
(
"by" は DuckDB の予約語ですので、ダブルクォートで囲みます。)
datasets
ライブラリ
datasetsfrom datasets import load_dataset # すべての履歴をストリーミング読み込み ds = load_dataset("open-index/hacker-news", split="train", streaming=True) for item in ds: print(item["id"], item["type"], item["title"]) # 特定年(例:2024 年)をメモリにロード ds = load_dataset( "open-index/hacker-news", data_files="data/2024/*.parquet", split="train", ) print(f"{len(ds):,} items in 2024") # 本日分のライブブロック(5 分ごとに更新) ds = load_dataset( "open-index/hacker-news", name="today", split="train", streaming=True, )
huggingface_hub
でダウンロード
huggingface_hubfrom huggingface_hub import snapshot_download # 2024 年データのみ(約1.5 GB) snapshot_download( "open-index/hacker-news", repo_type="dataset", local_dir="./hn/", allow_patterns="data/2024/*", )
高速ダウンロードには
pip install huggingface_hub[hf_transfer] を実行し、環境変数 HF_HUB_ENABLE_HF_TRANSFER=1 を設定してください。
CLI
# 1 ヶ月分をダウンロード huggingface-cli download open-index/hacker-news \ data/2024/2024-01.parquet \ --repo-type dataset --local-dir ./hn/
pandas + DuckDB
import duckdb conn = duckdb.connect() df = conn.sql(""" SELECT percentile_disc(0.50) WITHIN GROUP (ORDER BY score) AS p50, percentile_disc(0.90) WITHIN GROUP (ORDER BY score) AS p90, percentile_disc(0.99) WITHIN GROUP (ORDER BY score) AS p99, percentile_disc(0.999) WITHIN GROUP (ORDER BY score) AS p999 FROM read_parquet('hf://datasets/open-index/hacker-news/data/*/*.parquet') WHERE type = 1 """).df() print(df)
データセット統計
stats.csv から直接月次統計をクエリできます。
SELECT * FROM read_csv_auto('hf://datasets/open-index/hacker-news/stats.csv') ORDER BY year, month;
stats.csv のカラムは以下の通りです。
| カラム | 説明 |
|---|---|
, | カレンダーマンス |
, | ファイルがカバーするアイテム ID 範囲 |
| アイテム数 |
| ソースから取得にかかった秒数 |
| Hugging Face へのコミットにかかった秒数 |
| Parquet ファイルサイズ(バイト) |
| コミット日時(ISO 8601) |
コンテンツの内訳
Hacker News は 5 種類のアイテムタイプがあります。ほとんどがコメントで、次いでストーリー(Ask HN・Show HN・リンク投稿)。求人・投票・投票オプションは少数です。
| タイプ | 件数 | 割合 |
|---|---|---|
| comment | 41 285 211 | 87.2 % |
| story | 6 035 328 | 12.7 % |
| job | 18 067 | 0.0 % |
| poll | 2 240 | 0.0 % |
| pollopt | 15 449 | 0.0 % |
ストーリーのうち 84.8 % が外部 URL をリンクしています。残りは Ask HN の質問・Show HN の発表・自己投稿など、ディスカッション自体がコンテンツです。
平均で 1 ストーリーあたり 23.9 コメント が生成されます。最も議論されたストーリーは 9 275 コメント を集め、議論の深さを示しています。
スコア
Hacker News のスコアは急峻なパワー律に従います。ほとんどのストーリーが数点しか得られませんが、少数は数百・数千の upvote を獲得してフロントページへ上昇します。
| 指標 | 値 |
|---|---|
| 平均スコア | 1.5 |
| 中央値 | 0 |
| 最大スコア | 6 015 |
| スコア 100+ のストーリー | 175 896 |
| スコア 1 000+ のストーリー | 2 169 |
中央値が 0 なのは、多くの投稿が注目を集めずに終わるためです。上位 0.03 %(1 000 点以上)は、技術業界で議論を牽引したコンテンツと考えられます。
最も共有されているドメイン
Hacker News のストーリーからリンクされるドメインは、コミュニティの価値観を物語ります。GitHub が圧倒的に多く、オープンソースと開発への根深い関係が反映されています。主要報道機関(New York Times・Ars Technica など)はジャーナリズムや長文分析への興味を示しています。
| # | ドメイン | ストーリー数 |
|---|---|---|
| 1 | github.com | 197 214 |
| 2 | www.youtube.com | 134 767 |
| 3 | medium.com | 124 527 |
| 4 | www.nytimes.com | 77 635 |
| 5 | en.wikipedia.org | 54 377 |
| 6 | techcrunch.com | 54 180 |
| 7 | twitter.com | 50 501 |
| 8 | arstechnica.com | 47 048 |
| 9 | www.theguardian.com | 44 255 |
| 10 | www.bloomberg.com | 37 775 |
最もアクティブな投稿者
以下は、Hacker News におけるストーリー投稿数が最も多いユーザーです。多くは 10 年以上活動しており、コミュニティへの継続的な貢献を示しています。
| # | ユーザー | ストーリー |
|---|---|---|
| 1 | rbanffy | 36 772 |
| 2 | Tomte | 26 167 |
| 3 | tosh | 24 022 |
| 4 | bookofjoe | 20 562 |
| 5 | mooreds | 20 346 |
| 6 | pseudolus | 19 904 |
| 7 | PaulHoule | 18 951 |
| 8 | todsacerdoti | 18 880 |
| 9 | ingve | 17 048 |
| 10 | thunderbong | 15 962 |
パイプラインの仕組み
- バックフィル:2006‑10 から最新完全月まで、ClickHouse から時間限定 SQL クエリで取得し、DuckDB で ID 順に並べた Parquet(Zstandard レベル22)へ変換。既に
に記録されている月はスキップし、再実行可能です。stats.csv - ライブポーリング:5 分ごとに HN Firebase API を呼び出し、ID 範囲で取得したアイテムを 5 分ブロックにまとめ、
に書き込み即コミット。API を直接使用することでインデックス遅延無しのリアルタイム反映が可能です。today/YYYY/MM/DD/HH/MM.parquet - 日付切替:UTC の深夜に現在月全体を再取得し、権威ある Parquet ファイルへ。個別 5 分ブロックは同一コミットで削除。マージではなく再取得することで、重複や欠損のない完全ファイルを保証します。
すべての Parquet は Zstandard(レベル22)圧縮、ID 順ソートで保存され、フィルタリング・デダプリケーションは行いません。元データそのままです。
個人情報とセンシティブな内容
ユーザー名(
by フィールド)やユーザー生成テキスト(text, title)が公開されている状態で含まれます。追加の PII 処理は行っていません。データは news.ycombinator.com 上で公開されている内容をそのまま反映しています。
削除・死亡済みアイテムも元の状態で保持します。削除された項目は多くのフィールドが空白になりますが、
id と deleted フラグのみ保たれます。
利用上の留意点
社会的インパクト
完全アーカイブを公開することで、オンラインコミュニティのダイナミクスや技術トレンド、テクノロジー議論の進化に関する研究が可能になります。言語モデル学習や情報検索・推薦システムのベンチマークとしても活用できます。
バイアス
Hacker News はソフトウェアエンジニア、スタートアップ創業者、米国中心のテック愛好家が主体です。シリコンバレー関連やプログラミング言語、起業・政治的観点に偏りがあります。モデレータはコミュニティ価値を反映した削除/死亡判定を行うため、客観性ではなくコミュニティの意思が表れます。
制限事項
は整数(TINYINT)で 1=story,2=comment,3=poll,4=pollopt,5=job。DuckDB でストーリーを選択する際はtype
を使用。WHERE type = 1
は予約語なのでby
とダブルクォート。"by"
,deleted
は 0/1 整数。dead- コメントテキストは HTML(実際の HN 保存形式)。タグ除去が必要な場合は自前で処理。
- スコアは取得時点のスナップショットで、最終値ではない。
- ユーザープロファイル情報(karma 等)は含まれません。
- コード断片は HTML エスケープ・
タグ付き。<code>
ライセンス
データセットは Open Data Commons Attribution License (ODC‑By) v1.0 の下で公開されています。元のコンテンツは各著者の権利が適用されます。Hacker News データは Y Combinator から提供されています。このミラーは独立したコミュニティ作業であり、Y Combinator と提携・認定されているわけではありません。
お問い合わせ
質問やフィードバック、問題がある場合は Community タブにディスカッションを投稿してください。
最終更新:2026‑03‑18 22:20 UTC