基本情報技術者試験の難易度は?初心者がつまずく場所を解説
基本情報技術者試験って、どれくらい難しいんだろう。
申し込む前に、そこが一番気になりませんか?
難しいという声もあれば、勉強すれば受かると言う人もいる。どちらも本当なので、余計に判断がつかないのだと思います。
先に結論をお伝えします。基本情報の難しさは範囲の広さではなく、科目Bで問われる読む力に集まっています。
私はエンジニアとして10年以上、Webシステムの開発や運用に携わってきました。新人に基本情報の受験を勧める立場でも、つまずいた人の相談を受ける立場でも、この試験を何年も見てきています。
その中で分かったのは、落ちる人の理由がだいたい同じ場所に集まるということでした。難易度を漠然と怖がるより、つまずく場所を先に知っておくほうがずっと役に立ちます。
この記事では、難易度の中身を分解したうえで、初心者が止まりやすい場所とその抜け方を順に見ていきます。
基本情報技術者試験の難易度は、試験の形に表れている¶
難しさを語る前に、相手の形を確認しておきましょう。ここを知らずに難易度だけ聞いても、判断のしようがありません。
基本情報技術者試験は、科目Aと科目Bの2つで構成されています。どちらも通年で実施されるCBT方式で、パソコンの画面上で解答する試験です。
数字で見ると、時間の配り方に特徴がある¶
2つの科目の形を並べてみます。数字はIPAが公開している試験要綱に沿ったものです。
| 項目 | 科目A | 科目B |
|---|---|---|
| 出題数 | 60問 | 20問 |
| 試験時間 | 90分 | 100分 |
| 出題形式 | 四肢択一 | 多肢選択 |
| 中心となる内容 | テクノロジ・マネジメント・ストラテジの知識 | アルゴリズムと擬似言語、情報セキュリティ |
| 合格の基準 | 1,000点満点で600点以上 | 1,000点満点で600点以上 |
注目してほしいのは時間の配り方です。科目Bは20問しかないのに、60問ある科目Aより長い100分が与えられています。
1問あたりで比べると、その差は歴然でしょう。科目Aが1分半なのに対し、科目Bは5分です。
これは、じっくり読み解かせる試験だという設計の表れだと思います。暗記の速さではなく、考える手順が見られているということです。
そして両方で600点を超えないと合格になりません。片方が得意でも、もう片方が足を引っ張れば通らない仕組みです。
難しさには2つの種類がある¶
同じ「難しい」でも、科目Aと科目Bでは中身がまったく違います。ここを混ぜて考えると対策を間違えます。
違いを整理してみました。自分がどちらで苦しんでいるかを考えながら見てください。
| 科目 | 難しさの種類 | 時間をかければ解決するか |
|---|---|---|
| 科目A | 覚える量が多い | 解決する。回した分だけ伸びる |
| 科目B | 手順を追う力が要る | 量だけでは解決しない。読み方を変える必要がある |
科目Aは、知らない用語が出てきても調べて覚えれば前に進みます。つらいけれど、努力が点に変わりやすい領域です。
一方の科目Bは、知識を詰め込んでも読めるようにはなりません。ここが基本情報の難易度を押し上げている本体です。
試験そのものをまだつかめていない人は、入口を整理した記事から読むと全体像が見えます。
【関連記事】基本情報技術者試験は何から勉強する?初心者向けの始め方
初心者がつまずく場所は、だいたい4つに絞られる¶
相談を受けていて気づいたのは、止まる場所がほとんど決まっているということです。順番に見ていきましょう。
つまずき1:科目Aの範囲が広すぎて終わらない¶
最初の壁は、テキストの厚さです。コンピュータの仕組みからネットワーク、データベース、経営戦略まで並んでいて、1周する前に力尽きる人が本当に多い。
原因は範囲そのものではなく、1周目で完璧にしようとする進め方にあります。分からない箇所を残したまま最後まで進めてよいのです。
同じ用語は、後の分野でまた顔を出します。二度目に見たときの理解のほうが深くなるので、1回で決めようとしないでください。
文系出身で予備知識がないことを不安に感じている人は、その視点でまとめた記事も参考になります。
【関連記事】基本情報技術者試験は文系でも合格できる?IT初心者向けに勉強法と科目B対策をやさしく解説
つまずき2:擬似言語の記号が読めない¶
次の壁が、科目Bで出てくる擬似言語です。初めて見た人は、記号の意味が分からず固まります。
たとえば矢印です。等号ではなく「←」で値を入れる書き方は、プログラミング経験がないと戸惑うところでしょう。
ここは知識の問題なので、実は短期で抜けられます。記号の一覧を一度眺めて、意味を確認するだけで視界が変わります。
記法の確認には、早見表の形でまとめた記事が使えます。
【関連記事】擬似言語の記号・記述形式一覧|試験前のチェック早見表
つまずき3:読めるのに答えが合わない¶
いちばん深いのがここです。記号は分かる、処理の意味も分かる。それなのに選択肢を選ぶと外れる。
原因は、値の動きを頭の中だけで追っていることにあります。短いコードで確かめてみましょう。
○整数型: goukei(整数型の配列: data)
整数型: sum ← 0
整数型: i
for (i を 1 から data の要素数 まで 1 ずつ増やす)
if (data[i] mod 2 = 0)
sum ← sum + data[i]
endif
endfor
return sum
配列の中から偶数だけを足す処理です。読むだけなら難しくないはずです。
ところが本番では、条件が二重になったり、添字がずれたりした瞬間に分からなくなります。そこで使うのがトレース表です。
data が {4, 7, 6} のときの動きを書き出してみました。
| 回 | i | data[i] | 偶数か | sum |
|---|---|---|---|---|
| 開始時 | ― | ― | ― | 0 |
| 1回目 | 1 | 4 | 偶数 | 4 |
| 2回目 | 2 | 7 | 偶数でない | 4 |
| 3回目 | 3 | 6 | 偶数 | 10 |
| 終了 | ― | ― | ― | 10 |
書くのに1分もかかりません。それでも、頭の中で追うのとは正確さがまるで違います。
私は実務でも同じことをしています。不具合を追うときは、いまだにログに値を出して1行ずつ確認するのです。
10年やっていても頭の中だけでは間違えます。表に書き出すのは初心者の甘えではなく、確実な手順だと考えてください。
書き方に自信がない人は、手順を解説した記事を先に読むと迷いません。
【関連記事】擬似言語のトレース表の書き方|科目Bで変数の値を追う手順を解説
つまずき4:時間が足りない¶
最後の壁が時間です。1問5分という配分は、慣れないうちは驚くほど短く感じます。
ただ、時間切れの正体はたいてい読む速さではありません。一度読んで分からず、もう一度最初から読み直す往復に時間を取られているのです。
読む順番を決めてしまえば、この往復は減らせます。配分の考え方は専用の記事で詳しく扱っています。
【関連記事】基本情報 科目Bの時間配分|1問にかけられる時間と見直しの順番
合格率の数字は、そのままでは難易度にならない¶
難易度を調べると、必ず合格率の数字が出てきます。ただ、その数字は扱いに注意が必要です。
理由は、試験の実施方式が途中で変わっているからです。紙で年2回だった時代と、通年のCBT方式になった今とでは、受験する人の層も準備の仕方も違います。
方式が変われば数字の意味も変わる、ということです。古い数字と新しい数字を並べて比べても、難易度の比較にはなりません。
最新の合格率は、IPAが統計情報として公開しています。数字を知りたい場合は、まとめサイトではなくそちらを見てください。
そのうえで、合格率をどう受け止めるかを整理しておきましょう。
| 数字の見方 | 受け止め方 |
|---|---|
| 合格率が高い年 | 受かりやすいのではなく、準備した人が多かった可能性がある |
| 合格率が低い年 | 難化したとは限らない。記念受験の割合でも動く |
| 自分にとっての難易度 | 統計ではなく、科目Bを読めるかどうかで決まる |
結局のところ、あなたが受かるかどうかは全体の平均では決まりません。科目Bのコードを追えるようになったかどうか、その一点です。
科目Bが難しすぎると感じている段階の人は、原因の切り分けから始めるとよいでしょう。
【関連記事】基本情報技術者試験の科目Bが難しすぎると感じる人へ|原因と対策を初心者向けに解説
難易度を下げる進め方は、順番を変えるだけ¶
難しさは変えられませんが、感じ方は進め方で変えられます。やることは大きく2つです。
科目Bから先に手を付ける¶
多くの人は、テキストの並び順どおりに科目Aから始めます。そして科目Aで消耗し、科目Bに入る前に試験日が来てしまう。
これを避けるには、最初に科目Bへ触れておくことです。擬似言語は慣れるまでに時間がかかるので、早く始めるほど有利になります。
科目Aは後半で一気に伸ばせます。過去問を回せば回した分だけ点になる領域だからです。
科目Bという科目の全体像は、親記事にあたるこちらでつかんでおくと迷いが減ります。
【関連記事】基本情報技術者試験の科目Bとは?擬似言語・アルゴリズム対策を初心者向けに解説
1日1問でも、触れない日を作らない¶
もう一つは、頻度です。週末にまとめて3時間やるより、毎日15分のほうが擬似言語には効きます。
読む力は筋力に近く、間が空くと戻ってしまうからです。私が見てきた中で伸びが速かった人は、例外なく毎日少しずつ触れていました。
難しいと感じる日は、1問だけ解いて終わりにしてよいのです。続けているという事実のほうが、その日の量より効きます。
進め方全体を組み立て直したいときは、勉強法をまとめた記事が土台になります。
【関連記事】基本情報技術者試験の勉強法|科目Aと科目Bの進め方を順番に解説
実務のエンジニアから見ると、この試験はどう見えるか¶
最後に、現場側の視点も置いておきます。難易度の話は、目的とセットで考えたほうが納得しやすいからです。
基本情報で問われる内容は、実務でそのまま使う知識ばかりではありません。ただ、科目Bの読む力だけは別格で、毎日使っています。
他人が書いたコードを読み、値の流れを追い、どこで想定と違うかを見つける。仕事の中身は、科目Bでやっていることとほとんど同じです。
障害の調査を任されたとき、まずやるのは処理を上から順に追い直すことです。使う言語がJavaでもPythonでも、この作業そのものは変わりません。
擬似言語は特定の言語に寄っていないぶん、この共通部分だけを取り出した形になっています。試験のための記法だと思われがちですが、実際には読む訓練の道具なのです。
だから私は、新人に科目Bを飛ばさないよう伝えています。試験のためだけの勉強にはならないからです。
難しいと感じるのは、それが本物の技能だからでしょう。詰め込みで越えられない壁だからこそ、越えた先に残るものがあります。
手を動かす場所を用意しておく¶
読み方を知っても、動かす場所がないと擬似言語は身につきません。紙のトレースに加えて、実際に動く環境があると理解が速くなります。
Giji Academy では、擬似言語のコードを画面上で動かしながら学べます。値がどう変わるかを目で見られるので、自分で書いた表の答え合わせに使えます。
書いた表と画面の値がそろったとき、読めているという確信が持てるはずです。まずは短いコードから試してみてください。
学習を始める場所はこちらから選べます。
まとめ¶
ここまでの要点を振り返っておきます。
基本情報技術者試験の難易度は、範囲の広さではなく科目Bに集まっています。科目Aは覚えれば進みますが、科目Bは読む練習をしないと点になりません。
つまずく場所は4つでした。科目Aの範囲で息切れする、擬似言語の記号が読めない、読めるのに答えが合わない、時間が足りない。
このうち記号の壁は短期で抜けられます。残りは、トレース表を書く習慣と読む順番を決めることで対処できます。
合格率の数字に振り回される必要はありません。あなたにとっての難易度は、科目Bのコードを追えるかどうかで決まるからです。
そして読む力は、毎日少しずつ触れることでしか伸びません。今日は偶数を合計するコードのトレース表を、1枚書いてみるところからでどうでしょうか。
その1枚が、難しいという印象を、解けるという実感に変えていきます。