基本情報は過去問道場だけで合格できる?科目Aと科目Bで変わる答え
参考書は買わずに、過去問サイトだけで受かる人もいるらしい。
その話を聞いて、自分もそれでいけるのではと思いませんでしたか?
実際、過去問を無料で解けるサイトを周回して合格した、という体験談は珍しくありません。お金もかからず、スマホがあれば通勤中でも進められます。
ただ、同じやり方で走ったのに科目Bだけ点が伸びない、という声も同じくらい多いのです。
この差は、やる気や地頭の問題ではありません。過去問演習が効く科目と、効きにくい科目が分かれているだけです。
私はエンジニアとして10年以上、Webシステムの開発や運用に携わってきました。現場で新しい人にコードを教えるとき、答えを見せて覚えてもらう方法が通じる場面と、通じない場面がはっきり分かれるのを何度も見てきました。
過去問道場だけで進む作戦にも、まったく同じ線が引けます。この記事では、その線がどこにあるのかを先に示します。
結論:科目Aは届く、科目Bは届きにくい¶
長い前置きは要らないと思うので、先に結論から書きます。ここだけ持ち帰ってもらっても構いません。
過去問演習を中心に据える作戦は、科目Aについてはかなり有効です。一方で科目Bだけは、同じやり方では合格ラインに届きにくくなります。
基本情報技術者試験は、科目Aと科目Bのどちらも1000点満点で、それぞれ600点以上を取らないと合格になりません。片方だけ高得点でも、もう片方が基準に届かなければ不合格です。
つまり過去問道場だけで進める作戦は、科目Bという一点で止まります。逆にいえば、そこさえ埋めれば残りは過去問演習で走り切れます。
まず全体像を確かめておきたい人は、こちらの記事から読むと土台が整います。
【関連記事】基本情報技術者試験は何から勉強する?初心者向けの始め方
科目Aで過去問が効く理由¶
科目Aは60問を90分で解く択一式で、出題される分野の幅が広いのが特徴です。テクノロジ系だけでなく、マネジメント系やストラテジ系まで含まれます。
範囲は広いのですが、聞かれ方は安定しています。用語の意味、計算の手順、仕組みの説明といった形が多く、過去に問われた考え方が形を変えて何度も出てきます。
だから過去問を解いて、間違えたところを調べて、また解く。この繰り返しがそのまま得点に変わります。
科目Aについては、過去問演習をやり込む作戦は理にかなっていると言い切っていいと思います。
科目Bで同じやり方が通じない理由¶
科目Bは20問を100分で解きます。出題されるのはアルゴリズムとプログラミング、そして情報セキュリティの2分野だけです。
分野の数は科目Aよりずっと少ないのに、こちらのほうが苦戦する人が多い。不思議に思えますが、理由ははっきりしています。
科目Bで問われているのは知識ではなく、その場で初めて見たコードを読み解く作業だからです。覚えた答えを引き出す問題ではなく、目の前で処理を追わせる問題なのです。
そして科目Bは、公開されている問題の数そのものが科目Aほど多くありません。周回する材料が少ないうえに、周回しても身につく力が別物という二重の壁があります。
過去問演習で伸びる力と、伸びない力¶
同じ演習でも、身につくものと身につかないものがあります。ここを表で切り分けておくと、自分の勉強が今どちらに寄っているか判断できます。
| 力 | 過去問演習で伸びるか | 主に効く科目 |
|---|---|---|
| 用語や仕組みを思い出す力 | よく伸びる | 科目A |
| 決まった計算をこなす力 | よく伸びる | 科目A |
| 出題の形式に慣れる力 | よく伸びる | 科目A・科目B |
| 初見のコードを読み解く力 | 伸びにくい | 科目B |
| 変数の値を最後まで追い切る力 | 伸びにくい | 科目B |
| 時間内に読み終える速度 | 演習のやり方しだい | 科目B |
表の上半分は、解いた回数がそのまま力になる領域です。ここは過去問道場のようなサイトと相性が良く、量をこなすほど安定します。
問題は下半分です。ここは解いた問題数ではなく、1問にどう向き合ったかで伸び方が変わります。
同じ問題を5回解いても、5回とも答えの記号を思い出しているだけなら、読み解く力は1ミリも動きません。
科目Bが具体的にどういう試験なのかを押さえておくと、この差がもっとはっきりします。
【関連記事】基本情報技術者試験の科目Bとは?擬似言語・アルゴリズム対策を初心者向けに解説
過去問だけで進めたときに起きること¶
ここからは、実際に何が起きるのかを具体的に見ていきます。心当たりがあるかどうかを確かめながら読んでみてください。
正解の記号を覚えてしまう¶
同じ問題を何周もすると、コードを読む前に答えが浮かぶようになります。ウの問題、という覚え方です。
このとき正答率は上がります。しかし上がっているのは記憶の精度であって、読解の速度ではありません。
やっかいなのは、本人が伸びたと感じてしまうことです。手応えがあるのに本番で崩れるパターンは、ここから生まれます。
見分け方は簡単で、解いた直後に処理の流れを口で説明できるかどうかを試せばいい。説明できないのに正解できているなら、それは覚えているだけです。
初見の擬似言語で手が止まる¶
本番では、周回した問題はまず出てきません。見たことのない処理が、見たことのない変数名で並びます。
そこで初めて、自分が持っていたのが記憶であって読解力ではなかったと分かる。試験中に気づくのは、いちばんつらいタイミングです。
初見の問題で固まってしまう感覚に覚えがあるなら、その場での立て直し方をまとめた記事があります。
【関連記事】科目Bの初見問題が解けない人へ|知らないアルゴリズムが出たときの読み方
解説を読んで分かった気になる¶
3つ目が、いちばん気づきにくい落とし穴です。間違えた問題の解説を読んで、なるほどと納得して次へ進む。
理解した感覚は本物です。ただ、それは他人が整理した道筋をなぞっただけで、自分でその道筋を作った経験にはなっていません。
読んで分かることと、白紙から追えることの間には、思っているより大きな溝があります。
科目Bで過去問の代わりになるもの¶
では科目Bはどうすればいいのか。答えは、問題数を増やすことではなく、1問の使い方を変えることです。
具体的には、コードの上から下まで、変数の値を紙に書きながら追い切ります。これがトレースと呼ばれる作業です。
たとえば次のような擬似言語のコードがあったとします。配列の中から、条件に合う要素の個数を数える処理です。
○整数型: countPositive(整数型の配列: data)
整数型: i
整数型: cnt ← 0
for (i を 1 から dataの要素数 まで 1 ずつ増やす)
if (data[i] > 0)
cnt ← cnt + 1
endif
endfor
return cnt
コードを見て、正の数を数えているのだと分かる。ここで止めてしまうと、過去問を周回しているのと同じ状態です。
そうではなく、実際の値を入れて1行ずつ動かします。data が {3, -1, 0, 5} のときの動きを、表にするとこうなります。
| i | data[i] | 条件を満たすか | cnt |
|---|---|---|---|
| 1 | 3 | 満たす | 1 |
| 2 | -1 | 満たさない | 1 |
| 3 | 0 | 満たさない | 1 |
| 4 | 5 | 満たす | 2 |
答えは2です。ここで大事なのは答えそのものではなく、i が3のときに cnt が増えなかった理由を自分で説明できるかどうかです。
0は正の数ではないので条件を満たさない。この一言が出てくるなら、あなたはコードを読めています。
トレース表は面倒でも省略しない¶
書くのが面倒だと感じるのは自然です。私も実務でコードを追うとき、頭の中だけで済ませようとして間違えたことが何度もあります。
結局、値を書き出したほうが速い。頭の中で保持できる変数の数には限りがあるからです。
トレース表の具体的な書き方は、こちらの記事で手順まで解説しています。
【関連記事】擬似言語のトレース表の書き方|科目Bで変数の値を追う手順を解説
情報セキュリティの問題は例外に近い¶
ここまで科目Bを一括りに書いてきましたが、正確にはもう少し細かい話があります。
科目Bの出題はアルゴリズムとプログラミング、そして情報セキュリティの2分野です。このうち情報セキュリティのほうは、科目Aに近い性質を持っています。
攻撃の手口や対策の考え方を知っていれば読み解ける問題が多く、こちらは知識の積み上げが素直に効きます。つまり過去問演習が届く領域です。
そのため科目Bを苦手だと感じている人は、まず自分がどちらでつまずいているのかを分けてみてください。セキュリティで落としているなら、対策は科目Aと同じ進め方で構いません。
擬似言語のほうで止まっているなら、この記事で書いてきたトレースの練習が効きます。同じ科目Bでも処方箋が違うのです。
1問を3回、違うやり方で使う¶
問題数が少ないなら、1問から取れるものを増やせばいい。同じ問題でも、使い方を変えれば3回分の演習になります。
1回目は普通に解きます。2回目は答えを見ずにトレース表だけを作り、値の動きを完全に再現します。
3回目は、配列の中身を自分で変えて解き直します。空の配列だったら、全部が負の数だったら、と条件を振ってみるわけです。
この3回目が特に効きます。条件を変えると処理の境目が見えてきて、コードの意味が立体的になります。
科目Bの過去問をどこで手に入れて、どう使うかについては別の記事にまとめてあります。
【関連記事】基本情報 科目Bの過去問はどこで解ける?公開問題の使い方と勉強法
過去問道場と併走させる勉強の組み立て方¶
ここまで読んで、過去問演習をやめるべきだと受け取らないでください。やめる必要はまったくありません。
過去問演習は科目Aで確実に効きます。やることは、科目B用の時間を別枠で確保するだけです。
配分の目安を表にすると、こんな形になります。あくまで一例なので、自分の得意不得意で動かして構いません。
| 時期 | 科目Aの過去問演習 | 科目Bのトレース練習 |
|---|---|---|
| 学習の前半 | 分野を一巡する | 擬似言語の読み方に慣れる |
| 学習の中盤 | 間違えた分野を重点的に周回 | 1問を丁寧に追い切る練習 |
| 直前期 | 苦手分野の確認に絞る | 時間を計って初見問題を解く |
前半で気をつけたいのは、科目Bを後回しにしないことです。科目Aは短期間でも点が動きますが、科目Bのコードを読む力はじわじわとしか伸びません。
先に始めたほうが、伸びる時間を長く取れます。急がなくていいので、早く始めてください。
週に一度、初見の問題を混ぜる¶
周回しているだけだと、自分が記憶で解いているのか読解で解いているのか分からなくなります。
そこで週に1回でいいので、まだ解いていない問題に時間を計って挑む日を作ってください。ここでの正誤はあまり気にしなくて大丈夫です。
見るのは、手が止まった場所です。宣言で止まったのか、ループの中で止まったのか。止まる場所が毎回同じなら、そこがあなたの弱点になります。
科目Aと科目Bをどう並行させるかで迷っているなら、進め方をまとめた記事も参考になります。
【関連記事】基本情報技術者試験の勉強法|科目Aと科目Bの進め方を順番に解説
コードは読むだけでなく動かしてみる¶
紙のトレースに慣れてきたら、実際に動かして答え合わせをすると理解が一段深まります。
自分が追った値と、実際に動いた値がずれる。そのずれた1行が、あなたの読み間違えの癖そのものです。
Giji Academy には、擬似言語のコードを1行ずつ動かして変数の変化を確かめられるシミュレーターがあります。無料で使えるので、トレースの答え合わせに使ってみてください。
まとめ¶
長くなったので、要点を振り返っておきます。
過去問道場のような演習サイトだけで合格できるかという問いへの答えは、科目Aについてはほぼ届く、科目Bについては届きにくい、というものでした。
科目Aは知識と形式への慣れが得点になるので、周回がそのまま効きます。科目Bは初見のコードを読み解く作業なので、答えを覚えても本番では使えません。
だから作戦はシンプルです。科目Aは今までどおり過去問を周回し、科目Bだけはトレースを軸にした別メニューを走らせる。
そして科目Bの1問は、解いて終わりにしない。表を書いて値を追い、条件を変えて解き直す。この使い方に変えるだけで、少ない問題数からでも読解力は積み上がります。
過去問道場だけでは足りない、という話は不安を煽るためのものではありません。足りない部分がどこかはっきりしているのだから、そこだけ埋めればいいという話です。
やることが1つに絞れたなら、あとは手を動かすだけです。今日から科目Bの1問を、表を書いて追い切ってみてください。