<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Notes - 64p.org</title>
<link>https://64p.org/notes/</link>
<atom:link href="https://64p.org/notes/rss.xml" rel="self" type="application/rss+xml" />
<description>ちょっと調べたことや検証結果を、AIの力も借りながらメモしていくコーナーです。</description>
<language>ja</language>
<lastBuildDate>Sat, 15 Aug 2026 08:50:10 +0900</lastBuildDate>
<item>
<title>NNUE</title>
<link>https://64p.org/notes/nnue.html</link>
<guid isPermaLink="true">https://64p.org/notes/nnue.html</guid>
<pubDate>Sat, 15 Aug 2026 17:49:00 +0900</pubDate>
<description><![CDATA[<h1>NNUE</h1>

<p>NNUE(Efficiently Updatable Neural Network)は、盤面評価に浅い層のニューラルネットワークを用いる評価関数アーキテクチャ。2018年に那須(tanuki-チーム)が考案し、将棋エンジン「やねうら王」で最初に採用された。その後チェスにも移植され、Stockfishが2020年に採用したことで西洋チェス界にも広まった。</p>

<h2>基本原理</h2>

<p>NNUEは「入力特徴量の非ゼロ要素が少ないこと」と「1手進むごとに入力の変化が小さいこと」という2つの性質を前提に設計されている。アルファベータ探索中は1手ごとに評価関数を何百万回も呼び出す必要があるが、NNUEは差分更新(incremental update)によって、盤面全体のニューラルネットワークを毎回フルで計算し直すのではなく、直前の評価からの変化分だけを反映してAccumulator(入力層直後の中間表現)を更新する。これにより、疎な全結合層を持つネットワークでも高速に評価値を算出できる。</p>

<h2>アーキテクチャの典型例</h2>

<p>入力層は玉の位置と各駒の位置の組み合わせ(King-Piece)などを特徴量としたスパースなベクトル(チェスでは768次元程度)で、Feature Transformer(FT)層と呼ばれる隠れ層(数千ユニット程度)に変換され、さらにいくつかの隠れ層を経て最終的に1つのスカラー値(評価値)を出力する。</p>

<h2>差分更新の限界とFinny Tables</h2>

<p>差分更新は「駒が動く」ケースには強いが、玉の位置自体が入力特徴に含まれる(King-Piece方式の)場合、玉が移動すると入力特徴が全て変わってしまい差分更新できず、盤面全体を再計算する「full refresh」が必要になる。このコストを削減する最適化が<a href="https://64p.org/notes/finny-tables.html">Finny Tables</a>。</p>

<h2>出典</h2>

<ul>
<li><a href="https://en.wikipedia.org/wiki/Efficiently_updatable_neural_network">Efficiently updatable neural network - Wikipedia</a></li>
<li><a href="https://www.chessprogramming.org/NNUE">NNUE - Chess Programming Wiki</a></li>
<li><a href="https://stockfishchess.org/blog/2020/introducing-nnue-evaluation/">Introducing NNUE Evaluation - Stockfish</a></li>
<li><a href="https://ja.wikipedia.org/wiki/%E3%82%84%E3%81%AD%E3%81%86%E3%82%89%E7%8E%8B">やねうら王 - Wikipedia</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/nnue.html">#nnue</a> <a class="note-tag" href="https://64p.org/notes/tags/shogi.html">#shogi</a> <a class="note-tag" href="https://64p.org/notes/tags/chess.html">#chess</a> <a class="note-tag" href="https://64p.org/notes/tags/neural-network.html">#neural-network</a></p>
]]></description>
</item>
<item>
<title>Finny Tables</title>
<link>https://64p.org/notes/finny-tables.html</link>
<guid isPermaLink="true">https://64p.org/notes/finny-tables.html</guid>
<pubDate>Sat, 15 Aug 2026 17:49:00 +0900</pubDate>
<description><![CDATA[<h1>Finny Tables</h1>

<p>チェス・将棋AIの評価関数<a href="https://64p.org/notes/nnue.html">NNUE</a>において、玉(キング)が移動した際のアキュムレータ(Accumulator)更新を高速化する最適化技術。「Accumulator Cache」とも呼ばれる。チェスエンジンKoivistoの開発者Finn Eggersが考案したことに由来する通称。</p>

<h2>解決する問題</h2>

<p>NNUEはFeature Transformer(FT)層への入力特徴量として、玉の位置と各駒の組み合わせ(King-Piece, KP)を使うことが多い。この設計(king bucketed inputs)では、駒が動いた場合は差分更新(incremental update)でFT層の出力を軽量に更新できるが、玉自体が移動して別のking bucketをまたぐと、入力特徴が全て変わってしまうため、アキュムレータ全体を再計算する「full refresh」が必要になる。この処理は通常の差分更新よりもはるかにコストが高い。</p>

<h2>仕組み</h2>

<p>Finny Tablesは、玉の位置(チェスなら64マス、将棋なら81マス)ごとに、過去に計算したアキュムレータとその時点の盤面のビットボードをキャッシュとして保持しておく。玉が別のking bucketへ移動してfull refreshが必要になった場面では、以下の手順で更新する。</p>

<ol>
<li>移動先の玉位置に対応するキャッシュ済みアキュムレータとビットボードを取得する</li>
<li>キャッシュ時点のビットボードと現在の盤面のビットボードとの差分(駒の増減)を計算する</li>
<li>その差分だけをキャッシュ済みアキュムレータに適用して更新する</li>
<li>更新後のアキュムレータと現在のビットボードで、そのking bucketのキャッシュエントリを上書きする</li>
</ol>


<p>これにより、駒の全特徴量を再計算するfull refreshを避け、差分計算だけで済ませられる。</p>

<h2>やねうら王への実装</h2>

<p>将棋エンジン「やねうら王」に実装された際の計測では、推論部で30〜50%の高速化、探索速度(NPS)で約15%の向上が報告されている。玉移動コストが下がったことで、FT層のユニット数を増やすなど評価精度を上げる方向の設計変更にも余地が生まれ、既存の「最適」とされてきたアーキテクチャの見直しが将棋AI開発コミュニティで進んでいる。</p>

<h2>出典</h2>

<ul>
<li><a href="https://yaneuraou.yaneu.com/2026/08/11/finny-tables-implemented-in-yaneuraou/">Finny Tablesをやねうら王に実装した - やねうら王</a></li>
<li><a href="https://www.chessprogramming.org/NNUE">NNUE - Chess Programming Wiki</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/nnue.html">#nnue</a> <a class="note-tag" href="https://64p.org/notes/tags/shogi.html">#shogi</a> <a class="note-tag" href="https://64p.org/notes/tags/chess.html">#chess</a> <a class="note-tag" href="https://64p.org/notes/tags/search-algorithm.html">#search-algorithm</a></p>
]]></description>
</item>
<item>
<title>Raptor</title>
<link>https://64p.org/notes/raptor.html</link>
<guid isPermaLink="true">https://64p.org/notes/raptor.html</guid>
<pubDate>Sat, 15 Aug 2026 17:41:00 +0900</pubDate>
<description><![CDATA[<h1>Raptor</h1>

<p><a href="https://64p.org/notes/raku-rakudo-perl6.html">Raku</a>の構文のうちPerl5に近い部分をサブセットとして採用した言語処理系。Go言語で実装されている。GitHubユーザー<code>xyzzyapps</code>による個人プロジェクトで、Reddit r/rakulangへの投稿"Announcing Raptor: a Perl5 subset of Raku"をきっかけに知った。</p>

<h2>概要</h2>

<ul>
<li>リポジトリ: <a href="https://github.com/xyzzyapps/raptor">xyzzyapps/raptor</a>（ホームページ: <a href="https://xyzzyapps.github.io/raptor/">xyzzyapps.github.io/raptor</a>）</li>
<li>実装言語: Go</li>
<li>ライセンス: Artistic License 2.0</li>
<li>リポジトリ作成日: 2026-08-13</li>
</ul>


<h2>コンセプト</h2>

<p>READMEでは「Post-LLM パラダイム」向けに設計した言語ランタイムと位置づけている。LLMのコンテキストウィンドウ効率を意識し、トークン密度が高く簡潔な構文を志向している。</p>

<p>採用しているPerl5由来の構文要素:</p>

<ul>
<li><code>$</code>/<code>@</code>/<code>%</code>のシジル記法</li>
<li>動的型付け、<code>Nil</code></li>
<li>組み込み演算子</li>
<li>postfix if/forなどのステートメント修飾子</li>
<li>リファレンス/デリファレンス、label/goto</li>
</ul>


<p>一方、Rakuの<code>class</code>/<code>has</code>/<code>is</code>によるオブジェクト指向のボイラープレートは採用していない。</p>

<p>Design by Contract志向の機能も持つ。</p>

<pre><code>subset Positive where { $_ &gt; 0 };
my Positive $balance = 100;  # OK
# $balance = -10;            # エラー
</code></pre>

<ul>
<li><code>subset ... where { ... }</code>による述語型</li>
<li><code>PRE</code>/<code>POST</code>/<code>INVARIANT</code>キーワード</li>
<li>変数代入のたびに動的述語を評価する継続的不変量チェック</li>
<li>QuickCheck的なプロパティベース型ファジング</li>
<li>UFCS（統一関数呼び出し構文）</li>
<li>C互換構造体メモリ</li>
</ul>


<p>リポジトリには、実行系（<code>raptor/</code>ディレクトリ）とは別に<code>moarvm-go/</code>ディレクトリがあり、<a href="https://64p.org/notes/raku-rakudo-perl6.html">MoarVM</a>（バイトコードエミッタ、メタモデル、Raku文法エンジンなど）のGoによるホスト実装が含まれている。<code>raptor/</code>側にはCharmbraceletベースのTUIエンジン、TAP v13テストプロデューサー、WebAssembly対応、Gitベースパッケージマネージャなども同梱されている。</p>

<p>参考文献としてRobert Bruce Findlerの契約プログラミング論文、Liquid Types論文などがREADMEに挙げられている。</p>

<h2>出典</h2>

<ul>
<li><a href="https://github.com/xyzzyapps/raptor">xyzzyapps/raptor - GitHub</a></li>
<li>Reddit r/rakulang &ldquo;Announcing Raptor: a Perl5 subset of Raku"（投稿本文・コメントは未確認）</li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/raku.html">#raku</a> <a class="note-tag" href="https://64p.org/notes/tags/perl.html">#perl</a> <a class="note-tag" href="https://64p.org/notes/tags/golang.html">#golang</a> <a class="note-tag" href="https://64p.org/notes/tags/compiler.html">#compiler</a></p>
]]></description>
</item>
<item>
<title>SOC 2</title>
<link>https://64p.org/notes/soc2.html</link>
<guid isPermaLink="true">https://64p.org/notes/soc2.html</guid>
<pubDate>Sat, 15 Aug 2026 17:39:00 +0900</pubDate>
<description><![CDATA[<h1>SOC 2</h1>

<p>SOC(System and Organization Controls)は米国公認会計士協会(AICPA)が定めた監査フレームワーク。SOC 2はその中でも、クラウドサービス・SaaSなど顧客データを扱うサービス組織の内部統制を評価する報告書で、AICPAが策定した<strong>Trust Services Criteria(信頼性サービス基準、TSC)</strong>という評価基準に基づいて監査が行われる。</p>

<h2>Trust Services Criteria(5つの評価カテゴリ)</h2>

<ul>
<li><strong>Security(セキュリティ)</strong> — 不正アクセスからの保護。SOC 2監査で唯一必須のカテゴリ</li>
<li><strong>Availability(可用性)</strong> — 契約通りにシステムが利用可能であること</li>
<li><strong>Processing Integrity(処理の完全性)</strong> — 処理が完全・正確・適時であること</li>
<li><strong>Confidentiality(機密性)</strong> — 機密情報が保護されていること</li>
<li><strong>Privacy(プライバシー)</strong> — 個人情報が適切に収集・利用・保持されていること</li>
</ul>


<p>Securityのみ必須で、残り4つは事業内容や顧客との契約に応じて対象に含めるかどうかを選択する。</p>

<h2>Type 1とType 2の違い</h2>

<ul>
<li><strong>Type 1</strong> — ある一時点でのコントロールの「設計」を評価する。監査期間の目安は3〜6ヶ月</li>
<li><strong>Type 2</strong> — 3〜12ヶ月間の観察期間における「運用の実効性」を評価する。初回の監査期間の目安は6〜15ヶ月</li>
</ul>


<p>Type 2の方がより厳密で、エンタープライズ顧客や規制業界から好まれる。</p>

<h2>SOC 1・SOC 2・SOC 3の違い</h2>

<ul>
<li><strong>SOC 1</strong> — 財務報告に影響する内部統制を対象(会計目的)</li>
<li><strong>SOC 2</strong> — データ保護に関する運用リスク管理を対象。詳細で機密性の高い内容のため、NDAを結んだ顧客・見込み客にのみ開示するのが通例</li>
<li><strong>SOC 3</strong> — SOC 2と同じ監査に基づくが、技術的詳細を省いた一般公開向けの簡易版。必ずType 2ベースで発行され、Webサイト等で公開できる</li>
</ul>


<p>数字は難易度の序列を表すものではなく、SOC 1を取ってからSOC 2に進む必要もない。</p>

<h2>関連ノート</h2>

<p>SOC 2は具体的な実装手段(プルリクエストレビューの要否など)を規定しているわけではなく、リスクに対するコントロールが機能していることを求める枠組みである、という論点については<a href="https://64p.org/notes/soc2-without-pull-requests.html">SOC 2準拠にプルリクエストは必須ではない</a>を参照。</p>

<h2>出典</h2>

<ul>
<li><a href="https://www.cbh.com/insights/articles/soc-2-trust-services-criteria-guide/">SOC 2 Trust Services Criteria (TSC): A Guide | Cherry Bekaert</a></li>
<li><a href="https://secureframe.com/hub/soc-2/trust-services-criteria">2025 Trust Services Criteria for SOC 2 | Secureframe</a></li>
<li><a href="https://www.schellman.com/blog/soc-examinations/soc-2-trust-services-criteria-with-tsc">SOC 2 Trust Services Criteria (TSC) Explained | Schellman</a></li>
<li><a href="https://drata.com/learn/soc-2/type-1-vs-type-2">SOC 2 Type 1 vs. Type 2: Timeline, Cost, and Key Differences | Drata</a></li>
<li><a href="https://secureframe.com/hub/soc-2/soc-1-vs-soc-2-vs-soc-3">SOC 1 vs SOC 2 vs SOC 3: What&rsquo;s the Difference? | Secureframe</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/soc2.html">#soc2</a> <a class="note-tag" href="https://64p.org/notes/tags/compliance.html">#compliance</a> <a class="note-tag" href="https://64p.org/notes/tags/security.html">#security</a></p>
]]></description>
</item>
<item>
<title>SOC 2準拠にプルリクエストは必須ではない</title>
<link>https://64p.org/notes/soc2-without-pull-requests.html</link>
<guid isPermaLink="true">https://64p.org/notes/soc2-without-pull-requests.html</guid>
<pubDate>Sat, 15 Aug 2026 17:28:00 +0900</pubDate>
<description><![CDATA[<h1>SOC 2準拠にプルリクエストは必須ではない</h1>

<p>AIコーディングツールAmp(Sourcegraph製)のチームブログ記事「<a href="https://ampcode.com/notes/thats-not-soc-2-compliant">That&rsquo;s not SOC 2 compliant</a>」(著者: Will Dollman)の要旨。Ampチームはプルリクエストを使わずメインブランチへ直接pushする開発フローを採用しているが、それでも<a href="https://64p.org/notes/soc2.html">SOC 2</a>準拠を達成しているという内容。</p>

<h2>主張の骨子</h2>

<p>SOC 2はプルリクエストというプロセスそのものを要求していない。求められているのは、変更に伴うリスクが「考慮され、コントロールされていること」であり、具体的な実装手段(PRレビューを必須にするかどうか)は問われない。監査人が確認するのは、リスクに対して何らかのコントロールが機能しているかどうかという実質面。</p>

<h2>PRの代わりに導入している4つのコントロール</h2>

<ol>
<li><strong>Restricted push access</strong> — ビジネス上の役割に基づいてmainへのpush権限を制限する</li>
<li><strong>Signed commits</strong> — GitHub上で検証済み署名を必須化し、コミット作成者を検証可能にする</li>
<li><strong>Automated CI</strong> — テスト・インフラ・セキュリティチェックを含む検証パイプラインを全pushに対して実行する</li>
<li><strong>監査証跡</strong> — 各コミットを"Amp threads"(Ampとのやり取りの記録)にリンクし、変更の経緯を追跡可能にする</li>
</ol>


<h2>スケーラビリティについての著者の立場</h2>

<p>Ampチームは現在20名規模(大半がエンジニア)で、この規模とチーム内の信頼関係があってこそ成立している面がある。著者自身も「2,000人規模の会社が全員にmainへのpush権限を与えるべきか」には否定的な立場を示している。結論として、組織やチーム全体を一律に変える必要はなく、システムごとに「PRが実際に管理しているリスクは何か」を問い直し、別のコントロールで代替できないか検討すべき、というのが記事の主張。</p>

<h2>出典</h2>

<ul>
<li><a href="https://ampcode.com/notes/thats-not-soc-2-compliant">That&rsquo;s not SOC 2 compliant - Amp</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/soc2.html">#soc2</a> <a class="note-tag" href="https://64p.org/notes/tags/ci-cd.html">#ci-cd</a> <a class="note-tag" href="https://64p.org/notes/tags/devops.html">#devops</a></p>
]]></description>
</item>
<item>
<title>FedCM (Federated Credential Management API)</title>
<link>https://64p.org/notes/fedcm.html</link>
<guid isPermaLink="true">https://64p.org/notes/fedcm.html</guid>
<pubDate>Sat, 15 Aug 2026 17:14:00 +0900</pubDate>
<description><![CDATA[<h1>FedCM (Federated Credential Management API)</h1>

<p>サードパーティCookieやリダイレクトに頼らず、ブラウザが仲介する形でフェデレーション認証（「Googleでサインイン」のような外部IdPによるログイン）を実現するWeb標準API。Chrome/EdgeなどのPrivacy Sandbox関連APIの一つとして開発され、W3C FedID Community Groupで標準化が進んでいる。 <a class="note-tag" href="https://64p.org/notes/tags/protocol.html">#protocol</a> <a class="note-tag" href="https://64p.org/notes/tags/security.html">#security</a> <a class="note-tag" href="https://64p.org/notes/tags/browser.html">#browser</a></p>

<h2>背景</h2>

<p>従来のフェデレーション認証（OAuth/OIDCベースの「〇〇でサインイン」ボタン）は、IdP（Identity Provider、認証情報を持つ側。例: Google）とRP（Relying Party、ログインを受け付けるサイト）間の連携にiframeやポップアップ、リダイレクト、サードパーティCookieを使っていた。ブラウザがサードパーティCookieを制限・廃止する流れの中で、これらの仕組みは動作しなくなる。FedCMはCookieに依存しない代替手段として設計された。</p>

<h2>仕組み</h2>

<p>RP側は<code>navigator.credentials.get()</code>にIdPの<code>configURL</code>と<code>clientId</code>を渡して呼び出す。IdP側は3層構造でエンドポイントを用意する。</p>

<ul>
<li><strong><code>.well-known/web-identity</code></strong> — IdPのルートドメインに置くメタデータファイル</li>
<li><strong>Config file</strong> — <code>accounts_endpoint</code>・<code>client_metadata_endpoint</code>・<code>id_assertion_endpoint</code>・<code>login_url</code>などを列挙するJSON</li>
<li><strong>Accounts endpoint</strong> — ログイン中ユーザーのアカウント一覧（id・email・name等）を返す</li>
<li><strong>ID assertion endpoint</strong> — ユーザーがアカウントを選択した後、RP向けのトークンを発行する</li>
</ul>


<p>ユーザーへのアカウント選択UIはブラウザが標準ダイアログとして描画し、IdP・RPどちらのページにも埋め込まれない。IdP側はログイン状態を<code>navigator.login.setStatus()</code>やHTTPの<code>Set-Login</code>ヘッダーで管理する。</p>

<h2>プロトコル非依存</h2>

<p>FedCM自体は認証プロトコルそのものではなく、既存のOAuth/OpenID Connectサーバーの上に被せる「ブラウザ仲介レイヤー」という位置づけ。IdP側がFedCM用エンドポイントを実装し、発行したコードを既存のアクセストークン取得フローに渡すといった統合が可能。</p>

<h2>採用状況</h2>

<p>Googleは2024年10月にGoogle Identity ServicesのFedCM移行を完了し、2025年8月からOne Tap・サインインボタンでのFedCM利用を必須化した。LinkedIn・Reddit・Notionなど「Googleでサインイン」を使う多数のサイトが、Chrome上では実質的にFedCM経由で動作している。ブラウザ対応はChrome/Edgeが先行し、Firefox・Safariは限定的または実装予定の段階。</p>

<h2><a href="https://64p.org/notes/email-verification-protocol.html">Email Verification Protocol</a>との関係</h2>

<p>どちらも「ブラウザが第三者（IdP／メールプロバイダ）とRPの間を仲介し、Cookieや手動のやり取りなしにユーザーの身元・所有権を証明する」という設計思想を共有する。EVPはメールアドレス所有権の検証に特化した仕組みで、FedCMはより一般的なフェデレーション認証（アカウントそのものでのログイン）を扱う点が異なる。</p>

<h2>出典</h2>

<ul>
<li><a href="https://privacysandbox.google.com/blog/fedcm-shipping">Federated Credential Management API is shipping - Privacy Sandbox</a></li>
<li><a href="https://developer.chrome.com/docs/identity/fedcm/overview">FedCM: A privacy-preserving identity federation API - Chrome for Developers</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/FedCM_API">Federated Credential Management (FedCM) API - MDN</a></li>
<li><a href="https://w3.org/TR/fedcm">Federated Credential Management API - W3C</a></li>
</ul>

]]></description>
</item>
<item>
<title>Email Verification Protocol (EVP)</title>
<link>https://64p.org/notes/email-verification-protocol.html</link>
<guid isPermaLink="true">https://64p.org/notes/email-verification-protocol.html</guid>
<pubDate>Sat, 15 Aug 2026 17:12:00 +0900</pubDate>
<description><![CDATA[<h1>Email Verification Protocol (EVP)</h1>

<p>ブラウザが仲介してメールアドレスの所有権を暗号学的に検証する、確認メールを送らずに完了するメール確認のプロトコル。著者はDick Hardt（Hellō）とSam Goto（Google）。IETF Internet-Draft（<code>draft-hardt-email-verification</code>、2026年7月4日提出、個人提案でIETF標準としての正式な地位はまだない）として仕様化され、W3C WICGでもExplainerが公開されている。ChromeとMicrosoft EdgeでOrigin Trialが実施中で、参加メールプロバイダとしてGmailが明記されている。 <a class="note-tag" href="https://64p.org/notes/tags/protocol.html">#protocol</a> <a class="note-tag" href="https://64p.org/notes/tags/security.html">#security</a> <a class="note-tag" href="https://64p.org/notes/tags/browser.html">#browser</a></p>

<h2>解決しようとしている課題</h2>

<p>従来の確認メール送信・OTP入力方式は「ユーザーが受信トレイを開いてコードやリンクを取得する」というアウトオブバンドな手順が必要で、次の2つの問題があった。</p>

<ul>
<li>ユーザーがサイトを離脱することによるコンバージョン率低下</li>
<li>悪意あるサイトによるOTP詐取（フィッシング）への脆弱性</li>
</ul>


<h2>仕組み</h2>

<ol>
<li>ユーザーがフォームでメールアドレスを選択する（オートフィル的な体験）</li>
<li>ブラウザがメールプロバイダ（issuer）と直接通信し、<strong>Email Verification Token (EVT)</strong> というJWTを取得する。EVTには検証済みメールアドレスとブラウザの公開鍵が入るが、どのサイト（RP: Relying Party）向けかは含まれない</li>
<li>ブラウザ側で<strong>Key Binding JWT (KB-JWT)</strong>を作り、EVTと結合してRPに提示する（RPのオリジン・nonce等を含む）</li>
<li>RPはサーバー側でトークンの署名やDNS由来の発行者情報を検証する</li>
</ol>


<p>メールプロバイダは<code>.well-known/email-verification</code>エンドポイントを用意し、トークン発行エンドポイントや署名アルゴリズム（デフォルトEd25519）などのメタデータを公開する。</p>

<h2>プライバシー設計</h2>

<p>三者モデルの肝は「発行者（メールプロバイダ）がRPの正体を知らない」点。Well-known/Accountsの取得時やトークン発行リクエスト時にRefererやOriginヘッダを意図的に省略する設計になっており、メールプロバイダ側は「ユーザーが今どこかで認証中」だとは分かっても「どのサイトか」は分からないようになっている。RPごとに異なるプライベートなメールアドレスを使い、サイト間相関を防ぐ仕組みも想定されている。</p>

<h2>想定用途</h2>

<p>アカウント新規作成時のメール確認、パスワードレスサインイン、アカウント復旧フローなど。</p>

<h2><a href="https://64p.org/notes/fedcm.html">FedCM</a>との関係</h2>

<p>同じくブラウザが第三者とRPの間を仲介し、Cookieに頼らず身元・所有権を証明するという設計思想を共有する。FedCMは外部IdPのアカウントによるログイン全般を扱うのに対し、EVPはメールアドレス所有権の検証に特化している。</p>

<h2>出典</h2>

<ul>
<li><a href="https://www.ietf.org/archive/id/draft-hardt-email-verification-00.html">Email Verification Protocol - IETF Internet-Draft</a></li>
<li><a href="https://datatracker.ietf.org/doc/draft-hardt-email-verification/">draft-hardt-email-verification-01 - Datatracker</a></li>
<li><a href="https://wicg.github.io/email-verification/">Email Verification API - WICG Explainer</a></li>
<li><a href="https://developer.chrome.com/blog/email-verification-protocol-origin-trial">Test the Email Verification Protocol with an origin trial - Chrome for Developers</a></li>
</ul>

]]></description>
</item>
<item>
<title>UPKI電子証明書発行サービス</title>
<link>https://64p.org/notes/upki-certs-nii.html</link>
<guid isPermaLink="true">https://64p.org/notes/upki-certs-nii.html</guid>
<pubDate>Sat, 15 Aug 2026 16:51:00 +0900</pubDate>
<description><![CDATA[<h1>UPKI電子証明書発行サービス</h1>

<p><a href="https://www.nii.ac.jp/">国立情報学研究所</a>（NII）が運営する、大学・短大等の学術機関向け電子証明書発行サービス（<a href="https://certs.nii.ac.jp/">certs.nii.ac.jp</a>）。参加は学術機関に限定され、一般企業が代理で申請・利用することはできない。 <a class="note-tag" href="https://64p.org/notes/tags/security.html">#security</a> <a class="note-tag" href="https://64p.org/notes/tags/pki.html">#pki</a></p>

<h2>前身と沿革</h2>

<p>2009年4月開始の「UPKIオープンドメイン証明書自動発行・検証プロジェクト」が前身。2015年1月から有料の事業サービスとして現在の形になった。</p>

<h2>提供している証明書</h2>

<ul>
<li><strong>TLSサーバ証明書</strong> — 最大有効期間198日</li>
<li><strong>クライアント証明書</strong> — 個人だけでなく、役職や部署単位でも発行可能</li>
<li><strong>タイムスタンプサービス用証明書</strong></li>
<li><strong>コード署名用証明書</strong> — 新規・更新発行は2023年3月に終了済み</li>
</ul>


<p>発行数に制限がないのが特徴。</p>

<h2>料金・運用体系</h2>

<p>参加機関の専任教職員・研究者数に応じた料金体系で、年次更新制（毎年2月末〜3月上旬頃に更新確認）。参加機関側にも、発行・失効した証明書数やドメイン所有権の検証方法などを年次報告する義務がある。2026年4月以降、料金改定が予定されている。</p>

<h2>ACMEプロトコル対応(2025年11月〜)</h2>

<p>2025年11月12日、<a href="https://64p.org/notes/acme.html">ACME</a>プロトコルに対応した。Certbot等のACMEクライアントを使って、サーバ証明書の発行・更新・失効を自動化できるようになり、運用負荷が軽減された。登録責任者向けの認証情報管理マニュアル、システム管理者向けのACMEクライアント運用マニュアルなど、専用マニュアルが整備されている。</p>

<p>学術機関向けの証明書発行という、<a href="https://64p.org/notes/lets-encrypt.html">Let&rsquo;s Encrypt</a>的な「無料・自動化されたCA」とは出自の異なるサービスにも、ACME対応という形で自動化の流れが波及している例といえる。</p>

<h2>出典</h2>

<ul>
<li><a href="https://certs.nii.ac.jp/">トップページ | UPKI電子証明書発行サービス</a></li>
<li><a href="https://certs.nii.ac.jp/faq/q1">サービスについて | UPKI電子証明書発行サービス</a></li>
<li><a href="https://certs.nii.ac.jp/faq/q3">証明書について | UPKI電子証明書発行サービス</a></li>
<li><a href="https://certs.nii.ac.jp/certs">概要 | UPKI電子証明書発行サービス</a></li>
<li><a href="https://certs.nii.ac.jp/news/20251112">【重要】UPKI電子証明書発行サービス、ACMEプロトコル対応のお知らせ</a></li>
</ul>

]]></description>
</item>
<item>
<title>Arazzo Specification</title>
<link>https://64p.org/notes/arazzo.html</link>
<guid isPermaLink="true">https://64p.org/notes/arazzo.html</guid>
<pubDate>Sat, 15 Aug 2026 16:32:00 +0900</pubDate>
<description><![CDATA[<h1>Arazzo Specification</h1>

<p><a href="https://64p.org/notes/openapi.html">OpenAPI Initiative</a>(Linux Foundation傘下)がコミュニティ主導で策定する、複数のAPI呼び出しの並び順と依存関係を「ワークフロー」として記述するための、プログラミング言語非依存の仕様。最新バージョンはArazzo Specification 1.0.0。</p>

<h2>何を解決するか</h2>

<p>OpenAPI(やAsyncAPI)は個々のエンドポイントの入出力は定義できるが、「あるAPIの呼び出し結果を別のAPIの入力として使う」といった複数API呼び出しをまたぐ順序・依存関係までは表現できない。Arazzoはこのギャップを埋める、OpenAPIを補完するレイヤー。</p>

<h2>ドキュメント構造</h2>

<p>トップレベルのArazzoオブジェクトが以下を宣言する。</p>

<ul>
<li>バージョン・メタデータ</li>
<li>参照元となる<a href="https://64p.org/notes/openapi.html">OpenAPI</a>(やAsyncAPI)の記述ファイルのリスト</li>
<li>1つ以上の<code>workflow</code>(ワークフロー)。各ワークフローは入力(inputs)・順序付きのステップ(steps)・成功条件・後続ステップが参照できる出力(outputs)を持つ</li>
<li>再利用可能なコンポーネント</li>
</ul>


<h2>記述例</h2>

<p>公式リポジトリのサンプル(<a href="https://github.com/OAI/Arazzo-Specification/blob/main/examples/1.0.0/pet-coupons.arazzo.yaml">petstoreのクーポン適用ワークフロー</a>)から一部抜粋。「ペットを検索する」→「そのペット向けのクーポンを検索する」→「クーポンを適用して注文する」という3ステップのワークフローを表現している。</p>

<pre><code class="yaml">arazzo: 1.0.0
info:
  title: Petstore - Apply Coupons
  version: 1.0.0
sourceDescriptions:
  - name: pet-coupons
    url: ./pet-coupons.openapi.yaml
    type: openapi
workflows:
  - workflowId: apply-coupon
    summary: Apply a coupon to a pet order.
    steps:
      - stepId: find-pet
        description: Find a pet based on the provided tags.
        operationId: findPetsByTags
        parameters:
          - name: pet_tags
            in: query
            value: $inputs.my_pet_tags
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          my_pet_id: $response.body#/0/id
      - stepId: find-coupons
        description: Find a coupon available for the selected pet.
        operationId: getPetCoupons
        parameters:
          - name: pet_id
            in: path
            value: $steps.find-pet.outputs.my_pet_id
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          my_coupon_code: $response.body#/couponCode
      - stepId: place-order
        description: Place an order for the pet, applying the coupon.
        workflowId: place-order
        parameters:
          - name: pet_id
            value: $steps.find-pet.outputs.my_pet_id
          - name: coupon_code
            value: $steps.find-coupons.outputs.my_coupon_code
        outputs:
          my_order_id: $outputs.workflow_order_id
    outputs:
      apply_coupon_pet_order_id: $steps.place-order.outputs.my_order_id
</code></pre>

<p>ポイント:</p>

<ul>
<li><code>sourceDescriptions</code>で、このワークフローが参照する既存のOpenAPI定義ファイル(<code>pet-coupons.openapi.yaml</code>)を紐付ける。ステップ内の<code>operationId</code>はそのOpenAPI定義の<code>operationId</code>を指す</li>
<li>各ステップは<code>stepId</code>で識別され、デフォルトでは配列の順番通りに逐次実行される</li>
<li><code>$inputs.xxx</code>・<code>$steps.&lt;stepId&gt;.outputs.xxx</code>・<code>$response.body#/...</code>のようなランタイム式(runtime expression)で、ワークフロー入力・前ステップの出力・レスポンスボディの値を後続ステップの<code>parameters</code>に渡せる</li>
<li><code>successCriteria</code>でステップの成功条件(例: <code>$statusCode == 200</code>)を明示できる</li>
<li>3つ目のステップ<code>place-order</code>は<code>operationId</code>の代わりに<code>workflowId: place-order</code>を指定しており、単一APIオペレーションではなく<strong>別のワークフローを呼び出す</strong>ことでステップの再利用を実現している(この例では同一ファイル内の<code>place-order</code>ワークフローを参照)</li>
</ul>


<h2>ユースケース</h2>

<ul>
<li>対話的な「生きた」APIドキュメント、ドキュメント自動生成</li>
<li>機能的なユースケースに基づいたSDK・コード生成</li>
<li>テストケースの自動化、規制コンプライアンスチェックの自動化</li>
<li>LLM(AIエージェント)によるAPIの決定論的な呼び出し</li>
</ul>


<h2><a href="https://64p.org/notes/spectral.html">Spectral</a>でのサポート</h2>

<p><a href="https://64p.org/notes/spectral.html">Spectral</a>は<code>spectral:arazzo</code>という組み込みルールセットでArazzo v1.0のlintに対応している。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/api.html">#api</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://www.openapis.org/arazzo-specification">Arazzo Specification – OpenAPI Initiative</a></li>
<li><a href="https://swagger.io/blog/the-arazzo-specification-a-deep-dive/">The Arazzo Specification – A Deep Dive - Swagger Blog</a></li>
<li><a href="https://github.com/OAI/Arazzo-Specification">Arazzo Specification (GitHub: OAI/Arazzo-Specification)</a></li>
<li><a href="https://github.com/OAI/Arazzo-Specification/blob/main/examples/1.0.0/pet-coupons.arazzo.yaml">pet-coupons.arazzo.yaml (公式サンプル)</a></li>
</ul>

]]></description>
</item>
<item>
<title>トライ木 (Trie)</title>
<link>https://64p.org/notes/trie.html</link>
<guid isPermaLink="true">https://64p.org/notes/trie.html</guid>
<pubDate>Sat, 15 Aug 2026 16:29:00 +0900</pubDate>
<description><![CDATA[<h1>トライ木 (Trie)</h1>

<p>文字列の集合を、根から葉までの経路が1つのキーに対応する木構造で表現するデータ構造。「prefix tree(接頭辞木)」「digital tree」とも呼ばれる。共通の接頭辞を持つキー同士がノードを共有するため、プレフィックス検索(前方一致検索)を効率的に行える。 <a class="note-tag" href="https://64p.org/notes/tags/algorithm.html">#algorithm</a> <a class="note-tag" href="https://64p.org/notes/tags/data-structure.html">#data-structure</a></p>

<h2>歴史</h2>

<p>1959年、René de la Briandaisが論文 &ldquo;File searching using variable length keys&rdquo; で最初に導入した。名前は1960年代にEdward Fredkinが独立に考案し、"retrieval"(検索)の中間音節から<strong>trie</strong>と名付けた。発音は本来「tree」と同じ/triː/だが、「tree」と区別するために/traɪ/(「try」と同じ)と発音する人も多い。</p>

<p>2000年代、Googleがオートコンプリート機能に採用したことで改めて注目を集めた。</p>

<h2>実装上の課題と派生構造</h2>

<p>素朴なTrie実装(各ノードが子への配列やハッシュマップを持つ)は、特にアルファベットの種類が多い場合(漢字など)にメモリを浪費しやすい。この課題に対処するため、いくつかの圧縮・高速化手法が考案されている。</p>

<ul>
<li><strong><a href="https://64p.org/notes/double-array.html">ダブル配列</a></strong> — TRIEをBASE配列とCHECK配列の2本に圧縮して表現する手法。<a href="https://64p.org/notes/mecab.html">MeCab</a>など日本語形態素解析器の辞書引きで広く使われる</li>
<li><strong><a href="https://64p.org/notes/marisa-trie.html">MARISA</a></strong> — パトリシアトライ(Patricia Trie、共通接頭辞を持つ単一子ノードの連鎖をまとめて圧縮したTrie)を再帰的に用いて、さらに高い圧縮率を実現する静的Trie</li>
<li><strong>Patricia Trie</strong> — 単一の子しか持たないノードの連鎖を1つのノードにまとめることでメモリを節約する、Trieの基本的な圧縮手法</li>
</ul>


<h2>出典</h2>

<ul>
<li><a href="https://en.wikipedia.org/wiki/Trie">Trie - Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/Edward_Fredkin">Edward Fredkin - Wikipedia</a></li>
</ul>

]]></description>
</item>
<item>
<title>MARISA (Matching Algorithm with Recursively Implemented StorAge)</title>
<link>https://64p.org/notes/marisa-trie.html</link>
<guid isPermaLink="true">https://64p.org/notes/marisa-trie.html</guid>
<pubDate>Sat, 15 Aug 2026 16:29:00 +0900</pubDate>
<description><![CDATA[<h1>MARISA (Matching Algorithm with Recursively Implemented StorAge)</h1>

<p><a href="https://64p.org/notes/trie.html">パトリシアトライ</a>を再帰的に用いて表現する、静的(構築後は更新不可)で空間効率の良いTrieデータ構造。開発者はSusumu Yata(s-yata)。C++実装がGitHub上で公開されている。 <a class="note-tag" href="https://64p.org/notes/tags/algorithm.html">#algorithm</a> <a class="note-tag" href="https://64p.org/notes/tags/data-structure.html">#data-structure</a> <a class="note-tag" href="https://64p.org/notes/tags/nlp.html">#nlp</a> <a class="note-tag" href="https://64p.org/notes/tags/rust.html">#rust</a></p>

<h2>仕組み</h2>

<p>パトリシアトライ(共通接頭辞を持つ単一子ノードの連鎖をまとめて圧縮したTrie)を、さらに別のパトリシアトライで表現するという再帰的な構造を持つ。再帰の深さを増やすほど辞書はより圧縮されるが、検索性能は低下するというトレードオフがある。木のトポロジー自体はLOUDS(Level-Order Unary Degree Sequence)符号化で表現される。</p>

<p>サポートする操作:</p>

<ul>
<li><strong>Lookup</strong> — 与えられた文字列が辞書に存在するか確認</li>
<li><strong>Reverse lookup</strong> — IDからキーを復元</li>
<li><strong>Common prefix search</strong> — 与えられた文字列の接頭辞に一致するキーを検索</li>
<li><strong>Predictive search</strong> — 与えられた文字列で始まるキーを検索</li>
</ul>


<h2><a href="https://64p.org/notes/double-array.html">ダブル配列</a>との違い</h2>

<p>どちらも静的なTrie実装で、更新には再構築が必要という点は共通する。</p>

<ul>
<li><strong>メモリ効率</strong>: MARISAはダブル配列よりもかなりコンパクトになる傾向がある(英語版Wikipediaの記事タイトル約980万件のベンチマークで、他のダブル配列実装が数百MBになるのに対しMARISAは約50MBに収まる例が示されている)</li>
<li><strong>検索速度</strong>: ダブル配列は兄弟ノード数によらず一定して高速な検索ができる。MARISAも実用上十分高速だが、再帰の深さによっては劣る場合がある</li>
<li>日本語辞書のように親ノード1つに対する子ノード数(分岐数)が多くなりがちなケースでは、ダブル配列よりMARISAの方が空間効率の面で有利になりやすい</li>
</ul>


<h2>関連</h2>

<p>tokuhirom自身がC++版MARISAをRustに移植した<a href="https://github.com/tokuhirom/rsmarisa">rsmarisa</a>を開発している。C++版とのバイナリ互換性を保ちつつ、LOUDS符号化によるトライ構築・完全一致検索・共通接頭辞検索・予測検索・メモリマップドI/Oなどの主要機能を実装している。</p>

<h2>出典</h2>

<ul>
<li><a href="https://github.com/s-yata/marisa-trie">GitHub - s-yata/marisa-trie</a></li>
<li><a href="http://www.s-yata.jp/marisa-trie/docs/readme.en.html">MARISA: Matching Algorithm with Recursively Implemented StorAge (公式ドキュメント)</a></li>
<li><a href="https://pypi.org/project/marisa-trie/">marisa-trie · PyPI</a></li>
</ul>

]]></description>
</item>
<item>
<title>ダブル配列 (Double Array)</title>
<link>https://64p.org/notes/double-array.html</link>
<guid isPermaLink="true">https://64p.org/notes/double-array.html</guid>
<pubDate>Sat, 15 Aug 2026 16:27:00 +0900</pubDate>
<description><![CDATA[<h1>ダブル配列 (Double Array)</h1>

<p><a href="https://64p.org/notes/trie.html">TRIE(トライ木)</a>を<strong>BASE配列</strong>と<strong>CHECK配列</strong>という2つの配列に圧縮して表現するデータ構造。青江順一(Jun-ichi Aoe)が1989年にIEEE Transactions on Software Engineering誌に発表した論文 &ldquo;An Efficient Digital Search Algorithm by Using a Double-Array Structure&rdquo;(vol.15, no.9, pp.1066-1077)で提案した。 <a class="note-tag" href="https://64p.org/notes/tags/algorithm.html">#algorithm</a> <a class="note-tag" href="https://64p.org/notes/tags/data-structure.html">#data-structure</a> <a class="note-tag" href="https://64p.org/notes/tags/nlp.html">#nlp</a></p>

<h2>仕組み</h2>

<p>元のTRIEでは各ノードがエッジラベル(文字コード)ごとに子ノードを指す行テーブルを持つが、これはスパース(疎)になりがちでメモリを浪費する。ダブル配列はこのスパースな行テーブルを「ずらして重ね合わせる」ことで、単一の配列に圧縮する。</p>

<ul>
<li><strong>BASE配列</strong> — 各ノードからの「ずらし量(オフセット)」を記録する</li>
<li><strong>CHECK配列</strong> — ある位置が本当に期待した親ノードの子であるかを検証する</li>
</ul>


<p>検索は「現在位置のBASE値 + 次の文字コード」で次の位置を計算し、CHECK配列でその位置の親が正しいか確認する、という手順を繰り返す。この検証があるため、別の親の子ノードを誤って辿ってしまう問題を防げる。1文字あたりの遷移がO(1)で行えるため、キー長kに対して検索全体はO(k)となる。</p>

<h2>応用</h2>

<p>形態素解析、スペル訂正、日本語かな漢字変換の辞書検索など、高速なプレフィックス検索が必要な場面で広く使われている。実装としては<a href="https://64p.org/notes/mecab.html">MeCab</a>の辞書引きや、Darts(Double-ARray Trie System)などが知られる。</p>

<h2>出典</h2>

<ul>
<li><a href="https://dl.acm.org/doi/10.1109/32.31365">An Efficient Digital Search Algorithm by Using a Double-Array Structure | IEEE</a></li>
<li><a href="https://onlinelibrary.wiley.com/doi/abs/10.1002/scj.4690200710">A fast digital search algorithm using a double‐array structure - Aoe - 1989 | Wiley</a></li>
<li><a href="https://takeda25.hatenablog.jp/entry/20120219/1329634865">情報系修士にもわかるダブル配列 - アスペ日記</a></li>
<li><a href="https://www.chokkan.org/software/dastrie/">Static Double Array Trie (DASTrie)</a></li>
</ul>

]]></description>
</item>
<item>
<title>Kanzen</title>
<link>https://64p.org/notes/kanzen.html</link>
<guid isPermaLink="true">https://64p.org/notes/kanzen.html</guid>
<pubDate>Sat, 15 Aug 2026 16:27:00 +0900</pubDate>
<description><![CDATA[<h1>Kanzen</h1>

<p>情報処理学会「文書処理とヒューマンインタフェース研究会」(1987)に掲載された論文「Emacsと親和性の高い日本語入力法 Kanzen」(竹内郁雄・杉村利明・天海良治、NTT電気通信研究所)で発表された日本語入力・かな漢字変換システム。TAO/ELIS(Lispマシン)上のEmacs互換エディタ「Zen」に組み込まれた。 <a class="note-tag" href="https://64p.org/notes/tags/nlp.html">#nlp</a> <a class="note-tag" href="https://64p.org/notes/tags/emacs.html">#emacs</a></p>

<h2>特徴</h2>

<ul>
<li>Emacs本来のコマンド体系との高い整合性を保つ</li>
<li>編集とかな漢字変換が透過的に融合しており、専用の「変換中モード」を持たない。編集コマンドはいつでもどこでも実行できる</li>
<li>WYSIWYGなリアルタイム画面表示</li>
<li>モードの区別をカーソル形状(または色)で示し、ユーザの注視点を安定させる</li>
</ul>


<h2>辞書構成</h2>

<p>単語辞書はユーザ辞書・基本単語辞書(約7万語)・ディスク単語辞書の3階層で構成される。まず高速なユーザ辞書と基本単語辞書を検索し、候補が見つからない場合のみディスク単語辞書も検索する2段階方式を採る。</p>

<h2>変換アルゴリズム</h2>

<p>変換対象文字列全体から、単語間の接続関係を表した「解析グラフ」を構築する。各ノードは自分から先頭ノードに至る経路のうち最小コストからm番目までの経路を保持しており、この特性により複数文節にまたがる誤変換(例:「彼ははだし」→「枯葉派だし」)を防ぎつつ、第1文節のみを高速に確定できる。1回の変換・再表示は約100ミリ秒のオーダーで、人間が遅延を感じない限界とされる約50ミリ秒に近いとされる。</p>

<h2>辞書のデータ構造について</h2>

<p>論文本文では辞書は上記の3階層構成のみが述べられており、辞書引きの内部アルゴリズム(索引構造)についての記述はない。同じくNTTで研究された日本語入力の高速化技術として<a href="https://64p.org/notes/double-array.html">ダブル配列</a>があるが、ダブル配列の提案(青江順一, 1989年)はKanzenの発表(1987年)より後であり、両者の直接の関連は文献上確認できていない。</p>

<h2>出典</h2>

<ul>
<li><a href="https://www.nue.org/nue/tao/kanzen/wdj.html">Kanzen: A Japanese Text Input Method Highly Compatible with Emacs</a></li>
</ul>

]]></description>
</item>
<item>
<title>OpenAPI Moonwalk</title>
<link>https://64p.org/notes/openapi-moonwalk.html</link>
<guid isPermaLink="true">https://64p.org/notes/openapi-moonwalk.html</guid>
<pubDate>Sat, 15 Aug 2026 16:22:00 +0900</pubDate>
<description><![CDATA[<h1>OpenAPI Moonwalk</h1>

<p><a href="https://64p.org/notes/openapi.html">OpenAPI</a>仕様の次期メジャーバージョン(通称OpenAPI 4.0)を探索する特別委員会(SIG)、およびその取り組み全体の通称。2023年12月に開始され、毎週火曜9時(太平洋時間)に定例会を開催している。公式リポジトリ<code>OAI/sig-moonwalk</code>では「4.xを見据えた検討だけでなく3.x側の改善も含めて将来を探る取り組み」と説明されており、終了予定日は定められていない。公式には「4.0には計画された終了日がないため、現時点で存在する3.xバージョンの利用を強く推奨する」と明記されている。</p>

<h2>6つの基本原則</h2>

<p>当初5つだった原則が、2024〜2025年にかけて6つに拡大した。</p>

<ol>
<li><strong>セマンティクス</strong> — 人間・AI双方の利用者に目的(purpose)を提供する</li>
<li><strong>シグネチャ</strong> — HTTPの仕組みに基づいてAPI操作を識別可能にする</li>
<li><strong>包括性 (Inclusion)</strong> — HTTPベースの全APIを記述対象としつつ、特定の実装に偏らない中立性を保つ</li>
<li><strong>基盤インターフェース (Foundational Interfaces、2024年追加)</strong> — ツール作成者側の複雑さを削減する。Henry Andrewsの研究により実現可能になったとされる</li>
<li><strong>関心の分離</strong> — スコープをモジュール化し管理可能な単位に保つ</li>
<li><strong>機械的アップグレード</strong> — 3.xから4.0への自動変換プロセスを用意する</li>
</ol>


<h2>2025〜2026年の焦点: LLM/AIエージェント対応</h2>

<p>2026年は少なくとも最初の半年、OpenAPIとLLMの交差領域に焦点を当てる方針が示されている。LLMを新しいクラスの「賢いクライアント」と捉え、OpenAPI文書をAIエージェントにとって読み取りやすい(&ldquo;agent-ready"な)ものにする方法が検討テーマになっている。</p>

<h2>進め方</h2>

<p>2025年3月時点では正式な仕様のドラフト執筆にはまだ入っておらず、GitHub Discussions上でのArchitectural Design Records (ADR) の議論を通じて意思決定を積み重ねている段階。十分な意思決定が蓄積された時点で正式な仕様執筆に移るとされている。参加はSlackチャンネルやGitHub Discussionsを通じて可能。</p>

<h2><a href="https://64p.org/notes/openapi.html">OpenAPI</a>の中での位置づけ</h2>

<p>現行の最新マイナーバージョンである<a href="https://64p.org/notes/openapi-3-1.html">OpenAPI 3.1</a>・3.2の先にある、次のメジャーバージョンの検討という位置づけ。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://github.com/OAI/sig-moonwalk">GitHub: OAI/sig-moonwalk</a></li>
<li><a href="https://www.openapis.org/blog/2025/02/05/moonwalk-2025-update">Moonwalk – 2025 update - OpenAPI Initiative</a></li>
<li><a href="https://bump.sh/blog/openapi-v4-moonwalk/">OpenAPI v4.0 (A.K.A &ldquo;Project Moonwalk&rdquo;) - Bump.sh</a></li>
<li><a href="https://github.com/OAI/sig-moonwalk/discussions/219">Moonwalk 2026 · OAI/sig-moonwalk Discussion #219</a></li>
</ul>

]]></description>
</item>
<item>
<title>OpenAPI 3.1</title>
<link>https://64p.org/notes/openapi-3-1.html</link>
<guid isPermaLink="true">https://64p.org/notes/openapi-3-1.html</guid>
<pubDate>Sat, 15 Aug 2026 16:22:00 +0900</pubDate>
<description><![CDATA[<h1>OpenAPI 3.1</h1>

<p>2021年2月にリリースされた<a href="https://64p.org/notes/openapi.html">OpenAPI</a>仕様のマイナーバージョン。中心的な目的はJSON Schemaとの完全互換性の実現で、公式ブログでも「OpenAPIのJSON Schema関連構造とJSON Schema自体のズレは長年、利用者・実装者双方にとっての課題だった」と説明されている。</p>

<h2>JSON Schema Draft 2020-12への完全準拠</h2>

<p>3.0のSchema ObjectはJSON Schema Draft 5の「サブセット」でしかなく、完全互換ではなかった。3.1ではSchema ObjectがJSON Schema Draft 2020-12ボキャブラリーに100%準拠するようになった。あわせてトップレベルフィールド<code>jsonSchemaDialect</code>が新設され、文書内のSchema Objectが従うデフォルトの<code>$schema</code>値を宣言できるようになった。</p>

<h2>semverからの意図的な逸脱</h2>

<p>OAS Technical Steering Committee (TSC) は、JSON Schema 2020-12との整合とOpenAPI 3.0からの学びの反映を優先し、破壊的変更を意図的にマイナーバージョン(3.0→3.1)へ含めるという判断を下した。つまり3.1は「マイナーバージョンは後方互換であるべき」というセマンティックバージョニングの慣習から意図的に逸脱している。</p>

<h2>主な変更点</h2>

<ul>
<li><strong>webhooks</strong> — トップレベルフィールドとして新設。帯域外(out-of-band)で登録されるWebhookをOpenAPI Object内で正式に記述できるようになった。3.0にはネイティブな手段がなく、callbacksの転用や仕様外での文書化で代替していた</li>
<li><strong>nullable廃止</strong> — 3.0.3の独自拡張だった<code>nullable</code>キーワードが廃止され、JSON Schema標準のunion型表現に統一された</li>
<li><strong>$refと兄弟キーワードの共存</strong> — 3.0.3では<code>$ref</code>が<code>description</code>や<code>example</code>など兄弟キーワードと共存できなかったが、JSON Schemaの挙動に合わせてこの制約が撤廃された</li>
<li><strong>examples(複数形)</strong> — OpenAPI独自の単数形<code>example</code>キーワードに加え、JSON Schema標準の複数形<code>examples</code>キーワードが使えるようになった</li>
<li><strong>再利用可能なPath Items</strong> — Components Objectに<code>pathItems</code>が追加され、Path Item Objectをコンポーネントとして再利用できるようになった</li>
<li><strong>ライセンスのSPDX識別子表記</strong> — APIライセンスをSPDX識別子で表記可能に</li>
</ul>


<h2>採用状況</h2>

<p>Atlassian・Microsoft・Googleなど大手が採用。<a href="https://64p.org/notes/swagger-ui-editor.html">Swagger UI/Editor</a>も3.1をサポートしている。</p>

<h2><a href="https://64p.org/notes/openapi.html">OpenAPI</a>の中での位置づけ</h2>

<p><a href="https://64p.org/notes/openapi.html">OpenAPI</a>のバージョン変遷における一段階。次のメジャーバージョンに向けた検討は<a href="https://64p.org/notes/openapi-moonwalk.html">OpenAPI Moonwalk</a>を参照。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/json-schema.html">#json-schema</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://www.openapis.org/blog/2021/02/18/openapi-specification-3-1-released">OpenAPI Specification 3.1.0 Released - OpenAPI Initiative</a></li>
<li><a href="https://beeceptor.com/docs/concepts/openapi-what-is-new-3.1.0/">What&rsquo;s new in OpenAPI 3.1.0? - Beeceptor</a></li>
<li><a href="https://learn.openapis.org/upgrading/v3.0-to-v3.1.html">Upgrading from OpenAPI 3.0 to 3.1 - learn.openapis.org</a></li>
<li><a href="https://swagger.io/blog/swagger-supports-openapi-3-1/">Swagger Supports OpenAPI 3.1</a></li>
</ul>

]]></description>
</item>
<item>
<title>Ignition</title>
<link>https://64p.org/notes/ignition.html</link>
<guid isPermaLink="true">https://64p.org/notes/ignition.html</guid>
<pubDate>Sat, 15 Aug 2026 16:22:00 +0900</pubDate>
<description><![CDATA[<h1>Ignition</h1>

<p>initramfs内(userlandが起動する前)で初回起動時に1回だけ実行されるプロビジョニングユーティリティ。JSON形式の設定ファイルを読み込み、ディスクのパーティショニング/フォーマット、ファイル書き込み(通常ファイルやsystemdユニット等)、ユーザー作成などをブートプロセスの非常に早い段階で行う。<a href="https://64p.org/notes/coreos.html">CoreOS</a>系ディストリビューションの初期設定機構。 <a class="note-tag" href="https://64p.org/notes/tags/linux.html">#linux</a> <a class="note-tag" href="https://64p.org/notes/tags/infrastructure.html">#infrastructure</a></p>

<h2>cloud-initとの違い・経緯</h2>

<p>CoreOSは元々<code>coreos-cloudinit</code>(cloud-initのCoreOS版)を使っていたが、これはOS起動後に動作するため、ディスクパーティションのような根本的な変更がしにくいという限界があった。Ignitionはその後継として開発され、CoreOS内部では約1年運用されたのち正式公開された。</p>

<ul>
<li><strong>実行タイミング</strong> — cloud-initは通常のinit処理の一部として起動後に動くため、ディスクパーティションのような変更がしにくい。Ignitionはinitramfs中に動くため、まっさらなディスクからでもPXEブート等でベアメタルのセットアップができる</li>
<li><strong>設計方針</strong> — Ignitionは初回起動時に1回だけ実行され、変数展開(variable substitution)のような複雑さを持たない、よりシンプルで予測可能な設計</li>
<li><strong>設定フォーマット</strong> — cloud-initはYAMLだが、Ignitionは機械可読性を優先しJSONを採用</li>
</ul>


<p><code>coreos-cloudinit</code>は非推奨化され、現在は開発が止まっている。</p>

<h2>設定の書き方</h2>

<p>Ignition設定(JSON)は人間が直接書くには不向きなため、通常はYAMLで書いた設定をJSONへトランスパイルする2段階のワークフローを使う。</p>

<ul>
<li><strong>Butane</strong> — 汎用のYAML→Ignition設定トランスパイラ</li>
<li><strong>FCC (Fedora CoreOS Configuration Format)</strong> — <a href="https://64p.org/notes/fedora-coreos.html">Fedora CoreOS</a>向けの同種の仕組み</li>
</ul>


<h2>出典</h2>

<ul>
<li><a href="https://coreos.github.io/ignition/">Ignition | Ignition documentation</a></li>
<li><a href="https://docs.fedoraproject.org/en-US/fedora-coreos/producing-ign/">Producing an Ignition Config - Fedora Documentation</a></li>
<li><a href="https://www.toddpigram.com/2016/04/introducing-ignition-new-coreos-machine.html">Cloudy Journey: Introducing Ignition</a></li>
<li><a href="https://github.com/coreos/coreos-cloudinit">GitHub - coreos/coreos-cloudinit [DEPRECATED]</a></li>
<li><a href="https://www.ovirt.org/develop/release-management/features/virt/coreos-ignition-support.html">CoreOS ignition support | oVirt</a></li>
</ul>

]]></description>
</item>
<item>
<title>OSTree</title>
<link>https://64p.org/notes/ostree.html</link>
<guid isPermaLink="true">https://64p.org/notes/ostree.html</guid>
<pubDate>Sat, 15 Aug 2026 16:19:00 +0900</pubDate>
<description><![CDATA[<h1>OSTree</h1>

<p>Linuxのファイルシステムツリーをバージョン管理し、アトミックなアップグレード/ロールバックを実現するライブラリ・ツール(<code>libostree</code>)。単体では汎用のバージョン管理・デプロイ基盤であり、RPMなどのパッケージ管理そのものではない。 <a class="note-tag" href="https://64p.org/notes/tags/linux.html">#linux</a> <a class="note-tag" href="https://64p.org/notes/tags/infrastructure.html">#infrastructure</a></p>

<h2>仕組み</h2>

<ul>
<li><strong>コンテンツアドレス型オブジェクトストア</strong> — Gitと同じ発想で、個々のファイルをチェックサム(SHA256)で管理し、変更されたファイルのみを差分配信できる。ブランチに相当する「refs」でツリーの世代を追跡する</li>
<li><strong>ハードリンクによるチェックアウト</strong> — Gitと異なり、リポジトリからチェックアウトする際にファイルをコピーせず<strong>ハードリンク</strong>で配置する。そのためチェックアウト後のファイルは変更不可(immutable)として扱う必要がある</li>
<li><strong>デプロイメント</strong> — <code>/ostree/repo</code>にあるリポジトリ内の特定コミット(SHA256ハッシュ)を1つの「デプロイメント」として扱い、ブートローダーのエントリと紐付ける。複数世代のデプロイメントを同一パーティション内に共存させられるので、更新失敗時は直前の正常な世代に即座にロールバック可能</li>
<li>電源断や通信切断時にも、更新はコミット単位でアトミックに適用されるためシステムの整合性が壊れにくい</li>
</ul>


<h2>歴史</h2>

<p>2011年10月、Red HatのエンジニアColin Waltersが開発開始。GNOME(upower/NetworkManager/gnome-shell等)のOSレベルの変更をホスト環境を壊さずテスト・反復するための仕組みとして着想した。2012年のGUADEC(GNOME Users And Developers European Conference)で公開発表され、GNOME Continuous(GNOMEの継続的ビルド・配信プロジェクト)の文脈で発展。2013年8月に最初の公開リリース(v2013.6)。Waltersはdpkg/rpmなど他のビルドシステムとも共有可能な独立プロジェクトとして意図的に切り出した。</p>

<h2>応用例</h2>

<p>RPMパッケージ管理とOSTreeを組み合わせたものが<strong>rpm-ostree</strong>であり、<a href="https://64p.org/notes/fedora-coreos.html">Fedora CoreOS</a>やFedora Silverblue/Kinoiteなど、Red Hat系のイミュータブルLinuxディストリビューションの中核技術になっている。組込み分野(Toradex TorizonなどYocto/IoTデバイスのOTA更新)でも使われている。</p>

<h2>出典</h2>

<ul>
<li><a href="https://ostreedev.github.io/ostree/introduction/">OSTree Overview | ostreedev/ostree</a></li>
<li><a href="https://en.wikipedia.org/wiki/OSTree">OSTree — Wikipedia</a></li>
<li><a href="https://github.com/ostreedev/ostree">GitHub - ostreedev/ostree</a></li>
<li><a href="https://ostreedev.github.io/ostree/deployment/">Deployments | ostreedev/ostree</a></li>
<li><a href="https://blog.verbum.org/2013/08/26/ostree-v2013-6-released/">ostree v2013.6 released « Colin Walters</a></li>
<li><a href="https://lwn.net/Articles/581811/">OSTree for Fedora [LWN.net]</a></li>
</ul>

]]></description>
</item>
<item>
<title>Spectral</title>
<link>https://64p.org/notes/spectral.html</link>
<guid isPermaLink="true">https://64p.org/notes/spectral.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>Spectral</h1>

<p>Stoplight社が開発するOSSのJSON/YAMLリンター。<a href="https://64p.org/notes/openapi.html">OpenAPI</a> (v3.1, v3.0, v2.0)、<a href="https://64p.org/notes/arazzo.html">Arazzo</a> v1.0、AsyncAPI v2.xの組み込みサポートを持つ。汎用ルールセットエンジンとして任意のJSON/YAMLに使えるが、OpenAPI/AsyncAPI/JSON Schemaを念頭に設計されている。</p>

<h2>仕組み: given / then / severity</h2>

<p>ルールは3要素で構成される。</p>

<ul>
<li><code>given</code> — <a href="https://github.com/JSONPath-Plus/JSONPath">JSONPath Plus</a>でドキュメント内のチェック対象要素を指定</li>
<li><code>then</code> — <code>field</code>(対象内のどのフィールドか)・<code>function</code>(assertion内容)・<code>functionOptions</code>で検証内容を指定</li>
<li><code>severity</code> — <code>error</code> / <code>warn</code> / <code>info</code> / <code>off</code></li>
</ul>


<p>組み込みルールセットは<code>extends: ["spectral:oas", "spectral:asyncapi", "spectral:arazzo"]</code>のように参照する。<code>.spectral.yml</code>をリポジトリルートに置いて設定するのが通例。カスタムルールセットは配列にファイルパス・npmパッケージ・CDN URLを追加で<code>extends</code>できる（例: OWASP APIセキュリティ観点のルールセット<code>@stoplight/spectral-owasp-ruleset</code>）。</p>

<h2>CLI</h2>

<pre><code class="sh">spectral lint myapifile.yaml --ruleset myruleset.yaml
</code></pre>

<h2>CI/CD</h2>

<p>公式GitHub Action <code>stoplightio/spectral-action</code> が提供されており、リポジトリの<code>.spectral.yml</code>を尊重してPR上でチェックできる。</p>

<h2>Stoplightエコシステムとメンテナンス状況</h2>

<p>SmartBearが2023年8月にStoplightを買収し、Spectral・Elements・<a href="https://64p.org/notes/prism-mock-server.html">Prism</a>を自社OSSポートフォリオ(Swagger、SoapUI、Pact)に統合した。買収後はSpectralをSwaggerHubに統合する方向で開発が続いている。公式リポジトリ<code>stoplightio/spectral</code>自体は買収後も存続・開発継続している。</p>

<h2>他リンターとの関係</h2>

<p><a href="https://64p.org/notes/redocly-cli.html">Redocly CLI</a>も同種のlint機能を持ち、公式に「Spectralからの移行ガイド」を提供している。両者は競合関係にある。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/linter.html">#linter</a> <a class="note-tag" href="https://64p.org/notes/tags/devtools.html">#devtools</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://github.com/stoplightio/spectral">GitHub: stoplightio/spectral</a></li>
<li><a href="https://stoplight.io/open-source/spectral">Spectral - Stoplight</a></li>
<li><a href="https://github.com/stoplightio/spectral/blob/develop/docs/getting-started/3-rulesets.md">Spectral rulesets - GitHub docs</a></li>
<li><a href="https://qaskills.sh/blog/spectral-openapi-linting-guide-2026">Spectral OpenAPI Linting Guide 2026 - QASkills</a></li>
<li><a href="https://github.com/stoplightio/spectral-owasp-ruleset">GitHub: stoplightio/spectral-owasp-ruleset</a></li>
<li><a href="https://github.com/stoplightio/spectral-action">GitHub: stoplightio/spectral-action</a></li>
<li><a href="https://sdtimes.com/api/smartbear-to-acquire-api-company-stoplight/">SmartBear to Acquire API Company Stoplight - SD Times</a></li>
<li><a href="https://smartbear.com/blog/elevating-api-development-with-stoplight/">Elevating API Development with Stoplight - SmartBear Blog</a></li>
<li><a href="https://www.devopsdigest.com/smartbear-integrates-stoplights-spectral-elements-and-prism-into-swaggerhub">SmartBear Integrates Stoplight&rsquo;s Spectral, Elements and Prism into SwaggerHub - DevOpsDigest</a></li>
</ul>

]]></description>
</item>
<item>
<title>OpenAPI</title>
<link>https://64p.org/notes/openapi.html</link>
<guid isPermaLink="true">https://64p.org/notes/openapi.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>OpenAPI</h1>

<p>RESTful APIをHTTP越しに記述するための言語非依存なインターフェース仕様。正式名称は OpenAPI Specification (OAS)。人間にもマシンにも読める形式(YAML/JSON)でエンドポイント・リクエスト/レスポンス形式・認証方式などを定義し、ドキュメント生成・クライアントSDK生成・モックサーバー・<a href="https://64p.org/notes/spectral.html">リンティング</a>など様々なツールの入力として使われる。</p>

<h2>Swaggerからの経緯</h2>

<p>2011年、Wordnikの辞書チームがSwagger Toolkit（Swagger Specification・<a href="https://64p.org/notes/swagger-ui-editor.html">Swagger UI</a>・Swagger Codegen）を作成した。Swagger 2.0が2014年にリリースされ広く普及。</p>

<p>2015年、SmartBearがSwagger 2.0仕様をLinux Foundation傘下の新設団体「OpenAPI Initiative (OAI)」に寄贈し、2016年1月1日に仕様名が正式に"OpenAPI Specification"へ改称され、新しいGitHubリポジトリへ移動した。OAIにはSmartBear・Google・IBM・Microsoft・PayPal・SAP・Salesforceなどが名を連ねる、ベンダー中立なオープンガバナンス組織。</p>

<p>現在の用語整理としては、「Swagger」はSmartBearが提供するツール群（<a href="https://64p.org/notes/swagger-ui-editor.html">Swagger UI/Editor</a>など）を指す通称として残り、「OpenAPI」が仕様そのものを指す。詳しくは<a href="https://64p.org/notes/swagger.html">Swagger</a>参照。</p>

<h2>バージョン変遷</h2>

<ul>
<li><strong>2.0 (Swagger, 2014)</strong> — OAI移管前の最終形。今も"Swagger"の名で呼ばれることが多い</li>
<li><strong>3.0 (2017)</strong> — OpenAPI Initiative発足後、最初のメジャーバージョン</li>
<li><strong><a href="https://64p.org/notes/openapi-3-1.html">3.1</a> (2021)</strong> — schemaがJSON Schema Draft 2020-12に完全準拠。webhooks新設など、TSCが意図的にsemverの慣習を破った変更を含む。詳細は<a href="https://64p.org/notes/openapi-3-1.html">OpenAPI 3.1</a>参照</li>
<li><strong>3.2.0 (2025年9月)</strong> — hierarchical tags、QUERYメソッド、ストリーミングAPIのネイティブサポートを追加</li>
</ul>


<p>次期メジャーバージョン(通称OpenAPI 4.0)の検討は<a href="https://64p.org/notes/openapi-moonwalk.html">OpenAPI Moonwalk</a>という取り組みで進行中。</p>

<h2>契約ファーストとの関係</h2>

<p><a href="https://64p.org/notes/grpc.html">gRPC</a>が<code>.proto</code>による契約ファースト(スキーマを先に定義してからコード生成)なのに対し、REST + OpenAPIはエンドポイントを実装してから後付けでスキーマを書く流れになることが多い。ただしOpenAPI定義を先に書いて<a href="https://64p.org/notes/openapi-generator.html">openapi-generator</a>でスタブコードを生成する契約ファーストな運用も可能。</p>

<h2>エコシステム</h2>

<p>Spectralによるリンティング、Redocly CLIによるlint/bundle、Swagger UI/Editorによる可視化、openapi-generatorによるコード生成、oasdiffによる破壊的変更検出、Prismによるモックサーバーなど、周辺ツール群は<a href="https://64p.org/notes/openapi-tooling.html">OpenAPI関連ツールエコシステム</a>にまとめた。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/api.html">#api</a> <a class="note-tag" href="https://64p.org/notes/tags/json-schema.html">#json-schema</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://blog.postman.com/openapi-vs-swagger/">OpenAPI vs Swagger: What&rsquo;s the Difference? - Postman Blog</a></li>
<li><a href="https://en.wikipedia.org/wiki/Swagger_(software">Swagger (software) - Wikipedia</a>)</li>
<li><a href="https://beeceptor.com/docs/concepts/openapi-what-is-new-3.1.0/">What&rsquo;s new in OpenAPI 3.1.0? - Beeceptor</a></li>
<li><a href="https://swagger.io/specification/">OpenAPI Specification - swagger.io</a></li>
<li><a href="https://docs.bump.sh/openapi/v3.2/introduction/history/">OpenAPI 3.2 History - Bump.sh</a></li>
</ul>

]]></description>
</item>
<item>
<title>Swagger UI / Swagger Editor</title>
<link>https://64p.org/notes/swagger-ui-editor.html</link>
<guid isPermaLink="true">https://64p.org/notes/swagger-ui-editor.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>Swagger UI / Swagger Editor</h1>

<p>SmartBear提供のOSSツール2本。歴史的には<a href="https://64p.org/notes/openapi.html">OpenAPI</a>の前身であるSwagger Toolkit(2011年、Wordnikの辞書チームが作成)の構成要素に由来する。<a href="https://64p.org/notes/swagger.html">Swagger</a>ブランド全体の位置づけについてはそちらを参照。</p>

<ul>
<li><strong>Swagger Editor</strong> — OpenAPI/AsyncAPI仕様に基づくHTTPベース・イベント駆動APIの設計・定義・文書化を行うOSSエディタ(ローカル/Web両対応)</li>
<li><strong>Swagger UI</strong> — OpenAPI(Swagger)仕様で定義されたAPIドキュメントを視覚的にレンダリングし、実装ロジックなしにブラウザ上でAPIリソースを可視化・操作できるOSSプロジェクト</li>
</ul>


<p>同じSmartBearが商用版としてSwaggerHubを提供している。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/api-documentation.html">#api-documentation</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://swagger.io/tools/swagger-editor/">Swagger Editor - swagger.io</a></li>
<li><a href="https://swagger.io/open-source/getting-started/">Swagger UI Getting Started - swagger.io</a></li>
</ul>

]]></description>
</item>
<item>
<title>OpenAPI関連ツールエコシステム</title>
<link>https://64p.org/notes/openapi-tooling.html</link>
<guid isPermaLink="true">https://64p.org/notes/openapi-tooling.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>OpenAPI関連ツールエコシステム</h1>

<p><a href="https://64p.org/notes/openapi.html">OpenAPI</a>仕様を中心に育ったツール群を束ねるハブノート。「定義の品質を静的にチェックする」「定義を可視化・文書化する」「定義からコードやモックを生成する」「バージョン間の互換性を見る」という役割ごとに整理する。</p>

<div class="mermaid">
graph LR
    spec["OpenAPI定義 (yaml/json)"]
    spec --&gt;|lint| spectral["Spectral"]
    spec --&gt;|lint / bundle| redocly["Redocly CLI"]
    spec --&gt;|可視化| swagger["Swagger UI / Editor"]
    spec --&gt;|コード生成| gen["openapi-generator"]
    spec --&gt;|モック生成| prism["Prism"]
    spec --&gt;|バージョン間差分| oasdiff["oasdiff"]
</div>


<h2>各ツール</h2>

<ul>
<li><a href="https://64p.org/notes/swagger.html">Swagger</a> — SmartBearのツール群のブランド名。仕様名としてのOpenAPIとの使い分けを整理</li>
<li><a href="https://64p.org/notes/spectral.html">Spectral</a> — Stoplight製のOSSリンター。JSONPathベースのルールでOpenAPI/AsyncAPI文書の書き方の品質をチェックする</li>
<li><a href="https://64p.org/notes/redocly-cli.html">Redocly CLI</a> — Redocly製のlint/bundle CLI。Spectralと競合するリンター機能を持つ</li>
<li><a href="https://64p.org/notes/swagger-ui-editor.html">Swagger UI / Swagger Editor</a> — SmartBear製、API設計とドキュメント可視化の定番</li>
<li><a href="https://64p.org/notes/openapi-generator.html">openapi-generator</a> — 定義からクライアントSDK・サーバースタブ・ドキュメントを自動生成。swagger-codegenからのfork</li>
<li><a href="https://64p.org/notes/prism-mock-server.html">Prism</a> — OpenAPI定義からHTTPモックサーバーを起動。Spectralと同じStoplight系</li>
<li><a href="https://64p.org/notes/oasdiff.html">oasdiff</a> — 2つの仕様間の破壊的変更を検出。CIでの互換性チェックに使う</li>
</ul>


<h2>Stoplight系とRedocly系</h2>

<p>SmartBearが2023年にStoplightを買収したことで、Spectral・<a href="https://64p.org/notes/prism-mock-server.html">Prism</a>・Swagger(UI/Editor/Hub)が同じSmartBear傘下のOSSポートフォリオに集約されている。これに対しRedocly社は独立系で、Spectralの代替となるlint/bundle機能を持つRedocly CLIを提供し、公式に移行ガイドまで用意している。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/moc.html">#moc</a> <a class="note-tag" href="https://64p.org/notes/tags/devtools.html">#devtools</a></p>
]]></description>
</item>
<item>
<title>Redocly CLI</title>
<link>https://64p.org/notes/redocly-cli.html</link>
<guid isPermaLink="true">https://64p.org/notes/redocly-cli.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>Redocly CLI</h1>

<p>Redocly社製のOSS CLI。<a href="https://64p.org/notes/openapi.html">OpenAPI</a>定義に対する<code>lint</code>（設定した基準に沿っているかチェック）と<code>bundle</code>（<code>$ref</code>を解決して単一ファイルへ結合し、他ツールへ渡す用途）が代表的なコマンド。</p>

<p><a href="https://64p.org/notes/spectral.html">Spectral</a>とは競合するツールで、公式に「Spectralからの移行ガイド」を提供している。Spectralの<code>--ruleset/-r</code>オプションに相当するものとしてRedocly CLIでは<code>--extends</code>でルールセットを指定する対応表が用意されている。推奨ルールセットはSwagger・Spectral・OAS-Kitからの着想を明記している。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/linter.html">#linter</a> <a class="note-tag" href="https://64p.org/notes/tags/devtools.html">#devtools</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://redocly.com/docs/cli/guides/lint-and-bundle">Lint and bundle - Redocly</a></li>
<li><a href="https://redocly.com/docs/cli/guides/migrate-from-spectral">Migrate from Spectral - Redocly</a></li>
<li><a href="https://github.com/Redocly/redocly-cli">GitHub: Redocly/redocly-cli</a></li>
</ul>

]]></description>
</item>
<item>
<title>Prism (モックサーバー)</title>
<link>https://64p.org/notes/prism-mock-server.html</link>
<guid isPermaLink="true">https://64p.org/notes/prism-mock-server.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>Prism (モックサーバー)</h1>

<p>Stoplightが開発するOSS。<a href="https://64p.org/notes/openapi.html">OpenAPI</a> v2/v3(v3.1含む)やPostman CollectionからHTTPモックサーバーを生成する。</p>

<p><code>-d</code>フラグでFaker.jsを用いた、スキーマに準拠したランダムなダミーレスポンスを生成できる。単なるモックだけでなく、リクエスト/レスポンスのバリデーションや、実サーバーの手前に立ててレスポンスを検証するValidation Proxyとしても使える。</p>

<p><a href="https://64p.org/notes/spectral.html">Spectral</a>と同じStoplightエコシステムの一部で、SmartBearによるStoplight買収(2023年8月)後はSwaggerHubへの統合対象になっている。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/mocking.html">#mocking</a> <a class="note-tag" href="https://64p.org/notes/tags/devtools.html">#devtools</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://github.com/stoplightio/prism">GitHub: stoplightio/prism</a></li>
<li><a href="https://stoplight.io/open-source/prism">Prism - Stoplight</a></li>
</ul>

]]></description>
</item>
<item>
<title>openapi-generator</title>
<link>https://64p.org/notes/openapi-generator.html</link>
<guid isPermaLink="true">https://64p.org/notes/openapi-generator.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>openapi-generator</h1>

<p><a href="https://64p.org/notes/openapi.html">OpenAPI</a>/Swagger定義からAPIクライアントライブラリ(SDK)・サーバースタブ・ドキュメント・設定を自動生成するOSS。</p>

<h2>swagger-codegenからのfork</h2>

<p>OpenAPI Generatorは、swagger-codegenのバージョン2.3.1〜2.4.0の間、2018年5月にコミュニティ主導でforkされたプロジェクト。fork理由として以下が挙げられている。</p>

<ul>
<li>swagger-codegen 3.0.0が2系の哲学から乖離しすぎていた</li>
<li>2系/3系の並行メンテナンスへの懸念</li>
<li>より速いリリースサイクル（週次パッチ・月次マイナー）を求めた</li>
<li>元のswagger-codegenアーキテクチャは新言語サポートの追加が困難で、Javaベースのテンプレートシステムのカスタマイズも煩雑だった</li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/codegen.html">#codegen</a> <a class="note-tag" href="https://64p.org/notes/tags/devtools.html">#devtools</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://openapi-generator.tech/docs/fork-qna/">Fork Q&amp;A - OpenAPI Generator公式</a></li>
<li><a href="https://github.com/OpenAPITools/openapi-generator">GitHub: OpenAPITools/openapi-generator</a></li>
</ul>

]]></description>
</item>
<item>
<title>oasdiff</title>
<link>https://64p.org/notes/oasdiff.html</link>
<guid isPermaLink="true">https://64p.org/notes/oasdiff.html</guid>
<pubDate>Sat, 15 Aug 2026 16:18:00 +0900</pubDate>
<description><![CDATA[<h1>oasdiff</h1>

<p>2つの<a href="https://64p.org/notes/openapi.html">OpenAPI</a>仕様間の差分・破壊的変更検出を行うOSSツールチェーン。509種類の変更を検出可能で、breaking/non-breaking双方を区別できる。OpenAPI 3.0/3.1/3.2すべてに対応。</p>

<p>CLI・GitHub Action・オンラインの無料サイドバイサイド比較サービスなど複数の利用形態がある。GitHub Action(<code>oasdiff/oasdiff-action</code>)はPRのFiles changedタブにインラインで破壊的変更を注釈し、fail-on閾値以上ならワークフローを失敗させられる。</p>

<h2>使いどころ</h2>

<p>API定義の変更がクライアントを壊さないかをCI上で機械的にチェックする用途。<a href="https://64p.org/notes/openapi-tooling.html">OpenAPI関連ツールエコシステム</a>の中では、Spectralが「定義の書き方の品質」を見るのに対し、oasdiffは「2バージョン間の互換性」を見る点で役割が異なる。</p>

<p><a class="note-tag" href="https://64p.org/notes/tags/openapi.html">#openapi</a> <a class="note-tag" href="https://64p.org/notes/tags/api.html">#api</a> <a class="note-tag" href="https://64p.org/notes/tags/ci-cd.html">#ci-cd</a></p>

<h2>出典</h2>

<ul>
<li><a href="https://www.oasdiff.com/">oasdiff公式</a></li>
<li><a href="https://nordicapis.com/using-oasdiff-to-detect-breaking-changes-in-apis/">Using oasdiff to Detect Breaking Changes in APIs - Nordic APIs</a></li>
<li><a href="https://github.com/oasdiff/oasdiff-action">GitHub: oasdiff/oasdiff-action</a></li>
</ul>

]]></description>
</item>
<item>
<title>Fedora CoreOS</title>
<link>https://64p.org/notes/fedora-coreos.html</link>
<guid isPermaLink="true">https://64p.org/notes/fedora-coreos.html</guid>
<pubDate>Sat, 15 Aug 2026 16:15:00 +0900</pubDate>
<description><![CDATA[<h1>Fedora CoreOS</h1>

<p><a href="https://64p.org/notes/coreos.html">CoreOS</a>社の Container Linux が2020年5月にEOLとなった際の公式後継ディストリビューション。Fedora Projectのイメージベース・自動アップデートの系譜（Silverblue等と同じrpm-ostree系統）と、Container Linuxの設計思想を統合したもの。 <a class="note-tag" href="https://64p.org/notes/tags/linux.html">#linux</a> <a class="note-tag" href="https://64p.org/notes/tags/infrastructure.html">#infrastructure</a></p>

<h2>イミュータブル設計</h2>

<p>ルートファイルシステムは読み取り専用でマウントされ、書き込み可能なのは<code>/etc</code>と<code>/var</code>のみ。アプリケーションはコンテナとして動かす前提で、ホストOS自体は手で変更しない（構成ドリフトを防ぐ）という設計になっている。</p>

<ul>
<li><strong>rpm-ostree</strong> — RPMパッケージ管理と<a href="https://64p.org/notes/ostree.html">OSTree</a>（Gitのようにファイルシステムツリーをコミット単位でバージョン管理する仕組み）を組み合わせたハイブリッドパッケージシステム。OS全体を1つのイメージとしてアトミックに更新・ロールバックできる</li>
<li>更新は新しいOSTreeコミットをステージしておき、次回再起動時に切り替える方式。起動に失敗すると自動的に直前の正常なツリーに戻る</li>
<li><strong><a href="https://64p.org/notes/ignition.html">Ignition</a></strong> — 初回起動時のプロビジョニングを担う仕組み。従来型のインストーラを使わず、JSON形式の設定ファイル（クラウドの場合はユーザーデータ経由で渡す）を初回起動時に読み込んで自己設定する</li>
</ul>


<h2>リリースストリーム</h2>

<p>stable / testing / next の3ストリームで段階的に検証しながら配信される（Fedora本体のリリースサイクルとは別に、CoreOS独自のケイデンスで更新される）。</p>

<h2>関連</h2>

<p>Red Hat OpenShiftのノードOSである<strong>RHCOS (Red Hat CoreOS)</strong> は、Fedora CoreOSを上流として派生した製品版。</p>

<h2>出典</h2>

<ul>
<li><a href="https://mkdev.me/posts/what-is-container-operating-system-immutable-auto-updating-security-minded-fedora-coreos-intro">Fedora CoreOS: Immutable, Auto-Updating &amp; Secure OS | mkdev</a></li>
<li><a href="https://developers.redhat.com/blog/2020/03/10/how-to-run-containerized-workloads-securely-and-at-scale-with-fedora-coreos">How to run containerized workloads securely and at scale with Fedora CoreOS | Red Hat Developer</a></li>
<li><a href="https://www.fosslinux.com/155038/scaling-reliable-infrastructure-with-immutable-linux-distributions-2026-admin-guide.htm">Immutable Linux Infrastructure Guide (2026 Guide) | FOSS Linux</a></li>
</ul>

]]></description>
</item>
<item>
<title>港川人</title>
<link>https://64p.org/notes/minatogawa-jin.html</link>
<guid isPermaLink="true">https://64p.org/notes/minatogawa-jin.html</guid>
<pubDate>Sat, 15 Aug 2026 16:01:00 +0900</pubDate>
<description><![CDATA[<h1>港川人</h1>

<p>沖縄県八重瀬町（旧・具志頭村）字長毛の港川遺跡で発見された、後期旧石器時代の化石人骨。日本列島で発見された全身骨格を持つ人骨としては白保竿根田原洞穴遺跡（27,000年前）に次ぐ古さ。</p>

<h2>発見の経緯</h2>

<ul>
<li>1967年、アマチュア考古学研究家の大山盛保が石灰岩の石切場でイノシシの化石を発掘</li>
<li>1968年1月、断片的な人骨を発見</li>
<li>1970年8月〜12月、東京大学の鈴木尚らのチームによる本格発掘調査で、4体分（男性1体・女性3体）の全身骨格が出土</li>
<li>1998年以降にも追加調査が実施されている</li>
</ul>


<p>人骨は「フィッシャー（fissure、裂か）」と呼ばれる石灰岩の割れ目の中から出土した。フィッシャーは鍾乳洞の形成過程でできる地質構造で、動物や人間の遺骸が自然に落ち込んで堆積・保存されやすい環境になっていた。</p>

<h2>年代</h2>

<p>伴出した炭化物・イノシシ遺骨の放射性炭素年代測定により、約1万8000年前〜2万2000年前（後期旧石器時代）のものとされる。</p>

<h2>身体的特徴</h2>

<ul>
<li>男性は身長約155cm、女性は約144cmと小柄</li>
<li>下半身は筋肉質で頑丈な一方、上半身は華奢</li>
<li>握力・咀嚼力が強かったことが骨格から読み取れる</li>
<li>骨内部には栄養不足による成長阻害の痕跡も見られる</li>
</ul>


<h2>起源説</h2>

<p>国立科学博物館などの研究では、港川人の顔立ちはオーストラリア先住民やニューギニアの集団に似ているとされ、東南アジア〜オーストラリアに広く分布していた集団に起源を持つ可能性が指摘されている。</p>

<p>一方、2021年のミトコンドリアDNA解析では、港川人は縄文人の直接の祖先ではなく、共通祖先から東南アジア付近で分岐した別系統の子孫であることが示唆された。</p>

<h2>出典</h2>

<ul>
<li><a href="https://ja.wikipedia.org/wiki/%E6%B8%AF%E5%B7%9D%E4%BA%BA">港川人 - Wikipedia</a></li>
<li><a href="https://palaeolithic.jp/sites/minatogawa/index.htm">港川遺跡</a></li>
<li><a href="https://www.town.yaese.lg.jp/docs/2016090100047/">「港川遺跡」町指定文化財に | 八重瀬町</a></li>
<li><a href="https://www.tabirai.net/sightseeing/column/0003665.aspx">八重瀬町立具志頭(グシカミ)歴史民俗資料館｜1万8千年前の港川人のことがよくわかる | たびらい</a></li>
<li><a href="https://www.okinawastory.jp/spot/20270901">港川遺跡・港川フィシャー | 沖縄観光情報WEBサイト おきなわ物語</a></li>
<li><a href="https://en.wikipedia.org/wiki/Minatogawa_Man">Minatogawa Man - Wikipedia</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/旧石器時代.html">#旧石器時代</a> <a class="note-tag" href="https://64p.org/notes/tags/沖縄.html">#沖縄</a> <a class="note-tag" href="https://64p.org/notes/tags/人類進化.html">#人類進化</a></p>
]]></description>
</item>
<item>
<title>大政奉還</title>
<link>https://64p.org/notes/taisei-hokan.html</link>
<guid isPermaLink="true">https://64p.org/notes/taisei-hokan.html</guid>
<pubDate>Sat, 15 Aug 2026 16:00:00 +0900</pubDate>
<description><![CDATA[<h1>大政奉還</h1>

<p>慶応3年10月14日（1867年11月9日）、<a href="https://64p.org/notes/tokugawa-yoshinobu.html">徳川慶喜</a>が政権を朝廷に返上した出来事。翌15日に勅許された。</p>

<h2>背景</h2>

<p>江戸時代を通じて「天皇が統治を将軍に委任している」とする大政委任論が広く受容されていたが、幕末に朝廷が独立した政治勢力として浮上し、幕府権力の正統性が揺らいでいた。薩摩・長州両藩が武力倒幕に傾く中、諸外国の介入を懸念する慶喜は、政権返上によって事態の打開を図った。</p>

<h2>土佐藩の建白と後藤象二郎</h2>

<p>大政奉還論を推進したのは土佐藩参政・後藤象二郎。薩摩藩の武力倒幕路線に対し、平和的な政体変革を構想した。1867年6月22日、土佐・薩摩両藩の間で「幕府が大政を奉還して権力を一元化し、新たに議事堂を設置して国是を決定すべき」とする薩土盟約が結ばれたが、山内容堂が将軍職廃止条項に反対して建白書から削除し、薩摩側の武力倒幕路線が進んだことで9月に盟約は解消された。なお坂本龍馬が後藤に示したとされる「船中八策」については、後世の創作である可能性も指摘されている。</p>

<h2>10月の経緯</h2>

<ul>
<li><strong>10月3日</strong> 山内容堂が大政奉還建白書を老中経由で慶喜に提出</li>
<li><strong>10月13日</strong> 二条城に諸藩重臣約50名が集合し、土佐・薩摩・芸州藩らが慶喜に拝謁。大政奉還の意向が公的に表明された</li>
<li><strong>10月14日</strong> 慶喜が「大政奉還上表」を朝廷に提出</li>
<li><strong>10月15日</strong> 朝廷が受理・勅許</li>
</ul>


<h2>慶喜による実権維持の狙い</h2>

<p>大政奉還の上表には将軍職辞任への言及はなく、慶喜は武家の棟梁としての地位を失っていなかった。10月22日には諸侯会同召集までの条件付きで緊急政務が引き続き幕府に委任され、将軍職も従来通りとされた。10月24日に慶喜は将軍職辞職願を提出したものの、幕府が正式に廃止されるのは同年12月9日の王政復古の大号令まで待たねばならなかった。</p>

<h2>その後</h2>

<p>大政奉還によって慶喜が構想した公議政体は実現せず、武力倒幕派の薩摩藩・大久保利通や西郷隆盛らは警戒を解かなかった。最終的に王政復古の大号令で幕府は廃止され、慶喜は新政府から排除。翌1868年1月の鳥羽・伏見の戦いへとつながっていく。</p>

<h2>出典</h2>

<ul>
<li><a href="https://ja.wikipedia.org/wiki/%E5%A4%A7%E6%94%BF%E5%A5%89%E9%82%84">大政奉還 - Wikipedia</a></li>
<li><a href="https://www.touken-world.jp/tips/11127/">大政奉還／徳川慶喜｜ホームメイト</a></li>
<li><a href="https://www.kodomo.go.jp/yareki/theme/theme_05.html">大政奉還 | テーマ解説 | 中高生のための幕末・明治の日本の歴史事典</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/幕末.html">#幕末</a></p>
]]></description>
</item>
<item>
<title>渋沢栄一</title>
<link>https://64p.org/notes/shibusawa-eiichi.html</link>
<guid isPermaLink="true">https://64p.org/notes/shibusawa-eiichi.html</guid>
<pubDate>Sat, 15 Aug 2026 16:00:00 +0900</pubDate>
<description><![CDATA[<h1>渋沢栄一</h1>

<p>「日本資本主義の父」と呼ばれる実業家。1840年（天保11年）、現在の埼玉県深谷市の豪農家に生まれ、1931年（昭和6年）没。</p>

<h2>尊皇攘夷から幕臣への転身</h2>

<p>幼少期から漢籍を学び、家業の藍玉製造販売で商業的才覚を磨いた。青年期には尊皇攘夷思想に傾倒し、従兄弟らと高崎城乗っ取り・横浜焼き討ちを計画するが中止。その後、一橋家臣・平岡円四郎の推薦で<a href="https://64p.org/notes/tokugawa-yoshinobu.html">一橋慶喜</a>に仕官し、篤太夫と名乗り士分となった。</p>

<h2>パリ万博使節団</h2>

<p>1866年に慶喜が将軍となったことで幕臣となった栄一は、翌1867年、将軍名代・徳川昭武に随従してパリ万国博覧会に派遣された。ヨーロッパの産業制度・人間平等主義に触れたこの経験が、後の実業家としての思想の土台になったとされる。渡航中に明治維新が起き、帰国時には仕えていた徳川幕府は消滅していた。</p>

<h2>大蔵省官吏から実業界へ</h2>

<p>帰国後は静岡藩で商法会議所を設立。1869年に民部省租税正として出仕し、度量衡や国立銀行条例の制定に携わった。1873年、予算編成をめぐる省内対立で大蔵省を辞職し、34歳で実業界に転身した。</p>

<h2>第一国立銀行と約500社への関与</h2>

<p>大蔵省辞職の1か月後、日本初の民間銀行・第一国立銀行（現・みずほ銀行）の総監役に就任。以後、東京株式取引所、東京瓦斯、東京海上保険、抄紙会社（王子ホールディングス）、45の鉄道会社など、生涯で約500社の設立・経営に関わった。</p>

<h2>社会事業と思想</h2>

<p>1874年から東京養育院の運営に携わり福祉事業に注力したほか、商法講習所（一橋大学）など教育機関の設立も支援した。著書『論語と算盤』では、経済発展と道徳は両立すべきとする「道徳経済合一説」を提唱している。</p>

<h2>徳川慶喜との関係</h2>

<p>静岡で謹慎中の慶喜と面会し「これからはお前の道を行きなさい」との言葉を受けたと伝わる。旧主への敬慕は生涯続き、大正7年（1918年）には慶喜の事績をまとめた『徳川慶喜公傳』を刊行した。</p>

<h2>出典</h2>

<ul>
<li><a href="https://ja.wikipedia.org/wiki/%E6%B8%8B%E6%B2%A2%E6%A0%84%E4%B8%80">渋沢栄一 - Wikipedia</a></li>
<li><a href="https://serai.jp/hobby/1191422">新紙幣発行記念！ 日本資本主義の父「渋沢栄一」の生涯と功績を徹底解説</a></li>
<li><a href="https://news.mynavi.jp/article/20201201-1537542/">『青天を衝け』主人公・渋沢栄一の生涯</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/幕末.html">#幕末</a></p>
]]></description>
</item>
<item>
<title>徳川慶喜</title>
<link>https://64p.org/notes/tokugawa-yoshinobu.html</link>
<guid isPermaLink="true">https://64p.org/notes/tokugawa-yoshinobu.html</guid>
<pubDate>Sat, 15 Aug 2026 15:49:00 +0900</pubDate>
<description><![CDATA[<h1>徳川慶喜</h1>

<p>江戸幕府第15代将軍にして最後の将軍。1837年（天保8年）〜1913年（大正2年）、77歳没。</p>

<h2>将軍就任まで</h2>

<p>水戸藩主・徳川斉昭の七男として江戸小石川に生まれる。母は皇族出身の吉子女王。幼少期に水戸へ移り弘道館で学問・武術を修め、1847年に一橋家を相続。</p>

<p>将軍継嗣問題では斉昭や島津斉彬ら一橋派に推されたが、井伊直弼の大老就任により紀州系の徳川家茂に敗れ、安政の大獄で隠居謹慎処分を受けた。その後、将軍後見職・禁裏御守衛総督として幕政・朝廷折衝にあたり、禁門の変では自ら戦闘に加わった唯一の将軍でもある。</p>

<p>1866年、家茂の死去を受けて将軍職就任を固辞していたが、同年末にようやく受諾。在職中一度も江戸城に入城しなかった唯一の将軍という異色の経歴を持つ。</p>

<h2>大政奉還から鳥羽伏見の戦いへ</h2>

<p>1867年10月14日、後藤象二郎の建言を受け<a href="https://64p.org/notes/taisei-hokan.html">大政奉還</a>を朝廷に奏上（翌日勅許）。この時点では実質的な政権継続を狙っていたとされる。</p>

<p>しかし同年12月の王政復古の大号令で新政府から排除され、1868年1月の鳥羽・伏見の戦いで敗北。大坂城を脱出して江戸に逃げ帰り、朝敵として追討令を受け官位を剥奪された。</p>

<h2>謹慎から晩年</h2>

<p>寛永寺・水戸を経て駿府（現・静岡）で謹慎生活を送った後、静岡に28年間居住。狩猟・囲碁・写真・油絵・自転車など多趣味の隠居生活を送り、この間に10男11女をもうけている。</p>

<p>1897年に東京へ移住し、1902年に公爵を授けられ徳川慶喜家を創設、貴族院議員も務めた。</p>

<h2>評価</h2>

<p><a href="https://64p.org/notes/shibusawa-eiichi.html">渋沢栄一</a>は大政奉還・江戸城無血開城によって内戦（「第二の関ヶ原」）を回避した功績を高く評価する一方、西郷隆盛は決断力の欠如を指摘するなど、当時から評価が分かれた人物。近年は内戦回避という歴史的功績が再評価される傾向にある。</p>

<h2>出典</h2>

<ul>
<li><a href="https://ja.wikipedia.org/wiki/%E5%BE%B3%E5%B7%9D%E6%85%B6%E5%96%9C">徳川慶喜 - Wikipedia</a></li>
<li><a href="https://www.meihaku.jp/15thshogun-tokugawayoshinobu/tokugawa-yoshinobu/">第15代将軍／徳川慶喜の生涯（最後の将軍）</a></li>
<li><a href="https://www.touken-world.jp/tips/65058/">第15代最後の将軍／徳川慶喜（よしのぶ）｜ホームメイト</a></li>
</ul>


<p><a class="note-tag" href="https://64p.org/notes/tags/幕末.html">#幕末</a></p>
]]></description>
</item>
</channel>
</rss>
