CONFIDENTIAL | 2026-07-23(v1.1=2026-07-26 §1追加)

公務員オンライン模試
コンテンツ&供給システム 仕様書 v1.1

SPI模試と同じ形式で、公務員ライン(/komuin-webtest/)の中身を棚卸ししたものです。コンテンツ/出題の仕組み/供給システム/課題を、2026-07-23 時点の一次現物(本番URL実測・コード・データファイル)で確認しました。確認できなかったものは unknown と明記しています。
v1.1(2026-07-26 追加)=「§1 全体像」を新設し、その後の改修(配信のサーバ一本化・解説の恒久修正)を本番実測で反映しました。§2 以降は 7/23 時点の記録としてそのまま残していますので、§1 末尾の対比表で読み替えてください。

📌 3行サマリー
目次
  1. 全体像 — 何が、どこから、どう配られているか
  2. 位置づけ — SPIとの関係
  3. コンテンツ仕様
  4. 出題の仕組み
  5. 採点・結果
  6. 供給システム
  7. 課題 — 全11件

1. 全体像 — 何が、どこから、どう配られているか

公務員模試も「①問題を作る」「②正本として版を固める」「③配る」の3層で構成されています。SPIラインと同じ製造基盤・同じ正本・同じ出題workerを共有し、試験種と分野の指定だけが違う、という関係です。この節の記載はすべて 2026-07-26 に本番URL・本番R2を叩いて実測したもので、§2 以降(2026-07-23 時点)より新しい状態を表します。差分は節末にまとめました。

生成層 | 問題をつくる
spi_generator(Python・自社生成器)
文章理解/知識(社会・自然・人文)/時事/判断推理・数的推理・資料解釈・空間把握を、それぞれ専用の生成器で量産する
正本層 | 版として固める
release_build.py(exam_family = komuin
SPIと同じビルダに 公務員を独立した exam_family として収載。単元マスタ・試験ブループリントを結合し、品質ゲート(正答位置の偏り/完全一致重複/ID衝突/解説の番号参照)を通した版だけが出せる
serving/komuin/分野×トピック単位のシャード43本。答えを含まない
_answers/答えと解説だけを別バケットへ分離
passages/長文本文330問ぶん。sha256をファイル名にする
manifest.json全ファイルのsha256と件数を事前集計
current.json → qb-r2-20260724d
現行の正本リリース。この版に載っている公務員問題は 2,209問(本番R2の manifest 実測)
R2: educare-question-bank
serving + manifest + current.json
R2: educare-question-bank-answers
_answers のみ・別バケットに物理分離
配信層 | 出題は (A) の1経路のみ(2026-07-26 実測)
A正本・唯一の出題元
出題worker
spi-questions.komuin-sukima.workers.dev
R2の正本を読んで出題する。SPIと同じworkerを共有し、exam(試験種)や family=komuin の指定で公務員問題だけを返す。出題セットには署名トークン(set_token)が付き、採点はサーバ側
  • GET api/exam/set?exam=<試験種>&count=(試験種別・体験)
  • GET api/spi/questions?family=komuin&field=(科目別演習)
  • POST api/grade/finish(サーバ採点)
応答に答え・解説を含まないことを本番実測
B(A)へ配線済み
自社フロント
公務員オンライン模試(Web)
educarelog.net/komuin-webtest/
埋め込みバンクを全廃し、開始時に (A) から取得する方式へ切替済み(Phase C)。受験用チャンクは SpiMockTest 約56KB+questions-api 約10KB で、問題IDの同梱はゼロ(本番バンドルを取得して実測)。
SPI受験者の端末へ公務員問題が配られる問題は解消
C出題には非関与
周辺の外部呼び出し
会員導線・受験ログ
educare-poc… /auth/line
educare-cbt-ingest… /ingest
前者はLINEログイン(会員登録)の導線、後者は受験ログの送信先です。どちらも問題データは扱いません。なお educare-cbt-ingest は外部提供API(キヨさん向け /v1/*)と同じworker上にありますが、フロントが叩くのは /ingest だけで別経路です。
問題・答えは通らない
正本(A)から同世代を配っている ※ 2026-07-24 以前は問題バンクをブラウザへ丸ごと同梱していましたが、Phase C で解消しました。
系統実体いま何が起きているか(2026-07-26 実測)
(A) 出題workerspi-questions.komuin-sukima.workers.devfact稼働中・公務員の唯一の出題元api/exam/set を叩くと questions/meta/set_token が返り、問題オブジェクトのキーは stem・choices・figures・passage… のみで answerexplanation も含まれないことを確認。返る問題はすべて exam_family=komuinbank_release_id=qb-r2-20260724d
(B) 自社フロントeducarelog.net/komuin-webtest/fact稼働中・一般公開。本番バンドル(ExamSetupControllerquestions-api)が (A) の api/exam/setapi/spi/questionsapi/grade/finish を叩く実装であることを、配信中のJSを取得して確認。問題IDの同梱ゼロ
(C) 周辺educare-poc…/auth/line
educare-cbt-ingest…/ingest
fact会員登録(LINEログイン)と受験ログ送信。問題データは通らない

1-1. 4つのモードと、8試験種の出題可否(全数実測)

公務員ラインには4つのモードがあります。試験種別モード(8種から選ぶ・紙試験式)、科目別演習モード(分野と難易度を指定)、体験モード(登録なしで受けられる)、AI公務員試験モードです。試験種別と体験は api/exam/set、科目別演習は api/spi/questions を使います。

試験種(画面表示)制限時間出題単元重みの配分表備考
国家一般職40分200gyosei にマップ出題実績(1,500問ぶん)から単元ごとの重みを算出した配分表に紐づいている
地方上級75分200gyosei にマップ
特別区40分200gyosei にマップ
東京都Ⅰ類B45分200gyosei にマップ
消防45分200keisho にマップ画面上の値 shobo はフロントが tokyo-fire-1 に変換して送る
市役所60分200未マップ科目ごとの配分(現代文1・判断推理2…)は存在し出題はできるが、単元レベルの重み配分表が無い。§7 の課題として残っている
警察50分200未マップ
警視庁35分200未マップ

※ 8種すべてについて実際に api/exam/set を叩き、全種が HTTP 200 で規定数を返すことと、meta.mapped_series の値を確認しました。「選択できるのに出題できない試験種」は現時点では存在しません

✅ この節(2026-07-26 実測)が、§2 以降(2026-07-23 時点)を更新している点

以下の3点は、7月24〜25日の改修(Phase C = 配信のサーバ一本化/解説の番号非依存化)で状況が変わっています。§2 以降の本文は当時の記録としてそのまま残していますので、読み替えてください。

§2 以降の記述(7/23時点)現在(7/26 実測)
問題バンクはSPIと同一ファイルを共有し、SPI受験者の端末にも公務員2,377問が一緒にダウンロードされる解消。ブラウザへの同梱を全廃し、(A) 出題workerから都度取得する方式へ切替済み。公務員は正本リリース上も exam_family=komuin として独立して収載されている
公務員として出題されるのは 2,377問正本リリース qb-r2-20260724d 上は 2,209問。図から積み木の総数を一意に数えられない「積み木数え」40問を暫定で配信除外したほか、重複や旧世代分の除外がかかっている(除外の内訳は manifest に記録)
選択できる6試験種のうち2つ(市役所・警察)には配分表が存在しない画面から選べるのは8試験種で、全種が出題可能(実測)。ただし市役所・警察・警視庁の3種は単元重みの配分表が未マップのまま(科目配分はある)

※ このほか、第三者監査で見つかった解説の選択肢番号のずれ(答えは正しいが解説文中の「選択肢3」が別の並びを指す)は、番号参照そのものを廃して選択肢本文の引用に置き換える形で 7/25 に恒久修正済みです。公務員538問を変換し、版を出す前に機械照合するゲートを常設しました。

2. 位置づけ — SPIとの関係

fact公務員模試は https://educarelog.net/komuin-webtest/(「公務員♾️オンライン模試」)で本番稼働中です。SPI体験模試(/spi-taiken/)とは別商品ですが、実装を共有しています

要素共有の状況
問題バンク同一ファイルを共有。1本のJSON(6,536問)にSPIと公務員の両方が入っており、分野タグで振り分けている。公務員専用の問題ファイルは存在しない
出題エンジン同一コンポーネント。モードで分岐する
出題の混在fact混ざらない。エンジンに排他フィルタが実装されており、「公務員モードは公務員問題のみ/SPIモードは公務員問題を除外」とコード上で明示されている
配布のされ方混ざる。同一JSファイルとして配信されるため、SPI受験者の端末にも公務員2,377問が一緒にダウンロードされる(§7-9)

※ 当社の方針として、SPI/公務員/SCOA/適性はサービスとしては別ライン、問題製造だけ共通基盤という整理に確定しています。現状は「製造の共通化」ではなく「配信の相乗り」になっているため、配信経路を分ける改修を予定しています。

3. コンテンツ仕様

3-1. 分野別の内訳

分野問題数トピック内訳
判断推理955空間把握134/位置関係106/対応関係103/順位100/嘘つき100/試合100/方位100/集合100/命題100/順序関係6/発言推理6
資料解釈519実数割合144/構成比141/増加率125/指数109
文章理解351現代文191/英文160
数的処理(非言語)210推論62/損益算・旅人算・仕事算・料金割引・割合と比・確率・表の読み取り・整数の性質 各15/集合14/場合の数14
自然科学110生物37/地学35/化学26/物理12
社会科学110経済37/法律29/政治28/社会14/国際2
人文科学110日本史35/世界史26/思想23/地理20/文学芸術6
時事12人口推計2/労働力調査2/米国雇用統計2/日銀1/米国物価1/FRB1/米国GDP1/米国貿易1/大阪関西万博1
合計2,377全問5択

3-2. 難易度と付帯情報

項目実測値
難易度分布1:89/2:402/3:984/4:583/5:319(SPI正本より難度が高い側に寄っている)
解説欠落ゼロ(全2,377問が解説ステップを保持)
図解267問が解説図(SVG)を保持
長文本文331問が passage を保持(文章理解351問のうち20問は問題文に本文を埋め込む形式)
試験種タグ134問のみ:地方上級72/警察56/消防56/国家一般54/特別区54/市役所52(重複計上)
年度タグ211問のみ
出所generated 1,250/original/educare 906/ai-original 209/外部URL 12(時事のみ・政府統計/BLS/FRB等の実ソース)

4. 出題の仕組み

4-1. 試験種別の科目配分(ブループリント)

fact試験種ごとに科目の相対ウェイトを持ち、比例配分で出題します。1回の出題数は40問固定で、下表の合計値とは一致しません(あくまで比率)。

試験種現代文英文国語判断推理空間把握数的推理資料解釈人文社会自然時事
国家一般職5552436
特別区5464544484
東京都4424644345
消防5456262343
地方上級3564616685
汎用(体験用)5363531112

課題市役所・警察には配分表が存在しません(§7-3)。

4-2. モードと制限時間

モード仕様
体験(16問16分)汎用の分野ウェイトで出題。冒頭3問を文章理解に固定、最終問を実データ資料解釈に固定、空間把握は図形バリエーションを2系統以上混ぜる、という並べ替えルールを実装
試験種別上記ブループリント+単元別ウェイトで40問
AI公務員試験全分野から難易度指定でランダム。ブループリントは適用されない
科目別演習1科目のみ抽出。単元ウェイトは適用されない
制限時間国家一般職40分/地方上級75分/特別区40分/市役所60分/警察50分/消防45分

4-3. 単元別ウェイト

数的処理系4分野(数的推理・判断推理・空間把握・資料解釈)は単元ごとの重み表を持ち、不足度を追跡しながら比例配分します。この重みは試験種によらず共通です。自然科学のみ試験種別の重み表を持ちますが、実データがあるのは消防と警視庁の2試験種だけです。文章理解・社会科学・人文科学・時事には単元ウェイトがありません(科目レベルの配分のみ)。

5. 採点・結果

スコア      = Σ(正解した設問について 8 + 難易度×3)
ペナルティ  = 不正解数 × 1.8
推定偏差値  = clamp(37 + スコア×0.92 − ペナルティ, 28, 76)
段位(1〜7)  = 偏差値を7段階に量子化(≥70→7 / ≥62→6 / ≥55→5 / ≥48→4 / ≥42→3 / ≥35→2 / 未満→1)

分野別スコア(8分野それぞれ)
  weighted  = Σ(正解: 8+難易度×4 / 不正解: −4)
  偏差値    = clamp(42 + weighted/該当設問数, 30, 72)

factUI上でも「偏差値(参考値)」と明記しています。SPIの性格検査と同様、受験者集団の統計から算出した偏差値ではなく、設計式による推定値です。結果画面には正答率・7段階評価・分野別レーダー・診断ラベル(7種の演出)を表示します。

6. 供給システム

SPIと同じくビルド時にバンクをJSに同梱して配布する方式です。実行時に問題APIを叩くコードはありません。

[生成器 spi_generator]
   判断推理  → e3/handan*.py(ルールベース制約生成+CSPソルバーで解の一意性を担保)
   資料解釈  → e3/shiryo.py(パラメトリックSVG+データ表)
   文章理解  → reading/generator.py(2段LLM:出題者→別モデルが正答と根拠を独立検証→不一致は却下)
   自然/社会/人文 → knowledge_generator.py(生成+独立AI監査・VALID必須)
   時事      → current_affairs_generator.py(生成+7項目の事実監査が全てTrueでないと不採用)
        │
        ▼
   spi-questions.bank.json(SPIと共有・6,536問)
        │  ビルド時に静的import
        ▼
   [Web] educarelog.net/komuin-webtest/      … 同梱配布
   [LIFF] LINE内受験 /webtest                 … 別スナップショット(後述)
        │
        └→ 受験結果のみサーバへ送信(educare-poc worker)
正本リリースに載っていない fact当社の問題バンクの正本は R2 上のイミュータブルな版付きリリースですが、その名前空間は現在 spi のみで、公務員問題は1問も載っていません。つまり正本側に実装済みの品質ゲート(正答位置の一様性検査・重複遮断・ID一意性)が、公務員ラインには一度も適用されたことがありません。§7の欠陥が見つかったのはそのためです。

7. 課題 — 全11件

CRITICAL6-1. 時事12問の正答が全部1番目

fact時事の全12問で正答が選択肢index 0。100%。クライアントに選択肢シャッフルの実装が無いため、並び順のまま表示されます。

是正案:選択肢を再シャッフルして正答indexを更新。正本リリースへの収載時に一様性ゲートを通す。

HIGH6-2. 文章理解351問の正答が3番目に43%集中

factindex2に151問(43%)が集中し、index4はわずか12問(3%)。自然科学34%・社会科学31%・人文科学30%にも緩やかな偏りがあります。判断推理・資料解釈・数的処理は22〜23%で健全です。

SPI正本側では同種の欠陥(文章理解の84%偏り)を本日是正し、再発防止のゲートも入れましたが、公務員ラインは正本の外にあるためゲートが届いていません

是正案:6-1と同じ。生成器側では文章理解の答え位置を決定論的にシャッフルする修正が既にコミット済みなので、バンクを再生成すれば解消します。

HIGH6-3. 選択できる6試験種のうち2つに配分表が無い

factUIで選べるのは国家一般職・地方上級・市役所・警察・消防・特別区の6種ですが、科目配分表があるのは4種のみ。市役所と警察を選ぶと、SPI用の汎用配分(算術6:推論3:言語3)にフォールバックします。LPは「試験種別モードは選択区分の出題比率で出題」と謳っているので、この2試験種では説明と実装が一致しません。

さらに警察は、自然科学の単元配分だけ警視庁のデータを流用しつつ、科目配分はSPI風になるという、ねじれた状態です。

是正案:市役所・警察の配分表を作る。作れないなら選択肢から外すか、LPの表記を実装に合わせる。

HIGH6-4. 問題文が完全一致する重複が479問

fact問題文(NFKC正規化後)が完全一致する重複が479問。内訳は文章理解215/資料解釈105/判断推理103/自然科学27/社会科学16/人文科学13。選択肢まで含めて完全一致するものは6問なので、多くは「同じ問題文で選択肢だけ差し替えた」水増しです。

是正案:正本リリースへ収載し、重複遮断ゲートを通す。テンプレートの多様性を上げる。

MEDIUM6-5. 8月1日から登録が必須化されるが、LPが告知していない

factコードに FREE_UNTIL = 2026-08-01 という定数が入っており、この日を過ぎると「登録せずに受験する」導線が消え、試験種別・AI・科目別の各モードが登録必須になります。体験モード(16問)だけは対象外で登録不要のままです。

LPは「登録は無料」「登録すると分野別レポートをLINEに保存」と任意の付加価値としてのみ記載しており、日付での必須化に触れていません。

unknownこの日付が意思決定されたものか暫定値かは、コード上の定数として確認できるだけで経緯の記録が見つかりませんでした。

是正案:日付の妥当性を確認したうえで、LPに告知を入れるか、日付を延ばす。放置すると8月1日に「無料と書いてあるのに受けられない」状態になります。

MEDIUM6-6. LPが謳う対応試験種8種のうち2種は選択できない

factLPは「国家一般職、地方上級、市役所、警察、消防、特別区、東京都、警視庁」の8種を掲げていますが、選択可能なのは6種です。「東京都」と「警視庁」はUIに到達経路がありません(東京都の配分表はデータとしては存在しますが呼び出されません)。

是正案:2種を選択可能にするか、LPの記載から外す。配分表は既にあるので前者が容易です。

MEDIUM6-7. 試験種タグが134問しかない

fact2,377問のうち試験種タグが付いているのは134問(各試験種50〜72問)。残りは試験種を問わない汎用出題です。40問の模試を試験種別に組もうとしても、その試験種固有の問題はほとんど混ざりません。

是正案:単元台帳(出題実績インデックス4,958行)を使って試験種タグを機械的に付与する。台帳には試験種×年度×テーマの実績が既にあります。

MEDIUM6-8. LIFF版のバンクがさらに古く、内訳も違う

factLINE内受験のバンクは5,343問で、公務員系は1,502問(判断推理800/資料解釈400/文章理解50/自然科学10/社会科学10/人文科学10/時事12/数的処理210)。Web版の2,377問と総数も内訳比率も異なる別スナップショットで、最終更新は2026-06-22です。特に文章理解が50問(Web版は351問)と大きく欠けています。

是正案:配信経路を正本に一本化する(SPIラインで進行中の改修と同じ)。

MEDIUM6-9. SPI受験者の端末に公務員2,377問が配布される

factバンクが1ファイルなので、SPI体験模試を開いただけの利用者にも公務員問題が一緒にダウンロードされます(全体で展開16.4MB/gzip転送1.6MB、うち約3分の1が公務員系)。答えと解説も含まれています。

是正案:サービス4ライン分離の方針どおり、配信経路を分ける。

LOW6-10. 生成器の出所が1,250問で追跡できない

fact出所が generated としか記録されていない問題が1,250問(全体の53%)あり、どの生成器・どの世代の産物か辿れません。original/educareai-original と混在しています。

是正案:正本リリース収載時に系譜情報(リリースID・生成器・単元ID)を焼き込む。SPIラインでは実装済みです。

LOW6-11. 時事問題の自動更新が未実装

fact時事は12問のみで、全問が2026年7月時点の内容。生成器には「直近12ヶ月の確立した事実に限る」という制約と事実監査(7項目すべてTrueで採用)が実装されていますが、月次で自動更新する仕組みは計画段階のまま未実装とコード内に明記されています。人手での再生成に依存しています。

是正案:鮮度失効の仕組みを設計する。時事は「出題周期」ではなく「鮮度」で管理すべき性質なので、単元台帳とは別建てが必要です。

8. 補遺 — 導線

fact紛らわしい点として、/komuin-spi/(SPI方式で受けられる公務員試験まとめ)と /komuin-webtest/(本模試)は名前が似ていますが完全に独立しており、相互リンクが1本もありません。前者は自治体情報の静的まとめページで、受験機能はありません。

📐 データ契約(Data Contract)— 選択肢・正答・送信値の基準

本仕様書が定義するAPI・バンクに共通する契約です。「選択肢を何番目として数えるか」「正答値の基準」「送信する回答値の意味」「宣言の在り処」を、実装側の解釈違いを防ぐために明文化します(2026-07-31 確定・ANSWER_BASE_MIGRATION_PLAN_20260730.md §10-8)。

ID項目定義
DC-1選択肢の数え方選択肢配列は先頭を0とする配列添字で数えます。choices[0] が1番目の選択肢です。画面表示の「選択肢1」は添字0の投影(表示専用の変換)です。
DC-2正答の基準バンク内部の answer1基準へ切替済みです(2026-08-01 完了)。切替は当社内部の是正であり、本仕様のAPI挙動・採点結果は切替前後で同一であることを機械検査(全問題×全choice点の突合)で保証済みです。
DC-3解答送信の意味choice当APIが返した choices 配列の位置(0始まりの配列添字)です(2026-07-31 確定)。-1 は「未回答」を表す正規のセンチネル値です。
DC-4宣言の在り処正答を含むデータは manifest トップレベルの answer_base 宣言と同伴でのみ解釈します。宣言の無いデータは読みません(fail-closed・既定値で補いません)。

※ この節は共有済みの4仕様書(SPI/公務員/SCOA/適性)すべてに同一内容で追記しています。