基本情報技術者の科目B対策|540点→735点の勉強法

Photo by Startup Stock Photos on Pexels

基本情報技術者試験の科目Aは合格点を超えたのに、科目Bだけ届かなかった。そんな悔しさを抱えて「科目B 対策」と検索した方も多いはずです。科目Bは知識の量より、擬似言語のプログラムを正確に読み切る力で点が決まります。この記事では、1回目540点から2回目735点まで伸ばしたMさんの学習記録をもとに、点が伸びる順番で対策を整理しました。

※ここで紹介するMさんの体験は、複数の学習者の声をもとに構成した架空のケースです。

Mさんは29歳、文系学部卒で物流会社の営業事務として働いていました。社内SEへの異動を希望し、平日1時間半・休日3時間の学習で受験に臨みます。1回目は科目A 720点に対し科目Bが540点で、合格基準の600点に60点届きませんでした。そこから6週間を科目Bだけに充て、2回目で735点を取って合格しています。

科目Bの出題形式と合格基準

computer based test room

最初に、科目Bがどんな試験なのかを数字で押さえておきます。2023年4月の制度変更以降、基本情報技術者試験はCBT方式で通年実施されています。科目Aと科目Bは同じ日に続けて受験し、両方が基準点を超えて初めて合格です。試験の詳細はIPAの基本情報技術者試験の公式ページで確認できます。

項目 科目A 科目B
試験時間 90分 100分
出題数 60問 20問
出題分野 テクノロジ・マネジメント・ストラテジの知識 アルゴリズムとプログラミング16問、情報セキュリティ4問
解答形式 多肢選択式 多肢選択式
合格基準 600点以上(1,000点満点) 600点以上(1,000点満点)

表のとおり、科目Bは20問中16問がアルゴリズムとプログラミングの分野です。得点はIRT(項目応答理論)で算出されるため、何問正解すれば600点という固定のラインは公表されていません。安全圏を狙うなら、20問中13〜14問を安定して取れる力を目標にするとよいでしょう。1問あたりに使える時間は平均5分で、この短さが多くの受験者を苦しめます。

Photo by Andrea Piacquadio on Pexelsあわせて読みたい基本情報技術者の難易度と合格率|2年連続低下の理由を解説基本情報技術者の合格率が下がっている理由と、科目Bの難易度の実態を数字で解説しています

科目Bで点が伸びない人に共通する3つのつまずき

Mさんが1回目に落ちた原因を振り返ると、つまずきは次の3つに集約されました。

  • 解説を読んで理解した気になる:正解を見てから納得するだけで、自力でプログラムを追う練習が不足していた
  • 頭の中だけでトレースする:変数が3つを超えたあたりで値を見失い、終盤の問題ほど誤答が増えた
  • 1問に時間をかけすぎる:序盤の難問に15分使い、最後の4問を勘で塗った

どれも科目B特有のもので、科目Aの勉強法をそのまま持ち込むと陥りやすいパターンです。3つ目の時間切れは、前の2つの結果として起きています。読み方が定まっていないから迷い、紙に書かないから同じ行を何度も読み直すわけです。Mさん自身も「わからないのではなく、遅かった」と振り返っています。ここから先は、読み方の型を作り、手で追う習慣をつけ、時間内に解き切る順番で解説します。

擬似言語は「読み方の型」を先に固める

科目Bのプログラムは、実在の言語ではなくIPA独自の擬似言語で書かれています。記法のルールはIPAが公開する試験要綱・シラバスにまとめられています。本番で毎回ルールを思い出しながら読んでいては、時間が足りません。頻出の記法は、見た瞬間に意味が浮かぶ状態にしておきましょう。

最低限覚えておきたい記法

擬似言語で押さえる記法は、次の6種類でほぼ足ります。

  • ○手続名(引数):手続や関数の宣言。戻り値がある場合は「○整数型: 関数名(…)」の形になる
  • 変数 ← 式:右辺の値を左辺の変数に代入する
  • if / elseif / else / endif:条件分岐。endifまでが1つのブロック
  • while / endwhile、do / while:前判定・後判定の繰返し
  • for / endfor:「iを1からnまで1ずつ増やす」のように範囲を日本語で書く繰返し
  • return:値を返して手続を終える

配列の要素番号は「1から」が基本

Pythonなど多くの言語で配列は0番目から数えますが、科目Bの擬似言語では特に断りがない限り要素番号は1から始まります。プログラミング経験者ほどこの違いでつまずき、ループの終了条件を1つずらして誤答します。問題文に「要素番号は0から始まる」と書かれた場合だけ例外になるので、配列が出てきたら最初に注記の有無を確かめてください。Mさんは問題文の配列宣言に毎回丸をつけることで、この種のミスをほぼなくしました。

トレース表を書けば正答率は安定する

handwritten notes pencil notebook

トレースとは、プログラムを1行ずつ実行したつもりで、変数の値の変化を追いかける作業です。科目Bの問題の大半は、このトレースを正確にこなせるかどうかで正誤が分かれます。CBT方式の会場でもメモ用紙が貸与されるため、頭の中で済ませず必ず紙に書き出しましょう。

例題で見るトレース表の書き方

具体例で手順を確認します。次のプログラムは、整数の配列dataの中から最大の値を探して返すものです。dataには{3, 8, 5, 9, 2}の5つの値が入っていると仮定して、実際に追ってみましょう。

○整数型: findMax(整数型の配列: data)
  整数型: max ← data[1]
  整数型: i
  for (i を 2 から dataの要素数 まで 1 ずつ増やす)
    if (data[i] > max)
      max ← data[i]
    endif
  endfor
  return max

このプログラムをトレース表に書き起こすと、次のようになります。

i data[i] data[i] > max max(処理後)
開始 - - 3
2 8 成立 8
3 5 不成立 8
4 9 成立 9
5 2 不成立 9

ポイントは、ループ1回につき1行を使い、条件判定の結果まで列に残すことです。判定結果を書いておくと、選択肢と照合するときに「どの回で値が変わったか」が一目でわかります。今回の戻り値は9で、表の最終行を見ればすぐ確認できます。問題によっては、ループの途中で特定の変数の値を問う形式もあります。その場合も、表があれば該当する行を指さすだけで答えが出せます。

変数が多い問題は「変わった列だけ書く」

二重ループや再帰が絡む問題では、変数が5つ以上になることも珍しくありません。全列を毎行埋めていると、それだけで時間を使い切ります。Mさんが本番で使ったのは、値が変わった列だけを書き、変わらない列は空欄にする書き方でした。空欄は「前の行と同じ」と決めておけば情報は失われず、書く量はおよそ半分になります。2回目の受験では、この方法で1問あたりの平均時間が7分から4分台まで縮んだそうです。

頻出アルゴリズムは優先順位をつけて覚える

科目Bのアルゴリズム問題は毎回違うプログラムが出ますが、土台になる考え方は限られています。下のリストは、IPAの公開問題やサンプル問題で繰り返し登場するテーマを、優先度の高い順に並べたものです。過去の出題はIPAの公開問題ページから無料で入手できます。

  • 優先度A:配列の操作と探索:線形探索・二分探索・最大値や合計の計算。多くの問題の土台になる
  • 優先度A:整列(ソート):バブルソート・選択ソート・挿入ソートの交換の流れを追えるようにする
  • 優先度B:再帰:階乗やフィボナッチ数など、関数が自分自身を呼ぶ構造。呼び出しの深さをトレース表の行で管理する
  • 優先度B:スタック・キュー・リスト:要素の追加と取り出しの順序、ポインタのつなぎ替えを図で追う
  • 優先度C:二分木・グラフ:木の走査順序や隣接行列。出題頻度は下がるが、図を描けば解ける問題が多い
  • 優先度C:文字列処理・ビット演算:文字の置換や論理演算。記法の理解があれば短時間で解ける

優先度Aの2テーマは、どの問題にも部品として組み込まれています。ここが曖昧なまま再帰や木構造に進むと、応用問題の途中で基礎の処理を読み違えて失点します。Mさんは最初の2週間を優先度Aだけに使い、公開問題の該当分野を3周しました。その結果、優先度Bの問題も「Aの部品の組み合わせ」として読めるようになったといいます。

情報セキュリティ4問は「事例の読み取り」で取る

科目Bの残り4問は情報セキュリティ分野で、架空の企業で起きたインシデントや社内規程の事例を読み、適切な対策を選ぶ形式です。プログラムのトレースは不要で、文章の読解に近い問題が中心になります。そのため、アルゴリズムが苦手な人にとっては貴重な得点源です。

対策としては、科目Aで覚えたセキュリティ用語を「どの場面で使う対策か」まで結びつけておくと効果的です。たとえば多要素認証、アクセス権の最小化、ログの保全、バックアップの世代管理といった対策は、事例の状況に当てはめて選ばせる問題が多く出ます。選択肢を読む前に、事例のどこに問題があったのかを一言でメモしておくと、もっともらしい誤答に引っかかりにくくなります。Mさんは2回目の受験でこの4問を手応えを持って解き切り、アルゴリズムでの失点を補いました。

Photo by www.kaboompics.com on Pexelsあわせて読みたい情報セキュリティマネジメント 独学勉強法と合格までの流れ情報セキュリティの事例問題を得意にしたい人向けに、情報セキュリティマネジメント試験の独学手順をまとめています

6週間で科目Bを仕上げる学習スケジュール

study planner calendar desk

Mさんが2回目までの6週間で実行したスケジュールを、そのまま使える形にまとめました。平日1時間半・休日3時間、合計でおよそ80時間の計画で、科目Aの知識がある程度定着している人を想定しています。

期間 学習内容 使う教材
1〜2週目 擬似言語の記法を覚え、配列・探索・整列の問題を毎日3問トレースする 科目B対策の参考書(基礎編)
3〜4週目 再帰・スタック・リスト・木構造に進み、公開問題を分野別に解く IPA公開問題・サンプル問題
5週目 情報セキュリティ分野の事例問題を集中演習する 公開問題のセキュリティ問題・科目Aの用語集
6週目 20問を100分で解く模擬演習を3回行い、解き直しで弱点を潰す 公開問題の通し演習

このスケジュールでこだわったのは、解説を読む時間より自分の手でトレースする時間を長く取ることです。1問解いたら、間違えた行がどこだったかをトレース表に赤ペンで書き込み、同じ問題を3日後に解き直します。Mさんは『徹底攻略 基本情報技術者の科目B実践対策』を軸に使いました。参考書を選ぶ際は、解説でプログラムの動きを1行ずつ追っているものを選ぶと、自分の表と照らし合わせやすくなります。独学に不安がある場合は、動画講義で解き方を見られる基本情報技術者の通信講座を併用するのも一つの方法です。

本番で失点しない時間配分と解く順番

100分で20問という条件では、1問あたり平均5分です。ただし問題によって難易度の差が大きく、全問に5分ずつ使う配分は現実的ではありません。Mさんが2回目で採用したのは、1問6分を超えたら選択肢を1つに絞って次へ進むルールでした。CBT方式では見直し用のチェック機能があるため、保留した問題は最後にまとめて戻れます。

解く順番は問題番号どおりでなくてかまいません。読んですぐ方針が立つ問題から手をつけ、最初の30分で8問以上を解き終えていれば、後半の難問に十分な時間を残せます。残り10分になったら新しい問題を読み始めず、未解答の問題がないかを確認してください。誤答による減点はないため、空欄で提出するより何かしら選んでおくほうが得です。

科目B対策でよくある質問

科目Aと科目Bはどちらを先に勉強すべき?

科目Aの基礎用語がわからないと科目Bの問題文も読みにくくなるため、学習の前半は科目A中心で進めるのが一般的です。ただし科目Bは伸びるまでに時間がかかるので、学習期間の後半まで手をつけないのは危険です。全体の学習時間の4割程度を科目Bに配分すると、Mさんのように科目Bだけ届かない事態を避けやすくなります。全体の進め方は基本情報技術者試験の独学勉強法で詳しく紹介しています。

プログラミング未経験でも科目Bに合格できる?

合格できます。科目Bで問われるのはプログラムを書く力ではなく、与えられたプログラムを読んで動きを追う力です。擬似言語はどのプログラミング言語とも異なるため、経験者と未経験者のスタートラインの差はそれほど大きくありません。Mさんもプログラミング経験ゼロからのスタートでした。トレース表を使って毎日少しずつ問題に触れることが、経験の有無より結果を左右します。

科目Bの合格率はどのくらい?

合格率は科目A・科目Bを合わせた試験全体で見るのが一般的です。直近の合格率や推移は基本情報技術者の難易度と合格率の記事で、IPAの統計をもとに整理しています。科目Bだけの実力を測るなら、公開問題を100分で解いて13問以上正解できるかを一つの目安にするとよいでしょう。

まとめ

科目B対策の要点は、擬似言語の読み方を固め、トレース表で手を動かし、時間内に解き切る練習を積むことの3つです。Mさんが540点から735点まで伸ばせたのも、新しい知識を増やしたからではなく、読み方と解き方を変えたからでした。合格後、Mさんは希望していた社内SEのポジションに異動し、業務でコードを読む場面でもトレースの習慣が役立っているそうです。まずはIPAの公開問題から配列や探索の問題を1問選び、トレース表を書いてみてください。1問を紙の上で最後まで追い切れたら、そこが科目B攻略のスタート地点です。

この記事についてお問い合わせ →