**HTTP レートリミットヘッダーセット**

| ヘッダー | 説明 |
|--------|-------------|
| **X‑RateLimit-Limit** | 現在の期間で許可される最大リクエスト数。 |
| **X‑RateLimit-Remaining** | リミットに達する前に残っているリクエスト数。 |
| **X‑RateLimit-Reset** | レートリミットウィンドウがリセットされる Unix タイムスタンプ(秒単位)。 |

*ヒント:* これらのヘッダーを利用してクライアント側でリクエスト頻度を監視・調整し、レート制限を課す API とスムーズに連携できるようにしましょう。

2026/01/15 1:29

**HTTP レートリミットヘッダーセット** | ヘッダー | 説明 | |--------|-------------| | **X‑RateLimit-Limit** | 現在の期間で許可される最大リクエスト数。 | | **X‑RateLimit-Remaining** | リミットに達する前に残っているリクエスト数。 | | **X‑RateLimit-Reset** | レートリミットウィンドウがリセットされる Unix タイムスタンプ(秒単位)。 | *ヒント:* これらのヘッダーを利用してクライアント側でリクエスト頻度を監視・調整し、レート制限を課す API とスムーズに連携できるようにしましょう。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

改訂版まとめ

本草案は、サーバーがレートリミット規則と実行時状態を公開し、クライアントが「429 Too Many Requests」を回避できるようにするための新しい HTTP ヘッダー ―

RateLimit‑Policy
RateLimit
を提案しています。

  • RateLimit-Policy
    はポリシー設定を列挙します:

    • name
      (ポリシー識別子)
    • pk
      (パーティションキー)― クライアント固有のキーで、クライアントごとの状態にマッピングされます
    • q
      (quota)― ウィンドウ内の最大リクエスト数
    • w
      (window width, 秒単位)
    • qu
      (quota units:
      "requests"
      "content‑bytes"
      、または
      "concurrent‑requests"
      )。
  • RateLimit
    はポリシーブロックごとの実行時状態を報告します:

    • name
      pk
      はポリシーヘッダーと一致します;
    • r
      = 次の期間で使用できる残りクォータ;
    • t
      = その
      r
      リクエストが送信可能な有効ウィンドウ(秒単位)。
      複数のポリシーブロックは単一応答内に現れることがあります。

アルゴリズムは線形 GCRA(Generic Cell Rate Algorithm)リミッターです:各クライアントについて「not‑before」タイムスタンプを保持し、区間

[now-w, now]
にクリップし、リクエストごとに
interval * cost
を追加します。リクエストは
now > time
のみ許可されます。残りクォータ
r
と次ウィンドウ
t
(now – time)
から導出されます。拒否された場合、
r = 0
であり、
t
はクリップが失効するまでの残り時間に設定されます。

改良点には、レートが上限を下回るまでブロックするより厳格な拒否ルール、クリップ上限を延長するオプションのペナルティタイムアウト、およびアイドルクライアント状態の定期的なクリーンアップが含まれます。

線形リミッターはバースト後に有効ウィンドウを縮小してブーストトラフィックを平滑化します。これは、繰り返しバーストを許容するスライディングウィンドウ方式とは対照的です。指数リミッターもこれらのヘッダーで表現できます(計算は線形手法の逆数にすぎません)。草案は、この単純な GCRA アプローチが実装しやすく、効率的なクライアントごとの状態管理を要求する一方で、任意のクォータまたはクライアント行動記述に十分柔軟であると主張しています。

本文

Rate‑Limit ヘッダー草案 – 概要と線形アルゴリズム

IETF の草案では、次の 2 つのヘッダーを定義しています。

Header用途
RateLimit-Policyサーバーが要求に対して選択したレート制限アルゴリズムの入力パラメータを記述します。パラメータは以下です。
name
– ポリシー名
pk
– パーティションキー(クライアントごとの状態を識別)
q
– クォータ(ウィンドウ内の最大単位数)
w
– ウィンドウ(秒単位の時間幅)
qu
– クォータ単位 (
requests
,
content‑bytes
, …)
RateLimitこのリクエストに適用されたポリシーと結果として得られた状態を報告します。フィールドは以下です。
name
– ポリシー名
pk
– パーティションキー
r
– 利用可能なクォータ(残りの単位数)
t
– 有効ウィンドウ(次に許可されるバーストまでの秒数)

両ヘッダーとも複数の名前付きポリシーを列挙できる構造になっています。


クライアント側の振舞い

ポリシーを守るには、クライアントは任意の

w
秒間に
q
回以上リクエストを送らないようにしなければなりません。
RateLimit ヘッダーを受信した際には、次の
t
秒間で
r
以上のリクエストを発行してはならないという指示です(草案では「remaining quota」と「reset time」と呼ばれますが、「現在のクォータ」と「ウィンドウ」の概念として理解する方が適切です)。

最大持続レート

rate   = q / w          // 単位あたり秒数
interval = 1 / rate     = w / q    // リクエスト間の平均インターバル

草案では以下のクォータ単位が標準化されています。

qu
意味コスト
requests
1 回リクエスト1
content‑bytes
コンテンツサイズサイズ(バイト)
concurrent‑requests
本記事では使用しない

パーティションキー (

pk
) はサーバーが保持するクライアントごとの状態を指します。典型的には、サーバーは少数の静的ポリシーと多数の動的クライアント状態を持ちます。


線形レート制限アルゴリズム(GCRA 変種)

これはトークンバケット / リーキーバケット実装を草案用語で表現した単純なモデルです。
クライアントごとの状態は not‑before タイムスタンプ (

time
) のみで構成されます。

コアアルゴリズム

# 現在の状態取得;新規クライアントは過去に設定
time = state[pk] or 0

# スライディングウィンドウ内にタイムを収める(バーストサイズと悪意あるペナルティ防止)
time = clamp(now - w, time, now)

# このリクエスト分の時間を消費
time += interval * cost   # 「requests」なら cost は 1

if now > time:                # 許可されるケース
    state[pk] = time
    d = now - time
    r = floor(d * rate)      # 残りクォータ(整数)
    t = ceil(d)              # 有効ウィンドウ(秒)
    return ALLOW(r, t)

# 許可されないケース – 時間が残っていない
r = 0
t = ceil(time - now)
return DENY(r, t)

clamp(a,b,c)
b
[a, c]
の範囲に収めます。
アルゴリズムは整数の
r
t
を返すため、クライアントには実際のキャパシティよりも保守的な(少し小さい)見積もりが提供されます。

任意の改良

シナリオ修正
クライアントを遅くするまですべて拒否
d
interval * cost
を追加して
t
を算出
早期リクエストに対する追加ペナルティタイムアウト
clamp()
の上限を将来へ伸ばす

バックグラウンドのクリーンアップ

定期的にアイドル状態のクライアントを削除します。

for pk, time in state:
    if time < now - w:
        delete state[pk]

他のレートリミッター

アルゴリズム特徴
Token/Leaky BucketGCRA と同等に実装でき、トークンカウンタを使用
Sliding‑Window Log最近のリクエストタイムスタンプを保持;コストが高く、バースト性が残る
Exponential Backoff平均レートを直接測定し、線形アルゴリズムの逆数(同様の平滑化効果)で
r
/
t
を算出

線形リミッターはクライアントがバーストすると自動的に有効ウィンドウが縮小され、よりスムーズなトラフィックを実現します。他のアルゴリズムでも同様の滑らかさを得ることは可能ですが、通常は実装コストが高くなります。


まとめ

草案で定義された RateLimit ヘッダーは 任意 のレート制限アルゴリズムと併用できます。
簡易的な GCRA スタイルの線形リミッターは実装が容易、空間効率も高く、クライアントに必要なガイダンス(

r
,
t
)を提供しつつ周期的なバースト–ポーズ振舞いを強制することなく運用できます。

同じ日のほかのニュース

一覧に戻る →

2026/01/17 2:16

東ドイツのバルーン脱走(「East Germany Balloon Escape」)

## Japanese Translation: (すべての重要ポイントを含む)** この物語は、1979年9月16日に東ドイツから西ドイツへと2家族が自作熱気球で大胆に脱出したことを記述しています。目的地は西ドイツ近郊のナイラで、計画には18か月以上の準備が必要でした:3つの熱気球、800 m² のタフタ素材、2本のプロパンタンク、ブロワー、および家庭用ガスボトルから作ったバーナー。7月3日の以前の試行では、熱気球は国境から180 m 先に着陸し失敗しましたが、その朝、当局は放置された装備を発見しました。 9 月の飛行は28分間続き、高度2,500 m に達し、西ドイツへと横断。最終的に1 人だけ怪我(ウェッツェルの足首骨折)で着陸しました。この脱出直後、東ドイツは国境警備を強化しました:小型空港が閉鎖され、プロパンや布地の購入も厳しく管理されました。 飛行後、ストレリク兄弟はポツダムで逮捕され、ストレリクと彼女の妹マリア、そしてその夫は2年半の刑を受けましたが、アモニティ・インターナショナルの圧力により後に釈放されました。家族はナイラに定住し(ウェッツェルは自動車整備士、ストレリクはテレビ修理店を経営)、1985 年にスタジが脅迫したためスイスへ移住しました。1990 年のドイツ統一後、再びポエスネックに戻りました。 この物語はディズニー映画「ナイト・クロッシング」(1982)やマイケル・ヘルビグの「バルーン」(2018)、BBC Outlook および PBS Nova のドキュメンタリーにもインスピレーションを与えました。2017 年には、レゲンブルクにあるハウズ・デア・バイエリッヒェン・ギセヒト博物館で熱気球が常設展示され、同年ピーター・ストレリクは長い病気の後に74 歳で亡くなりました。 この改訂された概要は、リストからすべての主要ポイントを取り入れつつ、明確かつ曖昧さのない表現を保っています。

2026/01/16 23:25

**Cloudflare が Astro を買収** Cloudflare は、Astro の買収を発表し、エッジコンピューティング機能を拡充するとともに、ウェブパフォーマンス市場での地位を強化しました。今回の取引は、Astro の技術を Cloudflare のサービス群へ統合することが見込まれ、顧客にはモダンな Web アプリケーション向けに高速・セキュリティ・信頼性が向上したソリューションが提供されます。

## Japanese Translation: Cloudflare は公式に Astro のフルタイムチームを吸収し、同社は全リソースをオープンソースの Astro フレームワークの開発と保守に注力できるようになりました。これにより Cloudflare のグローバルインフラストラクチャを活用しつつ、Astro はウェブ体験の中心にコンテンツを置くというビジョンを共有する長年のスポンサーシップに続くパートナーシップが実現します。 Astro は MIT ライセンスであり、オープンガバナンスモデルに従い、任意のプラットフォーム上で無料で利用できます。採用率は毎年倍増しており、ほぼ 100 万件の週次ダウンロードが Webflow、Wix、Microsoft、Google などのサイトを支えています。ホストされたプリミティブ、Astro DB、または e‑commerce レイヤーによる収益化試みは成功せず、コアフレームワークから注意が逸れました。 Astro 6 beta は既に公開されており、チームは正式リリースを計画し、その後 2026 年のロードマップでコンテンツ主導型ウェブ構築、パフォーマンス、スケーラビリティ、信頼性、および開発者体験(特に AI コーディングツールが登場する中)を強調します。この協力関係により Astro は有料エコシステムモデル(ホスティングや CMS)を追求することを止め、コンテンツ中心のウェブサイト向けフレームワークの改善に専念できます。 結果として、さらに高速で信頼性の高いオープンソース ソリューションが実現し、ベンダー非依存のままで開発者と企業はベンダーロックインなしで高性能サイトを構築できるようになり、ウェブエコシステム全体にわたってパフォーマンス、スケール、信頼性、および開発者体験が向上します。

2026/01/17 7:15

## Install.md LLM実行可能ファイルのインストール規格。

## Japanese Translation: **install.md** は、AI アシスタントがソフトウェアインストール手順を自動的に読み取り実行できる軽量 Markdown フォーマットであり、手動設定を排除します。 ファイルはプロジェクトルートまたは `/docs` ディレクトリに配置されるべきです。Mintlify は `https://<your-docs-url>/install.md` で自動生成しますが、開発者は必要に応じて上書きや無効化を行うことができます。 典型的な install.md はヘッダー(製品名)、説明ブロッククオート、アクションプロンプト(「[Product] をインストールしてほしい」)、**OBJECTIVE**、**DONE WHEN** の基準、TODO チェックリスト、詳細ステップセクション(コードブロック付き)および **EXECUTE NOW** コール・トゥ・アクションを含みます。 このフォーマットは言語非依存であり、バイナリ、パッケージ、スクリプトのいずれもサポートします。ステップ内の条件付きロジックにより、npm/pnpm、macOS/Linux、Arch Linux などの環境に適応できます。 Mintlify のツールは既存ドキュメントからインストール知識を自動検出し、エージェント向けの install.md を合成・ホストします。開発者はメインドキュメントを煩雑にせずにエッジケース処理を組み込むことが可能です。 ユーザーは `curl -fsSL https://www.example.com/docs/install.md | claude` のような簡単なコマンドでファイルを取得し、任意の LLM に貼り付けるか、オートノーマルエージェントへ直接パイプして実行し、ステップごとの承認を選択できます。 仕様はオープンソース(spec: installmd.org, GitHub: github.com/mintlify/install-md)であり、カスタマイズ可能です。開発者はバージョン固有ファイルのホスティングや検出ロジックの追加を行えます。 セキュリティ上の配慮として、ファイルは人間が読める形式で、ステップごとの承認を許可し、自然言語で結果を明示するため、`curl | bash` スクリプトに比べて隠れた悪意ある動作を減らします。 多くの設定オプションを必要とする高度な統合の場合は専用ウィザードがまだ優先されることがありますが、それ以外では install.md がほぼすべてのメリットを提供し、エンジニアリング労力を削減します。 任意で、`llms.txt` ファイルを install.md と併用してインストール中に追加情報やトラブルシューティング情報を提供できます。

**HTTP レートリミットヘッダーセット** | ヘッダー | 説明 | |--------|-------------| | **X‑RateLimit-Limit** | 現在の期間で許可される最大リクエスト数。 | | **X‑RateLimit-Remaining** | リミットに達する前に残っているリクエスト数。 | | **X‑RateLimit-Reset** | レートリミットウィンドウがリセットされる Unix タイムスタンプ(秒単位)。 | *ヒント:* これらのヘッダーを利用してクライアント側でリクエスト頻度を監視・調整し、レート制限を課す API とスムーズに連携できるようにしましょう。 | そっか~ニュース