Erlen electronic lab notebook OS

lab / decisions

決定記録 — 何を決めて、何を却下したか

設計の分かれ道で選んだ案と、選ばなかった案とその理由。あとから読む人が同じ検討を繰り返さないための記録です。

2026-09-22

設計は「選んだ案」だけ見ても再現できません。却下した案と、却下した理由が残っていないと、同じ検討を何度も繰り返すことになります。ここには両方を並べます。

状態は 採用 / 却下 / 保留。日付は決めた日です。

全体の方針

#論点決定却下した案と理由
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-59AI に理由を書かせるか採用(条件つき・既定はオフ): AI は下書きを提案するだけとし、人が読んで確定しなければ記録しない。記録には「AI の提案を元にした」ことを残し、読む人が重みを判断できるようにする。導入者が自分で有効化し、自分の AI を設定するAI が書いた理由をそのまま記録する → 却下。「なぜ」は人にしか分からないという原則を壊す。機械が書いたもっともらしい理由が並ぶと、記録の信頼性はむしろ下がる
D-60AI を使うときのデータの行き先採用: 既定では使わない。使う場合も導入者が自分の環境で設定し、何が外部へ送られるかを画面に明示する。送るのは変更の差分に限り、ノート全体は送らない製品側が 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 は維持)記録自体を止められるようにする → 却下。記録を止められる監査証跡は監査証跡ではない。なお装置のソフトでいう「監査証跡モード」も、記録を止める切り替えではなく理由入力を強制する切り替えである

この記録は追記していきます。行は消しません。 撤回したときは状態を書き換えて、撤回した理由を残します。

開発ラボの入口へ戻る