【基本情報技術者試験】文系出身者が一発合格するためにやったこと

# 概要
先日、基本情報技術者試験を受験して無事に一発合格することができました。
私の実施した勉強法などを紹介します！

### 前提
・文系出身
・2年前にエンジニアへ転職（実務経験2年未満）
・2年前にITパスポート合格
・仕事しながらの勉強（独学）

### 結果
私のスコアは
・科目A：675点
・科目B：730点
でした。

# 勉強するにあってのTips
### 「思い出す」行為が重要

科目A、科目Bともに基本的には

・参考書を読む＝インプット
・過去問（問題）を解く＝アウトプット

これの繰り返しです。

「最近は同じ過去問は出ない」という声もSNSなどでよく目にしますが、そうだとしても「答えをちゃんと考える」というフェーズは必要です。ただ活字を読んでいるだけでは覚えられるものも覚えられないと思いますので、「あ、これなんだっけ」「あーそうだこれこれ」という回数を積んだ方が絶対良いです。思い出す、という行為自体が記憶に繋がります。

私は参考書を2冊買いました。
1冊目は450ページくらいだったのですが、過去問道場で解いているうちに「あれ、知らない用語たくさんでてくるぞ？」と思ってきたので、もっと情報量がある分厚い本を追加で買いました。復習も兼ねて2冊目で勉強できましたし、模擬試験も入っていたので、結果的にはこの2冊で十分だったかなと思います。

https://www.shoeisha.co.jp/book/detail/9784798183282

https://tacpub.jp/list/detail.php?bc=110941


### ボリュームとモチベーション

最初は「え、こんなボリュームあるの！？」って思いましたが、まずはざっくり一周するくらいの感覚で良いと思います。あまり最初から意気込んで1ページ1ページじっくり読んでもモチベーションが続かないと思いました。

例えば、二進数が分からないという場合は一旦そこをスキップする、でも良いと思います。二進数を理解していないからといって、その先すべて意味が分からない、ということはないからです。というより、二進数の分野（基礎理論？）以外は関係ないので、すべて分かるようになっています。モチベーションがなくなっては意味がないので、あまり詰まるようならスキップするのも大事だと思います。

実際、半年前から細々と始めたのですが、序盤があまりのめり込めず、実質的には試験前2-3か月間くらいが集中した勉強期間だったかと思います。とはいえ仕事があるので、平日はそこまでできませんでした。夜で頭も疲れていることが多いので、あまりやっても効果的ではありません。たまに科目Aの過去問をやるくらいです。土日は一日空ける日を一週間に1回くらいは作って、勉強するようにしました。

### 実務経験あっても科目B侮るなかれ
まずは科目Aから勉強することを推奨します。
科目B問題の中では二進数関連（左シフトとか）や情報セキュリティ関連の用語（DMZとか）が登場することがあります。これらは科目Aの内容を知っていないと解くのが大変なので、まずは科目Aから勉強します。

また、科目B侮るなかれ。アルゴリズム問題のための時間をしっかり確保しておきましょう。

例えば試験あと一週間になってから科目Bに取り掛かる、とかだとアルゴリズム問題が苦手な方は時間が足りなくなると思います。科目Bの方がしっかりとした理解が必要になるので、着実にスケジューリングしましょう。

私は最初疑似言語を見た時「なんだ、普段のプログラム言語とほぼ同じだし実務経験あるから大丈夫だろ～」と思っていました。ただ、合格ラインの20問中12問クリアするためには、簡単なアルゴリズム問題だけ解いていても受かりません。実際、私はそんな得意な方ではないことが分かったので、これが一番苦労しました（実務経験少なくても得意な方は大丈夫だと思いますが）。

## 適切な期限と緊張感で勉強する
試験は通年受験が可能になったことからほぼ毎日やっていますが、意外とどこもすぐいっぱいになります。

特に土日は社会人が集中する為か、私の近くの会場は1か月先まで予約できませんでした。1～2か月前くらいには予約しておくと良いと思います。私の場合は、予約のタイミングの目途としては科目Aの内容を一通り見て過去問少し対応し始めた頃でした。1か月先くらいだったと思います。

あまり先過ぎると「もうちょい後でいいや」と怠けてしまいます。反対に、気合と根性でいけると意気込んで近すぎる日程を選んでも、時間の確保が明らかに難しい場合は無謀になってしまいます。

ある程度勉強出来たら期限を設けるのが適切だと思います。

# 科目Aの勉強法
### 苦手分野を狭めていく
科目Aは「知っている・知らない」の差で点数がとれることもあります。一度本を読んだからと慢心せず、繰り返し読んだり解いたりすることで記憶に定着させましょう。当日に分からない問題が出てきたときの為にも、私は少しでも多く覚えるようにしました。

しばらくやっていると、苦手な分野が分かってきます。そうしたら、その分野を重点的に取り組みます。計算系であれば、公式が頭に入っていることを確認＆例題を数問やってみます。例えば、MIPSの計算が分からなければ、ネットで検索すると例題まで紹介してくれています。私はこの辺苦手だったので助かりました。

このように、苦手分野を狭めていくイメージです。
最初のうちは過去問を闇雲に何周してもよいですが、それだけでは効率的ではないフェーズがあります。

「これが苦手だな」「これ前も間違えたな」と自分で認識することが大事です。

### GoogleDocumentにメモすればどこでも
暗記系であれば、特に試験直前一週間などは夜寝る前に少し読んだりすることで、対策できると思います。過去問道場やアプリなどもあるので、電車などの隙間時間でもできます。

TCPとUDP、SRAMとDRAM、ライトスルー方式とライトバック方式、垂直パリティと平行パリティ、CSIRTとかNISCとかの情報セキュリティ組織などなど...。

私はGoogleDocumentにメモして、直前までスマホからもPCからも確認できるようにしていました。

いちいちコピペしたり記入したりするのが面倒であれば、過去問道場の問題と答えをスクショして貼り付けておく（orスマホで直接スクショする）とかでも良いです。いつでもパッと自分が間違えやすい箇所を確認することができるからです。繰り返し見ると覚えられます。

### シラバスの確認＆過去問は直近の数年分で十分
ちなみに、2024/10からシラバスがver9.0になります。
私は2024/8受験だったので、新しいシラバスを確認する必要はなかったですが、少し前に参考書を買った方はシラバスが更新されていないか確認するようにしましょう。

https://www.ipa.go.jp/shiken/syllabus/gaiyou.html

また、現状のシラバスをみると、参考書では紹介されていない用語がたくさんあります。「これ全部出るのか！？」と思うと憂鬱になります。基本的には参考書がピックアップしている用語がベースで出題されると思ってよいでしょう。よほど時間に余裕があればシラバスを確認しても良いですが、合格ラインは6割であることと珍しい用語の登場率を考えたら、そこにあまり時間を割くのはもったいないです。

過去問道場ではかなり前の試験まで含んで掲載してくれています。
ただ、ITの分野は進化がはやいのもあり、あまり前の問題をやっても対策にはなりません。私は直近2-3年分でやりましたが、それでも十分でした。

全部の年のを含んでランダム出題していると時々「えなにこれ！？」というのが出てきます。私は最初の方にそういうのもやったほうがいいと思って解答＆勉強していましたが、結論不要だったと思います。

### 正解以外の選択肢も見ておく
科目Aはすべて四択問題ですが、正解以外の3つの選択肢も重要である場合があります。というより、それを利用して学習を効率化させることができます。

例えば、過去問道場で出てきた問題として「スーパースカラ」「スーパーパイプライン」が選択肢にあるものがありました（参考書にはあまり載っていないので頻出単語ではないかも）。

その問題の答えは、「スーパースカラ」だったのですがどっちがどっちかまた問われた時のためにその違いを明確にしておく必要があります。

パイプラインを複数用意するのがスーパースカラ、
パイプラインを細分化するのがスーパーパイプライン、
ということを覚えておけば、どちらが質問されても答えられます。

一問解くことで、二問分のカバーができるわけですね。

### 消去法も駆使する
消去法も大事だと思いました。

例えば、「この単語の意味は分かる！」というものが3つあり、それがどれも答えとして適切ではないと思った場合、仮にあと一つが聞いたことのない単語だとしてもそれが正解の可能性が出てきます。

しかし、これは4つの内3つ（なんとなくでも）知っている必要があります。そのためにはいずれの用語も大体は把握していなければいけません。そうなると、科目Aは60問ですが、実際に知っている必要がある重要な用語は60くらいだろう、という予測は危険です。「最近、過去問があまり使いまわされなくなった」「知らない用語が出てくる」と聞きますが、これらは消去法が使えればクリアできるのではないでしょうか？

科目Bのセキュリティ問題もそうですが、「文脈（背景）」から物事を把握する能力が問われつつあるように思えます。同じ過去問があまり使われない点やアルゴリズム問題が多くなった点も考慮すると、「暗記でなんとかなる」使いまわし問題から「論理的に答えを導く」問題に移行しつつあるのかもしれません。

# 科目Bの勉強法
### アルゴリズム問題に慣れる
科目Bも基本的には同じく「インプットとアウトプット」の繰り返しです。2023年4月から問題形式が変更され、科目Bの過去問はありませんが、IPAが出している20問+サンプル6問があります（旧午後試験の過去問は別物なので要注意）。公式には解説がないですが、参考書やYoutubeにはあるので理解を深めることができます。過去問が少ないのはちょっと心配になりますが、やはり繰り返し解くのが一番です。

段々と「ソート系の問題かな？」「クラス使ってリストの中身を変える問題だ」「あ、これは二次元配列のforループだ」などといったように推測出来てくるようになると、一件長文の分かりづらそうな問題も構造が見えてきて入りやすくなってきます。よく見るとそんなに複雑ではないアルゴリズム、というのもあったりします。

特に私のような元々文系出身で計算式とか苦手な方は、このように慣れてくると抵抗がなくなってくると思います。

### 参考書の模擬問題やってからIPA公式問題へ

参考書2冊と上述しましたが、どちらにも科目Bの模擬問題がありました。これらをまず解いてから、IPAのサンプル問題に入った方が良いです。なぜかというと、IPAの公式問題は割と実際に即したものであるはずなので、直前の当日リハーサルに使えるからです。私も実際そのようにしました（ちなみに試験2日前に実施して20問中12問の正解...合格超ぎりぎりでしたｗ）

あと、TSUTAYA併設のスタバ、おススメです。
私の行った店舗は、基本情報の参考書も置いてありましたので、直前で科目Bの練習がなくなってしまった場合に、新しい問題を解くことができました。パーフェクトラーニングという本に科目B問題が沢山掲載されています。2日前が6割ギリギリだったので前日はここで科目Bの問題を沢山こなしました。

他にもいろいろ参考書が置いてあったので、問題の量にこだわりたいときにとても良いと思いました。全部は取り組めなかったですが、有効な対策練習にはなったと思います。

### はじめのうちはトレースする
科目Bの解法としてよく「トレース」が挙げられます。
トレースとは、プログラム1行ずつ目で追いながら、使われる変数の中身などを記載していく作業です。ここでは詳しい内容は割愛しますが、最初のうちはやったほうがいいとおもいました。というのも、私は最初これを知らずに頭の中でやったり、適当にメモしたりしていたからです。

しかし、当然ですがそうすると途中で「あれいまどこだっけ...」「さっきここの変数の値なにになったっけ」となることがあります。トレースしていれば確実に防止できます。

とはいえ、すべての問題でトレースしていたら時間があっという間になくなります。中には、少しトレースしたら「あ、これはこういう処理を行っているんだ」と理解できるものがあります（なんでもかんでもすぐに言語化していいわけではないが）。

個人的には科目Bは時間が少なめと感じているので、練習している間に「この問題はトレースしたほうがいい」という判断ができるようになると強いと思いました。これもやっていくうちに把握できるようになってくるかと思います。私は完璧とはいえませんが、「これはなくてもよさそうだな」という温度感は分かるレベルになりました。

# 解き方のコツ
当日の解き方について。
まず、科目A。二進数、論理回路、そのほか計算問題やちょっと時間かかりそうな問題は後回しにしましょう。60問で90分なので、順当に進めば時間は足ります。

試験は後回しにスキップして、あとで戻ってくることができるようになっています。
実際、私も当日は計算問題をあとにすることで、安心して解く時間にあてることができました。科目Bと違って、科目Aは時間ある方だと思います。

また、後回し系の問題の中でも時間かかると思ったら飛ばしてください。分かる問題から着実に積み重ねたほうが良いです。

科目Bも同様です。最後の3,4問はセキュリティ問題なので、まずはそこから取り掛かりましょう。16問もアルゴリズム問題やってからだと時間がなく焦りますし脳みそも疲れていると思うので笑

これは私の所感なので確実か不明ですが、科目Bの中でも「最初の方が簡単で、最後になるにつれて難しくなる」とは一概に言えないようです。たしかに最初の2,3問は比較的易しい問題が多いですが、後半になってくると、たまにそこまで難易度高くないものが混じってきます。

少し小手先テクみたいにはなりますが、科目Bの中には「一見難しそうだが、よく見ると選択肢を2つまで絞り込める」というものもあります。それを知らずにもし時間が無くて適当に選んでいたらもったいないですよね。少しでも確率をあげるなら、そういった見極めのテクもあるといえます。

ちなみに、当日は計算用に使える白紙は最初に1枚だけもらいますが、追加でほしい場合はスタッフの方を呼べばOKです。

# 以上！
当日は、試験が終わると採点結果がすぐにでます。ちょっと心臓に悪いですね笑
正直科目Aは手ごたえあったので「8割は超えたかな？」と思っていたのですが、そんなことはありませんでした笑

逆に、科目Bは途中意味が分からなくなって「やばい、これ終わった...」と思いましたが、必死に脳みそをフル回転させてなんとか7割まで到達できていました。分からない問題にはあまり固執しなくてよかったと思います。

それでも結構不安だったので、無事に合格ライン超えたときは嬉しかったです。

以上、基本情報技術者試験の勉強法についてでした。
私自身、いろいろな記事にお世話になりましたので、こちらもどなたかの一助になればと思います！