Quarto のメリット③:再現性とビルド高速化(freeze / cache / execute オプション)

execute オプションの使い分けと、freeze・cache による再現性と高速化の仕組みを解説します。
blog
Published

August 2, 2026

再現性と自動化の仕組み

Quarto には、コード実行を細かく制御するオプションがあります。うまく使うと「再現性のある記事」を「速いビルド」で維持できます。

コードブロック単位のオプション(#| コメント)

コードブロックの先頭に #| で始まる YAML 風コメントを書くと、そのブロックだけ挙動を変えられます。

オプション 意味
#| echo: false コードを表示せず結果だけ表示
#| eval: false 実行せずコードだけ表示(参考コード用)
#| warning: false 警告メッセージを非表示
#| error: false エラーがあってもビルドを続行
#| cache: true 結果をキャッシュして再実行を省略
#| fig-cap / #| fig-alt 図のキャプション・代替テキスト
1〜100 の合計 = 5050

プロジェクト単位の設定(_quarto.yml

この CMS では次のように設定しています。

execute:
  freeze: auto
  execute-dir: project
  • freeze: auto: 原稿(.qmd)が変わっていなければ、前回の計算結果(_freeze/)を再利用する
  • execute-dir: project: 実行時の作業ディレクトリをプロジェクト直下に統一(ファイルパスの混乱を防ぐ)

freeze と cache の違い

仕組み 対象 効果
cache: true コードブロック単位 同じ入力なら再実行しない
freeze: auto 記事(ファイル)単位 原稿が変わらなければ計算自体をスキップ

つまり 「変わっていない記事は再計算しない」ことで、CMS で記事を追加したときのビルド時間を抑えています。

再現性のポイント

  1. コードに乱数を使うときは seed を固定する
  2. 依存バージョンは requirements.txt 等で固定する
  3. 外部データは URL を明記する(コードでダウンロード)
import numpy as np

np.random.seed(42)
print("固定 seed なら毎回同じ結果:", np.random.randint(0, 100, 3))
固定 seed なら毎回同じ結果: [51 92 14]

まとめ

  • #| オプションで「実行する/しない」「表示する/しない」を細かく制御
  • freeze: auto が「変わらない記事の再計算」を省略してビルドを高速化
  • コード実行は「再現性」と「自動化」の両方を手に入れるための機能