非情報系が新卒入社前に１ヶ月で基本情報技術者試験に合格した話



#概要
先日、基本情報技術者試験に合格予定（得点は合格点ですが、発表は来月）したので、資格を取ろうと思った動機から具体的にどうやって合格したかまでを本記事ではまとめています。過去の自分がそうであったように資格取得を考えている、すでに勉強を始めている方々にとって有益な内容にすることを念頭に書きました。

この記事は[IT知識0から1ヶ月で基本情報技術者試験に合格した話](https://qiita.com/yusuke_blog1026/items/d6b079fa026ce6776773#4-%E8%A9%A6%E9%A8%93%E6%A7%8B%E6%88%90)を参考にして書きました。

まず、実際のスコアは以下の通りです。
![IMG_1368.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764771/19d01c14-9bfb-bfac-4ab7-b77af000296c.jpeg)

![IMG_1367.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764771/5c76b0a1-6363-5672-31d1-0e04e8e74c2e.jpeg)
「正答率は問題ごとの配点割合に対する特典の割合を示した参考値です。」と記載より、正答率のパーセンテージから特典を計算しますと、
![スクリーンショット 2021-04-01 23.22.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764771/f0e0410c-6376-847c-65e4-ab7bfce2e2fd.png)
午後の得点は77点になります。

#目次
[1.基本情報技術者試験とは？](#1-基本情報技術者試験とは？)
[2.誰が書いたか](#2-誰が書いたか)
[3.理系のバックグラウンドは有利に働くか](#3-理系のバックグラウンドは有利に働くか)
[4.受験にあたっての動機](#4-受験にあたっての動機)
[5.合格後どう変わったか？](#5-合格後どう変わったか？)
[6.勉強期間](#6-勉強期間)
[7.試験構成](#7-試験構成)
[8.学習戦略](#8-学習戦略)
[9.合格するための参考書、WEBサイト、学習費用](#10-合格するための参考書、WEBサイト)
[10.実際の勉強の流れ](#11-実際の勉強の流れ)
[11.試験当日](#12-試験当日)
[12.まとめ](#13-まとめ)
[13.参考記事一覧](#14-参考記事一覧)


#1.基本情報技術者試験とは？
IT業界への入門的な位置づけの資格となります。試験範囲はテクノロジー系、マネジメント系、ストラテジ系から構成されます。テクノロジーだけではない知識も要求されるのは意外に思いましたが、IT人材には技術だけでなく経営やマネジメントの観点も必要ということでしょう。
#2.誰が書いたか
- 非情報系分野の理系修士を卒業しIT系企業に新卒で４月に入社
- 専攻分野ではプログラミングを使う機会は全くありませんでした。学部のときに授業で少しだけ触りましたが（C言語）何年も前のことなので、何も覚えていない状態でした。
- 就活が終わった後の夏休みにProgateをやり、その後Rails Tutorialをやりました。
- その後は忙しくてプログラミングに触れる時間が取れず、修士の卒業が決まったタイミングで基本情報技術者試験を取ることにしました。

#3.理系のバックグラウンドは有利に働くか
僕が気づいていないだけかもしれませんが、有利に働いているとは思えませんでした。というのも、過去問を解いた限り、数学の知識を用いなければ解けない問題がなかったからです。四則演算ができれば十分で、それ以外だと確率ぐらいです。なので、特に理系だからといって楽ができたということはありませんでした。（**注：2020年から午前問題の数学系問題出題比率見直しになるため、それに備えるのは無駄ではないと思います。**）
また、アルゴリズムや実際のプログラミングの問題では論理的思考力が必要になると思いますが、これについても理系でも文系でも変わらないと思います。どちらの分野でも論理的思考力は必要とされてきたであろうからです。

#4.受験にあたっての動機
Twitterで多くのエンジニアは基本情報技術者試験のことなど話題にも出さないため、また、資格を重視していないように見えたため、僕もあまり興味を持っていませんでした。また、他に興味のある技術がたくさんあったので、資格勉強に時間を費やすのはどうかと思っていました。しかし、どんなものかと参考書を見てみたところ、書いてある内容のほとんどが知らない内容でした（知っていたのはせいぜい２進数くらい）。基本情報技術者試験で扱う内容はITに携わるものにとって基礎的なものであるのに、まったく知らないというのは基礎ができていないということになると考えました。なので、これはまずいと感じ取ることに決めました。
#5.合格後どう変わったか？
合格した後では以前と比べて以下のような変化がありました。

+ 知っている用語が増えたため、読むことのできる内容が増えた。また、既に知っていた内容の理解が深まった。
+ どこまでが必要最低限知っておくべき知識なのかを知らなかったが、資格勉強を通じてそれらを短期間で学習できた。
+ どのような分野があるのかを知ることができたため、その後にさらに深めていきたい分野を見つけ、足がかりとなる知識を学べた。
+ セキュリティの重要性がわかった。
+ マネジメント、ストラテジ系の学習から上流工程の戦略などを垣間見ることができた。

#6.勉強期間
社会人になったら自由に使える時間は減り、まとまった時間は入社するまでしかない、長々と資格勉強をしたくない、他の技術の勉強にも時間を使いたい、という要求から費やせる時間は１ヶ月ということになりました。そして、決めた直後にちょうど１ヶ月後を試験日に申し込みました
（CBT試験だったので、会場が空いていれば好きな日時に受験できました）。こうすることで強制的に資格勉強をすることができました（受験には**５７００円**かかるため、きちんと勉強しなかったらその分だけ損をすることになるため、損をしたくないというインセンティブがはたらく）。まとめると、勉強期間は**１ヶ月**でした。

|出来事|日時|
|:--|--:|
|申し込み|2021/02/23|
|午前試験|2021/03/16|
|午後試験|2021/03/24|



#7.試験構成
**午前**
試験時間は150分。全部で80問出題され、各分野からほぼ決まった問題数が出題されます。テクノロジ系が問1～50までで計50問、マネジメント系が問51～60で計10問、ストラテジ系が問61～80までの20問で合計80問構成の試験です。100点満点で１問につき1.25点です。60点以上で合格です。

**午後**
試験時間は150分。

- 問1：情報セキュリティ（必ず解答）　20点
- 問２〜５：ハードウェア、ソフトウェア、データベース、ネットワーク、ソフトウェア設計から３題、プロジェクトマネジメント、サービスマネジメント、システム戦略、経営戦略・企業と法務から１題出題され、これら４題から２問選んで解答　各15点
- 問６：アルゴリズム（必ず解答）　25点
- 問7～問11：プログラム言語問題（C/Java/Python/アセンブラ/表計算）から1問選んで解答　25点

60点以上で合格です。
なお、注意点として、午前、午後のそれぞれ別々に60点以上を取る必要があります。例えば、午前が65点、午後70点は合格ですが、午前が80点、午後55点は不合格です。
#8.学習戦略　
**午前の戦略**
午前問題は過去問からよく出題されるのが特徴です。平均すると50%前後多いときで60%が過去に何らかの形で出題された論点の問題が出題されます。なので、基本的な知識を身につけたら後はひたすら過去問をやるのが効果的であると考えました。
[午前問題の過去問流用の統計](https://www.fe-siken.com/fetoukei.html)
**午後の戦略**
午後問題は選択問題（問２〜５）があるのが特徴ですが、選択するのはこの中から２題のみです。選択肢の全ての分野の対策をするのは大変なので、どの分野をするかを決めました。午前の問題の対策をすることでこれの問題はある程度解けるようになるので、まずはすべての問題を一度解いてみて自分の得意なものは対策することにし、不得意なものは捨てるのが良いと思います。僕の場合ですと、ストラテジ系とマネジメント系を捨て、テクノロジ系のみを対策しました。というのも、実際に過去問を解いてみたところどの問題も問題文が長いのは共通なのですが、ストラテジ系とマネジメント系はそれに加えて、面倒な四則演算をする必要のある問題が多いため計算ミスをする確率が高いためです。プレッシャーのない状態でもミスをするのに、ましてや試験会場ではさらにミスをしやすくなるだろうことを考えるとリスクが高いと考えました。

午後問題のもう一つの特徴として、アルゴリズムとプログラムで100点中50点を占めるということです。つまり、これらで得点できなければ、午後試験は合格できないということになります。アルゴリズムについては何も知らなかったので、まずは慣れるために時間制限を決めずに丁寧に流れを追っていきました。何回か解くと流れを追うのが早くなってくるので試験時間内に収まるようになります。また、プログラム問題についてはPythonを選びました。出題言語で知っているのはJavaだけだったのですが記述量が多く読むのが大変に感じたため、可読性の高いPythonを選びました。Pythonの勉強はまずProgateで基礎的なことをさっと学び、その後は出題範囲を確認しながら実際にコードを実行するなどをしました。ただ、Pythonは最近出題されることになったので、過去問がなく、サンプル問題しかありませんでした。過去問を解くことで慣れたり、傾向を掴むことができなかったので、それだけがネックになりました。なので、他に慣れている言語があれば、無理にPythonを選ぶ必要はないと思います。

#9.合格するための参考書、WEBサイト
- [情報処理教科書 出るとこだけ！基本情報技術者 テキスト＆問題集 2020年版](https://www.amazon.co.jp/%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%95%99%E7%A7%91%E6%9B%B8-%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%93%E3%81%A0%E3%81%91%EF%BC%81%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%EF%BC%86%E5%95%8F%E9%A1%8C%E9%9B%86-2020%E5%B9%B4%E7%89%88-%E7%9F%A2%E6%B2%A2/dp/4798163813)

知識のインプットに使いました。重要なことはほとんど書いてありますがこの本だけですと知識の漏れがあるので、完璧に仕上げずに、できるだけ早く過去問のアウトプットに移行するのが良いと思います。
- [基本情報技術者試験ドットコム](https://www.fe-siken.com/)

過去問とその解説があるサイトです。解説が丁寧でわかりやすいので、よく読むようにしました。ここでひたすら過去問を解いたのが最も効果があったように感じます。

試験対策に使用したのはこの2つのみになります。いろいろな教材に手を出さずにとにかく過去問を仕上げることに集中しました。

#10.実際の勉強の流れ
まず、4日ほどでざっくりと情報処理教科書 出るとこだけ！基本情報技術者を読みました。その後に基本情報技術者試験ドットコムで過去問を解きました。午前は最新のものから28年度までを2回、27年から26年を1回ずつそれぞれ解きました。最終的にどの年度の過去問でも9割以上解ける状態にしました。午後については午前の試験と１週間日にちをずらしていたので、午前試験が終わった後に対策し始めました。こちらもひたすら過去問を解きました。最新のものから26年度までを１回ずつ解き、アルゴリズムについては22年度のものまでさかのぼって解きました。ただ、Pythonの問題については過去問がなかったことと、サンプル問題が簡単だったことから、対策を怠りました。

#11.試験当日の時間配分
**午前**
普通に解けば時間内に解き終わるため、配分の必要はありませんでした。ただ、見直しは何度もしました。
**午後**

|問：内容|時間配分|
|:--|--:|
|問1：情報セキュリティ|10分|
|問２〜５　(2問選択)|各20分|
|問６：アルゴリズム|40分|
| 問7～問11　（1問選択）|60分|

Pythonが予想外にわからなかったため、かなりの時間を費やしてしまいました。（その割に全然得点できませんでしたが）
#12.まとめ
対策した甲斐があり、ほとんどは良くできていたのですが、Pythonが壊滅しました。完全になめていました。油断せずに対策をしましょう。
#13.参考記事一覧
[IT知識0から1ヶ月で基本情報技術者試験に合格した話](https://qiita.com/yusuke_blog1026/items/d6b079fa026ce6776773#4-%E8%A9%A6%E9%A8%93%E6%A7%8B%E6%88%90)
[【初心者向け】無料でPythonの基本文法を5時間で学ぼう！](https://qiita.com/AI_Academy/items/b97b2178b4d10abe0adb#%E5%85%A8%E4%BD%93%E5%83%8F)
[Python の出題範囲 (シラバス) が発表されました](https://www.seplus.jp/dokushuzemi/fe/fenavi/guide/agenda_python/#10_Java_Python)