物流・輸送

回路ネットワークの仕組みと組み方

Factorioの回路ネットワークは、赤と緑のワイヤで機械同士をつなぎ、アイテムや流体の種類と個数を信号として共有させることで工場を自動制御する仕組みです。初めて開いたときに赤と緑の違いがわからず検索ばかりして時間を溶かした経験があるので、まずここをはっきりさせたいと考えています。

物流・輸送

回路ネットワークの仕組みと組み方

Factorioの回路ネットワークは、赤と緑のワイヤで機械同士をつなぎ、アイテムや流体の種類と個数を信号として共有させることで工場を自動制御する仕組みです。
初めて開いたときに赤と緑の違いがわからず検索ばかりして時間を溶かした経験があるので、まずここをはっきりさせたいと考えています。
結論から言うと、両者に機能差はなく、独立した2系統を分けたいときに色を使い分けるだけです。
定数コンビネータ、算術コンビネータ、判定コンビネータも、入力から演算、出力へと流れる一本の仕組みとして捉えると見通しが一気によくなります。

回路ネットワークとは何か:赤緑ワイヤの正体

回路ネットワークは、ワイヤでつないだ建物同士が信号を共有し、工場全体の動きをひとつの仕組みとして扱えるようにする方法です。
ここで流れる信号はアイテムや流体の種類とその個数の組み合わせで、単なるON/OFFではありません。
この見方ができると、後で出てくるコンビネータが信号を加工する装置だとすぐに理解できます。

ワイヤで機械を繋ぐと『信号』を共有できる

回路ネットワークの面白さは、機械をただつないでいるだけなのに、内部状態を外に取り出して別の機械へ渡せるところにあります。
ベルトの中身、チェストの在庫、タンクの量といった情報が信号になれば、インサータやポンプの動作条件を細かく切り替えられるため、工場が自動で判断する感覚に近づきます。
入力側で情報を拾い、コンビネータで整え、出力側で機械を動かす流れにそろうので、回路は難解な魔法ではなく、部品のつながりとして見えるようになるでしょう。

赤ワイヤと緑ワイヤに機能差はない

赤ワイヤと緑ワイヤには機能的な差がなく、色はあくまで識別用です。
自分も最初に回路を組んだとき、赤と緑を意味ありげに使い分けようとして数十分悩みましたが、攻略wikiでどっちでもいいと知った瞬間は拍子抜けしました。
独立した2系統を近い場所で分けたいときに色を使い分けるだけだと分かれば、配線の心理的ハードルはぐっと下がります。

電柱に接続して配線距離を伸ばす

ワイヤは建物同士を直接結ぶだけでなく、電柱に接続して配線を遠くまで伸ばせます。
最初は建物直結で済ませても、距離が伸びると配線はすぐに破綻し、基地がスパゲッティのようになります。
電柱を経由すると回路ワイヤをきれいにまとめやすく、電力ネットワークとは別物でも同じ電柱に相乗りできるので、見た目も管理もずっと楽です。
こうした配線の逃がし方を覚えてから、基地全体の整理が一気に進みました。

コンビネータも回路理解の柱です。
入力端子と出力端子が物理的に分かれており、信号は入力から演算を経て出力へ流れます。
しかも1コンビネータにつき1ティック、つまり1/60秒の遅延が入るため、あとでタイミングを組むときにこの一拍が効いてきます。
定数で値を出し続け、算術で加工し、判定で条件を切り替えるという流れを押さえると、列車駅の制御や在庫連動の回路も同じ発想で組めるようになります。

信号の読み取りと条件設定:ベルト・チェスト・タンク

回路ネットワークの入力側は、建物の中身を信号として読むところから始まります。
ベルトに Reads belt contents を設定すれば、流れているアイテムをそのまま取り出せるので、工場の流れを目で追う代わりに数値で把握できます。
チェスト、流体タンク、組立機、研究所も同じ発想で扱えるため、在庫や処理状況をまとめて監視しやすくなるのです。

ベルト・チェストの中身を信号として読む

ベルトの読み取りは、回路ネットワークを「流れているものを見える化する」入口です。
Hold モードなら今ベルトに乗っている中身をそのまま保持して出し続けるので、ライン上に何が載っているかを安定して監視できます。
Pulse モードは通過した瞬間だけ 1 を出すため、流量の把握やカウントに向いています。
チェストや流体タンクまで信号化できるようになると、倉庫の中身やパイプの残量がそのまま制御材料になるので、感覚頼みの運用から一段抜け出せます。

Enable/Disable 条件で機械を止める/動かす

出力側の基本は Enable/Disable 条件です。
インサータ、ベルト、ポンプは「信号が条件を満たすときだけ動く」ように設定でき、たとえばチェストの鉄板が 1000 未満のときだけインサータを動かす、といった在庫上限制御が組めます。
自分も最初は条件の不等号を逆にしてしまい、チェストが満タンでも止まらず溢れさせました。
止めたいのか、補充したいのかを先に決めて、未満と以上の向きを落ち着いて合わせるのがコツです。

Hold モードと Pulse モードの使い分け

Hold と Pulse の違いは、回路の見え方をそのまま変えます。
Hold は「今そこにあるもの」を見続ける方式なので、在庫監視やライン詰まりの検知に向いています。
Pulse はアイテムが通過した瞬間だけ反応するため、1 個来るたびに 1 を積み上げるカウンタに使うのが自然です。
自分はこの違いを知らずにカウンタを組み、同じ数を延々と足し続けてしまいましたが、Pulse に切り替えた瞬間に挙動が素直になりました。
どちらも「読む」機能ですが、目的に合うほうを選ぶだけで設計の安定感が変わります。

Set filter(フィルタ設定)モードは、読み取った信号をそのまま作業内容に結びつける応用です。
信号に応じてインサータやスタックインサータが掴むアイテムを動的に変えられるので、要求チェストの中身に合わせて積み替えたり、次に必要な素材へ自動で持ち替えたりできます。
単なる搬送装置が、信号を見て動く柔軟な機械に変わる感覚です。
読み取りと条件設定をつないでおくと、在庫管理も物流制御も同じ考え方で組めるようになります。

コンビネータ3種の役割:定数・算術・判定

定数・算術・判定の3種は、回路ネットワークの中でそれぞれ役割がはっきり分かれています。
入力不要で基準値を置くもの、入力を計算して加工するもの、条件を見て出力を切り替えるもの、という整理ができると、配線の意味が一気に読みやすくなります。
どれも端子の向きは共通で、入力端子で受けた信号を演算し、出力端子へ流すだけです。

定数コンビネータ:基準値や目標値を置く

定数コンビネータは、GUIで設定した値を入力なしで出し続ける装置です。
目標在庫量や基準値のように、回路側から自動生成できない数字をネットワークへ供給する役割を持ちます。
自分も最初は何に使うのか掴めませんでしたが、判定コンビネータの比較相手として置くと役目がはっきりしました。
要するに、回路の中で「ここを基準に比べてください」と示す置き場です。

算術コンビネータ:信号を計算して加工する

算術コンビネータは、加算・減算・乗算・除算・剰余・ビット演算などを入力信号に適用して、新しい信号を作ります。
たとえば「鉄板 × -1」で在庫を負の値に反転し、別の信号と足して差分を取る、といった使い方ができます。
自分は昔、この差分処理を知らずに判定コンビネータを何個も並べて無理やり組んでいました。
1個の算術で済むと分かった瞬間、配線がすっきりして見通しが良くなります。

判定コンビネータ:条件で出力を切り替える

判定コンビネータは、条件比較の中核です。
『鉄板 > 10 ならランプ点灯』のように、入力が条件を満たしたときだけ出力するので、回路ネットワークの「判断」はほぼこれが担います。
定数コンビネータで置いた基準値と組み合わせると、在庫が目標を上回ったか、下回ったかをそのまま機械的に分けられます。
実用回路で主役になりやすいのは、結局この比較結果が後段の動作を決めるからです。

この3種をまとめて見ると、複雑な回路も「入力→演算→出力」の連結として読めます。
どこで信号を受け、どこで加工し、どこで判定するのかが分かれば、配線の意図を追いやすくなります。
入力端子と出力端子が分離している設計は、その流れを崩さずに組み立てるための仕組みだと考えると扱いやすいでしょう。

2.0の進化:判定コンビネータの複数条件とセレクタ

Factorio の回路ネットワークは、定数コンビネータ、算術コンビネータ、判定コンビネータの3種を「入力→演算→出力」で並べて考えると整理しやすいです。
どれも入力端子と出力端子が分かれており、信号を受け取って別の形に変え、次の装置へ渡す役割を担います。
2.0ではこの基本形がそのまま強化され、少ない部品数で複雑な制御を組みやすくなりました。

判定コンビネータの複数条件(AND/OR)と複数出力

判定コンビネータは「鉄板 > 10 ならランプ点灯」のように、条件を満たしたときだけ信号を出す装置です。
2.0ではここに複数条件の AND/OR が入り、AND は全条件成立で真、OR はどれか1つでも成立で真として扱えるため、旧版なら複数の判定コンビネータを直列や並列に置いていた論理が1個で済む場面が増えました。
さらに複数の出力信号を持てるようになり、1つの判定でランプも警報も搬送制御も同時に動かせます。
自分も以前は1条件から2アクションを出すのに判定を2個並べていて、2.0で出力を増やすだけでよいと知って過去のブループリントを組み直しました。

定数コンビネータは入力不要で、GUIで設定した信号を常時出力し続けます。
算術コンビネータは加算・減算・乗算・除算・剰余・ビット演算などを入力信号に適用し、数をそのまま扱うだけでなく、比率調整やフラグの加工にも使えます。
判定コンビネータはその中間にあり、条件比較で出力の有無を決めるため、回路の分岐点として最も出番が多い役回りです。

セレクタコンビネータの5つの機能

セレクタコンビネータは、既存3種では面倒だった処理を1個でまとめる新装置です。
入力信号を大小で並べ替えて任意の順位を取り出せるほか、入力数のカウント、ランダムな1つの選択、特定品質の付与、スタックサイズの出力までこなします。
単純な計算回路ではなく、信号の「選び方」そのものを扱える点が特徴でしょう。
Space Age を遊んでいて品質システムが絡んだとき、この品質付与がないと回路が一気に煩雑になり、旧版のテクを引きずるほど無駄に長い配線になると痛感しました。

機能を並べると役割の違いが見えやすいです。

機能役割使いどころ
並べ替えと順位選択大小順から任意の順位を抜き出す上位資源の抽出
入力数カウント入っている信号の数を数える構成チェック
ランダム選択複数候補から1つ選ぶ抽選や分散
品質付与特定品質を付ける品質システム連携
スタックサイズ出力個数ではなくスタック量を扱う在庫管理や搬送制御

赤緑ワイヤ別読み取りで配線を節約する

2.0では赤ワイヤと緑ワイヤの信号を区別して読めるようになり、同じ信号名でも別系統として扱えるようになりました。
冒頭で「色分けに機能差はない」と見えるのに、ここで初めて実利が生まれるわけです。
たとえば同名信号を赤と緑で分けて流せば、条件ごとに配線を束ねやすくなり、回路全体の集約が進みます。
SRラッチのような記憶回路も、2.0では単一の判定コンビネータで多くの組み合わせを実現しやすくなっており、後述の予備電力制御で使うヒステリシスの基礎部品として設計がかなり整理されました。

ワイルドカード信号:Each・Anything・Everything

ワイルドカード信号は、特定のアイテム名を1つずつ追うのではなく、信号の集合そのものをまとめて扱うための仕組みです。
Each・Anything・Everything を使い分けられると、回路の表現力が一段上がります。
最初は挙動が直感に反しやすいですが、役割を分けて理解すると見通しがかなり良くなるでしょう。

Each:各信号を個別に処理する

Each は、条件に一致した信号をそれぞれ独立に扱うワイルドカードです。
バランサーや一括加工でよく使われるのはこの性質が理由で、複数アイテムに同じ計算をかけたいときに向いています。
初めて Each でバランサー回路を組んだとき、なぜ全アイテムがきれいに均されるのか分からず、入力を1種類ずつ増やして挙動を追った経験がありますが、理屈が腑に落ちると応用が一気に効くようになりました。
たとえば「すべての信号を一律 ÷ 2 する」「各アイテムが100を超えた分だけ通す」といった処理が自然に書けます。

Anything と Everything の違い

Anything は「条件を満たす信号が1つでもあれば真」になる信号で、出力では条件を満たした最初の1信号だけを返します。
何でもいいから在庫が枯渇したものを検知したい場面では扱いやすいですが、返る信号が並び順に依存する点を外すと、意図しない結果が出ます。
自分もこれを知らずに30分ほど悩みました。
仕様だと分かってからは、「最初の1つ」が返る前提で回路を組むようにしています。
Everything は全信号をまとめて扱い、出力で Input count を選ぶと条件成立時に非ゼロ入力をすべて通し、1 を選ぶと非ゼロ入力すべてに1を出力します。
全アイテム一括のゲートとして働くので、単純な判定なら条件分岐を1つにまとめられて扱いやすいです。

ワイルドカード混在時の落とし穴

注意したいのは、Each と Everything を同じコンビネータで混ぜると、挙動が直感に反することがある点です。
片方は各信号を個別に見て、もう片方は集合全体をまとめて扱うため、設計者の頭の中で「1本の回路」としてつながっていても、実際の評価順はまったく別物になります。
誤用報告が多いのも納得で、最初から複雑にせず、まずは1種類ずつ単独で使って動作を確かめるのが安全です。
Each で加工の感覚をつかみ、Anything で判定の癖を把握し、Everything で全体制御に広げる流れにすると、混線しにくくなります。

実用回路①:列車駅と物流チェストの自動制御

列車駅と物流チェストの自動制御は、回路入力をそのまま停止条件に変えるだけで、運搬の詰まりをかなり減らせます。
駅制限を在庫連動にして、置き場が足りないときだけ受け入れ、材料がそろったときだけ積み込む形にすると、列車は「行っても無駄な駅」へ向かわなくなります。
100駅規模のネットワークを回していた時期も、ここを切り替えた途端に待機列車が目に見えて減りました。

在庫量に応じた駅制限の自動設定

積込駅では、チェストやタンクの中身を読み取り、材料が貨車1本分以上たまったときだけ駅制限を1にする組み方が定番です。
ベルトの Reads belt contents は Hold モードなら現在量、Pulse モードなら流れた瞬間だけ信号を出せるので、搬入の勢いを見たい場面と、在庫の残量を追いたい場面を分けて扱えます。
インサータやベルト、ポンプは Enable/Disable 条件で止められるため、駅そのものを空振りさせない制御に落とし込みやすいです。
判定コンビネータ1個で組めるのも扱いやすい理由でしょう。

荷下ろし駅は逆に、受け入れ先の空き容量があるときだけ列車を呼ぶ形にします。
チェスト、流体タンク、組立機、研究所のように中身を信号化できる設備を読むと、満杯の駅へ列車が吸い寄せられる事故を防げます。
積込と荷下ろしを対で設計すると、片側だけが詰まって全体の循環が止まる局面を避けやすくなるはずです。
駅の数が増えるほど、この差は体感しやすくなります。

積込・荷下ろしチェストの均等化

積込・荷下ろしチェストは、1個ずつの量を見ながら均等化しておくと回転率が上がります。
各チェストの中身を読み、平均より多い側のインサータを優先的に動かすか、少ない側だけ受け入れるようにしておくと、貨車のスロットが偏りにくくなります。
特定の1スロットだけ空かない状態は、駅占有時間を無駄に引き延ばす原因になりやすいです。
均等化回路を貼る前はそこが詰まりやすかったのですが、入れてからは回転が目に見えて上がりました。

Set filter モードもここで相性がいいです。
どのインサータがどの資材を扱うかを固定し、Enable/Disable 条件と組み合わせれば、余計な品目が混ざって偏る事故を抑えられます。
タンクを含む液体系でも考え方は同じで、読み取りと停止条件を結びつけるだけです。
物流のボトルネックは派手な装置より、こうした地味な整列で解消することが多いのではないでしょうか。

物流チェストの要求数を動的に変える

物流チェストの要求数は、固定値のままより動的に変えたほうが過剰在庫を抑えやすいです。
バッファチェストや要求チェストに対して、必要量が増えたら要求数を上げ、減ったら下げるだけで、物流ロボットは空振りしにくくなります。
需要を見て数を動かす設計にすると、余ったアイテムを運び続ける往復が減り、ロボットの滞留も和らぎます。
Set filter モードで扱い先を絞ったうえで要求数を調整すると、流れがさらに素直になります。

実際、100駅規模のネットワークでは、この動的制御がないと在庫の偏りがそのまま渋滞に跳ね返ってきます。
要求数を回路で上下させるだけでも、補給しすぎを避けながら必要な側へ優先的に流せますし、列車とロボットが同じ品目を奪い合う場面も減らせます。
自動化の要点は、信号を読むことより、その信号で止める・通すを明確に分けることです。
ここを押さえておくと、後の大規模化が楽になります。

実用回路②:石油分解と予備電力の自動切替

石油分解と予備電力は、回路ネットワークを実戦投入したときに最初に効く自動化です。
前者は流体の偏りをその場で吸収し、後者は蓄電池の状態に応じて蒸気発電を待機させるので、手作業の監視を減らせます。
どちらも固定値より「いま何が不足しているか」を見て動かす方が安定しやすいです。

石油分解を流体量で動的に止める

石油分解は、重油分解ポンプに『重油 > 軽油』、軽油分解ポンプに『軽油 > 石油ガス』という条件を入れるだけで、下流が詰まっている場面でも無駄に流れ続けにくくなります。
重油が余っているのに軽油を増やす、軽油が余っているのに石油ガスへ押し出す、といった過剰生産が止まり、精製所全体が供給過多で止まる事故を避けやすくなるわけです。
固定しきい値で「重油 > 20000」のように組む方法もありますが、流体同士を比べる動的制御の方が、下流の在庫に応じて自然に分岐するので扱いやすいでしょう。
実際、固定値で組んでいた頃は設定の調整が終わらず、流体比較に変えてからその手間から解放されました。

この方式の利点は、数を覚える運用ではなく、流れを見て止める運用に変わることです。
石油ガスに余裕があるなら軽油を急いで変換しなくてよく、逆に軽油が滞留したら積極的に分解へ回せます。
おすすめです。

蓄電池の充電率で予備電力を自動起動

予備電力は、蓄電池の充電率を見て予備の蒸気発電を起動する形が王道です。
たとえば充電率が20%まで落ちたら蒸気発電を入れ、90%まで戻るまでは稼働を保持しておくと、昼夜や負荷変動の谷をそのまま吸収できます。
原子力で蒸気の貯蔵量を測って予備制御するやり方は、蓄電池よりも状態が読みやすく、燃料セルの無駄打ちを避けやすいので、大規模基地ではこちらが素直です。
警報ランプを足しておけば、予備系が動いた瞬間に異常へ気づけるため、現場確認も早くなります。

この回路も固定のオンオフではなく、在庫の減少と回復を見て切り替えるのが肝になります。
蒸気量ベースで監視する基地では、余裕があるときは静かに待機し、足りないときだけ発電へ回る形がきれいです。
おすすめで、こういう制御は一度組むと長く効きます。

SRラッチでヒステリシスを作る

ヒステリシスを入れないと、しきい値付近で発電が毎秒オンオフを繰り返すチャタリングが起きます。
自分も最初はここを入れ忘れて、蒸気発電が落ち着かず燃料を焼き続けましたが、SRラッチで「一度起動したら90%まで止めない」と記憶させた瞬間に、燃料消費がぴたりと安定しました。
起動側と停止側の条件をずらすだけで、同じ回路でも挙動がまるで変わります。

この発想は、石油分解にも予備電力にも共通しています。
どちらも「足りないときにだけ動く」ようにしておくと、回路ネットワークは人手の補助ではなく、現場の平衡を保つ装置になるのです。
警報ランプを添えておけば、保持に入ったかどうかも見えやすくなります。
してみてください。

この記事をシェア

T

Takuma

Factorio 3,000時間超。1k SPM メガベースを複数パターンで達成した生産ライン設計のスペシャリスト。本業のプラントエンジニアの知識を工場最適化に応用しています。