基本情報技術者試験 科目Bの勉強法|初心者が合格までにやることを順番に解説
科目Bの勉強、そもそも何から手を付ければいいのか分からない。
参考書を開いて、擬似言語のページで手が止まってしまった経験はありませんか?
科目Aは用語を覚えるほど点が伸びたのに、科目Bだけは何をどれだけやれば伸びるのかが見えない。そんな相談をとてもよく受けます。
でも大丈夫です。科目Bは、やることの順番さえ決めてしまえば、着実に積み上がる試験です。
私はエンジニアとして10年以上、Webシステムの開発や運用に携わってきました。新しい言語を触るときは、書き方を覚える段階と、他人のコードを読む段階を必ず分けて進めます。
科目Bの勉強もこれと同じです。読む力が付く前に問題演習へ飛び込むと、解説を書き写すだけの時間になってしまいます。
この記事では、初心者が合格までにやることを4つの段階に分けて、順番に説明していきます。
科目Bは科目Aとまったく別の試験¶
まずは相手を知るところから始めましょう。科目Bでつまずく原因の多くは、科目Aと同じ勉強法を持ち込んでしまうことにあります。
科目Aが知識を問う試験なのに対して、科目Bは目の前のプログラムを読んで、その動きを追う試験です。覚えている量ではなく、その場で考える手順が問われます。
二つの科目の違いを表にまとめておきます。ここを取り違えたまま勉強を始めると、努力の方向がずれてしまいます。
| 項目 | 科目A | 科目B |
|---|---|---|
| 出題数 | 60問 | 20問 |
| 試験時間 | 90分 | 100分 |
| 問われる力 | 用語や仕組みの知識 | プログラムを読み解く力 |
| 合格基準 | 1,000点満点で600点以上 | 1,000点満点で600点以上 |
| 伸び方 | 覚えた分だけ少しずつ伸びる | ある時点から急に読めるようになる |
合格基準で見落としやすいのが、二つの科目を合算しない点です。科目Aで高得点を取っても、科目Bが600点に届かなければ合格にはなりません。
つまり科目Bは、後回しにしていい科目ではないということです。むしろ伸びるまでに時間がかかるぶん、先に手を付けるほうが有利になります。
出題の8割はアルゴリズムとプログラミング¶
配分を知っておくと、力を入れる場所が決まります。科目Bの20問は、二つの分野で構成されています。
アルゴリズムとプログラミングが16問、情報セキュリティが4問という割合です。全体の8割が擬似言語を読む問題だと考えてください。
この数字が示していることは単純です。擬似言語が読めるようになることが、そのまま科目B対策の中心になります。
残りの4問も落としたくはありませんが、優先順位を付けるなら擬似言語が先です。ここに時間を注いだ人から合格していきます。
暗記型の勉強が通用しない理由¶
科目Bには、覚えれば解ける問題がほとんどありません。同じアルゴリズムでも、変数名や条件の書き方が変われば別の問題として出てきます。
そのため、解いた問題数を増やすこと自体は目的になりません。一問ごとに、なぜその答えになるのかを自分の手で確かめられたかが大事です。
実務でも、他人が書いたコードを読むときに暗記は役に立ちません。処理を上から一行ずつたどる、その地味な作業だけが確実に答えを出してくれます。
科目Bで問われているのは、まさにこの読む力です。試験のためだけの特殊な技術ではないので、身に付ければそのまま仕事でも使えます。
科目Bという試験そのものの全体像を先に押さえておきたい人は、こちらの記事から読むと土台が固まります。
【関連記事】基本情報技術者試験の科目Bとは?擬似言語・アルゴリズム対策を初心者向けに解説
合格までの勉強を4つの段階に分ける¶
ここからが本題です。科目Bの勉強は、次の4段階に分けると迷わなくなります。
大切なのは、前の段階が終わる前に次へ進まないことです。進む目安をあらかじめ決めておくと、自分がいまどこにいるのかが分かります。
| 段階 | やること | 次へ進んでよい目安 |
|---|---|---|
| 第1段階 | 擬似言語の記号と書き方を覚える | 記号の意味を見ずに答えられる |
| 第2段階 | 変数の値をトレースで追う | 短いコードの出力を紙の上で出せる |
| 第3段階 | よく出る処理の型を身に付ける | コードを見て何をする処理か言える |
| 第4段階 | 時間を測って本番の形で解く | 1問あたりの時間が安定する |
第1段階と第2段階は、問題を解く前の準備にあたります。ここを飛ばして演習に入る人が多いのですが、遠回りになりがちです。
期間で区切るより、目安の欄が満たせたかどうかで判断してください。人によって進む速さは違って当たり前です。
第1段階:擬似言語の記号を読めるようにする¶
最初にやるのは、記号の意味を体に入れることです。ここは暗記でかまいません。
擬似言語には、代入を表す矢印や、繰返しの書き方など、独特の記法があります。これらが読めないうちは、どんなに簡単な処理も暗号に見えます。
たとえば次のコードを見てください。配列の中身を合計する、科目Bで最もよく出る形の一つです。
○整数型: 合計を求める(整数型の配列: 数値)
整数型: 合計 ← 0
整数型: i
for (i を 1 から 数値の要素数 まで 1 ずつ増やす)
合計 ← 合計 + 数値[i]
endfor
return 合計
○が付いた行は関数の宣言で、先頭の整数型は戻り値の型を表します。矢印は右の値を左の変数へ入れる記号です。
for の行は、iを1から順に増やしながら中の処理を繰り返す、という意味になります。endfor までが繰り返される範囲です。
この程度の読み方が身に付けば、第1段階は合格です。難しい問題を解く必要はまだありません。
記号の一覧を手元に置いて、迷ったらすぐ引ける状態にしておくと進みが速くなります。まずは擬似言語そのものの成り立ちから確認しておきましょう。
【関連記事】擬似言語とは?IT初心者にもわかる意味・書き方・プログラミングとの違いをやさしく解説
試験前に記法をまとめて確認したいときは、早見表の形になっているこちらが便利です。
【関連記事】擬似言語の記号・記述形式一覧|試験前のチェック早見表
第2段階:値の動きをトレースで追う¶
記号が読めるようになったら、次は値を追う練習です。ここが科目B対策の心臓部だと言い切ってしまってかまいません。
トレースとは、変数の値がどう変わっていくかを一行ずつ紙に書き出す作業のことです。頭の中だけで追おうとすると、必ずどこかで見失います。
さきほどの合計を求める関数に、3と8と5という三つの値が入った配列を渡したとします。その動きを表にすると次のようになります。
| 繰返し | i | 数値[i] | 合計 |
|---|---|---|---|
| 開始前 | ― | ― | 0 |
| 1回目 | 1 | 3 | 3 |
| 2回目 | 2 | 8 | 11 |
| 3回目 | 3 | 5 | 16 |
表にしてしまえば、答えが16になる理由に迷う余地はありません。合計の列が、前の値に新しい値を足していく様子がそのまま見えます。
最初は面倒に感じるはずです。それでも、この作業を省いた人から順に科目Bで落ちていきます。
慣れてくると、書く量は自然に減っていきます。どの変数が答えに効くのかが見えてくるので、追う対象を絞れるようになるからです。
書くときのコツは、列を先に決めてしまうことです。変数の宣言を見て、宣言されている変数の名前をそのまま列の見出しにすれば迷いません。
行のほうは、繰返し1回分を1行にすると読みやすくなります。条件分岐が入る問題なら、どちらへ進んだかを書き添えておくと後から追いやすいでしょう。
トレース表の具体的な書き方は、手順を決めて練習すると早く身に付きます。
【関連記事】擬似言語のトレース表の書き方|科目Bで変数の値を追う手順を解説
紙に書くのと並行して、実際に動かして確かめられると理解の定着が違います。Giji Academy の擬似言語シミュレーターなら、コードを一行ずつ進めながら変数の値が変わる瞬間を目で追えます。
自分のトレースと画面の値が合っているかを確かめる使い方が特におすすめです。ずれた場所が、そのまま自分の弱点になります。
第3段階:よく出る処理の型を身に付ける¶
一行ずつ追えるようになったら、次は塊で読む練習に移ります。科目Bで出る処理には、繰り返し登場する型があります。
型を知っていると、コードを見た瞬間に何をしようとしているかの見当が付きます。見当が付いていれば、トレースは答えの確認だけで済みます。
代表的な型を表にまとめました。この程度が押さえられていれば、初見の問題でも取っ掛かりが見つかります。
| 型の名前 | 見た目の特徴 | 何をしているか |
|---|---|---|
| 集計 | 0で初期化した変数に足していく | 合計や件数を求める |
| 最大値・最小値 | 先頭の値を入れてから比較する | いちばん大きい値を探す |
| 探索 | 見つかったら繰返しを抜ける | 目的の要素の位置を返す |
| 交換 | 一時変数を挟んで二つの値を入れ替える | 整列処理の中で使われる |
| 入れ子の繰返し | forの中にforがある | 総当たりで比べる |
この五つは、形を覚えるというより、目的を言えるようにしておくのがコツです。合計を出したいのか、探しているのかが分かれば、細部は読めば済みます。
型の中でも特に出やすいのが集計です。合計と最大値と件数の求め方は、まとめて押さえておくと効率がいいでしょう。
【関連記事】擬似言語の合計・最大値・件数の求め方|科目Bで頻出の集計パターンを解説
第4段階:時間を測って本番の形で解く¶
最後の段階で初めて、時間を意識します。逆に言えば、それまでは時間を気にしなくてかまいません。
読めないうちから急いでも、読めないまま速く間違えるだけです。まずは正確に、それから速く、という順番を守ってください。
この段階では、1問にかける時間を決めて解きます。時間内に終わらなかった問題は、なぜ遅れたのかを必ず振り返りましょう。
原因は多くの場合、問題文の読み方か、トレースの書き方のどちらかにあります。手が遅いのではなく、読む順番が定まっていないだけということが少なくありません。
もう一つ決めておきたいのが、詰まったときに撤退する基準です。ある程度考えて糸口が見えない問題は、印を付けて先へ進むほうが全体の得点は上がります。
最後まで解き切ってから戻る前提でいれば、1問に固執する事故を防げます。この判断は本番でいきなりはできないので、練習のうちから試しておきましょう。
時間が足りないと感じている人は、速く読むための具体的なコツをこちらで確認してみてください。
【関連記事】基本情報技術者試験の科目Bで時間が足りない人へ|擬似言語問題を速く読むコツ
情報セキュリティの4問をどう扱うか¶
擬似言語の話が続いたので、残りの4問についても触れておきます。情報セキュリティは、科目Bの中では取り組みやすい分野です。
出題は、状況が説明された文章を読んで、適切な対策や問題点を選ぶ形が中心になります。科目Aで学んだ知識がそのまま生きる場面も多いでしょう。
ただし、丸暗記した用語を当てはめるだけでは正解にたどり着けません。文章の中で、誰が何をできてしまうと困るのかを読み取る必要があります。
読むときは、登場人物と権限に印を付けていくと整理しやすくなります。社員、委託先、外部の攻撃者といった立場ごとに、何が見えて何ができるのかが論点になるからです。
実務のセキュリティ設計でも、考えることは同じでした。守りたいものは何で、誰に触らせたくないのかを先に決め、そこから対策を選んでいきます。
勉強の順番としては、擬似言語を第2段階まで進めてから手を付けるのがちょうどよい配分だと考えています。擬似言語は伸びるまで時間がかかりますが、セキュリティは短期間でも仕上がるからです。
どちらを先にやるべきか迷っている人は、優先順位を整理したこちらの記事が参考になります。
【関連記事】基本情報科目Bで擬似言語と情報セキュリティ、どちらから対策すべき?
伸び悩む人がはまりやすい三つの遠回り¶
ここまでの順番を守っていても、途中で足踏みすることはあります。私がよく見てきたつまずきを三つ挙げておきます。
一つ目は、解説を読んで分かった気になることです。解説を閉じた状態でもう一度自分でトレースできなければ、その問題はまだ解けていません。
二つ目は、難しい問題ばかり選んでしまうことです。簡単な問題を確実に取るほうが、合格には直結します。
三つ目は、手を動かさずに眺めて終わることです。擬似言語は読み物ではないので、紙と鉛筆を出さない日の勉強はほとんど残りません。
どれも真面目に取り組んでいる人ほど陥りやすい落とし穴です。心当たりがあれば、明日の勉強から一つだけ直してみてください。
科目Bで得点が伸びない原因を、もう少し細かく知りたい人はこちらもあわせてどうぞ。
【関連記事】基本情報技術者試験 科目Bで落ちる人の特徴とは?|よくある失敗と対策方法を解説します
まとめ¶
最後に、この記事の内容を振り返ります。
科目Bは20問中16問がアルゴリズムとプログラミングで、擬似言語を読む力がそのまま得点になる試験でした。科目Aとは性質が違うので、暗記中心の勉強法は持ち込まないほうが安全です。
勉強は4つの段階に分けます。記号を覚える、トレースで値を追う、よく出る型を押さえる、最後に時間を測る、という順番です。
前の段階を飛ばさないことが、結局はいちばんの近道になります。特にトレースは、面倒でも省かないでください。
読めるようになる瞬間は、ある日わりと突然やってきます。今日はまず、短いコードを一つ選んでトレース表を書くところから始めてみましょう。