452製品のリリース日を一括管理!endoflife.date公式データセット「release-data」を使いこなす

タグ release-dataendoflife.dateEOL管理JSONOSSインフラ自動化CI/CDセキュリティcolumnコラムlinuxLinuxwindowsWindowsGitHubオープンソースendoflife-date
🚀 今すぐ試せます! デモスクリプトをダウンロードして、解凍後にターミナルで bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。 (macOS / Linux 環境が必要)

452製品のリリース日を一括管理!endoflife.date公式データセット「release-data」を使いこなす

ひとことでいうと

release-data は、Kubernetes・Django・PostgreSQL・Tomcat など 452製品以上 のリリース日付を JSON 形式でまとめたオープンデータリポジトリです。ソフトウェアのサポート終了日を追跡する有名サービス「endoflife.date」が内部で利用しており、Git タグや PyPI・npm・Maven などのパッケージ配布場所から情報を自動収集しています。各 JSON ファイルは「バージョン番号→リリース日」というシンプルな形式なので、プログラム経験が浅い方でもすぐに読み込んで使い始められます。インフラ管理・セキュリティ調査・CI/CD 自動化など、幅広い用途に活用できるデータセットです。


こんな人におすすめ

  • インフラ担当者・SRE(サービスの安定稼働を担うエンジニア): nginx・Redis・MySQL などのバージョン管理表を手作業で更新している方。JSON ファイルを読み込むだけで最新リリース一覧が手に入り、管理の手間を大きく減らせます。
  • セキュリティエンジニア: 「このバージョンはいつリリースされたのか」を素早く調べたい方。CVE(既知の脆弱性情報)調査や脆弱性スキャンツールとのデータ連携に活用できます。
  • OSS ライブラリを使う開発者: 依存ライブラリのサポート終了タイムラインを把握したい方。CI/CD パイプライン(コードをテスト・デプロイする自動フロー)に組み込んで、古いバージョンを自動検知する仕組みも作れます。

インストール・使い方

ターミナル(文字を打ち込んでパソコンに命令を送る画面)を開き、以下の手順を順番に実行してください。コマンドはそのままコピー&ペーストで構いません。

Step 1: リポジトリをダウンロードする

git clone https://github.com/endoflife-date/release-data.git
cd release-data

git clone はリポジトリ(ソースコードや JSON ファイルの置き場)をまるごとダウンロードするコマンドです。cd release-data でダウンロードしたフォルダの中へ移動します。

Step 2: 必要なライブラリをインストールする

pip install -r requirements.txt

Python(プログラミング言語)用の追加パッケージを一括インストールします。pip は Python のパッケージ管理ツールで、requirements.txt に書かれた必要なものをまとめて用意してくれます。Python 3.12 系での動作が確認されています。

Step 3: 製品の JSON ファイルを読み込む

# Kubernetes のリリース一覧をそのまま表示する例
cat releases/kubernetes.json

# Python で最新5バージョンを取得して表示する例
python3 -c "
import json
with open('releases/kubernetes.json') as f:
    data = json.load(f)
latest = sorted(data.items(), key=lambda x: x[1], reverse=True)[:5]
for ver, date in latest:
    print(f'{ver}: {date}')
"

releases/ フォルダの中に製品ごとの JSON ファイルが入っています。cat コマンドでファイルの中身をそのまま表示するか、Python スクリプトで加工して利用します。製品名がわかれば、ファイル名を変えるだけで別の製品にも応用できます。

Step 4: レポートを生成する

python3 report.py

リポジトリに含まれる report.py を実行すると、全製品の一覧(製品名・自動更新フラグ・取得メソッド)を含むレポートを再生成できます。README に掲載されている製品テーブルもこのスクリプトから作られています。


動かしてみた

実際にファイル構成を確認したところ、releases/ ディレクトリの中に多数の JSON ファイルが整然と並んでいることが確認できました。

./releases/kubernetes.json
./releases/django.json
./releases/postgresql.json
./releases/tomcat.json
./releases/jenkins.json
./releases/duckdb.json
./releases/erlang.json
(他多数)

どのファイルも形式は統一されており、バージョン文字列をキー、日付文字列を値とするシンプルな JSON です。たとえば releases/postgresql.json には PostgreSQL の各マイナーバージョン("16.3" など)ごとにリリース日が記録されています。report.py も問題なくリポジトリ内に存在しており、Python 3.12 環境ですぐに実行できる状態でした。JSON の構造がとてもシンプルなので、エディタで開いて目視確認するだけでも十分に内容を把握できます。


ブラウザで試す

リポジトリには、JSON データをブラウザ上で対話的に閲覧できる Gradio デモも用意されています。製品名をドロップダウンから選ぶだけで、バージョンごとのリリース日一覧がすぐに表示されます。追加のインストールなしにデータ構造の雰囲気をつかめるので、「まず試してから導入を検討したい」という方にもぴったりです。


実践のコツ:スクリプトでデータを活用する

データが JSON というどの言語でも読める汎用フォーマットなので、Python・JavaScript・Go など好みの言語からすぐ利用できます。以下は Python を使った代表的な活用パターンです。

過去2年以内のバージョンだけ絞り込む

import json
from datetime import date, timedelta

with open('releases/nodejs.json') as f:
    data = json.load(f)

cutoff = date.today() - timedelta(days=730)
recent = {v: d for v, d in data.items() if d >= str(cutoff)}
print(f"過去2年でリリースされたバージョン数: {len(recent)}")

2年以上前のリリースを「古いバージョン」として除外したいケースに便利です。timedelta の日数を変えれば期間も自由に調整できます。

複数製品をまとめて最新バージョンを確認する

import json

products = ['kubernetes', 'django', 'postgresql']
for product in products:
    with open(f'releases/{product}.json') as f:
        d = json.load(f)
    latest_ver = max(d, key=lambda v: d[v])
    print(f"{product}: 最新={latest_ver} ({d[latest_ver]})")

管理している製品名をリストに並べるだけで、最新バージョンとリリース日を一覧表示できます。このスクリプトを GitHub Actions などの CI/CD に組み込むと、古いバージョンを使い続けている場合に自動でアラートを出す仕組みを構築できます。


活用例

  • Dependabot 代替の自作通知ツール: releases/*.json を週次で取得し、自社の利用バージョンと照合して Slack へ自動通知するスクリプトを作れます。
  • 脆弱性トリアージの補助: 「このバージョンはいつリリースされたか」を素早く調べ、CVE 報告との前後関係を分析する際の参照データとして使えます。
  • コンプライアンス管理の自動化: 古いミドルウェアのサポート切れを検知し、エンジニアへの更新依頼チケットを自動生成するワークフローに組み込めます。
  • 教育用データセット: セマンティックバージョニング(バージョン番号の命名規則)と日付ベースバージョニングを比較する授業や勉強会の素材として活用できます。
  • エンドオブライフダッシュボードの構築: 複数製品のリリース履歴を可視化し、サポート終了予測グラフを生成する社内ツールを作れます。
  • セキュリティ監査レポートの自動化: 四半期ごとに利用ソフトウェアのリリース日一覧を自動集計し、監査資料として出力する仕組みにも応用できます。

用語とポイント解説

EOL(End of Life) ソフトウェアの公式サポートが終了することを指します。かんたんに言うと「メーカーからのアップデートが届かなくなる状態」です。EOL を迎えたバージョンはセキュリティパッチが提供されないため、そのまま使い続けることはリスクを伴います。どの製品がいつ EOL を迎えるかを把握することが、このデータセット活用の出発点になります。

release-data endoflife.date が管理するリリース日付の生データリポジトリです。かんたんに言うと「API の裏側にあるデータの倉庫」で、エンジニアが直接データを利用したり、独自に加工したりするために公開されています。安定した利用には後述の公式 API の方が推奨されています。

endoflife.date API 本リポジトリのデータをもとに構築された REST API(HTTP でデータをやり取りする仕組み)です。かんたんに言うと「このデータを安定した形式で取り出せる公式の窓口」です。生の JSON ファイルは形式が予告なく変わる可能性があるため、継続的な利用には API の方が安心です。

JSON(ジェイソン) JavaScript Object Notation の略で、データを「キー: 値」の形で表すテキスト形式です。かんたんに言うと「どんなプログラムでも読めるシンプルなメモ書き」です。本リポジトリでは "16.3": "2024-05-09" のような形でバージョン番号と日付が対応しており、人間が目で読んでも理解しやすい構造になっています。

Pre-commit(プリコミット) コード変更をリポジトリに記録(コミット)する前に、自動でリントやフォーマットチェックを走らせる仕組みです。かんたんに言うと「提出前に自動で書き方を見直してくれるチェッカー」です。本リポジトリには .pre-commit-config.yaml が含まれており、改善に貢献(コントリビュート)する際の品質を自動で担保してくれます。

自動取得メソッド 各製品のリリース情報をどこから・どうやって集めるかを定めた収集方法のことです。かんたんに言うと「製品ごとにデータの取り方を使い分けている仕組み」です。git(タグ追跡)・npmpypimavengithub_releases など、ソースの種類に合わせて最適な方法が採用されており、高い精度でリリース日を自動収集できます。

セマンティックバージョニング MAJOR.MINOR.PATCH(例: 1.4.2)という形式でバージョン番号を管理するルールです。かんたんに言うと「番号の桁ごとに変更の大きさが決まっている命名規則」です。本データセットに含まれる多くの製品がこの形式を採用しており、バージョン比較やソートが容易に行えます。

CI/CD(継続的インテグレーション/継続的デリバリー) コードの変更があるたびにテスト・ビルド・デプロイを自動で行う仕組みです。かんたんに言うと「変更を入れるたびに自動で検査してリリースまでやってくれるパイプライン」です。release-data のスクリプトを CI/CD に組み込むと、古いバージョン検知を人手なしで自動化できます。

PyPI / npm / Maven Central それぞれ Python・JavaScript・Java のパッケージが公開されているレジストリ(ソフトウェアの配布場所)です。かんたんに言うと「各言語のアプリストアのようなもの」で、世界中の開発者がここへパッケージを登録・更新しています。release-data はこれらのレジストリからリリース日を自動収集しており、情報の鮮度を保っています。


ぜひ社内ミドルウェアのバージョン管理自動化や、セキュリティ監査レポートの定期自動生成などに活用してみてはいかがでしょうか。