基本情報技術者の勉強法|科目Bは解く科目ではなく、追う科目。だから紙に書く

※当サイトはアフィリエイト広告(PR)を利用しています。

IT資格この資格の記事は12本あります。一覧を見る

科目Aは、順調でした。過去問を回せば回すほど正答率が上がって、手応えもあった。ところが科目Bに入った途端、同じやり方がまったく効かない。解説を読めば「なるほど」と思うのに、次の問題でまた手が止まる。

そして問題を探しに行くと、これがない。科目Aのときのように何百問も並んでいる場所が、科目Bには見当たらない。探し方が悪いわけではありません。そもそも量が違うのです。

ここで多くの人が「もっと問題を集めなければ」と考えます。この記事の結論は、その逆です。科目Bは、解く科目ではなく追う科目。だから、解いて終わりにせず、変数の値の変化を紙に書く。変えるのはそこだけでいい。理由を順番に説明します。

解決策:科目Aと科目Bで、勉強のやり方を分ける

ひとつの試験なので、つい同じ勉強法で通そうとします。でも中身は別物です。やり方を割り切って分けてください。

科目A——数をこなす。過去問でいい。

ここは今のやり方のままで大丈夫です。ただし目的を取り違えないでください。過去問を解くのは、問題を覚えるためではなく、出題の傾向をつかむためです。同じ問題が出るかどうかを期待して回すものではありません。「この分野はこういう角度から聞かれる」が分かればいいので、正解を暗記する必要はありません。

科目B——数を追わない。1問に長く留まる。

やることはひとつです。問題を解くとき、紙に変数の表を書いて、1行進むごとに値を書き換えていく。これだけです。

具体的には、こう書きます。

  • 紙の左端に、出てくる変数の名前を縦に並べる
  • 右へ1列ずつ、プログラムの1行が実行されたあとの値を書く
  • ループに入ったら、周回ごとに列を足していく
  • 条件分岐は、どちらに入ったかを列の上に書き添える

頭の中でやろうとしないのがコツです。頭の中でできないから、手が止まっているのです。

そしてもうひとつ。正解した問題も、この表を書いてください。「解けたからいい」で次に進むと、たまたま合っただけなのか、手順を追い切れたのかが自分でも分からないまま残ります。科目Bは問題の数が限られているので、1問を使い切るほうが結果的に速く進みます。

1問に許された時間|科目Aと科目Bは、3倍以上ちがう
1問に許された時間|科目Aと科目Bは、3倍以上ちがう

根拠①:IPA自身が、2つをまったく別の試験として設計している

「そこまで分ける必要ある?」と思われたかもしれません。ここは試験を作っている側の言葉が、いちばんはっきりしています。

基本情報技術者試験は2023年4月から通年のCBT方式に変わり、午前・午後という区分が科目A・科目Bになりました。そのときIPAが公表した変更内容には、それぞれこう書かれています。

科目Aについては、「現在の午前試験に準じ」。つまりこれまでと地続きだと明言しています。だから過去問で傾向をつかむやり方が、そのまま通用します。

一方、科目Bについてはこうです。

個別プログラム言語(C、Java、Python、アセンブラ言語、表計算ソフト)による出題は、普遍的・本質的なプログラミング的思考力を問う擬似言語による出題に統一

読み飛ばしてほしくないのは「思考力を問う」という部分です。知識を問うとは書いていません。さらに出題分野についても、「これまで必須解答としていた『情報セキュリティ』と『データ構造及びアルゴリズム(擬似言語)』の二つの分野を中心にした構成に変更します。」とあります。

科目Aは「知っているか」、科目Bは「追えるか」。同じ勉強法が効かないのは当たり前で、設計がそうなっているのです。

根拠②:1問に許された時間が、3倍以上違う

もっと分かりやすい証拠があります。時間配分です。IPAが公表している試験時間と出題数を、そのまま割り算してみてください。

  • 科目A:試験時間90分/出題数60問 → 1問あたりおよそ90秒
  • 科目B:試験時間100分/出題数20問 → 1問あたりおよそ5分

同じ試験の中で、1問に与えられた時間が3倍以上違います。これは配分ミスではなく意図です。90秒で答える問題は、考え込むことを想定していません。5分の問題は、その場で手を動かして追うことを想定しています。

ここから、練習のしかたも決まります。科目Aを1問90秒で通す練習には意味がありますが、科目Bを速く解く練習には意味が薄い。むしろ最初のうちは1問に15分かけていい。速さは、追えるようになったあとから勝手についてきます。

なお、科目Bの問題数が少ないのは気のせいではありません。IPAが公開している問題には、それぞれこう注記されています。科目Aは「実際の試験は60問で構成されますが,そのうちの20問を公開しています。」、科目Bは「実際の試験は20問で構成されますが,そのうちの6問を公開しています。」。1年に手に入る本物は、科目Aが20問、科目Bが6問です。

ついでに言えば、令和2年度から令和4年度までの問題は非公開だとIPAが明記しています。つまり「同じ問題がまた出るのか」を外から確かめる方法は、そもそもありません。だからこそ、覚えにいくのではなく傾向をつかみにいくほうが理にかなっています。

根拠③:解答を見て終わりにした人より、自分の言葉で書き出した人が伸びた

「書くのが面倒だ、読むだけではだめなのか」——ここは実験で確かめられています。

チーらの研究(1989年)です。学生に物理の例題を学ばせ、そのあいだ何を考えているか声に出してもらいました。すると成績が伸びた学生と伸びなかった学生では、例題の読み方がはっきり違っていました。伸びた学生は、例題を読みながら「なぜこの式になるのか」を自分に向かって説明していたのです。伸びなかった学生は、解答を読んで「分かった」で先に進んでいました。

ここから自己説明効果という考え方が広く知られるようになりました。理解は、解答を受け取った時点ではなく、自分の言葉で組み立て直した時点で起きるということです。

擬似言語のトレースを紙に書く作業は、まさにこの自己説明にあたります。変数の値を1行ずつ書き出すのは、プログラムの動きを自分の手で組み立て直す作業だからです。解説を読んで納得しても次の問題で手が止まるのは、あなたの理解力の問題ではなく、組み立て直す工程を飛ばしているだけです。

なぜ科目Bがそこまで頭に負荷をかけるのかは、基本情報技術者試験の難易度のほうで詳しく書きました。合わせて読むと、紙に書く理由がもう一段はっきりします。

紙に書くようになった、あなたの少し先の未来

——今までのあなた。画面の擬似言語を目で追い、3行目あたりで「いま i はいくつだっけ」と戻る。戻ったところでまた別の変数を見失う。解説を開いて「ああ、そういうことか」と閉じる。翌日、同じ問題でまた止まる。

——紙に書くようになった、これからのあなた。机には方眼のノートが開いていて、左端に変数名、右へ値が並んでいます。ループの3周目で、あなたはペンを止めてこうつぶやく。

「あ、ここで入れ替わってる」

気づいたのは解説ではなく、自分の書いた表です。この瞬間、その問題はもうあなたのものになります。

そして少し先で、こういうことが起きます。初めて見る問題なのに、書き始めた時点で「たぶんこの変数が答えに効く」と当たりがつく。覚えた問題が増えたからではありません。追い方が身についたからです。これが、IPAの言う「普遍的・本質的なプログラミング的思考力」の正体だと思います。

今日、1問だけ紙に書いてみませんか

新しい教材を買う必要はありません。IPAの公開問題から科目Bを1問選んで、変数の表を紙に書きながら解いてください。無料で、今日できます。

時間は気にしないでください。15分かかっても構いません。見るのは正解したかどうかではなく、表を書き終えたときに、プログラムの動きが自分で説明できるかです。

1問終えたら、そのまま2問目に行かず、いま書いた表をもう一度上からなぞってください。科目Bで本物の問題は年に6問しか増えません。消費するのではなく、使い切るほうが得です。

そのうえで手持ちの問題が足りなくなったら、そのときが本を足すタイミングです。どの1冊から始めるかは基本情報技術者のおすすめテキストにまとめました。逆に「そもそも自分に届く試験なのか」を先に確かめたい人は難易度の記事からどうぞ。

科目Aで通用したやり方は、科目Bでは通用しません。それはあなたのせいではなく、そういう試験だからです。今日、紙を1枚。そこから変わります。

参考文献・出典

タイトルとURLをコピーしました