2026.09.23 泊まれる場所4,223 立ち寄りスポット59,693 営業中を確認したキャンプ場1,005 note を読む

衆議院のコードを参議院にそのまま持っていけなかった話

同じ選挙のはずなのに、定数が1人の区と6人の区が混ざっていた。
「競っている順」という当たり前の並び替えが、いきなり通用しなくなった。

選挙にGO!をつくる第3回 / 全24回目次

衆議院を一通り作り終えて、参議院にも同じ選挙戦モードを足すことにした。
選挙区で戦って、比例代表があって、公示から投票日まで日数を数える。骨格はほとんど同じに見えたので、正直、コピーしてちょっと直せば終わると思っていた。

「競っている順」が意味をなさない

衆議院の小選挙区は、必ず1人しか当選しない。だから「自分の候補と、いちばん票の近い相手との差」を見れば、競っているかどうかがそのまま分かる。
参議院の選挙区は違う。定数1人の県もあれば、東京都のように6人当選する区もある。6人区で2位につけていれば余裕で当確、逆に定数1の区で2位なら当確までまだ遠い。

衆議院のコードをそのまま持ち込んで「対立候補との差」で競り具合を出したら、東京都のような大きな区で数字が意味をなさなくなった。
結局、見るべきは「対立候補との差」ではなく「当落ラインとの差」——その区の定数番目の得票との差に作り直した。定数が変わっても、これなら同じ物差しで測れる。

比例代表も、ブロックの数だけ勝手が違った

衆議院の比例代表は全国を11ブロックに分けている。参議院は全国で1ブロックだけ。
ブロックが複数あることを前提にしたループ処理を持ち込むと、境界値のところで妙な挙動をしないか身構えたが、幸い参議院側は最初から「ブロックは1つ」という前提で作り直したので、その手のバグは出ずに済んだ。骨格が同じに見えても、前提が違う部分は素直に書き直したほうが早い。

もう一つ、衆議院にあって参議院に無いものがある。小選挙区と比例代表への重複立候補と、それによる惜敗率での復活当選だ。参議院にはこの仕組みがない。
おかげで、参議院側の当落判定は衆議院より単純になった。無いものを無理に持ち込まなくていい、というのも移植の中でわかったことの一つだった。

ゲームを1本作るときの進め方を、noteにまとめています(書いているのは私です)。
noteで読む

まる子パパ

まる子パパ

会社員。受託開発のエンジニアを15年以上続けていて、その前は寿司職人・長距離運転手・農業。 技術ブログは、キャンプの合間に踏んだバグと、AI・Web開発の運用の失敗を書いています。 このサイト自体が、開発に携わっているCMS「コンテナ」の稼働中の実例です。 このサイトについて / 小さな自動化の相談

—

ほかにも書いています

受託・note・スタンプ

※受託の相談とnoteは、運営者が個人で受けている・書いているものです。

技術ブログ一覧へ戻る