第2章: 計算インフラストラクチャ

2.0 この章で学ぶこと

この章では、バイオインフォマティクス解析を「手元で動いたコマンド」から、再現可能で監査しやすい計算基盤へ移すための考え方を扱う。対象は、FASTQ、BAM/CRAM、VCF、count matrix、metadata などの研究・教育用途データを、HPC、クラウド、コンテナ、workflow / ワークフロー、CI で扱う IT 技術者である。

この章を読み終えた時点で、次のことを説明できることを目標にする。

  • 解析の入力データ量、I/O、CPU、メモリ、GPU、ストレージを見積もる観点。
  • ローカルPC、HPC、クラウド、コンテナ、ジョブスケジューラの使い分け。
  • Docker、Apptainer/Singularity、conda/mamba、Bioconda、uv の役割分担。
  • Nextflow、Snakemake、CWL、WDL を選ぶときの比較軸。
  • ログ、バージョン、checksum、provenance / 来歴、費用、セキュリティを記録する理由。
  • 解析が再現できることと、研究結論が妥当であることは別問題であるという境界。

2.1 なぜ IT 技術者に必要か

バイオインフォマティクスでは、同じコードでも入力データ、参照配列、annotation、ツールバージョン、スレッド数、メモリ、I/O、乱数、ジョブスケジューラの制限が変わると、実行時間、失敗モード、出力の細部が変わる。IT 技術者は、単に「コマンドを並べる」のではなく、解析がどの環境で、どの入力から、どの出力を生成したかを追跡できるように設計する必要がある。

Webアプリ開発と異なる点は、主に次の5点である。

観点 Webアプリでよく見る前提 バイオインフォマティクスで追加される前提
入力 API request や業務DB FASTQ/BAM/VCF など巨大ファイル、参照FASTA、annotation、metadata
ボトルネック CPU、DB、外部API ストレージI/O、圧縮/展開、network transfer、scratch容量、メモリピーク
実行単位 常時稼働サービス batch job、workflow、長時間ジョブ、再実行、途中再開
再現性 deploy artifact と migration container、environment lock、reference version、checksum、provenance
責任境界 SLA、監査、権限 研究用途/教育用途、個人情報、同意、臨床判断に使わない境界

2.2 前提知識

この章では、次の前提を置く。

  • Unix/Linux の基本操作、path、標準入出力、環境変数を理解している。
  • Python または R の仮想環境・package 管理を触ったことがある。
  • FASTQ、BAM/CRAM、VCF、count matrix が大きなファイルになり得ることを第1章で確認済みである。
  • Docker や GitHub Actions の概念を聞いたことがある。
  • 個人ゲノムデータや医療データを扱う場合は、第11章と第12章の責任境界を先に確認する。

ここで示す設定値や構成は、教育用の考え方を示す。実運用では、所属機関、クラウド契約、HPC利用規程、データ利用条件、セキュリティ要件を優先する。

2.3 基本概念

計算資源を分解して見る

資源 確認すること よくある失敗
CPU thread数、core数、並列化できる単位 threadを増やしてもI/O待ちで速くならない
メモリ peak memory、sort/index処理、joint calling 小さなテストでは通るが本番サンプルでOOMになる
GPU 対応ツール、driver/CUDA、queue制限 GPU対応でない処理をGPUに載せようとする
ストレージ input/output/scratch、圧縮ファイル、中間ファイル scratch不足、不要な中間ファイル放置、inode不足
ネットワーク public DB取得、object storage、転送再開 大容量取得の途中失敗、利用規約やrate limitの見落とし
ログ command、version、exit code、resource usage 成功/失敗理由が後から追跡できない

実行場所を選ぶ

実行場所 向く用途 注意点
ローカルPC 学習、tiny data、設定確認 本番データへ拡張しない。個人情報・制限データを置かない
研究室サーバ 小規模〜中規模の反復解析 利用者間の競合、バックアップ、権限、更新手順
共同利用HPC 大規模batch、サンプル並列、長時間ジョブ ジョブスケジューラ、module、quota、scratch、利用規程
クラウド 弾力的な計算、object storage、共有ワークスペース 費用、リージョン、データ持ち出し、IAM、監査ログ
CI tiny data smoke test、lint、build 本番解析ではなく、再現入口と破壊的変更検知に使う

SHIROKANE などの共同利用HPCは、バイオインフォマティクス実務で重要な選択肢である。ただし、ノード構成、キュー、利用条件、性能値、民間利用可否、保存期間は更新され得るため、本書では固定の性能値を本文に残さない。利用時は公式情報、所属機関の案内、ジョブログ、利用申請条件を確認し、確認日とともに記録する。

2.4 入力データと出力データ

計算基盤の設計では、解析対象のデータだけでなく、参照データ、設定、ログ、成果物を含めて管理する。

区分 記録する項目
入力データ FASTQ、BAM/CRAM、VCF、count matrix、metadata accession、取得日、checksum、利用条件、サンプル数、サイズ
参照データ reference FASTA、GTF/GFF、index、known sites version、build、checksum、作成コマンド、対応ツール
実行環境 container image、conda env、module、workflow version image digest、lock file、tool version、executor、profile
中間ファイル trimmed FASTQ、sorted BAM、index、QC表 保存/削除方針、再生成可否、容量
出力データ VCF、発現量表、QC report、HTML report 出力仕様、生成条件、解釈上の制限
ログ command log、resource log、workflow trace exit code、処理時間、CPU/memory、失敗時の原因

2.5 標準的なワークフロー

環境の層を分ける

代表例 役割
OS / system Ubuntu、Rocky Linux、HPC module kernel、driver、filesystem、schedulerとの接続
package manager conda/mamba、Bioconda、uv、pip、R/Bioconductor ツール・ライブラリの導入とlock
container Docker、Apptainer/Singularity 実行環境の移植性、CI/HPC/クラウド間の差分削減
workflow Nextflow、Snakemake、CWL、WDL 入力、依存関係、再実行、ログ、並列実行の管理
report MultiQC、HTML report、Markdown/Quarto QCと実行結果の共有、レビュー、監査

Docker は開発・CI・クラウドで扱いやすい。一方、HPC では権限やセキュリティ上の理由で Apptainer/Singularity が使われることがある。conda/mamba、Bioconda、uv は、container の内外で依存関係を固定するために使う。どれか1つで全てを解決するのではなく、実行場所に合わせて層を組み合わせる。

workflow engine の比較

観点 Nextflow Snakemake CWL WDL
主な使いどころ 大規模pipeline、HPC/クラウド、nf-core 研究室・チーム内のDAG、Python親和性 仕様に沿ったツール記述・共有 task/workflow 単位の標準的記述
強み profile、resume、container、community pipeline ルール単位で理解しやすい、Pythonで拡張しやすい 実行エンジンをまたいだ相互運用性 scatter/gatherなどを明示しやすい
注意点 Nextflow version、profile、executor差を固定する rerun条件、conda/container、wildcard設計を固定する CWL versionと実装差を記録する runtime、入力JSON、実行エンジンを記録する
本書での位置づけ nf-core候補を先に確認 小規模例・概念理解 比較表と仕様理解 比較表と仕様理解

既存の公開ワークフローがある領域では、手元で独自pipelineを作る前に nf-core などの community-maintained pipeline を候補に入れる。導入時は pipeline release、test profile、container、入力サンプルシート、出力仕様、ライセンス、引用方法を確認する。

🔁 疑似コード(実行不可: workflow 設計メモのひな形)

workflow_name: rnaseq_qc_example
purpose: RNA-seq のQCと定量前確認
input:
  - samplesheet.csv
  - FASTQ files
reference:
  - genome build
  - annotation release
runtime:
  - workflow engine and version
  - profile: local / hpc / cloud
  - container image digest
outputs:
  - QC report
  - tool logs
  - run summary
re-run policy:
  - resume allowed when inputs and reference checksums match
  - rerun required when annotation or container digest changes

2.6 実務上の落とし穴

  • I/Oが律速になる: CPUを増やしても、圧縮FASTQの読み書き、BAM sort、object storageとの転送が詰まることがある。
  • scratch容量を見積もらない: 中間ファイルは入力より大きくなることがある。削除方針と再生成可否を事前に決める。
  • versionだけでなくdigestを記録しない: latest tag や環境の自動更新は再現性を壊す。container digest、lock file、reference checksumを残す。
  • HPCとクラウドの権限モデルを混同する: HPCはqueue・quota・shared filesystem、クラウドはIAM・region・object storage・費用監査が中心になる。
  • 費用をログに残さない: クラウドでは計算時間だけでなく、storage、egress、snapshot、idle resourceが費用になる。
  • 個人情報・制限データを検証用に持ち出す: smoke test は公開tiny dataで設計し、患者個人データや非公開医療データを前提にしない。
  • 臨床用の検証と研究用の再現性を混同する: CIで解析手順が動くことは、臨床判断へ使えることを意味しない。

2.7 小さな実例

ここでは、公開tiny dataを使った variant calling や RNA-seq の一部処理を想定し、実行前に作る要件表の例を示す。実データや施設環境に合わせる前の、設計レビュー用メモとして扱う。

項目 記入例 確認方法
目的 tiny data で workflow の入口、ログ、出力名を確認する PRレビューで目的が本番解析と混同されていないか確認
入力 公開FASTQ 2本、参照FASTAの一部、samplesheet accession、checksum、取得日を記録
実行環境 container + local profile image digest、workflow version、CPU/memoryを記録
想定資源 2 CPU、4 GB RAM、10 GB scratch、10分以内 実行ログとworkflow traceで確認
出力 QC report、summary table、終了ログ 期待ファイル一覧とexit codeを確認
失敗時 file not found、index不一致、memory不足、permission ログ、checksum、path、container digestを確認
限界 tiny data は性能・生物学的結論の検証には使わない READMEやPR本文に明記

🧪 概念例(実行不可: コマンドではなく確認ログの形を示す断片)

run_id: 2026-05-13-ch2-smoke-design
input_checksum: <sha256 of tiny input>
reference_checksum: <sha256 of reference subset>
container_digest: <image digest>
workflow_version: <release or commit>
executor: local
resources: cpu=2, memory=4GB, scratch=10GB
result: completed / failed
elapsed_time: <measured>
notes: tiny data; not for biological interpretation

2.8 結果の読み方

計算基盤の結果は、処理時間だけで評価しない。最低限、次の観点を一緒に読む。

観点 良い読み方 悪い読み方
処理時間 入力サイズ、CPU、I/O、queue待ちとセットで比較する 秒数だけを別環境と比較する
成功ログ exit code、期待ファイル、警告、欠損を確認する HTML reportが出たので成功とみなす
QC report 入力品質、adapter、mapping率、重複率などを章ごとに解釈する 固定閾値だけで機械的に合否を決める
費用 compute、storage、egress、idleを分ける インスタンス単価だけを見る
再現性 version、checksum、container digest、workflow commitを照合する 「同じコマンドなので同じ」とみなす

2.9 限界と注意点

  • この章は、計算基盤の設計・記録・レビューの考え方を扱う。施設固有のHPC設定、クラウド契約、セキュリティ審査、臨床品質管理の代替にはならない。
  • SHIROKANE 等の固有HPC事例は、公式情報が更新される。本文中に古い性能値や利用条件を固定せず、実際の利用前に確認日付きで記録する。
  • workflow engine や container の採用は、解析の妥当性を保証しない。研究デザイン、統計、参照データ、サンプル品質、専門家レビューは別途必要である。
  • 個人ゲノムデータ、医療データ、アクセス制限データを扱う場合は、データの持ち出し、暗号化、アクセス制御、監査ログ、同意、研究倫理審査を第11章・第12章の範囲で確認する。

2.10 演習

  1. 自分が扱う予定の解析について、入力データ、参照データ、実行環境、出力、ログ、保存方針を表にする。
  2. ローカル、HPC、クラウドの3案で、CPU、メモリ、storage、network、費用、監査ログの違いを比較する。
  3. workflow engine を1つ選び、選定理由、採用しなかった選択肢、version固定方法、container方針を書く。
  4. tiny data smoke test の成功条件を、期待ファイル、exit code、実行時間、ログ、checksum の観点で定義する。
  5. 制限データを使わずに CI で確認できる項目と、人間のレビューが必要な項目を分ける。

2.11 参考資料

2.12 2026年時点の更新メモ

  • 第2章では、古い固定性能値やSHIROKANEの断定的な実績説明を本文から外し、共同利用HPCの利用条件・性能・保存期間は利用時に公式情報で確認する方針へ変更した。
  • 解析環境は、Dockerだけでなく Apptainer/Singularity、conda/mamba、Bioconda、uv、GitHub Actions、container digest、lock file を組み合わせて記録する前提にした。
  • workflow / ワークフローは、Nextflow、Snakemake、CWL、WDL の比較軸を示し、既存の nf-core など community-maintained pipeline を候補に入れる方針にした。
  • CIは本番解析ではなく、公開tiny dataによる smoke test、build、lint、navigation、コードラベル検査の入口として扱う。
  • 更新根拠は 2026年版 source audit の workflow 行と、付録A・付録Eの確認日付き説明へ集約する(確認日: 2026-05-12)。

最小入出力(期待成果物/期待ログ)

  • 入力: 解析対象データの種類とサイズ、参照データ、利用可能な計算資源、実行場所の候補、データ利用条件。
  • 出力(期待成果物): 実行環境の要件表、workflow engine / container / package manager の選定理由、ログ・checksum・provenance の記録方針、tiny data smoke test の成功条件。
  • 期待ログ(例): 実行ID、入力checksum、参照checksum、container digest、tool/workflow version、CPU/memory/scratch、処理時間、exit code、失敗時の確認ポイント。

前へ: 第1章 基礎概念 目次 次へ: 第3章 データ構造とアルゴリズム