全ての若手文系エンジニアへ
数学を暗記科目と勘違いして受験を乗り越えてきた我々にとって(肩組み)、制度改定後の基本情報技術者試験の科目Bは苦戦を強いられることと思います。
今回は文系向けをテーマに、科目Bの問題パターン別のアプローチのしかた、対策方法を残します。
理系ですか?
得意の応用力で満点でも取れば?
はじめに 我々は1000点満点を目指さない
インターネット上の合格体験記などでは、科目Bは満点でした!というストイックな方々を多く観測できます。しかし、基本情報技術者試験に限らず一般的な資格試験において、合格が目的であれば満点を目指す必要はありません。600点でも700点でも合格は合格なので(自分に言い聞かせながら)。
ここで重要なのは、あらかじめ本番で捨てて良い問題数の目安を頭の隅に置いておくことだと思います。単純計算で1問5分。落としてはいけない問題に注力し、10分以上掛かる問題には深入りしないようにします。全20問のうち、完全に捨てていいのは4問までと決めて受験しました。
問17〜20 得点源のセキュリティ
セキュリティのために特別に暗記などする必要はなかったです。
科目Aの勉強とIPA公式の公開問題を事前にやっておくだけでも対策としては十分だと思います。
試験本番では、科目Bが始まったら真っ先に17問目へ移動します。落ち着いて問題文を読めば、ほぼ確実に4問とも正答できます。
ざっくりとした例になりますが答えにたどり着くまでの道筋は以下です。
・〇〇部門は海外出張があるので、選択肢イの夜間だけシステムを落とす対応策は通常業務に支障をきたす
・システムの規約だけで判断したらアもウも要件を満たすが、掛かる費用を計算したらアの方が安い
・▲▲室には他の部屋からだけ入室できるようにするため、外部の廊下と繋がるエのドアは非常時のみ内側から開くようにしたら良い
セキュリティの知識を問われるというよりも、日本語が読めれば自然と正解が分かるようにできています。
全体の文章量が多く解答に必要な情報は全体に散らばって書かれているので、とにかく落ち着いて問題文を読み全問正答を目指します。
問1〜16 鬼門のアルゴリズム
自分は暗算ができないのでトレースの訓練が必須でした。アルゴリズムの対策は、市販の問題集での反復練習⇒力試しとしてIPA公式公開問題をやってみるという順番が良さそうです。
主に以下の問題集を使って学習しました。
-
情報処理教科書 出るとこだけ!基本情報技術者[科目B]予想+過去問題集
難易度:本番より少し易しめ
「トレースとは何か?」というところからスタートするので、プログラミングの経験がまったく無くてもトレースができるようになります。問題も易しめで、トレースの最初の練習用としては最適でした。
ただし、書いてある通りにやらない方がいいのでは? というところもあったので後述します。 -
基本情報技術者【科目B】アルゴリズム×擬似言語トレーニングブック
難易度:基本例題は本番と同じくらい、応用例題は本番より難しい
「大滝本」と呼ばれる対策用テキストです。出るとこだけ!と比べて難易度が高く、1冊目のテキストにすると苦労するかもしれませんが、問題数やパターンが充実しています。基本例題の15問がスラスラ解けるくらい、応用例題も最初の10問くらいが理解できるくらいになると、合格に近づくと思います。
出るとこだけ!が推奨するトレース方法は細かすぎる
結論、本番を想定したトレースの練習は大滝本に書いてある方法を参考にした方が良いと思いました。
IPA公式のサンプル問題の問3を例に、それぞれの問題集で紹介されているトレース方法を実際にやってみます。
-
出るとこだけ!

問題の文章をそのまま書き写したり、処理ごとに行を細かく分けたりしています。処理を丁寧に追うことができますが、本番ではここまで細かく書く時間がありません。
また、出るとこだけ!は「とりあえず1行ずつ完璧にトレースすれば 問題の意図が理解できなくても 答えが出せる」「無理に意図を理解しようとしなくていい」という思想です。個人的には鵜呑みにしない方が良い考え方かなと思います。
理由は 出てきた答えが本当に合っているか確認できない からです。この方法ではプログラム全体の流れや目的が分からず、筆算の代わりであるはずのトレース結果を見ても確かめ算ができません。 -
大滝本

大滝本の方法では、まず問題文とプログラム全体を見て大まかな流れを確認します。
問3はfor文の繰り返しが軸になっているため、変数 i の列を一番左にしています。出るとこだけ!では1行1行その処理のタイミングになったら書いていたところを、 i 列の2~6まで先に埋めてしまうイメージです。for文内の足し算に使う配列 out の末尾 tail と、配列 in の i 番目 in[i] をそれぞれ並べます。
トレースが終わってから確認するのも簡単です。tail 列と in[i] 列を足した結果が out{} に追加されていっていることを確かめます。
個人的には出るとこだけ!1冊では足りなかったです。まず出るとこだけ!の易しい問題で処理の追い方に慣れてから、大滝本で実践的なトレースの練習をするのが良いと思います。
さいごに 科目B攻略のポイント
- 時間配分の徹底:セキュリティ(問17~20)を15~20分で終わらせて、残りの時間をアルゴリズムに全振り
- 実践的なトレースができるように練習:出るとこだけ!で基礎を掴めたら、大滝本を参考に自分に合ったより実践的な書き方にシフト
- 頑張って意図を読み解く:機械的に手を動かすだけでなく、プログラムの目的を意識する
誰かのお役に立てれば幸いです。