基本情報技術者試験に4か月半で合格した話

先日行われた，令和元年秋期　基本情報技術者試験（以下，FE）の合格体験記です．

- 私の勉強開始時のレベル
    - FortranとCで数値計算ができ，Pythonでお絵かきができる修士2年生
    - システム開発の実務経験，情報処理の知識はゼロ（8進数なにそれおいしいの）
    - パソコンやスマホの大抵の機能は使いこなせる

- 結果
    - 午前午後ともに80点台で合格できました

# 最も大事なこと
FEに限らないですが，勉強で大事なのは
**「input とoutput をバランスよく行う」** ことだと思います．

`input: 参考書を読む，授業を聞く`
`output:問題を解く，人に教える`

理論は分かっているつもりでも，それを行動に移してみると意外と難しいものです．
プログラミング初心者の頃ってまさにそうですよね．
なので，FEの勉強でもinputとoutputをともに行うことを意識しました．
![slump_good_man_study.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403437/3b0cd8c7-c2cc-8b86-74eb-2d77eb11e5d8.png)


# 最初のうちの勉強法
## 基本情報技術者ってなに？

まずは，「基本情報技術者試験」がなんなのかを調べました．
試験区分から，出題範囲，試験時間，回答方式，合格基準などを確認しました．
もちろん，出題範囲を見てもチンプンカンプンなのは仕方ありません．

次に，参考書をとりあえず始めから読んでいきました．
なぜなら，参考書に「情報系に詳しくない人は一通り読んでみましょう」と書いてあったからです笑
使っていた参考書はこれです．
[平成31年【春期】/01年【秋期】基本情報技術者 合格教本，技術評論社](https://gihyo.jp/book/2018/978-4-297-10193-0)
なぜこれにしたかというと，入社予定の会社からもらったからです笑

このやり方は，半分合っていて半分間違っていました．
参考書を最初から読んでいくのは，
ごく基礎的な理論（2,8,16進数，論理演算，論理回路など）の理解や
データベース，ネットワークなどこれまで全く触れたことのない分野の理解には役立ちました．

ただ，じっくり読む方式の弱点として，

- **飽きる**
- **そもそも一通り読むだけで時間がかかるので間に合わない**

といったものがあります．

なので，上に挙げた基礎理論やネットワークなどについて一通りinputした（つもりになった）後は，他の分野についてははほとんど読まずに
ひたすらに過去問の一問一答をポチポチしていました(output)．
[基本情報技術者過去問道場](https://www.fe-siken.com/fekakomon.php)

まあ，もちろん学び始めは間違えまくりますが，ここで傷つかないのがポイントです．
**最初のうちは，「わからなくてあたりまえ」という気持ちでいましょう．**
間違えたら解説を読み，関連する項目（問題文，不正解の選択肢に出てきて意味の分からなかった言葉など）を参考書で確認しました(input)．

# ある程度理解が進んだら
## 午前試験対策
午前試験に向けては，ひたすら過去問の一問一答をポチポチすることを繰り返しました．

まとまった時間の取れる土日には，時間を計って過去問演習をしました．
こちらも，会社からもらった過去問集を使っていました．
[令和元年【秋期】基本情報技術者 パーフェクトラーニング過去問題集，技術評論社](https://gihyo.jp/book/2019/978-4-297-10672-0)

解いたらもちろん復習．
**そして何日か置いてもう一度復習します．**
解説を読んで分かった気になっても，人間はすぐ忘れてしまうものです．
**繰り返しの復習が大事だと胸に刻みましょう．**

## 午後試験対策
10月下旬に本番だったのに対して，午後試験対策は8月下旬までほぼなにもしていませんでした．
これは私がもともとプログラミング選択問題の1つであるC言語を知っていたからであって，
試験に出る言語に不慣れな人はもっと早いうちから対策するのが良いと思います．
![computer_programming_woman.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403437/723276b8-da62-59b3-85dd-d65d0e08b3df.png)

本気で午後試験対策を始めたのは9月に入ってからです．

まずは，選択問題も含めて全ての問題を解いてみて，**どんな試験構成なのかを知る**ことから始めました．
大問3はSQLの問題なんだ〜とか，大問8は特定の言語によらないアルゴリズムの問題なんだ〜といったことを把握します．
この時点で，自分がどの選択問題を解くかは決めていませんでした．

午後試験も，土日に時間を計って過去問を解いていきました．
知識に関しては，午前対策が進んでいればそんなに困らないはずです．
復習が重要なのはすでに述べた通りです．

# 試験2週間前くらい
この頃になって，ようやく本番で解く選択問題を決めました．
私は大問3,4を解かないことにしました．
決め手は，SQLとネットワークができるようにならなかったからです．
（その他の大問は計算がメインで覚えることが少なかったというのもあります）
結果的に問題選択が功を奏し，大問7問中5問を完答できました．

# 試験前日
![nebou_man.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403437/149199d0-736a-1e1b-ba7b-67296108a39f.png)

試験開始時間が早いので

- **早く寝る**
- **目覚ましを大音量でセットする**

ことが大事です．また，お昼の時間が短いので

- **当日のお昼ご飯を買っておく**

ことも大事だと思います．

それから，IPAのサイトを見て試験実施に関する最新情報を常にチェックしておきましょう．
私が受験した回は，台風19号による被害のため試験会場が変更されるといったことがありました．
当日に試験会場に着いてから知っても間に合わないので，必ず最新情報をこまめにチェックしましょう（受験票にもその旨がきちんと記載されていますので言い訳はできません）．
![school_shiken_kaijou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403437/48032b2b-33ca-9589-251c-17be756a5b71.png)


# そのほかに大事なこと
### 計算力が意外と大事
「理解はしていたのに計算ミスで失点した！」なんてもったいないミスがないようにしましょう．
特に午後問題は時間との勝負なので，早く正確に計算できるようにしましょう．
なお，IPAによると今後の試験問題は計算力をみるものの割合が増えていくそうです．
私が受験した時も，過去問では見なかった極限計算の問題が（簡単でしたが笑）午前午後ともに出ました．
![soroban_boy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403437/17c75d53-0707-1d91-a35c-dab80c5fd684.png)

### 公式の丸暗記はしない
参考書を見ると，公式がいくつかまとめて書いてあったりします．
基本的に，公式を暗記しようと思って暗記するのは苦痛を伴うと同時に忘れやすいのでやめましょう．

例えば，損益分岐点を求める公式について．
元を辿って固定費や変動費などがなにを意味しているのかが分かっていれば，公式なるものを覚える必要はないのです．
というか，自分でその公式を導出できるくらい理解ができていないと午後問題は解けないでしょう．

![anki_card.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403437/ee0ed1c8-39a6-a426-cbb5-76f4877db599.png)

# とにかく頑張りましょう
これから基本情報技術者試験を受ける皆さん，ぜひ頑張ってください．
私も応用情報技術者試験に向けて頑張ります．