【基本情報技術者試験】科目B（旧午後試験）の対策方法を考える

お疲れさまです。社会人1年目・プログラミング初学者のあさがみと申します。

2023年4月から基本情報技術者試験は新制度となり、出題傾向が大きく変わりました。
特に旧午後試験である科目Bは以前とは全く傾向が変わっており、以前までの対策ではあまり効果的とは言えなくなってしまいました。

そのため、基本情報を受けようとしている初学者で、どう対策をすればいいのか分からないという方々も少なからずいらっしゃると思います。
そこで、本稿では新制度の科目Bの対策方法について、私が実際に受験した経験とともに考察していきます。


# 目次
#### 1.前提確認
- 旧制度からの変更点
- 科目Bの特徴
- 現状の課題

#### 2.筆者が行った対策
- 対策を始めた時期
- 筆者のスペック
- 対策内容
- 実際の試験の様子
- 結果と反省

#### 3.対策方法についての考察
- 必要な勉強時間
- おすすめの対策方法

    
#### 4.まとめ
 
***
# 1.前提確認
## 旧制度からの変更点
- ### 通年受験が可能になった
今まで基本情報技術者試験は春と秋の年2回しか実施されず、なかなか受験を申し込むまでの道のりが大変でしたが、23年4月からCBT方式へと変更になり、いつでも受験できるようになりました。
それこそ、記事を読んでいる今この瞬間でもIPAのURL (https://itee.ipa.go.jp/ipa/user/public/entry/) に飛んで、アカウントを作って試験を申し込めばもう受験の手続きは完了です。

このような形式変更の背景には、基本情報技術者試験の受験機会を増やしてよりIT人材の門戸を拡げようという意図があるようです。試験を受ける側としてはありがたい配慮ですが、それと同時に問題の形式も変わったので今までの情報と大きく異なる部分が生じた点も注意が必要です。

また、時期によっては１ヶ月先まで席が埋まっていることも往々にしてあるので、早めの申し込みをお勧めします。特に土日はすぐに埋まるので、平日仕事などをされている方はもう先に申し込んでしまってから勉強を始めるくらいでもいいかもしれません。

- ### 出題形式が変わった
旧試験からの変更点を挙げると以下のようになります。
|  | 旧午後試験 | 科目B |
|:-:|:-:|:-:|
|  試験時間 |  150分 |  100分 |
|  解答形式 |  11個の大問から5問を解答（うち2問が選択） |  20問の小問を全答 |
|  解答範囲 | 「情報セキュリティ」、「データ構造とアルゴリズム」、「ソフトウェア開発」など |  「アルゴリズムとプログラミング」が8割。「情報セキュリティ」が2割 |
|  合格基準 |  60% |  60% |

こうして見ると、内容が全く違うことがよくわかると思います。
科目A（旧午前試験）も試験時間と問題数に変更が加わりましたが、出題される問題自体はほぼ同じで、対策も今まで同様過去問道場を解きまくれば大丈夫です。
それに対して、科目Bは時間や問題数だけでなく、出題される範囲や問題形式さえも変わってしまいました。だからこそ、今までとは異なる新たな対策を工夫する必要があるというわけです。

## B科目の特徴
旧午後試験は、11個の大問の中から5問を解くという形式で、自分の得意分野を選択して受験することが可能でした。しかし、新制度の科目Bでは20問の小問を全て解答するという形式に変わり、得意分野を選んで解答することはできなくなってしまいました。

とはいえ、出題範囲は20問中「アルゴリズムとプログラミング（疑似言語）」から16問、「情報セキュリティ」から4問と固定されているため、**出題される分野は前よりもぐっと狭まりました**。また、小問形式になったことにより、**一問ごとの問題の難易度も旧午後試験より易しくなっています**。そういう意味では、旧午後試験よりも対策にかかるコスト自体は軽くなったと言えます。

・実際の問題（今解く必要はありません）(「基本情報技術者試験　科目B　サンプル問題」より　問3)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478555/79a77cc5-3752-b8b2-1c2c-ab93844d29a1.png)

「アルゴリズム」では、このようにプログラムを実行したときの出力結果を答えさせる問題や、穴あきのプログラムと出力結果が与えられて、穴を埋めさせる問題などが出題されます。

これらの問題には、実行結果を1行1行メモしていく「トレース」という技術が必須です。ただ、そこまで説明してしまうと本稿の趣旨から大きく外れてしまうので今回は割愛させていただきます。どんな参考書にも必ず解説されていると思うので、そちらをご確認ください。

また、「セキュリティ」では、顧客とベンダー同士の会話や製品の仕様書を読み取り、そこからセキュリティ面の脆弱性を指摘する等の文章題形式の問題が出題されます。
これに関してはセキュリティの知識さえあればほぼ確実に解くことが出来ます。
ただし、1問あたり5分という限られた時間で文章を読み取り問題点を指摘しなければならないので、これもそれなりの訓練が必要です。

以上をまとめると、科目Bは、
**・問題の難易度自体は低くなった**
**・限られた時間で早く正確に解く力が求められる**
と言えるでしょう。トレースも文章の読み取りも、どちらも地道に進めていかなければならない作業なので、問題の形式に慣れておくのは必須と言えるでしょう。

# 2.筆者が行った対策
- 対策を始めた時期
筆者が受験したのは23年5月5日、ゴールデンウィーク真っ最中でした。そして、科目Bの勉強を始めたのは4月28日。つまり、「GWの休みを使って1週間前から一気にやる」というのが私の作戦でした。

- 筆者のスペック
・文学部卒
・プログラミング歴：約1か月(23年5月5日時点)
・取得資格：ITパスポートのみ

- 対策内容
・橋本祐史『情報処理教科書 出るとこだけ！基本情報技術者［科目B］』(翔泳社)　2周
・IPAの科目Bサンプル問題
・YouTubeで二分決定木などのやや複雑なアルゴリズムの解説動画を視聴
・旧試験過去問を少し

- 結果と反省
実際に試験を受けた結果が以下の図です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478555/efca4ca0-edcf-40ca-f741-8e0bf031db30.png)
1週間前という直前からの対策でしたが、無事合格することが出来ました。もちろん、GWで1週間ほぼずっと休みだったというのも大きいですが、上にあげた程度の対策でも十分に合格できることが証明されたと思います。

ただ、反省点として、
**・もう少し早くから始めるべきだった**
**・正直旧試験の過去問はやらなくてよかった**

という2点はありました。
いくら連休があるとはいえ、流石に1週間前は余裕がありませんでした。結果的に科目Aの直前対策がおろそかになってしまい、科目Aの点数を落とす形となってしまいました。

また、旧試験の過去問についてもあまりにも形式と難易度が違いすぎるので正直基本情報に受かるだけならやる意味はあまりありませんでした。試験2日前に科目Bの勉強でやることがなくなって、試しに旧試験のアルゴリズムの問題を解いてみたら3割くらいしか取れず、無駄に絶望する羽目になりました。
結果的に本番で86%を取れているのでやはり旧試験との関連は薄いと思います。

ただ、「セキュリティ」に関しては、文章量や難易度は異なりますが、同じ文章題形式の問題なので、もし高難度のセキュリティの問題を解きたいと思ったらやってみるのはありだと思います。



# 3.対策方法についての考察
## 必要な勉強時間
結論から先に申し上げると、 **「初学者でも20~30時間の勉強時間で十分対策可能」** と考えます。

やはり、**問題の難易度自体はそんなに高くない**というのが大きいです。if, elseや配列の表記といった基本的な文法は当然理解しておく必要はありますが、多重ループの問題も二分木の問題も**トレースさえできれば解ける**問題が大多数です。
20時間タイピング練習したらタイピング速度が格段に上がるのと同様に、たとえ初学者であろうと**20時間トレースしてたらさすがに慣れます**。

また、「セキュリティ」に関しても、文章を読み取る読解力は前提として必要になりますが、基本的には**知識を問う問題が出題される**ので、午前試験の対策をしっかりしていれば初見でも4問中3問は解けると思います。

とにかく重要なのは「慣れること」。もっと厳密に言うと、ただ漫然と問題を解くのではなく、**問題に慣れるためにトレース法等の解法を勉強するべき**です。


## おすすめの対策方法
- #### 参考書を使う

B試験の対策をしたい！と思ったなら、まず真っ先に本屋に行って参考書を買うことをお勧めします。理由といたしましては、

・ネット上に問題がほとんどない（過去問道場が使えない）から
・問題を早く解くためのコツ（トレース）をしっかり理解する必要があるから

の2点が挙げられます。
その中でも特に2点目が重要で、標準レベルの問題をいかに早く正確に解くかが問われる科目Bでは、**早く解くための上手な解法を学ぶ必要があります**。要するに、参考書は問題それ自体ではなく、「解説」の部分に非常に高い価値があるということです。
アルゴリズムにおけるトレースは必須テクニックなので、初学者の方はぜひ参考書を買ってマスターしてください。

参考書の中では、私は以下の2種類をお勧めします。

**・橋本祐史『情報処理教科書 出るとこだけ！基本情報技術者［科目B］』(翔泳社)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478555/e33acaad-5e25-8d66-665e-27e192be05dc.png)


**・福嶋宏訓『うかる！ 基本情報技術者　[科目B・アルゴリズム編]』 + 岡嶋裕史『うかる！ 基本情報技術者　[科目B・セキュリティ編]』(日経BP 日本経済新聞出版)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478555/5c67f321-cf6e-2de9-6f2b-4ae0e44be272.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478555/8e3902d1-eb8e-56a5-29e6-0cc085919f94.png)

これらの2種類に関しては、正直どちらでもよいと思います。
「出るとこだけ！」は私が実際に使った参考書ですが、何より**解説がとても充実している**点は非常に気に入っています。
この本をやるまではトレースというテクニックがなんなのかすらわかっていませんでしたが、この本を勉強したおかげで基本情報に合格することができました。

「うかる！」の方はアルゴリズム編とセキュリティ編で2冊に分かれておりページ数が多いのが特徴ですが、その代わりイラストが随所に散りばめられているので初学者にとってはかなり読みやすい内容になっていますと思います。
また、両方買わなければいけないということもないので、「アルゴリズムには自信があるけどセキュリティが…」という方は片方だけ買うというのもありだと思います。

筆者としては本当にどっちでもいいので、実際に本屋に行って何ページが読んでみて、自分が気に入った方を買うのがよいと思います。


- #### サンプル問題を解く
過去問が存在しない科目Bにおいて、サンプル問題は**唯一の本番対策**と言ってよいでしょう。
そのため、取り扱いには注意が必要です。
筆者の意見としては、**科目Bのことを何も知らない状態で試しに解くのは非常にもったいない**と思います。
サンプル問題は**本番の雰囲気に慣れるために解く**べきです。やるなら参考書を1，2周してある程度理解が進んだ段階や、直前がいいと思います。**サンプル問題＝赤本**だと思いましょう。
ただ、参考書の例題としてサンプル問題が載っていることもあるので、その時は解いてしまって構いません。


- #### 動画を見る(無料)
YouTube等に上がっている動画を見るのもおすすめです。「基本情報 科目B」等で調べてもらうと、意外と科目B対策の動画がヒットすると思います。サンプル問題の解説動画や、自作問題でアルゴリズムの基礎を解説する動画など様々あり、個人的にかなり役に立ちました。
また、基本情報に関わらず、シンプルに二分木のアルゴリズムを解説する動画などもたくさん上がっているので、勉強で疲れた時に見るといい息抜きにもなると思います。
- #### 動画を見る(有料)
私は受験当時では使いませんでしたが、Udemyなどにも科目B対策の講義が上がっています。会社の制度でUdemyなどが貸与されている方は、Udemyの質の高い講義を受けてみるのもありだと思います。
- #### 旧試験は応用まで目指している人はやってもいいかも
旧試験に関しては、形式が似ている「セキュリティ」分野はやってもいいと思います。ただ、科目Bのセキュリティよりも文章量も難易度も高く、1問30分と時間感覚が変わるので、一通りやることをやった人でよりセキュリティの理解を深めたいと思う方はやってもいいかもしれません。
また、旧試験と応用情報技術者試験は形式が似ているので、応用情報まで目指していて基本情報に余裕がある人はやっていいと思います。
ただ、「基本情報に受かる」という観点で言うなら、正直必要ないと思います。
    
# 4.まとめ
以上のことを踏まえて科目Bの対策のポイントを3点にまとめると、
### ・科目Bは20~30時間で十分対策可能
### ・参考書を2周+不安がある箇所はYouTubeやUdemyの動画などで知識を補強するのがよい。サンプル問題は解く時期に注意（参考書に直接載っているものは解いてOK）。
### ・重要なのは、問題形式に慣れて「早く正確に解く」ということ。

になります。

# おわりに
ここまでの長丁場につきあってくださり、ありがとうございます。なるべく初学者の方にもわかりやすいように説明しようと私自身の経験なども書いていたら、想像以上の長さになってしまいました。ちゃんとわかりやすい記事になっていたでしょうか。

初投稿故、いろいろわからないことも沢山あるなかで書いた記事です。もしよろしければ文量の長さや内容、フォーマットなどに関してフィードバックいただけるととてもありがたいです。今後の記事を書く際の参考にします。

改めて、最後まで読んでくださりありがとうございました。この記事が少しでも基本情報合格の助けになっていることを願います。