# ヘルメティックビルド Navigation: [[index]] | [[overview]] ## 定義 ヘルメティックビルド(hermetic build)とは、ビルドマシンにインストールされたライブラリや他のソフトウェアの状態から独立し、既知バージョンのビルドツール・依存ライブラリのみに基づいて成果物を生成する自己完結的なビルド方式である。同一リビジョンを異なるマシンでビルドしても同一の結果を得られることを目的とし、ビルドプロセスはビルド環境の外部にあるサービスに依存してはならない([[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]])。Google の自動リリースシステム [[Rapid]] とビルドツール [[Blaze]] は、この原則のもとでリリースの再現性・一貫性を担保する設計になっている。 ## 横断的知見 - **「ビルドのヘルメティシティ」と「テストのヘルメティシティ」は同じ語を共有しながら、到達可能性が非対称である**: [[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]] は、ビルドについては既知バージョンのツール・依存関係のみを用いることで完全な再現性と隔離を実現できると述べる一方、[[@2016__OReilly__SRE Book - Chapter 17 Testing for Reliability]] は、フロントエンドとバックエンドが独立したリリースサイクルを持ち段階的ロールアウトが行われる環境では、テスト環境を本番の変化から完全に隔離する「ハーメティックテスト」は実質的に不可能だと述べる。同じ書籍内の隣接する2章でありながら、ビルド段階では隔離が達成可能な目標として語られ、テスト段階では実質的に達成不可能な理想として語られており、「隔離」が有効に機能する範囲がビルド成果物の生成(静的な入力からの決定的な出力)に限られ、実行時の結合(動的に変化する複数コンポーネントの組み合わせ)には及ばないことを示唆する。(Source: [[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]], [[@2016__OReilly__SRE Book - Chapter 17 Testing for Reliability]]) - **隔離されたビルド環境を用意しても、依存関係由来の失敗は残り続ける**: [[Open Build Service]] は、マルチアーキテクチャビルド・隔離ビルド環境・再現可能なビルドを提供する分散ビルド・リリースプラットフォームであり、[[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]] が述べるヘルメティックビルドの思想(既知バージョンの依存関係のみに基づく自己完結的なビルド)と目的を共有する。しかし Open Build Service の運用実態では、依存不足・バージョン衝突・ビルドスクリプトのエラーによるビルド失敗が依然として一般的だと報告されている。SRE Book はヘルメティックビルドを主にリリースの再現性・一貫性という観点(同じリビジョンなら同じ結果になる)から論じるのに対し、Open Build Service の事例は、隔離環境を用意すること自体は依存関係の解決失敗という別種の問題を解消しないことを示しており、両者を突き合わせると「隔離」と「依存解決の健全性」が別軸の課題であることが見えてくる。(Source: [[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]], [[Open Build Service]]) - **「再現性は正しさの契約である」という言い切りが、CI/CDオブザーバビリティの文脈でヘルメティックビルドの原則を補強する**: [[@2026__OReilly__Observability Engineering 2E - Chapter 18 Observability for CI-CD Pipelines]] は、既知ダイジェストのコンテナイメージを取得すれば常に同一バイト列が得られるという性質を「実装の詳細ではなく正しさの契約(correctness contract)」と呼び、入力が安定し出力が決定的であれば結果を安全にキャッシュできるという原則が CI システム全体に繰り返し現れると述べる。これは SRE Book 第8章が述べる「既知バージョンのツール・依存関係のみを用いることで完全な再現性と隔離を実現できる」というヘルメティックビルドの定義と同じ主張を、10年後の別書籍が異なる語彙(correctness contract)で独立に補強した形になる。両者を突き合わせると、ヘルメティックビルドの価値は「再現性そのもの」ではなく「再現性が保証するキャッシュ安全性」にあることが明確になる——SRE Book はリリースの一貫性という観点から、Observability Engineering 2E はビルド高速化(キャッシュによるインクリメンタリティ)という観点から、同じ性質に別の角度で光を当てている。(Source: [[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]], [[@2026__OReilly__Observability Engineering 2E - Chapter 18 Observability for CI-CD Pipelines]]) ## 未解決の問い - CI/CDオブザーバビリティ([[CI-CDオブザーバビリティ|CI/CDオブザーバビリティ]])が扱うキャッシュ安全性(同一入力→同一出力→安全にキャッシュ可能)は、ヘルメティックビルドが前提とする「既知バージョンの依存関係のみに基づく隔離」とどこまで同一の条件か、それとも別の(より弱い)条件で成立しうるか。 - ハーメティックテストが実質的に不可能だとすれば、ヘルメティックビルドの再現性の恩恵を実行時の結合テストにどこまで及ぼせるか。SRE Book 第8章・第17章はこの橋渡しを明示的には論じていない。 - 隔離されたビルド環境(Open Build Service 等)における依存関係由来の失敗を、ヘルメティックビルドの原則(既知バージョンの依存関係のみを用いる)でどこまで防げるか。両ソースの記述からは、依存関係のバージョン固定がどの程度徹底されていれば失敗を防げるかは判断できない。 - Rapid・Blaze のようなヘルメティックビルドを前提とする社内システムと、Open Build Service のようなオープンソースの分散ビルドプラットフォームとで、ヘルメティシティを担保する実装機構(依存解決・環境スナップショット等)にどのような設計上の違いがあるか。 ## 関連 - ソース: [[@2016__OReilly__SRE Book - Chapter 8 Release Engineering]] / [[@2016__OReilly__SRE Book - Chapter 17 Testing for Reliability]] / [[@2026__OReilly__Observability Engineering 2E - Chapter 18 Observability for CI-CD Pipelines]] - 関連実体: [[Rapid]] / [[Blaze]] / [[Open Build Service]] - 関連概念: [[CI-CDオブザーバビリティ|CI/CDオブザーバビリティ]] ## 出典 - Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Murphy (eds.), *Site Reliability Engineering*, O'Reilly, 2016, Chapter 8 (Written by Dinah McNutt), Chapter 17. - Charity Majors, Liz Fong-Jones, George Miranda, with Austin Parker(Chapter 18執筆: Hugo Santos, Liz Fong-Jones), *Observability Engineering*, 2nd Edition, O'Reilly Media, 2026, Chapter 18.