1〜100 の合計 = 5050
再現性と自動化の仕組み
Quarto には、コード実行を細かく制御するオプションがあります。うまく使うと「再現性のある記事」を「速いビルド」で維持できます。
コードブロック単位のオプション(#| コメント)
コードブロックの先頭に #| で始まる YAML 風コメントを書くと、そのブロックだけ挙動を変えられます。
| オプション | 意味 |
|---|---|
#| echo: false |
コードを表示せず結果だけ表示 |
#| eval: false |
実行せずコードだけ表示(参考コード用) |
#| warning: false |
警告メッセージを非表示 |
#| error: false |
エラーがあってもビルドを続行 |
#| cache: true |
結果をキャッシュして再実行を省略 |
#| fig-cap / #| fig-alt |
図のキャプション・代替テキスト |
プロジェクト単位の設定(_quarto.yml)
この CMS では次のように設定しています。
execute:
freeze: auto
execute-dir: projectfreeze: auto: 原稿(.qmd)が変わっていなければ、前回の計算結果(_freeze/)を再利用するexecute-dir: project: 実行時の作業ディレクトリをプロジェクト直下に統一(ファイルパスの混乱を防ぐ)
freeze と cache の違い
| 仕組み | 対象 | 効果 |
|---|---|---|
cache: true |
コードブロック単位 | 同じ入力なら再実行しない |
freeze: auto |
記事(ファイル)単位 | 原稿が変わらなければ計算自体をスキップ |
つまり 「変わっていない記事は再計算しない」ことで、CMS で記事を追加したときのビルド時間を抑えています。
再現性のポイント
- コードに乱数を使うときは
seedを固定する - 依存バージョンは
requirements.txt等で固定する - 外部データは URL を明記する(コードでダウンロード)
import numpy as np
np.random.seed(42)
print("固定 seed なら毎回同じ結果:", np.random.randint(0, 100, 3))固定 seed なら毎回同じ結果: [51 92 14]
まとめ
#|オプションで「実行する/しない」「表示する/しない」を細かく制御freeze: autoが「変わらない記事の再計算」を省略してビルドを高速化- コード実行は「再現性」と「自動化」の両方を手に入れるための機能