「AQL 2.5で」と言われた翌日、サンプル数を決めるのは自分だった
取引先から届いた検査仕様書に、AQL 2.5 とだけ書いてある。ロットは5,000個。ここから何個を抜き取り、不適合品が何個までなら受け入れるのか。決めるのは自分だ。
JIS Z 9015-1 の表は社内サーバーのどこかにPDFで置いてある。開いてみると、縦にサンプル文字A〜R、横にAQLが0.010から1000まで26列。数字の代わりに矢印が入っている欄がある。ロットサイズからサンプル文字を引く表は別ページ。サンプル文字からサンプルサイズを引く列がまた別。3枚の表を行き来しながら、指で押さえた行がずれていないか何度も確認する。
そして誰も「この場合はこの列」とは教えてくれない。検査水準の指定は仕様書に無い。矢印に当たったらどうするかも書いていない。品質保証部に聞けば「水準IIでいいんじゃないですか」と返ってくるが、その一言でサンプル数が3倍になることは誰も言わない。
このツールは、その3枚の表引きを1画面に畳んだものだ。ロットサイズ・検査水準・AQLを選ぶと、サンプル文字・サンプルサイズ n・合格判定個数 Ac・不合格判定個数 Re が出る。矢印の欄に当たったら自動でたどり、どう変わったかを表示する。さらにOC曲線を描いて、「AQLちょうどの品質のロットでも何%は落ちるのか」「AQLの2倍の不適合品率のロットは何%通ってしまうのか」を数値で見せる。
主抜取表の「↓」で1週間ぶんの検査計画が狂った
このツールを作った直接の理由は、矢印セルだ。
以前、電子部品の受入基準を作っていて、ロット1,000個・検査水準II・AQL 0.065% という条件を表に当てた。付表1でサンプル文字はJ。サンプルサイズ列を見るとJは80個。「80個抜いて、Acは…」と主抜取表のJ行を左端まで指でたどったら、AQL 0.065の欄が矢印だった。下向きの「↓」。
このとき自分は、矢印を「下の行の Ac/Re を使え」という意味だと解釈した。下にたどって最初に数字が入っている欄はサンプル文字Nの行で、Ac=0・Re=1。だから「80個抜いて、不適合品が1個でも出たら不合格」と書いた。検査工数もその前提で見積もった。
これが間違いだった。JISの規定は「矢印の下(または上)にある最初の抜取方式を使う」であって、使うのは Ac/Re だけではなくサンプルサイズもセットで移動先のものになる。正しくは、サンプル文字はJではなくNに変わり、サンプルサイズは80個ではなく500個になる。ロット1,000個に対して500個の検査だ。見積もった工数の6倍以上になり、検査ラインの計画を組み直すはめになった。
厄介なのは、間違えても数字としては成立してしまうことだ。「80個抜いてAc=0」は、それ単体では何もおかしくない方式に見える。表の読み違いだと気づくきっかけが無い。しかも矢印は上向きも存在する。上向きの場合はサンプルサイズがむしろ減るので、「矢印=検査が厳しくなる」という直感すら通用しない。
自分と同じところで詰まる人は多いはずだ、と思った。だから、このツールでは矢印を自動でたどるだけでなく、表引きしたサンプル文字と実際に採用したサンプル文字を並べて表示するようにした。「J → N」「80個 → 500個」と変化そのものを見せる。矢印は表の中で最も情報が省略されている記号で、省略されたぶんを画面に書き戻すのがこのツールの中心的な仕事だ。
抜取検査とAQL:全数検査でも不良は漏れる、という前提から
抜取検査の話は、たいてい「全数検査はコストが高いから抜き取る」という説明から入る。これは半分しか正しくない。
なぜ全数検査ではだめなのか
第一に、破壊検査は全数にできない。引張強度を測れば製品は壊れる。全部測ったら出荷するものが無い。
第二に、人が見る全数検査は思ったより漏れる。同じ製品を何百個も連続で見続けると、見落とし率は数%まで上がる。1万個を人が全数目視するくらいなら、200個をきちんと集中して見るほうが検出力が高い、という逆転が普通に起きる。
第三に、そもそも全数検査は「このロットに不適合品が何個あるか」を教えてくれるだけで、工程が安定しているかどうかは何も教えてくれない。
そこで、ロットから一部を抜き取り、その結果からロット全体を統計的に判断する。味噌汁の味見に近い。鍋を全部飲まなくても、よくかき混ぜて一口すすれば塩加減は分かる。ただし一口が小さいほど判断は外れやすい。どれくらいの一口をすすれば、どれくらいの精度で判断できるのかを規格として整理したものが JIS Z 9015-1(ISO 2859-1 と一致する規格)だ。
AQL とは — 「合格品質限界」の意味
AQL(Acceptance Quality Limit・合格品質限界)は、「この程度の不適合品率までのロットなら、高い確率で合格させたい」という水準を指す。AQL 1.0% なら「不適合品率1.0%のロットは、まず通してほしい」という意味になる。
ここで最も誤解されるのが、AQLは「許される不良率」ではないという点だ。AQL 1.0% は「1%までの不良は認める」という契約条項ではない。抜取検査の設計目標であって、品質の保証値ではない。AQLちょうどの品質のロットでも数%は落ちるし、AQLの2倍・3倍の不適合品率のロットでも一定割合は通る。この非対称性が、後述するOC曲線そのものだ。
実務での目安としては、安全に関わる特性が 0.10〜0.65、機能に関わる特性が 1.0〜2.5、外観など軽微な特性が 4.0〜10 あたりに落ち着くことが多い。JISは0.010から1000までの26列を用意しているが、このツールは実用範囲の12列(0.065〜10)に絞っている。
サンプル文字 求め方 — 付表1でロットサイズを15区分に畳む
JISはロットサイズを直接サンプルサイズに変換しない。いったんサンプル文字という記号を経由する。
付表1は、ロットサイズを「2〜8」「9〜15」「16〜25」「26〜50」…「500 001以上」の15区分に分け、検査水準7列と交差させてA〜Rの1文字を返す。ここで注意すべきは、区分が変わらない限りロットサイズが多少ずれても結果は同じ、という点だ。ロット3,000個と3,200個は同じ区分(1201〜3200)なので、まったく同じ抜取方式になる。
サンプル文字が決まると、サンプルサイズは一意に決まる。A=2、B=3、C=5、D=8、E=13、F=20、G=32、H=50、J=80、K=125、L=200、M=315、N=500、P=800、Q=1250、R=2000 の16段階だ。
検査水準 II 意味 — 判別力をどこに置くか
検査水準は、同じロットサイズ・同じAQLに対してどれくらいのサンプル数を使うかを決めるつまみだ。
通常検査水準はI・II・IIIの3つ。IIが既定で、指定が無ければIIを使う。Iは判別力を落としてよいとき(サンプル数はIIの約1/2.5)、IIIは判別力を上げたいとき(約2.5倍)に使う。
特別検査水準はS-1〜S-4の4つ。破壊検査・高額品・検査に長時間かかる項目など、とにかくサンプル数を絞りたい場面のためにある。S-1が最も少なく、S-4に向かって増える。ロット1,000個・水準S-1なら、サンプル文字はCで、表のサンプルサイズはたった5個だ。
なみ検査・きつい検査・ゆるい検査の切替ルール
JIS Z 9015-1 は、同じ検査条件をずっと続ける仕組みではない。供給者の実績に応じて厳しさを動かす切替ルールが本体に組み込まれている。
- なみ検査 → きつい検査: 連続する5ロット以内で2ロットが不合格になったとき
- きつい検査 → なみ検査: きつい検査で連続5ロットが合格したとき
- なみ検査 → ゆるい検査: 連続10ロットが合格し、かつ切替スコアが30以上で、生産が安定しており、責任権限者が承認したとき
- ゆるい検査 → なみ検査: ゆるい検査で1ロットでも不合格になったとき、または生産が不規則・停滞したとき
- 検査の中止: きつい検査のまま累計5ロットが不合格になったら、供給者が品質を改善するまで検査を止める
つまり抜取検査は「毎回同じ表を引く作業」ではなく、実績のフィードバックループを持った制度だ。この切替まで含めて初めて規格の意図どおりに機能する。
このツールが扱うのは、このうち**なみ検査・1回抜取方式(付表2-A)**だけだ。実務でも学科試験でも中心はここで、きつい/ゆるいの表は別表になる。切替の運用は上のルールを社内標準に書き写して回すことになる。
規格そのものの書誌情報は日本産業標準調査会(JISC)で、抜取検査の一般論はAcceptance sampling(Wikipedia)が参考になる。
AQLを決めるとは、何を決めることなのか
AQLを選ぶという行為は、実質的に検査工数と流出リスクの配分を決めることに等しい。数字で見ると分かりやすい。
ロット1,000個・検査水準IIで、AQLだけを動かしてみる。AQL 1.0% ならサンプル文字J、サンプルサイズ80個、Ac=2・Re=3。AQLを0.065%まで絞ると、下向き矢印を経てサンプル文字N、サンプルサイズ500個、Ac=0・Re=1になる。検査対象が6.25倍に増え、しかも不適合品が1個でも出たら不合格になる。ロット1,000個に対して500個を検査するのは、もはや抜取検査と呼べる負荷ではない。
厳しくすると跳ね返ってくるのは工数だけではない。AQL 0.065%・Ac=0 の方式では、AQLちょうどの品質のロットでも27.8%が不合格になる。4ロットに1ロット以上が、規格どおりの品質なのに突き返される計算だ。これが生産者危険(α)で、Ac=0の方式では構造的にここまで大きくなる。供給者から「うちの品質は悪くないのに落ちる」というクレームが来る典型パターンがこれだ。
逆にゆるくするとどうなるか。ロット5,000個・水準II・AQL 2.5% の方式(サンプル文字L、n=200、Ac=10)で計算すると、不適合品率4%のロットは82.0%が合格する。AQLの1.6倍の不良率でも5回に4回は通る。8%まで悪化してようやく合格確率は6.9%まで落ちる。「受入検査を通ったから大丈夫」という思い込みが危険なのは、この数字を見れば分かる。
もうひとつ実務で揉めるのが、契約書にAQLだけ書いて検査水準を書かないケースだ。AQL 2.5% と指定されていても、ロット5,000個・水準IIなら200個を検査して10個まで許容する方式になり、ロット1,000個・水準S-1なら13個を検査して1個も許容しない方式(下向き矢印でAc=0、生産者危険28.0%)になる。AQLという1つの数字が決めているのは「表のどの列を見るか」だけで、実際の検査量と厳しさはロットサイズと検査水準が決めている。検査水準を書かない仕様書は、検査基準を書いていないのとほとんど同じだ。
ロットの切り方も効く。ロット3,200個・水準II・AQL 1.5% ならサンプル文字K・n=125・Ac=5だが、たった1個増やして3,201個にすると区分が変わり、サンプル文字L・n=200・Ac=7になる。ロットを大きく束ねるほど1個あたりの検査コストは下がるが、1ロット不合格になったときに止まる量も増える。ロットサイズは「たまたま入荷した単位」ではなく、設計変数だ。
この計算が要る場面
受入検査基準を作るとき。 購入品ごとに「ロットサイズいくつのとき何個抜くか」を決めて検査指図書に落とす。品目が数十点あると表引きだけで半日かかる。条件を切り替えながら一覧を作る用途で効く。
海外サプライヤーに検査条件を提示するとき。 ISO 2859-1 は英語圏でも ANSI/ASQ Z1.4、旧 MIL-STD-105E としてそのまま通じる共通言語だ。「AQL 2.5, General Inspection Level II, single sampling」と書けば相手の検査部門に伝わる。提示前に自分の側でサンプルサイズとAc/Reを確定させておけば、届いた検査成績書の妥当性もその場で確認できる。
QC検定2級・3級の演習。 抜取検査は頻出分野で、「ロット1,000個・水準II・AQL 1.0% のときのn・Ac・Reを求めよ」という形の問題が繰り返し出る。手で表を引いて、答え合わせに使うのが正しい使い方だ。特に矢印の欄は試験でも狙われるので、下向き・上向きの挙動を実際に動かして確かめておくと強い。
社内教育の資料づくり。 OC曲線を1枚見せるだけで、「抜取検査は不良を止める仕組みではない」という最も伝わりにくい事実が伝わる。AQLの2倍の不良率でも大半が合格してしまう曲線を新人検査員に見せると、受入検査の位置づけの理解が一段深くなる。
使い方は3ステップ
① ロットサイズと検査水準を入れる。 ロットサイズは個数なので整数だけ入る。検査水準は指定が無ければIIのままでいい。破壊検査や高額品でサンプルを絞りたいならS-1〜S-4を選ぶ。
② AQLを選ぶ。 0.065から10までの12列から選ぶ。安全特性なら0.10〜0.65、機能特性なら1.0〜2.5、外観なら4.0〜10が目安。ここまでで、サンプル文字・サンプルサイズ n・Ac・Re と判定ルールの文章が表示される。
③ 結果とOC曲線を読む。 サンプルサイズ、合格判定個数Ac、不合格判定個数Re、抜取比率 n/N が並ぶ。主抜取表の矢印に当たった場合はサンプル文字が「J → N」の形で表示され、サンプルサイズが何個から何個に変わったかも注記として添えられる。表のサンプルサイズがロットサイズ以上になった場合は全数検査になり、その旨が表示される。
任意入力の「確認したいロット不適合品率 p」に数値を入れると、その不適合品率のロットが合格してしまう確率(消費者危険 β)が計算され、OC曲線上にもその位置が示される。空欄のままでもサンプルサイズ・Ac/Re・OC曲線は通常どおり出る。結果は1タップでコピーできるので、検査指図書や試験の答え合わせにそのまま貼れる。
実際の入力と結果:8ケース
ここからは実際の入力と出力を8ケース並べる。矢印なしの基本形から始めて、矢印・全数検査・消費者危険まで、表引きでつまずきやすい順に並べた。
ケース1:QC検定の典型問題(矢印なし・基本形)
入力: ロットサイズ1,000個 / 検査水準II / AQL 1.0% 結果: サンプル文字J(矢印なし) / n = 80個 / Ac = 2・Re = 3 / AQLでの合格確率 95.3%(α = 4.7%) / 抜取比率 8.0% 解釈: テキストで最も多く出る組合せ。1,000個のロットから80個を抜き取り、不適合品が2個以下なら合格、3個以上なら不合格。AQLちょうど(不適合品率1.0%)のロットが落ちる確率は4.7%で、生産者危険としては妥当な水準に収まっている。抜取比率8.0%は二項分布の近似がよく効く範囲で、余計な注記は出ない。
ケース2:ロット1億個でもサンプルは500個
入力: ロットサイズ100,000,000個 / 検査水準I / AQL 0.25% 結果: サンプル文字N(矢印なし) / n = 500個 / Ac = 3・Re = 4 / AQLでの合格確率 96.2%(α = 3.8%) / 抜取比率 0.0005% 解釈: ロットが1億個でもサンプルは500個で足りる。抜取検査の判別力はロットサイズにほとんど依存せず、サンプルサイズとAcだけで決まるという性質が数字で見える。「ロットが10倍なら検査も10倍」という直感は成り立たない。付表1の最上位区分が「500 001以上」で上限が無いのも同じ理由だ。
ケース3:抜取比率が16%になり、近似の注記が出る
入力: ロットサイズ500個 / 検査水準III / AQL 0.65% 結果: サンプル文字J(矢印なし) / n = 80個 / Ac = 1・Re = 2 / AQLでの合格確率 90.4%(α = 9.6%) / 抜取比率 16.0% 解釈: 検査水準をIIIに上げて判別力を稼いだ例。500個から80個を抜くので抜取比率が16%になり、10%を超えると「合格確率の計算に使っている二項分布は近似である」という注記が添えられる。実際の合格確率は超幾何分布で計算すべきで、表示値よりわずかに高くなる方向にずれる。またAc=1の方式は生産者危険が約9%と、Ac=2のケース1(4.7%)の倍近い。Acが1つ小さくなるだけで供給者側の負担は明確に増える。
ケース4:下向き矢印 — サンプル文字J→N、80個が500個になる
入力: ロットサイズ1,000個 / 検査水準II / AQL 0.065% 結果: サンプル文字 J → N(下向き矢印) / n = 500個 / Ac = 0・Re = 1 / AQLでの合格確率 72.2%(α = 27.8%) / 抜取比率 50.0% 解釈: このツールを作る動機になったケースそのもの。付表1で引いたサンプル文字はJ(表のサンプルサイズ80個)だが、主抜取表のJ行×AQL 0.065列は下向き矢印なので、同じ列を下にたどって最初の抜取方式に当たるサンプル文字Nの行を使う。サンプルサイズも移動先の500個に変わるのがポイントで、80個のままだと完全な誤りになる。下向き矢印の到達先は構造上必ずAc=0・Re=1になるため、不適合品が1個でも出たら不合格。そして生産者危険は27.8%まで跳ね上がる。AQL 0.065%を要求するというのは、こういう方式を要求するということだ。
ケース5:上向き矢印 — サンプル文字Q→L、1250個が200個に減る
入力: ロットサイズ600,000個 / 検査水準II / AQL 6.5% 結果: サンプル文字 Q → L(上向き矢印) / n = 200個 / Ac = 21・Re = 22 / AQLでの合格確率 98.9%(α = 1.1%) / 抜取比率 0.033% 解釈: 矢印は増える方向だけではない。付表1で引いたQ(表のサンプルサイズ1,250個)は主抜取表で上向き矢印に当たるので、同じ列を上にたどってサンプル文字Lの行を採用する。サンプルサイズは1,250個から200個に減る。「矢印=検査が厳しくなる」と覚えていると必ず間違える。上向き矢印の到達先は構造上必ずAc=21・Re=22になる。200個抜いて21個までの不適合品を許容するので、生産者危険は1.1%と極めて小さい。AQLがゆるい領域では、大量のサンプルを取っても判定が変わらないため、JISが意図的にサンプル数を切り詰めている。
ケース6:矢印をたどった先が全数検査になる
入力: ロットサイズ20個 / 検査水準S-2 / AQL 0.40% 結果: サンプル文字 A → J(下向き矢印) / n = 20個(全数検査) / Ac = 0・Re = 1 / AQLでの合格確率 92.3%(α = 7.7%) / 抜取比率 100.0% 解釈: 2段階の変換が連続で起きるケース。まず付表1でサンプル文字Aを引くが、AQL 0.40列は下向き矢印なので、たどった先はサンプル文字J(表のサンプルサイズ80個)。ところがロットは20個しか無い。JIS付表2-Aの備考には「サンプルサイズがロットサイズ以上になれば、全数検査する」とあるので、この方式は全数検査になり、実際に検査するのは20個。Ac=0・Re=1は表の値のまま変えず、「20個すべてを検査して不適合品が0個なら合格」という判定になる。小ロットに厳しいAQLを当てると、抜取検査の体裁を保てなくなる、という分かりやすい例だ。
ケース7:矢印なしでも全数検査になる
入力: ロットサイズ3個 / 検査水準III / AQL 10% 結果: サンプル文字B(矢印なし) / n = 3個(全数検査) / Ac = 0・Re = 1 / AQLでの合格確率 72.9%(α = 27.1%) / 抜取比率 100.0% 解釈: 全数検査になる経路は矢印経由だけではない。ロット3個に対して付表1が返すサンプル文字はBで、表のサンプルサイズは3個。サンプルサイズがロットサイズと等しいので、この時点で全数検査になる(規定は「以上」なので等号を含む)。AQLを10%までゆるめてもAc=0で、3個中1個でも不適合なら不合格。生産者危険は27.1%。極小ロットでは、AQLをどう選んでも抜取検査の設計が成立しないことが読み取れる。ロットをまとめる交渉のほうが先だ。
ケース8:AQLの2.5倍の不良率でも3回に2回は合格する
入力: ロットサイズ1,000個 / 検査水準II / AQL 1.0% / 確認したい不適合品率 p = 2.5% 結果: サンプル文字J / n = 80個 / Ac = 2・Re = 3 / AQLでの合格確率 95.3%(α = 4.7%) / p = 2.5% での合格確率 67.7%(=消費者危険 β) 解釈: ケース1とまったく同じ抜取方式に、不適合品率2.5%という「AQLの2.5倍」のロットを流したらどうなるかを見た結果。67.7%が合格する。3回に2回は素通りする計算だ。80個抜いて不適合品2個以下なら合格、という条件は、不適合品率2.5%のロット(80個中の期待値2個)にとってまったく厳しくない。消費者危険を下げたいなら検査水準を上げてサンプルサイズを増やすか、AQLをより小さい値にするしかない。この非対称性こそがOC曲線の読みどころで、AQLは「保証値」ではないという前半の解説が数値で確認できる。
8ケースを通して見ると、表引きの結果を左右しているのはサンプル文字が何に確定するかであり、矢印と全数検査の判定がそこに割り込んでくる、という構造が見えてくる。
仕組み:表を丸ごと持つか、対角線から生成するか
手法の選択 — 生成式を使わなかった理由
主抜取表の実装には2つのやり方がある。
ひとつは、表を丸ごと定数として持つ方式。16サンプル文字 × 12 AQL列 = 192セルを、{Ac, Re} か下向き矢印か上向き矢印のいずれかとしてそのまま書き下す。
もうひとつは、対角線構造から生成する方式だ。JISのサンプルサイズ列(2, 3, 5, 8, 13, 20, 32, 50, 80, 125, 200, 315, 500, 800, 1250, 2000)もAQL列(0.065, 0.10, 0.15, 0.25, 0.40, 0.65, 1.0, 1.5, 2.5, 4.0, 6.5, 10)も、どちらも公比 10^(1/5) ≒ 1.585 の等比数列になっている。だから1行下がって1列左に動くと n × AQL の積がほぼ変わらず、同じ抜取方式に着地する。主抜取表は完全な対角線構造をしていて、サンプル文字の通し番号とAQLの通し番号を足した値だけで、そのセルが矢印か、Acがいくつかが決まってしまう。数式で言えば数行のコードで表全体を再現できる。
このツールは前者(表を丸ごと持つ方式)を採った。規格準拠を名乗る以上、生成式にバグが1つ入ると192セル全部が同時に狂うという設計は取れない。転記ミスなら1セルで止まるが、生成式のミスは全滅する。
ただし対角線構造は捨てていない。検算の武器として使う。非矢印セルのAcは 0, 1, 2, 3, 5, 7, 10, 14, 21 の9値しか現れず、各行は左から単調非減少、各列は上から単調非減少、下向き矢印は必ずその列のAc=0のセルより上にあり、上向き矢印は必ずAc=21のセルより下にある。この不変条件で全セルを機械的に検査すれば、転記ミスは検出できる。実際、表データはJIS本文の付表10-A-2〜付表10-R-2(サンプル文字ごとの抜取検査方式)と付表2-Aの配布PDFという2ソースで突合し、値・矢印方向・矢印の到達先が全一致することを確認している。
実装詳細① 矢印処理
矢印セルの処理は、同じAQL列を1行ずつたどるループだ。
// 主抜取表のセルは { ac, re } / "down" / "up" のいずれか
let letter = codeLetterInitial; // 付表1で引いたサンプル文字
let cell = MASTER_TABLE[letter][col];
while (cell === "down") { // 下向き: サンプルサイズが大きい方向へ
letter = 次の行のサンプル文字;
cell = MASTER_TABLE[letter][col];
}
while (cell === "up") { // 上向き: サンプルサイズが小さい方向へ
letter = 前の行のサンプル文字;
cell = MASTER_TABLE[letter][col];
}
const ac = cell.ac;
const re = cell.re;
const nTable = SAMPLE_SIZE_BY_LETTER[letter]; // ← 到達先の行のサンプルサイズ
最後の1行が全てだ。nTable を codeLetterInitial から引いてしまうと、冒頭で書いた自分の失敗と同じ間違いになる。
実装詳細② 全数検査の判定
const isFullInspection = nTable >= lotSize; // 「以上」なので等号を含む
const sampleSize = isFullInspection ? lotSize : nTable;
// Ac / Re は表の値のまま変えない
判定は「以上」であって「超える」ではない。ケース7のように nTable と lotSize がちょうど等しいときも全数検査になる。またAc/Reを書き換えないのがポイントで、「全数検査してAc個以下なら合格」という判定基準そのものは変わらない。
実装詳細③ 合格確率は二項分布の項の漸化式で解く
合格確率 Pa は、サンプル n 個のうち不適合品が Ac 個以下に収まる確率、つまり二項分布の累積確率になる。
Pa(p) = Σ[d=0..Ac] C(n,d) · p^d · (1−p)^(n−d)
素直に実装すると C(n,d) の階乗でつまずく。このツールの n は最大2000で、2000! は倍精度の表現範囲を大きく超える。そこで項どうしの比だけを使う漸化式にする。
// t_0 = (1−p)^n、t_d = t_{d−1} × (n−d+1)/d × p/(1−p)
let t = Math.exp(n * Math.log1p(-p)); // d = 0 の項
let pa = t;
for (let d = 1; d <= ac; d++) {
t = t * ((n - d + 1) / d) * (p / (1 - p));
pa += t;
}
return Math.min(pa, 1); // 累積誤差で1をわずかに超えるのを丸める
t_0 を Math.pow(1 - p, n) ではなく Math.exp(n * Math.log1p(-p)) で求めているのは、n = 2000 でアンダーフローに近づくのを避けるためと、p が極端に小さいとき(AQL 0.065% なら p = 0.00065)に 1 - p の引き算で桁落ちするのを避けるためだ。log1p は 1 + x の対数を x が微小なときも精度良く返す関数で、こういう場面のために用意されている。
なお p = 1(不適合品率100%)のときは log1p(-1) が −∞ になるので個別に処理し、Ac が n 以上でなければ Pa = 0 を返す。p = 0 のときは Pa = 1 だ。
この漸化式の実装はJIS Z 9015-1 付表10-J-1(サンプル文字J・n=80 のOC曲線の値の表)と突合してある。Pa = 99 / 95 / 90 / 75 / 50 / 25 / 10 / 5 / 1% の9水準 × Ac = 0〜14 の90点について、規格が載せている p を漸化式に入れ直して Pa を再計算し、ほぼ全点が誤差0.6ポイント以内で一致した。
計算例:ケース4を最初から最後までたどる
下向き矢印が出るケース4(ロット1,000個・検査水準II・AQL 0.065%)を、4段のパイプラインで追う。
【入力】 N = 1000 / 検査水準 II / AQL 0.065%
① 付表1(サンプル文字の表)
ロットサイズ 1000 → 区分「501〜1200」の行
その行の水準II列 → サンプル文字 J(表のサンプルサイズ 80個)
② 付表2-A(主抜取表)と矢印処理
J 行 × AQL 0.065 列 → ↓(下向き矢印)
同じ列を下へたどる: K → L → M → N
N 行で最初の抜取方式に到達 → Ac = 0 / Re = 1
採用: サンプル文字 N、表のサンプルサイズ 500個
③ 全数検査の判定
500 >= 1000 は偽 → 全数検査ではない
実際に検査する個数 n = 500
抜取比率 n/N = 500 / 1000 = 50.0%
④ 合格確率(二項分布・Ac = 0 なので第0項のみ)
p = AQL / 100 = 0.00065
Pa = exp(500 × log1p(−0.00065)) = 0.722451
→ 72.2%
生産者危険 α = 100 − 72.2451 = 27.8%
②で「サンプルサイズも到達先のもの(80個 → 500個)に置き換える」ステップが抜けると、③の全数検査判定も④の合格確率も、そこから先すべてがずれる。矢印は表の中でいちばん静かに間違いを起こす記号だ。
OC曲線の横軸上限も、この計算エンジンの上に載っている。AQLの固定倍率(AQL×10 など)で横軸を決めると、Ac=21 の方式ではAQL 10% × 10 = 100% に張り付いて曲線の遷移部が左端に潰れ、逆にAc=0 の方式では裾が切れる。そこで合格確率が2%まで落ちる不適合品率を二分法で求め、その1.1倍を横軸の上限にする。どの方式でも曲線の立ち下がりが画面いっぱいに入るようにするためで、ケース4なら横軸上限は0.86%、ケース5なら17.4%と、方式ごとに自動でスケールが変わる。
他ツールとの違い — AQL 表を配るサイトと何が違うのか
日本語で「抜取検査 サンプル数 決め方」を調べて出てくるものが表の読み方の解説と主抜取表の PDF に偏っている、という前提は前半で触れたとおり。ここでは競合の話は繰り返さず、このツールが何を肩代わりして、何は肩代わりしないのかを整理しておく。
上乗せしているのは3点だけ
1つ目は、ロットサイズを入れれば n・Ac・Re まで確定すること。表の画像を配っているページは多いが、そこから先の「自分のロットは15区分のどの行か」「自分の AQL は何列目か」を目で追う作業は読者に残されている。行と列の交差点を人が指でたどる限り、1行ずれて読む事故はなくならない。ロットサイズ・検査水準・AQL の3つが決まれば交差点は一意に決まるのだから、そこは機械の仕事だ。
2つ目は矢印セルを解いて、解いた履歴ごと見せること。採用した方式だけを出すのではなく、表引きしたサンプル文字と最終的に採用したサンプル文字を並べて残す。矢印はサンプル数が増える方向にも減る方向にも動くので、結果だけ突きつけられると入力ミスと区別がつかない。「どこから来てどこへ行ったか」が残っていれば、規格原本と突き合わせる検算ができる。
3つ目は OC曲線と α・β。表は「n個中 Ac個以下なら合格」としか教えてくれず、その方式がどれくらいの判別力を持つかは表の外にある。同じ N=5000・水準II・AQL 2.5 の方式でも、不適合品率4%のロットは82.0%が合格し、8%のロットは6.9%しか合格しない。判別力が何%から何%の間で効いているのかは、この2つの数字を並べてはじめて見える。表を眺めているだけでは絶対に出てこない情報だ。
逆に、なみ検査・1回抜取方式に範囲を絞っている。きつい/ゆるい検査の表、2回・多回抜取方式、AQL 15以上の列は入れていない。理由は下の FAQ に書いた。
関連ツールとの役割分担
同じサイトにある生産管理・品質管理まわりのツールとは、扱っている工程の段階が違う。
工程能力指数 Cp/Cpk の計算ツールは作る側の実力を測るもので、本ツールは出来上がったロットを通すか止めるかを決めるものだ。この2つは代替関係にない。抜取検査で不合格が続くとき、AQL を厳しくしても不良は1個も減らない。検査は品質を選別するだけで、作らせる仕組みではないからだ。答えは工程側にあり、その工程の実力を数字にするのが工程能力指数のほうになる。
タクトタイム・ラインバランシングの計算ツールとは、サンプルサイズが決まったあとでつながる。n が確定すると「検査に何分かかるか」が決まり、その時間が工程時間としてラインに乗る。500個の外観検査が1人で回るのか、ネック工程になるのかを判断するのはライン側の計算だ。本ツールは検査の量を出すところまでで、それが流れに収まるかまでは見ない。
測定の誤差伝播の計算ツールは、良否判定の一段手前を扱う。抜取検査は製品を「良品か不適合品か」の2値に落としたあとの統計であり、その2値がどう決まったかは問わない。寸法測定の結果で良否を分けているなら、測定の不確かさしだいで良否そのものが入れ替わる。計数値になる前の話は、そちらの担当になる。
豆知識・読み物(サンプル文字と規格の来歴)
サンプル文字に I と O が無い理由
付表2-A のサンプル文字は A B C D E F G H J K L M N P Q R の16文字だ。アルファベット順に並んでいるように見えて、I と O だけが飛んでいる。誤植ではない。
理由は素朴で、I は数字の1と、O は数字の0と見分けがつかないからだ。この規格が生まれた頃、サンプル文字は検査記録票に手で書き込むか、タイプライターで打つものだった。「I」と書かれた欄がサンプル文字の I なのかサンプル数の1なのか読めない、という事故が現実に起きる場所で使う記号から、紛らわしい2文字が最初から除かれている。航空機の座席列に I が無いのと同じ発想だ。
結果として A から R までの18文字から2文字が抜けて16文字になり、この16という数がそのままサンプルサイズの段数(最小2個から最大2000個まで)に対応している。記号の数と段数が一致しているので、サンプル文字は「上から何段目か」を表す通し番号として読める。
MIL-STD-105 から JIS Z 9015-1 まで
この表の原型は、1950年代の米軍規格 MIL-STD-105 だ。第二次大戦中の軍需品調達で、納入された弾薬や部品をどこまで検査するかを部隊ごとの裁量に任せていられなくなり、統一した抜取方式を定める必要が生じたのが出発点になる。以後 105D・105E と改訂され、1995年に米軍自身は規格を撤回した。
そこで途切れなかったのは、民間側がそのまま引き取ったからだ。米国では ANSI/ASQ Z1.4 として、国際規格としては ISO 2859-1 として生き延び、JIS Z 9015-1:2006 はその ISO 2859-1:1999 に一致させた規格になっている。
実務上ありがたいのはここで、系譜が一本につながっている結果として、海外のサプライヤーに「AQL 2.5, General Inspection Level II, single sampling, normal inspection」と伝えれば、相手は同じ表の同じセルを引く。国が違っても検査条件の交渉が数語で成立するのは、70年前の軍用規格が世界中で同じ形のまま使われ続けているからだ。
参考: MIL-STD-105 - Wikipedia / Acceptance sampling - Wikipedia
「合格品質水準」から「合格品質限界」へ
AQL の日本語訳は2006年の改正で変わっている。それ以前は「合格品質水準」、現在は「合格品質限界」だ。英語側も Acceptable Quality Level から Acceptance Quality Limit に変わり、略語だけが AQL のまま残った。
わざわざ言い換えたのは、「水準」という語が「この品質を目指せばよい」と読めてしまうからだ。AQL 1.0 は「不適合品を1%出してよい」という許容目標ではなく、「連続して受け入れられる工程平均の上限はここまで」という限界を指す。目標として読まれると、供給側が AQL ぎりぎりを狙って作りはじめる。買う側が「1%までは許す」と言ったつもりが「1%出せばよい」と伝わる、という取り違えは訳語1つで起きる。
「限界」に直したのはその誤読を潰すためで、規格の数値は1つも変わっていない。用語の訳を変えるだけで運用の向きが変わる、という珍しい例だ。
参考: 日本産業標準調査会 JIS検索
なみ・きつい・ゆるいは点数で機械的に決まる
なみ検査・きつい検査・ゆるい検査をどう行き来するかのルールは規格に書かれている(切替の条件そのものは前半の解説で扱った)。面白いのは、なみ検査からゆるい検査へ移れるかどうかの判定に「切替スコア」という加点方式が用意されている点だ。ロットが合格するたびに条件に応じて点を足していき、規定の点数に達したらゆるい検査に移れる。不合格が出れば点は0に戻る。
つまり、検査を厳しくするか甘くするかは検査担当者や購買担当の裁量ではなく、実績の点数で自動的に決まる。「今回は納期が厳しいから甘めに」という判断が入り込む余地を、規格が構造的に潰しにいっている。抜取検査という仕組みが、そもそも判断を人から取り上げる方向に設計されていることがよく表れている部分だ。
Tips(表を引く前に決めておく5つのこと)
- 契約書には AQL と検査水準を必ずセットで書く: AQL さえ決めればサンプル数が決まると思っている人は多いが、水準が違えば同じロットでも表引きするサンプル文字が何段もずれ、実際に検査する個数が桁で変わる。「AQL 2.5 で受け入れる」だけの取り決めは後から必ず揉める。指定が無ければ水準 II、という JIS の既定を知らない相手もいるので、既定に従う場合でも明記しておく
- ロットの切り方でサンプルの総量が変わる: 同じ数の製品でも、大きく1ロットにまとめるか小分けにするかでサンプルの合計数が変わる。まとめるほど1個あたりの検査コストは下がるが、1ロット不合格になったときに止まる量も増える。使用例の超大ロットのケースと小ロットのケースを見比べると、ロットサイズがサンプル数に効く度合いは意外に緩いことがわかる
- Ac=0 を「厳しくした」と思わない: 合格判定個数を0にすると、サンプルに1個でも不適合品があればロットが落ちる。厳しくしたように見えるが、上がるのは生産者危険のほうで、悪いロットを止める力そのものはサンプルサイズでしか上がらない。使用例には Ac=0 になる方式がいくつか出てくるので、そこの生産者危険の値を見てから選んでほしい
- 不適合を致命・重・軽に分け、AQL を分ける: 1つのロットに1つの AQL しか設定できないわけではない。致命的欠点は 0.065〜0.10(あるいは全数検査)、機能に関わる重欠点は 0.65〜1.0、外観の軽欠点は 2.5〜4.0 のように分類ごとに AQL を割り当てるのが実務の定石だ。全部を1つの AQL で回すと、外観のキズに合わせて機能不良を見逃すか、機能不良に合わせて外観検査に過剰な工数をかけるかのどちらかになる
- 検査水準を変えても結果が変わらないときは矢印を疑う: 小さいロットに厳しい AQL を当てると、7つの検査水準すべてが同じ抜取方式に収束することがある。ツールが入力を無視しているのではなく、表引きしたサンプル文字がどれも矢印の領域にあって同じ行き先に着いているだけだ。サンプル文字は「表引き → 採用」の形で表示されるので、変更前の文字が水準ごとに違っていることを確認してほしい
FAQ(抜取検査 AQL 計算 よくある質問)
矢印が出てサンプル数が変わった。元のサンプル文字のサンプル数ではだめなのか
だめだ。JIS は矢印の先にある最初の抜取方式を使い、サンプルサイズも移動先のサンプル文字のものに置き換えると定めている。矢印の欄に方式が書かれていないのは、「その組合せは、そのサンプルサイズでは判定できない」という意味だからだ。表引きした文字のサンプル数のまま Ac・Re だけ移動先から持ってくると、規格のどこにも存在しない方式が出来上がってしまう。これが表を手で引くときに最も多い誤りで、しかも数字としては一応そろって見えるので気づかれにくい。本ツールは表引きした文字と採用した文字を両方表示するので、迷ったら採用側(矢印の行き先)を使えばいい。使用例の下向き矢印のケースでは、サンプル数が大きく増えたうえで合格判定個数も0になる。
「サンプルサイズがロットサイズ以上」と表示され全数検査になるのはなぜか
表から決まったサンプルサイズが、検査対象のロットの個数以上になったからだ。20個しかないロットから80個を抜き取ることはできない。JIS 付表2-A の備考に、サンプルサイズがロットサイズ以上になる場合はロット全数を検査する、と規定されているので、それに従って全数検査に切り替えている。小さいロットに厳しい AQL を当てるとこの状態になりやすく、矢印でサンプル数が増えた結果として起きることもある。このとき Ac・Re は表の値のまま変えない。ロット全数を見て不適合品が Ac 個以下なら合格、という判定になる。詳しい挙動は使用例の全数検査のケースで確認してほしい。
検査水準は II 以外をいつ使うのか。S-1〜S-4 は何のためにあるのか
指定が無ければ II を使う、が JIS の既定になっている(水準そのものの定義は前半の解説で扱った)。I は判別力を落としてよいとき、III は上げたいときの通常水準で、供給元の実績や特性の重要度で選ぶ。性格が違うのは S-1〜S-4 の特別検査水準のほうだ。これは破壊検査・高額品・1個あたりの検査時間が極端に長い項目など、サンプルを増やせない事情があるときにサンプル数を思い切って絞るためにある。たとえば N=1000 のロットを水準 S-1・AQL 2.5 で検査すると、実際に検査するのは13個で済む。当然その分だけ判別力は落ちる。「S だから特別に厳しい」ではなく、判別力と検査コストのどちらを取るかの選択だと考えてほしい。
AQL を満たしている品質のロットが不合格になることがあるのはなぜか
抜取検査が確率で判定する仕組みだからだ。サンプルに不適合品が何個入るかは運で決まるので、AQL ちょうどの不適合品率のロットでも、たまたま Ac を超える数がサンプルに入れば不合格になる。この確率が生産者危険 α で、ツールは AQL での合格確率 Pa と並べて数値で表示する。α の大きさは方式によってまったく違う。合格判定個数が大きい方式なら数%だが、Ac=0 の方式では 27.8% に達することもある(使用例の下向き矢印のケース)。規格どおりの品質で作っているのに4回に1回近く突き返される、という計算だ。検査条件を決める側が α を見ずに Ac=0 の方式を選ぶと、この摩擦が供給側との間で起きる。
入力したロットサイズや検査条件は外部に送信されるのか
すべての計算はブラウザの中だけで実行される。ロットサイズも検査水準も AQL も、確認用に入れた不適合品率も、サーバーに送信されることはない。付表1・付表2-A の表データはツールの中に持っているので、表引きのために通信が発生することもない。保存もしないので、ページを閉じれば入力内容は消える。取引先から預かった実際のロット数や、社外に出していない受入基準の AQL をそのまま入力しても差し支えない設計になっている。逆に言うと記録は残らないので、検討結果を手元に残したい場合は結果をコピーして保存してほしい。
きつい検査・ゆるい検査や、2回抜取方式は出せないのか
現時点では扱っていない。実装しているのは、なみ検査の1回抜取方式(付表2-A の主抜取表)だけだ。きつい検査・ゆるい検査はそれぞれ別の表になるうえ、どれを使うかは前のロットの合否の履歴で決まるので、条件を1回入力する形の計算では答えが出ない。2回抜取方式・多回抜取方式も別表になる。AQL も実用範囲の 0.065〜10 の12列に絞ってある。受入検査の現場で最初に必要になるのはなみ検査の1回抜取方式で、切替の判断はそこが決まったあとの運用の話だから、まずそこを正確に出すことを優先した。切替ルールの考え方は前半の解説を読んでほしい。
まとめ
抜取検査 AQL・サンプルサイズ判定ツールは、ロットサイズ・検査水準・AQL の3つから JIS Z 9015-1 のサンプル文字・サンプルサイズ n・Ac/Re を表引きし、人が最も間違える矢印セルも自動で解いて、OC曲線と生産者危険 α・消費者危険 β まで出す無料ツールだ。通すか止めるかではなく作る側の実力を評価したいときは 工程能力指数 Cp/Cpk 計算、検査工数がラインに収まるかを見たいときは タクトタイム・編成効率・ラインバランシング計算、良否判定の元になる測定の不確かさを見積もりたいときは 測定誤差の伝播計算 を併せて使ってほしい。
本ツールへの要望や不具合の報告は お問い合わせページ から気軽に連絡してほしい。
Mahiro
Mahiro Appの開発者。受入基準を作っていて主抜取表の「↓」を Ac/Re だけの読み替えだと思い込み、サンプル数80個のつもりが500個だったと後から気づいて検査ラインの計画を組み直した経験から、矢印の行き先を画面に書き戻すツールにした。
運営者情報を見る