lab / decisions
決定記録 — 何を決めて、何を却下したか
設計の分かれ道で選んだ案と、選ばなかった案とその理由。あとから読む人が同じ検討を繰り返さないための記録です。
設計は「選んだ案」だけ見ても再現できません。却下した案と、却下した理由が残っていないと、同じ検討を何度も繰り返すことになります。ここには両方を並べます。
状態は 採用 / 却下 / 保留。日付は決めた日です。
全体の方針
| # | 論点 | 決定 | 却下した案と理由 |
|---|---|---|---|
| D-01 | 規制対応版を別製品にするか | 採用: 同じリポジトリのまま、環境変数ひとつ(COMPLIANCE_MODE)で切り替える | 別リポジトリ/別エディション/有償版 → 却下。1人で維持しているので、コードを分岐させた瞬間に片方が腐る |
| D-02 | 規制モードの既定 | 採用: オフ。オフのときは既存の挙動を1文字も変えない(回帰テストで固定) | 既定オン → 却下。いま使っている人の使い勝手を変えてしまう |
| D-03 | 「適合」と名乗るか | 採用: 名乗らない。「技術要件に対応する機能」までしか書かない | 「Part 11 適合」「GMP 対応」と書く → 却下。ソフト単体では成立せず、虚偽になる |
| D-04 | バリデーション代行・有償の規制対応支援 | 採用: やらない | 有償版・代行 → 却下。無料 OSS のまま、保守契約なしという立て付けを崩さない |
| D-05 | 製品の看板を「製薬向け」に変えるか | 採用: 変えない。 規制モードは必要な人だけ開ける引き出しにする | 旗の架け替え → 却下。主語は「大学・小規模ラボ・開発部門の日常記録」のまま |
| D-06 | 開発の過程を公開するか | 採用: 公開する(このラボ)。 決めたことも迷っていることも出す | 完成してから発表 → 却下。同じことを調べている人にとって、途中の判断こそ価値がある |
P0 — 監査証跡
| # | 論点 | 決定 | 却下した案と理由 |
|---|---|---|---|
| D-10 | 監査証跡を規制モード限定にするか | 採用: 常時オン | モード連動 → 却下。オフにできる監査証跡は監査証跡ではない(条文の「独立に記録」に反する) |
| D-11 | 記録の粒度 | 採用: 変更された項目の変更前後+本文はハッシュと長さだけ。 本文の実体は改訂履歴のスナップショットへ | 本文を監査証跡にも二重保存 → 却下。自動保存のたびに本文(最大200KB)が積み上がる |
| D-12 | 改ざん検知の方法 | 採用: ハッシュ連鎖+テナント内の連番。 検証コマンドを同梱し、導入者が自分で回せるようにする | データベースのトリガだけ → 却下。データベースを直接触れる人はトリガを外せる。ただし連鎖にも限界があり、コードとデータの両方を握れる人は作り直せる。この限界は隠さず書く |
| D-13 | 業務の書き込みと監査の記録の順序 | 採用: 同じトランザクションで一緒に書く。 監査が書けなければ業務も失敗する | 業務の成功後に別途記録 → 却下。途中で落ちると「監査証跡の無い変更」が残る |
| D-14 | 同時書き込みの競合 | 採用: 連番の一意制約で後発を失敗させ、1回だけやり直す | 競合を無視して採番 → 却下。連番が飛ぶ・重複すると、欠番による改ざん検知が効かなくなる |
| D-15 | 時刻 | 採用: サーバ側の時刻・UTC・ISO 8601。 表示のときに現地時間へ直す | 端末の時刻を使う → 却下。端末の時計で偽装できる |
| D-16 | 変更理由(reason) | 採用: 列は最初から持つが、入力は任意。 必須化は規制モード(P1)。形式は選択式+自由記述(2026-09-22 に確定・D-46) | 最初から必須 → 却下。いま使っている人の手を止める(D-02 と同じ理由)。自由記述だけ → 却下(下記 D-46) |
| D-17 | ログインの記録 | 採用: 成功・拒否・エラー・ログアウトを記録する | 成功だけ → 却下。不正な使用の試みを検出できない |
| D-18 | 誰が監査証跡を読めるか | 採用: 全体の一覧はオーナーのみ。ページ単位の履歴は、そのページが見える人 | 全員に全体ログ → 却下。招待・除名・権限変更の事象が、閲覧範囲の外の人に見えてしまう |
| D-19 | 記録する操作の範囲 | 採用: 全ての書き込み操作(試薬・在庫・機器の台帳も含む) | 「GMP に関係するものだけ」 → 却下。何が関係するかはシステムには判定できない。全部記録し、絞るのは読む側 |
| D-20 | 過去のデータの扱い | 採用: 適用した時点から連番1で開始。遡らない | 過去の履歴から証跡を合成 → 却下。「その時にコンピュータが生成した」記録ではなくなる |
P1 — 電子署名・承認(着手前の暫定)
| # | 論点 | 決定 | 却下した案と理由 |
|---|---|---|---|
| D-30 | ページの状態をどう持つか | 採用: 既存の状態列はそのままに、審査状態の列を足す | 別テーブルで持つ → 却下。現在の状態を求めるたびに結合が要り、一覧・検索・印刷の全経路に手が入る |
| D-31 | 署名の第二要素 | 採用: 認証基盤(Google)の多要素認証を前提とし、それを文書に明記する | 独自の暗証番号を持つ → 却下。認証情報を自前で預かることになり、個人が運営する OSS が背負うには重い |
| D-32 | 署名するときの本人確認 | 採用: 署名の直前に認証をやり直させ、一定時間内の認証を要求する | ログイン済みなら署名可 → 却下。30日有効のセッションのままでは「その人が署名した」と言えない |
| D-33 | 作成者と承認者 | 採用: 自分の記録は自分で承認できない | 権限があれば誰でも承認可 → 却下。第二者確認の意味が無くなる |
| D-34 | 無操作時の自動ログアウト | 保留(P1 で暫定実装): セッションに発行時刻を持たせ、規制モードでは絶対的な上限を設ける。無操作の検知は画面側で行う | サーバ側で毎リクエスト更新する方式 → 保留。書き込みが毎回発生する。盗まれたセッションが上限まで有効という弱点は残るので、文書に明記する |
規制対応の範囲を「実験ノート単位」で選べるようにする(2026-09-22)
これは設計の根幹に関わる変更です。
当初は、規制モードをシステム全体の切り替え(環境変数ひとつ)として作るつもりでした。これが実務に合わないという指摘を受けました。要点は次のとおりです。
監査証跡自体は、普段の実験では操作性が悪すぎてやってられないことが多い。例えば当局申請の根拠になる実験、計画書・報告書で品質部門の管理が必要なときだけ、というように、全ての実験ノートに使いたくないというのが現場の意見。そういう意味でハイブリッドに使える、あるいは管理者が、自社の文化と当局申請に合うようにどれを必要としてどれを入れないかを選択できる設計が必要。会社によって必要な機能が変わる。
調べたところ、これは規制の考え方とも一致していました。日本PDA製薬学会の「監査証跡レビュー実践ガイド」にはこうあります。
監査証跡レビューの必要性を判断するために、事前に監査証跡レビューに関するアセスメントを実施する。…アセスメントに基づいてどの重要データや活動を対象に監査証跡レビューを実施するかを判断する。…アセスメント報告書はプロセスオーナー、データオーナー、品質部門の承認を受ける。
つまり規制の側も「全部に掛けろ」とは言っておらず、範囲を決めて、その判断を文書化しろと言っています。一律に掛ける設計のほうが、むしろ規制の考え方から外れていました。
| # | 論点 | 決定 | 却下した案と理由 |
|---|---|---|---|
| D-53 | 規制対応の適用単位 | 採用: プロジェクト単位で適用する。同じ設置の中に「規制対応が要るノート」と「日常の実験ノート」を混在させられる | システム全体で一律に切り替える → 却下。日常の実験まで重くなり、結局どのノートにも使われなくなる。規制の側も範囲をアセスメントで決めよと言っている |
| D-54 | 何を掛けるかの選択 | 採用: 管理者が項目ごとに選ぶ(変更理由の必須/確認サイン/承認フロー/電子署名/署名前の再認証/自動ログアウト)。組み合わせを「方針」として名前を付けて保存し、プロジェクトに割り当てる | 「規制モード」の一括 ON/OFF → 却下。会社によって必要な機能が変わる。全部入りか何も無いかの二択は現実に合わない |
| D-55 | 記録そのものは例外か | 採用: 記録は常に全ノートで取る。方針で変わるのは「人に何を要求するか」だけ(D-10・D-47 を維持) | 規制対応が不要なノートでは記録も止める → 却下。記録は動作が軽く、止める理由が無い。止められる監査証跡は監査証跡ではない |
| D-56 | 方針の変更そのものの扱い | 採用: 方針の作成・変更・割り当ての変更を監査証跡に残し、現在の方針を画面に表示する | 設定だから記録しなくてよい → 却下。実務のレビュー項目に「監査証跡機能が無効化されていないか(一時的に OFF になっていないか)」が挙がっている。切り替えられる設計にするなら、切り替えた事実が残ることが条件 |
| D-57 | 記録にどの方針が効いていたか | 採用: 監査証跡の各行に、その時点で効いていた方針を記録する | 後から方針の変更履歴を辿って再構成する → 却下。読む人が毎回再構成するのは現実的でない。記録自体に書いておく |
変更理由の入力が重い問題と、AI に書かせてよいか(2026-09-22)
続けて、こういう指摘をもらいました。
AI などで理由を自動で作成する機能をつけるのも良いかもしれません。本当に毎回入力するのはユーザビリティが悪いです。
負担が重いのはそのとおりで、放置すれば「訂正」の二文字で埋まります(D-46)。ただし、ここには規制と正面からぶつかる論点があります。
条文が求めているのは「なぜそうしたか」であり、これはその人にしか分からないことです。分析装置のデータシステムの技術資料にも、この点がはっきり書かれています——誰が・何を・いつ・どこで、はシステムが自動で記録できるが、なぜ、はシステムには分からない。精査に耐える正当化を提供できるのは人だけである、と。
もし AI が書いた理由がそのまま記録されると、記録が「その人に帰属する」という原則(ALCOA の Attributable)が崩れます。当局の指導事例でも問われていたのは「削除の理由と妥当性が確認できるか」でした。機械が量産したもっともらしい文章が並んでいる状態は、「訂正」が百個並んでいるより悪く見える可能性があります。
そこで、負担は減らすが原則は壊さない形に分けました。
| # | 論点 | 決定 | 却下した案と理由 |
|---|---|---|---|
| D-58 | 入力の負担をどう減らすか | 採用(まずこれ): ①よくある理由を選ぶだけで済ませる(D-46)②何が変わったかはシステムが自動で埋める(システムが知っていることを人に書かせない)。人が書くのは「なぜ」だけにする | 「毎回すべて自由記述」 → 却下。実際の負担の多くは「何を変えたか」の説明で、そこはシステムが知っている。ここを自動化するだけで入力は大きく減り、規制上の問題は何も起きない |
| D-59 | AI に理由を書かせるか | 採用(条件つき・既定はオフ): AI は下書きを提案するだけとし、人が読んで確定しなければ記録しない。記録には「AI の提案を元にした」ことを残し、読む人が重みを判断できるようにする。導入者が自分で有効化し、自分の AI を設定する | AI が書いた理由をそのまま記録する → 却下。「なぜ」は人にしか分からないという原則を壊す。機械が書いたもっともらしい理由が並ぶと、記録の信頼性はむしろ下がる |
| D-60 | AI を使うときのデータの行き先 | 採用: 既定では使わない。使う場合も導入者が自分の環境で設定し、何が外部へ送られるかを画面に明示する。送るのは変更の差分に限り、ノート全体は送らない | 製品側が AI サービスを用意して既定で有効にする → 却下。「データは全部あなたのもの。提供者のサーバーを一切経由しない」という製品の前提を壊す。規制以前に、この約束は曲げない |
優先順位: まず D-58(選択式+自動で埋める)を実装します。これだけで日常の入力はほぼ一択になります。D-59 はそれでも足りないと分かってからにします。先に AI を足すと、本来いらなかった機能に規制上の説明責任を背負うことになるからです。
現場の意見を受けて決めたこと(2026-09-22)
意見募集への回答をもとに決めた。回答をくれた方は監査を受けた経験は無いとのことで、分析装置のソフトウェアに付いている「監査証跡モード」を基準に期待値を語っていた。これは重要な手がかりだった——規制対応の記録システムに何を期待するかは、条文よりも普段使っている装置のソフトの作法で決まっていることがある。条文を満たすだけでなく、その作法に合わせないと「使いにくい」と言われる。
| # | 論点 | 決定 | 却下した案と理由 |
|---|---|---|---|
| D-40 | 監査証跡の確認サイン | 採用(新設): 管理者が「この変更を確認した」ことを、確認者・日時つきで記録できるようにする。記録は追記専用で、後から消せない | 確認の記録を残さない → 却下。Annex 11 が求める「定期的にレビューされる」は、レビューしたことが残って初めて示せる。実務でも、装置のソフトで変更に確認の印を付ける運用が広く行われている |
| D-41 | レビューの通知 | 採用(新設): 未確認の記録がたまっていることを、責任者に知らせる | 人の記憶に任せる → 却下。現実には「監査の前にまとめて見る」「逸脱が起きたときだけ見る」運用になりやすく、定期的なレビューが最も抜けやすい。仕組みで支える |
| D-42 | 変更前後の見せ方 | 採用: 並べて差分で見せる(画面が狭いときは上下に並べる) | 変更前後を畳んで、押したときだけ出す → 却下。紙のノートで二重線の脇に元の値が見えているのと同じ状態を、既定で作る |
| D-43 | 時刻の表示 | 採用: 現地時間に協定世界時(UTC)を併記する | 現地時間だけ → 却下。記録の受け手が別の時間帯にいることがあり、併記しておけば読み違えが起きない。保存は UTC のまま |
| D-44 | 削除した記録の見せ方 | 採用: 削除済みだけを見られる一覧を用意する(実体は消さない設計のまま) | 監査証跡に「削除した」が残るだけ → 不足。消したものを探すのに証跡を遡るのは現実的でない |
| D-45 | 監査証跡の検索性 | 採用: 日付・利用者・操作の種類・対象・理由で絞り込めるようにする。記録する範囲は絞らない(全ての書き込みを残す) | 記録する範囲を減らして読みやすくする → 却下。残す量は減らさず、絞り込みで読みやすくする。ALCOA+ の "Available"(必要なときに取り出せる)は、量ではなく取り出しやすさの話 |
| D-46 | 変更理由の入力形式 | 採用: よくある理由を選べるようにし、あわせて自由記述も置く | 自由記述だけ → 却下。同じ言葉(「訂正」の二文字など)で埋まって、後から読んでも何も分からなくなる。選択式のみ → 却下。当てはまらない事情を書けなくなる |
| D-48 | 理由の選択肢を誰が決めるか | 採用: 製品は既定の理由リストを持たず、導入者が自分で登録する(例は文書で示す) | あらかじめ決めた理由を製品に焼き込む → 却下。調べたところ、分析装置のデータシステムでも管理者が自社の手順に合わせて登録する作りが共通で、出荷時に既定リストを持つ製品は見当たらなかった。理由の言葉は組織の手順に属する |
| D-49 | 例外報告(異常だけを出す) | 採用: 「変更と削除だけ」「通常でない操作だけ」を出す絞り込みを用意する | 全件を目で追わせる → 却下。データインテグリティの指針が「監査証跡レビューに全てのシステム活動を含める必要はない」と明示し、例外報告という仕組みを認めている。実務者への調査でも「変更・削除だけに絞り込めない」が困りごとの最多だった |
| D-50 | 持ち出しの形式 | 採用: 1行1事象のテキスト(JSONL)に加えて、表計算で開ける形式(CSV)と印刷可能な形式も出す | JSONL だけ → 却下。国際的な指針が「印刷と電子コピーができ、可能なら表計算ソフトへのエクスポートのような動的機能を保持すること」と書いている |
| D-51 | 「閉鎖系です」と製品が断言するか | 採用: 断言しない。判断の材料(誰がアクセスを管理しているか・招待制であること・データの置き場所)を情報シートに並べ、導入する側が判断できる形にする | 製品が「閉鎖系です」と書く → 却下。閉鎖系かどうかは導入した状況で決まるものであって、製品が決められない |
| D-52 | 監査証跡のまとめ方 | 採用: ひとつの巨大なログにせず、対象の種類で分けて見せる(ページ/台帳/メンバーと権限/ログイン) | 全部を1本の時系列で出す → 却下。分析装置のデータシステムは監査証跡を対象ごとに分けており、ある製品の資料は自社の弱点として「監査証跡が、レビューしやすさではなく記録を残すことを目的に作られている」と認めている。同じ轍は踏まない |
| D-47 | 「監査証跡は任意にしたい」の読み方 | 採用: 切り替えるのは「理由の入力を必須にし、確認サインを求めるモード」であって、記録そのものは常に取る(D-10 は維持) | 記録自体を止められるようにする → 却下。記録を止められる監査証跡は監査証跡ではない。なお装置のソフトでいう「監査証跡モード」も、記録を止める切り替えではなく理由入力を強制する切り替えである |
この記録は追記していきます。行は消しません。 撤回したときは状態を書き換えて、撤回した理由を残します。