基本情報の科目Bが難しすぎる人へ|トレースのコツ

当サイトはアフィリエイト広告(Amazonアソシエイト含む)を利用しています

🤔 こんな悩みはありませんか?
  • ✓基本情報の科目Bのサンプル問題を見て、頭が真っ白になった
  • ✓基本情報の科目Bが難しい。どう勉強すればいい?
  • ✓解説を読めば分かるのに、自分では解けない

科目Aは順調だったのに科目Bで手が止まると、自分には向いていないのかと落ち込みますよね。

結論からいうと、科目Bは知識の試験ではなく、読解の技術の試験です。いま解けないのは頭のせいではなく、練習のやり方をまだ知らないだけです。入力と出力を確認してから、小さい具体値と変数表で動きを追う練習をしましょう。

この記事では、エンジニアが現場でやっているコードの読み方と、挫折しない練習の3ステップを紹介します。

ごんちゃん
この記事を書いた人:ごんちゃん
現役ITエンジニア10年(開発+品質保証、どちらもリーダー経験)/基本情報技術者 合格/未経験メンバーの育成経験多数。試験のどこでつまずくかを現場で見てきました。

私が合格したのは旧制度(午前試験・午後試験)の時代です。ただ、当時の午後試験のアルゴリズム問題は今の科目Bの原型で、問われている力はまったく同じ。そして何より、私はいま仕事で毎日「他人が書いたコードを読んで、動きを追う」ことをやっています。科目Bが試しているのは、まさにこの力です。

⚠️ 基本情報技術者試験は、2027年1月以降に一時休止の予定です。受験できるのは概ね2026年内まで(会場により前後)。2027年以降の実施時期は2026年秋にIPAが発表予定です(出典:IPA)。試験休止まとめ

科目Aの勉強法はこちらの記事にまとめています。是非参考にしてみて下さい。

目次

なぜ「勉強しても」科目Bは解けないのか

まず、敵の正体をはっきりさせましょう。基本情報技術者試験は、性格のまったく違う2つの試験でできています。

科目A科目B
試験の性格知識(暗記型)読解(技術型)
形式四択・60問(90分)多肢選択・20問(100分)
中身用語・計算・制度擬似言語のアルゴリズム(16問)+情報セキュリティ(4問)
勉強法覚える→過去問を回す読み方を学ぶ→手を動かして練習

科目Aは、覚えれば覚えただけ点になります。ところが科目Bに同じ勉強法(つまり「テキストを読んで理解する」)を持ち込むと、こうなります。

🔁 よくある挫折のパターン
  • 1解説を読む →「なるほど、わかった」
  • 2次の問題を自分で解く → 解けない
  • 3「自分には向いてないのかも……」と落ち込む

安心してください、これは全員が通る道です。「解説を読んで理解できること」と「自分でコードの動きを追えること」は、別のスキルです。サッカーの試合を観て戦術を理解できても、ボールを蹴れるようにはならないのと同じで、科目Bは「観戦」ではなく「実技」の試験。読んで理解する勉強をいくら積んでも、実技の練習をしない限り解けるようにはなりません。

現場で未経験からITの世界に入ってきたメンバーをたくさん見てきましたが、コードを「書く」練習をしてきた人はいても、コードを「読む」練習をしてきた人はほとんどいません。読む力は、意識して練習しないと身につきません。逆に言えば、練習すれば誰でも身につきます。

エンジニアは擬似言語をこう読んでいる

では、「読む練習」とは何をすることなのか。ここが今日いちばん伝えたいところです。

私は仕事柄、コードレビューや障害調査で「他人の書いたコードの動きを追う」場面が日常的にあります。そのとき、実はいきなり1行目から読み始めることは、まずありません。やっている手順はこうです。

エンジニアがコードを読むときの頭の動き

  1. まず入力と出力を確認する(何を受け取って、何を返す処理なのか)
  2. そのパターンから「あたりを付ける」(「配列を受け取って数値を1個返す……集計系かな?」という仮説を立てる)
  3. 小さい具体値を入れて、仮説を確かめる(頭の中、または紙の上でコードを動かしてみる=トレース)

ポイントは、読む前に「たぶんこういう処理だろう」という仮説を持つことです。仮説なしで1行目から読むのは、手がかりなしで知らない場所を探すようなものです。仮説があれば、コードを読む作業は「未知の解読」から「答え合わせ」に変わります。これだけで、読む負荷が劇的に下がるんです。

私はキャリアの6年をQA・SET(テストエンジニア)として過ごしてきました。テストエンジニアの仕事は、まさに「このコードはこう動くはずだ」と予想して、実際にそう動くかを確かめることの繰り返しです。科目Bが受験者に求めているのは、この頭の動きそのものです。科目Bは、あなたに1日だけテストエンジニアの仕事をさせる試験だと思ってください。

そして嬉しいことに、科目Bの問題には必ず「プログラムの説明」という日本語の文章が付いています。現場のコードには説明書なんて付いていないことも多いので、実は試験のほうが現場より親切です。説明文と関数の入出力を先に読む→仮説を立てる→トレースで確認。この順番を、次のセクションで実際にやってみせます。

実演:トレースのやり方(例題つき)

科目B風の例題を用意しました(試験問題の転載ではなく、私が作った類題です)。一緒に解いてみましょう。

【例題】次のプログラム中の[ a ]に入れる正しい答えを選べ。関数 calc は、引数で与えられた配列 data のある値を返す。data の要素数は1以上とする。

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

選択肢 ア:data[i] が x より大きい イ:data[i] が x より小さい ウ:data[i] が x と等しい エ:data[i] が 0 より大きい

ステップ1:入出力を確認して、あたりを付ける

1行目だけ見ます。整数型の配列: data を受け取って、整数型(数値1個)を返す関数です。

配列を受け取って数値を1個返す処理といえば、合計・最大値・最小値・個数あたりが定番です。この時点で候補は4つに絞れました。さらに中身をチラ見すると、足し算(x + data[i]のような形)が見当たらないので合計ではなさそう。ifで比較して入れ替えているっぽいので、「最大値か最小値を探す処理だろう」とあたりを付けます。

ここまで、コードをちゃんと読んでいないのに、もう答えの候補がアとイの2つに絞れています。これが「あたりを付ける」の威力です。

ステップ2:小さい具体値を入れて、変数表で動かす

仮に答えをア(data[i] が x より大きい)として、data = {3, 8, 5} という小さい配列で動かしてみます。紙に変数表を書きます。書き方は簡単で、「ループが1周するごとに、各変数がいくつになったか」を表にするだけです。

タイミングidata[i]判定(data[i] > x ?)x の値
開始時———3(data[1]で初期化)
1周目288 > 3 → Yes8に更新
2周目355 > 8 → No8のまま
終了return x8を返す

{3, 8, 5} を渡して 8 が返ってきました。8はこの配列の最大値。仮説どおり「大きい方で置き換えていく=最大値を探す処理」として筋が通るので、答えはアです。念のためイ(小さい方に更新)を頭の中で動かすと 3 が返り、最小値になります。問題の説明文が「最大値を返す」なら答えは確定でアです。

トレースのコツまとめ

  • いきなり1行目から読まない。入力と出力を先に見る
  • 入出力のパターンから仮説を立てる(配列→数値1個なら集計系、など)
  • トレースに使う具体値は要素3個くらいの小さいデータで十分
  • 変数表は必ず紙に書く。頭の中だけでやると、本番の緊張で必ず飛びます

挫折しないための練習3ステップ

読み方がわかったところで、練習の進め方です。順番を間違えると挫折しやすいので、この3ステップで進めてください。

ステップ1:「解き方」を本で学ぶ(1〜2週間)

まず、トレースのやり方を体系的に教えてくれる科目B特化本を1冊やります。科目A用のテキストに付いている「おまけの科目B章」では、量が足りません。おすすめは次の2冊のどちらかです(詳しい比較は参考書まとめ記事をどうぞ)。

ステップ2:変数表を「手で書く」練習(2〜3週間)

本の例題を、解説を隠して自分で変数表を書きながら解きます。最初は1問に30分かかっても大丈夫。実技の練習なので、最初が遅いのは当たり前です(自転車の練習と同じ)。だんだん「このパターン見たことある」が増えて、勝手に速くなります。

ひとつだけ約束してほしいのは、1問に25分以上悩まないことです。わからなかったら5分で解説を見て、解き方を真似して、後日もう一度自力で解く。「悩んだ時間」ではなく「トレースした回数」が実力になります。

ステップ3:時間を計って本番形式(直前2週間)

科目Bは100分で20問。1問あたり5分しかありません。IPA公式のサンプル問題や本の模擬問題で、時間を計る練習をします。

ここで、時間配分の話を少しだけしておきます。私が受けた旧制度の午後試験は、複数の問題から解くものを選べる形式でした。当時の私の戦略は「得意分野をいくつか作っておいて、本番で問題を見て、いちばん解けそうなものを選ぶ」。科目Bは全問必須なので選ぶことはできませんが、考え方は今もそのまま使えます。つまり、

📝 本番での解く順番
  • ✓セキュリティ4問(知識で解ける)を先にさっと片付けて
    時間の貯金を作る
  • ✓アルゴリズム16問は、得意パターン(配列操作・探索など)から確実に取り、見たことのない難問は最後に回す
  • ✓「全問を順番に完璧に」ではなく「取れる問題から取る」。試験はテストの消化試合ではなく、点の取り合いです

それでも、1人だと厳しいと感じたら

ここまでの方法は、独学でやり切れる内容です。ただ、現実問題として「独学に向く人・向かない人」はいます。切り分けると、次のとおりです。

独学で大丈夫な人講座を検討していい人
疑問を自分で調べて解決するのが苦にならない「解説の解説」が欲しくなることが多い
勉強時間を自分で確保・管理できる締め切りや強制力がないとサボってしまう
試験まで3ヶ月以上の余裕がある試験(2026年内!)まで時間がなく、遠回りできない

右側に当てはまるなら、通信講座で「質問できる相手」と「決められたカリキュラム」をお金で買うのは、全然アリな選択です。エンジニアの現場でも「時間をお金で買う」判断は日常的にやります。特に今年は試験休止(2027年1月以降にずれ込み。受けるなら2026年内)があるので、遠回りのコストがいつもより高い年です。

よくある質問

Q科目Aと科目B、勉強時間の配分は?▼
A

IT未経験なら、体感で科目A:科目B=6:4くらいを目安に。ただし科目Aを一通り終えてから科目Bに入るのではなく、早い段階から並行してください。科目Bは実技なので、直前詰め込みが効きません。毎日30分のトレース練習を1ヶ月続けるほうが、直前の週末10時間より確実に効きます。

Qプログラミング経験ゼロでも受かりますか?▼
A

受かります。実際、非IT職の合格者はたくさんいます。ただし「経験者より練習量が必要」なのは事実です。経験者が現場で無意識にやっている「入出力を見る→あたりを付ける→トレース」を、練習で意識的に身につける必要があるからです。逆に言うと、必要なのは才能ではなく練習量です。

QPythonやJavaを先に勉強したほうがいいですか?▼
A

試験対策としては不要です。科目Bの擬似言語は日本語ベースの試験専用言語で、文法は問題冊子に書いてあります。プログラミング言語の環境構築や文法学習に時間を使うくらいなら、その時間を擬似言語のトレース練習に直接使うほうが早いです(ITエンジニアになる予定があるなら、合格後にPythonをやるのはとても良い選択です)。

Q何問くらい解けば安心できますか?▼
A

目安は「特化本1冊を2周+公式サンプル問題」です。問題数でいうと延べ100問前後。ポイントは新しい問題を追いかけるより、同じ問題をもう一度、今度はスラスラ解けるかを確認すること。2周目で自力で解けた問題は、本番でも解けます。

セキュリティ4問の対策はこちら

まとめ:読み方は技術。技術は練習で身につく

最後に、この記事の要点をまとめます。

📝 この記事のまとめ
  • ✓科目Bが解けないのは頭のせいではなく、「読解の技術」の練習をまだしていないだけ
  • ✓読む前に入力と出力を確認して、あたりを付ける。これだけで問題が「答え合わせ」に変わる
  • ✓仮説は小さい具体値+変数表で確かめる。変数表は必ず紙に書く
  • ✓練習は「本で解き方を学ぶ→変数表を手で書く→時間を計る」の3ステップ。悩んだ時間ではなくトレースした回数が実力になる

科目Bを乗り越えた先の「コードが読める」という力は、試験が終わっても消えません。それはIT業界で働く上で一生モノの基礎体力です。試験の休止は2027年1月以降の予定で、2026年内は受験できます(試験休止の詳細はこちら)。参考書選びはこちらの記事にまとめています。今日の1問目、さっそく変数表から始めてみてください。応援しています!

あわせて読みたい

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ごんちゃんのアバター ごんちゃん 現役ITエンジニア

現役ITエンジニア(経験10年)。バックエンド開発4年・QA/SET6年、どちらもリーダー経験あり。基本情報技術者試験合格。未経験メンバーの育成経験から「教材選びで挫折させない」をテーマに、IT資格の教材と勉強法を現場目線でレビューしています。

目次