科目Bが合否を分ける理由
基本情報技術者試験において科目Bは最大の難関です。理由は明確です。「読んで理解する」知識問題ではなく、「コードを追って答えを導く」実践的な問題だからです。
CBT移行直後(2023年4月)の科目B合格率は64%でしたが、難易度調整が進み、令和8年(2026年)1月時点の科目B合格率は42%まで低下しています(科目A合格率61%)。全体合格率の低下は実質的に科目Bの難化が原因であり、科目Aで6割取れる人でも科目Bで足切りされて不合格になるケースが急増しています。
科目Aは暗記と理解で着実に得点を積み上げられますが、科目Bは練習量が直接スコアに影響します。独学でも合格できますが、アルゴリズム練習を後回しにすると直前期に間に合わないケースが多発しています。
参照: IPA 基本情報技術者試験 出題範囲・シラバス
参照: IPA 情報処理技術者試験 統計情報
参照: IPA 試験区分・スキルレベル
---
科目Bの出題構成
| 分類 | 問題数 | 割合 |
|---|---|---|
| アルゴリズムとプログラミング | 16問 | 80% |
| 情報セキュリティ | 4問 | 20% |
| 合計 | 20問 | 100% |
試験時間は100分。1問あたり約5分が上限の目安ですが、難しいアルゴリズム問題は10分以上かかることもあります。時間配分の戦略が重要です。
---
擬似言語の読み方:基礎から実践まで
擬似言語とは
IPAが試験用に規定したプログラム記述形式です。以下の構文要素を理解する必要があります。
変数・代入:
整数型: x ← 5
条件分岐:
もし (x > 3) ならば
処理A
そうでなければ
処理B
を実行する
繰り返し:
x を 1 から 10 まで 1 ずつ増やしながら
処理
を繰り返す
配列・関数: 添字アクセス(a[i])、関数呼び出し(call 関数名)も頻出です。
参照: IPA 擬似言語の仕様(試験公開情報)
ハンドトレース技法
アルゴリズム問題で最も重要なスキルがハンドトレースです。コードを1行ずつ実行しながら、変数の値の変化を手書きで表に記録していく方法です。
実践手順:
1. 変数表を作成:コード中に登場する変数を全て書き出し、列を作る
2. 初期値を記入:プログラムの最初の変数代入を記録
3. 1行ずつ実行:条件分岐では「どちらの分岐に入るか」を明示
4. 繰り返しをカウント:ループ変数の変化を丁寧に追う
5. 関数呼び出しを展開:再帰関数は特に注意してスタックを管理
最初は1問30〜40分かかっても構いません。練習を重ねると10分以内で解けるようになります。
FE科目B練習問題(全問AI解説付き)で今すぐ練習できます。
---
科目Bは「5つのパターン」に集約できる
科目Bのアルゴリズム16問は、出題範囲を分析すると以下の5パターンにほぼ集約されます。「量をこなす」より「パターンごとに解法テンプレを持つ」方が短期合格に有効という戦略を取ります。
| # | パターン | 出題数(目安) | 主な論点 | 難易度 |
|---|---|---|---|---|
| 1 | 線形探索・集計系 | 4〜5問 | 配列を端から走査し、合計/最大/出現回数を数える | ★☆☆ |
| 2 | 二分探索・整列前提探索 | 2〜3問 | ソート済み配列に対する lo / hi / mid の更新 | ★★☆ |
| 3 | 整列(ソート)系 | 2〜3問 | バブル/選択/挿入ソート・パス毎の配列状態追跡 | ★★☆ |
| 4 | データ構造操作系 | 2〜3問 | スタック(LIFO)・キュー(FIFO)・連結リストの挿入/削除 | ★★☆ |
| 5 | 再帰・木構造系 | 1〜2問 | 階乗/フィボナッチ/木の深さ優先・幅優先探索 | ★★★ |
※ 出題比率は受験回によって変動しますが、上記5パターンが範囲の大部分を占める構造は安定しています。
戦略: ★☆☆〜★★☆ の上位4パターン(合計12〜14問)を確実に取れば、難問の再帰・木構造(★★★)で1〜2問落としても合格ラインに到達できます。
---
各パターンの解法テンプレ
1. 線形探索・集計系(最頻出・4〜5問)
配列を最初から最後まで1要素ずつ走査するパターン。変数表に「i」と「集計値(合計・最大・カウントなど)」の2列を作って1行ずつ更新するだけで解けます。
典型トレース:
| ステップ | i | a[i] | 合計 |
|---|---|---|---|
| 初期 | 1 | 3 | 0 |
| 1巡 | 1 | 3 | 3 |
| 2巡 | 2 | 5 | 8 |
| 3巡 | 3 | 2 | 10 |
★1ループの中で何が条件で更新されるかを正確に追えば、必ず満点が狙えるパターンです。
2. 二分探索(2〜3問)
ソート済み配列を前提に、中央値と比較しながら探索範囲を半分に絞ります。
トレースのコツ: ループ変数(lo, hi, mid)の変化を縦に並べて書く。mid = (lo + hi) / 2 の整数部のみ取る挙動と、lo > hi で終了する境界条件に注意。
3. ソートアルゴリズム(バブル・選択・挿入)
配列を並び替えるアルゴリズムです。各パスごとの配列状態を1行ずつ縦に並べて書くと追いやすくなります。バブルソートは「隣接要素の比較・入れ替え」、選択ソートは「未ソート部の最小値を探す」、挿入ソートは「ソート済み部の正しい位置に差し込む」という基本動作を体で覚えてください。
4. スタック・キュー(データ構造操作系)
データ構造の問題です。スタック(LIFO・後入れ先出し)・キュー(FIFO・先入れ先出し)の push/pop・enqueue/dequeue 操作を追います。
トレースのコツ: スタックは縦に積み上げ、キューは横に並べる。状態を1操作ごとに図示すると視覚的に追える。
5. 再帰関数・木構造(最難関)
関数が自分自身を呼び出すパターンです。FEではフィボナッチ数列・階乗計算・木の深さ優先探索(DFS)が典型例です。
トレースのコツ: コールスタック(どの呼び出しがどのパラメータで実行中か)を縦に積み上げて書く。スタックが深くなるほど丁寧に管理する。本番では時間がかかりすぎる場合は後回しにする判断が重要です。
番外:文字列処理
文字列の検索・置換・分割処理。添字の動きを慎重に追うことが重要です。off-by-oneエラー(境界値の扱い)に注意してください。1〜5のパターンに含まれる場合と独立した1問として出る場合があります。
---
科目B対策:時間別ロードマップ
序盤(学習開始〜2ヶ月前)
まず擬似言語仕様書を熟読し、全構文を把握する。その後、簡単なアルゴリズム問題(線形探索・単純ソート)を1問15〜20分かけてトレース。答え合わせより「トレース過程が合っているか」を重視する。
中盤(2ヶ月前〜1ヶ月前)
1問10分を目標に速度を意識しながら練習。再帰・文字列処理を集中練習。セキュリティ4問は科目Aで覚えた知識を確認する程度で仕上げる。
直前期(1ヶ月前〜)
20問セットを100分で解く模擬試験を複数回実施。時間が余る問題・足りない問題を把握し、本番での取捨選択戦略を確立する。
FE過去問548問(本番形式演習)で模擬試験に挑戦できます。
---
よくある失敗パターンと対策
失敗1:科目Aに時間を使いすぎる
科目Aは仕上げやすいため時間を割きすぎる方が多いです。科目Bは練習時間の絶対量が必要なため、学習計画の50%以上を科目Bに割くことが推奨されます。
失敗2:読んで理解しようとする
コードは読んで理解するのではなく、「手を動かしてトレースする」ものです。頭の中だけで追おうとすると間違いが増えます。必ず紙に書いてトレースする習慣をつけてください。
失敗3:難問に時間をかけすぎる
本番の100分で20問は、難問に10分以上かけると時間が足りなくなります。「解けない問題は後回し」の判断を早めに下す練習も重要です。
---
セキュリティ問題の効率的な対策
4問のうち多くは以下のテーマから出題されます。
- 認証・アクセス制御:パスワードポリシー、多要素認証
- 暗号化:共通鍵・公開鍵の仕組み、ハッシュ関数
- マルウェア・攻撃手法:SQLインジェクション、フィッシング、ランサムウェア
- ネットワークセキュリティ:ファイアウォール、HTTPS、VPN
科目Aのセキュリティ域を学習した後で科目Bのセキュリティ問題を解くと、多くの問題が「知識の確認」レベルで解けることがわかります。
---
まとめ
科目Bのアルゴリズム・プログラミングは、基本情報技術者試験の最大の難関です。しかし「擬似言語の仕様を理解する」→「ハンドトレースを繰り返し練習する」→「時間配分を本番想定で練習する」という手順を踏めば、プログラミング未経験でも確実に合格ラインに到達できます。
練習量が直接スコアに反映される科目です。早めに始めて、毎日少しずつ練習することが合格への最短ルートです。
---