【電工二種】複線図の描き方を完全マスター!「3つの鉄則」で初心者でも5分で描ける超入門ガイド(見やすいSVG複線図付き)

【電工二種】複線図の描き方を完全マスター!「3つの鉄則」で初心者でも5分で描ける超入門ガイド(見やすいSVG複線図付き)

2026/05/31

この記事の3秒まとめ

  1. 単線図から複線図への変換は、難しい電気理論ではなく、バグのない「決定論的なアルゴリズム」として処理できる。
  2. 白は負荷とコンセント」「黒はスイッチとコンセント」「スイッチと負荷を繋ぐ」という「3つの鉄則」を順番に実行するだけで、どんな複雑な回路も自動的に完成する。
  3. 配線接続をグラフ構造としてモデル化し、TypeScriptで記述した「論理検証コード」を使って、配線設計に潜むバグをプログラム的にデバッグする手法も大公開!

後輩の皆さん、こんにちは!都内のIT企業でシステム開発のディレクションをしつつ、自宅のスマートホーム化(自動化)に執念を燃やしている40代のWebエンジニアです。

前回の記事では、より線の許容電流を語呂合わせ「珊瑚のみなさん、ここはシック」で一発暗記する手法を伝授しました。これで筆記試験の計算問題はバッチリですね!

しかし、第二種電気工事士の合格に向けて進む中で、実技試験(技能試験)の練習を始めると、ほぼ全員が最初にぶち当たる巨大な壁があります。

それが、「単線図から複線図への変換」です。

問題用紙に描かれた「たった数本の線で簡略化された図(単線図)」を見て、「ここから実際の黒や白や赤の電線がどう繋がるかを表す図(複線図)を制限時間内に描きなさい」と言われた瞬間、頭がフリーズしてしまった経験はありませんか?

「なんだかネットワークの論理トポロジー図から、いきなりサーバーラックの物理配線図を引き直すような感覚だな……」

そう思ったあなた、大正解です!実は、複線図の作成は、Webシステムにおける「設計書からソースコードを起こす作業」や「物理ネットワークのパッチパネル結線」と全く同じなのです。

今回は、パズルや暗記に頼るのではなく、エンジニアらしく「再現性の高いアルゴリズム(決定的な処理フロー)」として複線図を5分で完璧に描ききる技術を、美しい自作のSVGビジュアル図解とともに解説します。脳のメモリ(RAM)を無駄遣いせず、バグのない配線をマスターしましょう!


🧠 なぜ複線図で挫折するのか?「脳内メモリの過負荷(Stack Overflow)」を防ぐ考え方

初心者が複線図を描こうとするとき、最もやりがちな失敗は「すべての配線を一気に引こうとすること」です。

電源から出て、スイッチに行って、ライトに繋がって、あ、接地側は白で……と、頭の中で複数のタスクを並列処理しようとすると、すぐに脳の「コンテキストスイッチ(処理の切り替え)」が追いつかなくなり、以下のようなバグ(配線ミス)が発生します。

  • スイッチに接地側の白線を直接繋いでしまい、スイッチをONにした瞬間にバチッとショート(短絡)する。
  • 負荷のもう片方の端子を電源の黒線に直接繋いでしまい、スイッチに関係なく電気が点きっぱなしになる。
  • 複数のジョイントボックスの中で、どの線同士を圧着接続すべきかわからなくなる。

これらは、電気の才能がないからではありません。単に「手順が構造化されていないから」です。

複雑なWebアプリケーションを構築するとき、一気にすべての機能をコーディングする人はいませんよね?まずはDB設計をして、APIエンドポイントを作って、最後にフロントエンドを繋ぐように、順を追ってビルドします。

複線図もまったく同じです。これから紹介する「3つの鉄則」というアルゴリズムを順番にシングルスレッドで実行すれば、脳のメモリ消費量を最小限に抑えながら、自動的に100%正しい配線図が完成します!


🔌 脳をバグらせない!複線図作成の「3つの鉄則」

複線図を物理設計図として組み立てるためのアルゴリズムは、以下の「3ステップの命令セット」のみです。この順番を絶対に崩さないでください。

実行ステップ処理内容(インストラクション)覚えるためのスローガン
Step 1電源の「N(接地側・白線)」を、すべての「負荷」と「コンセント」に接続する。白は負荷とコンセント!
Step 2電源の「L(非接地側・黒線)」を、すべての「スイッチ」と「コンセント」に接続する。黒はスイッチとコンセント!
Step 3各「スイッチ」の出力端子から、対応する「負荷」のもう片方の端子に接続する。最後はスイッチと負荷をペアリング!

どうでしょうか?非常にシンプルですね。 ここで最も重要な「セーフティ(安全設計)」は、「スイッチには絶対に白線(接地側)を直接繋がない」、そして「負荷には絶対に黒線(非接地側)を直接繋がない」ということです。

この原則を頭に入れた上で、実際の回路がどのようになるか、美しいビジュアルで確認してみましょう。


🎨 【ビジュアル解説】これが基本回路の美しいSVG複線図だ!

以下は、単相2線式100Vの電源から、1つの「片切スイッチ(イ)」で、1つの「引掛シーリング(イ)」(天井用の照明器具)をON/OFFする最も基本的な回路の複線図です。

エンジニアの皆さんに見やすいよう、モダンなダークテーマのCAD(設計ツール)風に描き起こしました。

単線図から複線図への変換(基本回路・イ)

🔍 SVG複線図の注目ポイント

上記の図を見ていただくと、先ほど紹介した「3つの鉄則」がいかに厳格に適用されているかが一目でわかります。

  1. 青色 1 マーク(白線): 電源の N(接地側) から出た白線は、ジョイントボックス内の「白線接続点」を経由して、一直線に「引掛シーリング(イ)の白(W)端子」へ向かっています。スイッチには一切寄り道していません。
  2. 水色 2 マーク(黒線): 電源の L(非接地側) から出た黒線は、ジョイントボックス内の「黒線接続点」を経由して、「片切スイッチ(イ)の黒端子」にまっすぐ繋がっています。負荷(シーリング)には直接繋がっていません。
  3. 赤色 3 マーク(赤線): 残された「スイッチ(イ)の出力端子」から出発した線(ここではVVFケーブルの「赤線」を使用)が、ジョイントボックス内の「赤線接続点」を経由して、「引掛シーリング(イ)のもう片方の端子」をきれいに結んでいます。

このように順番通りに接続するだけで、誰でも確実に、バグ(配線ショートや動作不良)のない綺麗な複線図を描くことができるのです!


🛠️ 【実践】複線図の接続ロジックをコードで検証する(ユニットテスト)

ここで、「本当に3つのルールだけで正しい回路になるのか?」と疑問に思ったエンジニアの皆さんのために、回路設計をデータ構造としてモデル化し、配線にバグがないか自動で静的解析(単体テスト)するTypeScriptコードを作成しました!

回路の接続を「隣接リスト(有向グラフ)」として表現し、プログラムのコンパイルと同じように「配線違反」を検知するバリデーターです。

// 物理的な電線の色
type WireColor = 'white' | 'black' | 'red';

// 回路内のデバイス端子(ピン)
interface Terminal {
  id: string;        // 例: "Power.N", "Light.W", "Switch.In"
  type: 'power_n' | 'power_l' | 'load_w' | 'load_active' | 'switch_in' | 'switch_out';
}

// 物理的な接続(電線による結線)
interface Connection {
  from: string;      // 接続元のTerminal ID
  to: string;        // 接続先のTerminal ID
  color: WireColor;  // 使用した電線の色
}

class CircuitValidator {
  private terminals: Map<string, Terminal> = new Map();
  private adjList: Map<string, Array<{ to: string, color: WireColor }>> = new Map();

  constructor(terminals: Terminal[], connections: Connection[]) {
    terminals.forEach(t => {
      this.terminals.set(t.id, t);
      this.adjList.set(t.id, []);
    });

    connections.forEach(c => {
      // 複線図の配線は無向グラフ(両方向に電流が流れる)として扱う
      this.adjList.get(c.from)?.push({ to: c.to, color: c.color });
      this.adjList.get(c.to)?.push({ to: c.from, color: c.color });
    });
  }

  // 特定のターミナルから到達可能なすべてのターミナルと、その経路の電線の色を探索する (DFS)
  public getReachableTerminals(startId: string): Set<string> {
    const visited = new Set<string>();
    const dfs = (currId: string) => {
      visited.add(currId);
      const neighbors = this.adjList.get(currId) || [];
      for (const edge of neighbors) {
        if (!visited.has(edge.to)) {
          dfs(edge.to);
        }
      }
    };
    dfs(startId);
    return visited;
  }

  // アルゴリズム検証用のテストスイート
  public runUnitTests(): void {
    console.log("=== 回路ロジックのデバッグを開始します ===");

    // 【テスト1】ショート(短絡)バグの検知
    // 電源のL(黒)とN(白)が直接、または負荷を介さずに接続されているかチェック
    const fromL = this.getReachableTerminals("Power.L");
    if (fromL.has("Power.N")) {
      throw new Error("🚨 SHORT CIRCUIT DETECTED: 電源の黒線と白線がショートしています!");
    }
    console.log("✅ ショート判定パス: 安全な絶縁状態です。");

    // 【テスト2】鉄則1: 「白は負荷とコンセント」の検証
    // すべての負荷の接地側(W)が、電源のN(白)にしっかり到達できているか
    const fromN = this.getReachableTerminals("Power.N");
    const loads = Array.from(this.terminals.values()).filter(t => t.type === 'load_w');
    loads.forEach(load => {
      if (!fromN.has(load.id)) {
        throw new Error(`🚨 WIRE FAILURE: 負荷 ${load.id} に接地側の白線が繋がっていません!`);
      }
    });
    console.log("✅ 鉄則1パス: すべての負荷に白線が正しく供給されています。");

    // 【テスト3】鉄則2: 「黒はスイッチとコンセント」の検証
    // すべてのスイッチの入力端子に、電源のL(黒)がしっかり供給されているか
    const switches = Array.from(this.terminals.values()).filter(t => t.type === 'switch_in');
    switches.forEach(sw => {
      if (!fromL.has(sw.id)) {
        throw new Error(`🚨 WIRE FAILURE: スイッチ ${sw.id} に非接地側の黒線が繋がっていません!`);
      }
    });
    console.log("✅ 鉄則2パス: すべてのスイッチに黒線が正しく供給されています。");

    console.log("🎉 すべてのテストに合格!バグのない完璧な複線図です。");
  }
}

// --- 実装例 of 実行 ---
const terminals: Terminal[] = [
  { id: "Power.L", type: "power_l" },
  { id: "Power.N", type: "power_n" },
  { id: "Light.W", type: "load_w" },
  { id: "Light.L", type: "load_active" },
  { id: "Switch.In", type: "switch_in" },
  { id: "Switch.Out", type: "switch_out" }
];

// 先ほどのSVG複線図の配線トポロジーを定義
const myWiring: Connection[] = [
  // 鉄則1: 白線(N) -> ジョイントボックス(中継) -> 負荷の白
  { from: "Power.N", to: "Light.W", color: "white" },
  // 鉄則2: 黒線(L) -> ジョイントボックス(中継) -> スイッチの黒
  { from: "Power.L", to: "Switch.In", color: "black" },
  // 鉄則3: スイッチの返り(赤) -> ジョイントボックス(中継) -> 負荷のもう片方
  { from: "Switch.Out", to: "Light.L", color: "red" }
];

const validator = new CircuitValidator(terminals, myWiring);
validator.runUnitTests();

いかがでしょうか?実技試験の複線図のルールは、このように完全に「論理検証可能なグラフ構造」としてコードに落とし込むことができるのです。

実技試験中にペンを動かすときも、この「ユニットテストを脳内で走らせる感覚」で、白と黒のコードを一本ずつアサート(検証)しながら配線すると、絶対に失敗しなくなります!


🧭 複線図作成のステップバイステップ(Mermaidによる作業フロー)

技能試験の本番中、真っ白な用紙に描くときの「具体的なステップ」を順番にまとめました。

スマートフォンなどの横幅が狭い画面でも見やすいよう、縦方向(TD)のフローチャートでプロセスを追ってみましょう。

graph TD
    A["① 各器具の配置図を描く"] -->|電源、ジョイントボックス、スイッチ、負荷を配置| B["② 鉄則1: 白線を引く"]
    B -->|「白は負荷とコンセント」の原則で接続| C["③ 鉄則2: 黒線を引く"]
    C -->|「黒はスイッチとコンセント」の原則で接続| D["④ 鉄則3: スイッチと負荷を結ぶ"]
    D -->|余った端子同士を繋いでループを完成させる| E["⑤ 接続点(圧着マーク)をマークする"]
    E -->|リングスリーブや差込型コネクタのサイズを決定| F["🎉 複線図完成!"]

    style F fill:#0f172a,stroke:#3b82f6,stroke-width:2px,stroke-dasharray: 0
    style A fill:#1e293b,stroke:#475569,stroke-width:1px
    style B fill:#1e293b,stroke:#f1f5f9,stroke-width:2px
    style C fill:#1e293b,stroke:#06b6d4,stroke-width:2px
    style D fill:#1e293b,stroke:#ef4444,stroke-width:2px

1. 【器具の配置(器具のマッピング)】

問題用紙の単線図と同じ位置に、電源(L, N)、ジョイントボックスの枠、スイッチ(●イ)、器具(引掛シーリングやランプレセプタクルなど)の端子を、丸や四角で簡素に描き写します。

2. 【白線の配線(接地側の接続)】

電源の「N」から線を伸ばし、負荷の接地側端子(通常はWや白のマークがある)に繋ぎます。 (※スイッチには絶対に繋がないよう、心の中で「白は負荷とコンセント!」と唱えてください。)

3. 【黒線の配線(非接地側の接続)】

電源の「L」から線を伸ばし、すべてのスイッチに繋ぎます。 (※ここでも「黒はスイッチとコンセント!」を合言葉に、負荷には絶対に直接繋がないようにバイパスさせます。)

4. 【残りの結線(スイッチ返りの接続)】

スイッチの出力端子」と「対応する負荷の空いている端子」を繋ぎます。 基本回路であれば、これで自動的にすべてのピンが埋まり、綺麗な配線ルートが完成します!

5. 【接続点のマークと圧着マーク(端子処理)】

線が交差するジョイントボックス内で、実際に接続する部分に「●(接続点)」を描きます。 さらに、使用する電線の太さ(1.6mmか2.0mmか)に応じて、リングスリーブの圧着マーク「○(極小)」「小」「中」を計算して記入します。(この語呂合わせについては、次の記事で詳しく特集します!)


❓ よくある質問(FAQ)とトラブルシューティング

Q1: スイッチの端子に「極性(白と黒の指定)」はあるの?

【補足】 A: 基本的な片切スイッチ(非照光タイプ)自体には、極性(裏表)はありません。つまり、どちらの穴に黒を入れても、どちらから返りの赤線を出してもスイッチとしての機能は同じです。

ただし、技能試験においては「電源からの非接地側(黒)をスイッチの『0番端子』や『指定の差込口』に入れる」という施工条件が明記されることが多いため、基本的には「黒線はスイッチの入力側に挿入する」とルール化して覚えておくのが最も安全です。

Q2: 3路スイッチ(階段の上と下で消灯するやつ)はどう描けばいいの?

【重要】 A: 3路スイッチになっても、先ほど紹介した「3つの鉄則」は全く揺らぎません!

  1. 接地側(白)を「負荷」に繋ぐ(鉄則1)。
  2. 非接地側(黒)を「1つ目の3路スイッチの0番端子」に繋ぐ(鉄則2)。
  3. 2つ目の3路スイッチの0番端子」から「負荷のもう片方」に繋ぐ(鉄則3の応用)。
  4. あとは、2つの3路スイッチの間にある「1番同士」「3番同士」をパラレル(並列)に繋ぐだけ。

驚くほど簡単に処理できます。この構成についても、今後の実戦編記事でMermaidのシーケンス図を交えて丁寧に解説します!

Q3: VVFケーブルの「色の選択」にルールはありますか?

【注意】 A: はい、技能試験で最も多い失格理由の1つが「電線の色使いの間違い(施工不良)」です。

  • 接地線(N)に繋がる電線は、必ず「白色」でなければなりません。
  • 電源からの非接地線(L)に直接繋がる電線は、必ず「黒色」でなければなりません。
  • スイッチから負荷に向かう中継線(返り線)は、白色や黒色が他のルールで埋まっている場合、3芯ケーブルの「赤色」などを使います。

複線図の段階で、電線の横に小さく「シ(白)」「ク(黒)」「ア(赤)」とメモを添えておくと、実際のケーブル剥ぎ取り作業のときに迷わずに済みます!


🚀 まとめ

第二種電気工事士の「複線図の作成」は、一見すると複雑な迷路のように見えますが、その実体はきわめて論理的な「3つのアルゴリズム」の組み合わせに過ぎません。

  1. 白は負荷とコンセント!
  2. 黒はスイッチとコンセント!
  3. 最後はスイッチと負荷をペアリング!

この手順を脳内のメインスレッドでシングル処理するだけで、エラー(誤接続)のない完璧な複線図が描けるようになります。

仕事の合間を縫って資格試験に挑戦するのは大変ですが、こうした「エンジニア的な構造化」を活用すれば、勉強時間を大幅に圧縮できます。本番まであと少し、一緒にスマートに合格を掴み取りましょう!

「もっと詳しく3路スイッチや4路スイッチのアルゴリズムも知りたい!」という方は、ぜひ次回の関連記事も楽しみにしていてください。

それでは、また次回の記事でお会いしましょう。ハッピー・ワイヤリング!