令和3年春 基本情報技術者試験 合格体験記

# はじめに
基本情報技術者試験（以下、基本情報）の合格を目指している方の参考になればと思い、記事を書きました📝

# 私の経歴

学歴: 農学系大学院卒
エンジニア歴: 1年8ヶ月(2021年6月時点)
業態: SES
仕事: 業務システムの設計, 製造, 保守
言語: PHP, JavaScript, SQL

まだまだわからないことだらけの駆け出しです。

# 基本情報とは
[基本情報技術者(FE)](https://www.jitec.ipa.go.jp/1_11seido/fe.html)
対象者像: 高度IT人材となるために必要な基本的知識・技能をもち、実践的な活用能力を身に付けた者
試験時間: 午前 150分、午後 150分
合格点: 午前、午後どちらも60%を超えること 

いわゆる、『**ITエンジニアの登竜門**』ってやつですね。現在は、[CBT方式](https://www.jitec.ipa.go.jp/1_00topic/topic_20200918_2.html)で受験することが可能で、午前試験と午後試験で日程を分けることが可能です。
詳細は、[公式サイト](https://www.jitec.ipa.go.jp)をご覧ください。

## 午前
午前は『**過去問と全く同じ問題が出題されまくります！**』。つまり、『**過去問の暗記ゲー**』です。

例えば、以下の問題
>平成31年春 問31、平成29年春 問31
>OSI基本参照モデルのトランスポート層以上が異なるLANシステム相互間でプロトコル変換を行う機器はどれか。

---

>令和元年秋 問17、平成29年 春問17
>図の送信タスクから受信タスクにT秒間連続してデータを送信する。1秒当たりの送信量をS，1秒当たりの受信量をRとしたとき，バッファがオーバフローしないバッファサイズLを表す関係式として適切なものはどれか。ここで，受信タスクよりも送信タスクの方が転送速度は速く，次の転送開始までの時間間隔は十分にあるものとする。

--- 
>令和元年秋 問33、平成29年春 問32
>LANに接続されている複数のPCをインターネットに接続するシステムがあり，装置AのWAN側インタフェースには1個のグローバルIPアドレスが割り当てられている。この1個のグローバルIPアドレスを使って複数のPCがインターネットを利用するのに必要となる装置Aの機能はどれか。

一言一句違わない、全く同じが出題されています！！！
肌感覚ですが、3割くらいは同じ問題なんじゃないかと思います。噂では、過去問から6割は出ていると話も...

つまり、
『**教材をさらっとインプットしたら、過去問を解きまくって問題にたくさん触れること**』
が午前対策として、非常に重要です！！！

## 午後
午後は、『**センター試験の長文問題のよう**』です。
過去問と全く同じ問題が出るわけではないので、対策という対策がしにくいのですが、『**問題の形式になれること**』が重要です。

試験時間が足りないことが多いです。特に、アルゴリズム問題に非常に時間がかかります。
アルゴリズムは、問題文を丁寧に読めば、決して難しくありません。慌てて、前提の文を読み飛ばしてしまったり、記述されているアルゴリズムを再現する時間がなくて、失点してしまうことがほとんどです。
私は本番で、アルゴリズム問題に1時間かけました。

## 午後の選択問題について

>問1：情報セキュリティ、問6：データ構造とアルゴリズムは必ず解答
>問2～問5：
>[ソフトウェア・ハードウェア/データベース/ネットワーク/ソフトウェア設計]から3問、[プロジェクトマネジメント/サービスマネジメント/システム戦略/経営戦略・企業と法務]から1問が出題され、うち2問を選んで回答
>問7～問11：プログラム言語問題（C/Java/Python/アセンブラ/表計算）から1問選んで解答
>https://www.fe-siken.com/fekeisiki.html より

問2〜5に関しては、ソフトウェア・ハードウェア、ソフトウェア設計、プロジェクトマネジメント、サービスマネジメント、問7〜11に関しては、表計算が解きやすいと言われています。

私は、データベース、ソフトウェア設計、Javaを選択しました。

## Javaを選択した理由

私は、Javaを書いたことも読んだこともありませんでした笑

じゃあなぜ、Javaを選択したかというと、選択問題の中で、『**一番実務で使う**』からです。
Laravel, React, Vueと、今やいろんなフレームワーク(またはライブラリ)があります。どれもオブジェクト指向を学ぶことで、理解度が爆上がりします。そのオブジェクト指向を学ぶための書籍は、Javaで書かれていることが非常に多いです。
つまり、『静的型付け言語Javaを身につけることで、他の言語、フレームワークの理解する速度をあげることができる』と考えました。

# 得点 全体
|午前|午後|
|:-:|:-:|
|81.5点|89.5点|

# 得点 内訳
||午前 正答率|
|:-:|:-:|
|ストラテジ系|80%|
|マネジメント系|90%|
|ストラテジ系|80%|

||午後 正答率|
|:-:|:-:|
|情報セキュリティ|100%|
|データベース|80%|
|ソフトウェア設計|86%|
|データ構造及びアルゴリズム|84%|
|ソフトウェア開発(Java)|94%|

結果的には、余裕を持って合格することができました🥳
Javaが以外にも高得点でした！！

# なぜ基本情報技術者を受けようと思ったのか？？
## 1. 現場で圧倒的な基礎力不足を痛感しているから

💁‍♂️「これ踏み台の公開鍵ね。踏み台経由して開発サーバにSSHしてね〜」
💁‍♂️「CPUの高負荷が続いてるんだけど、その原因を調べて〜」
💁‍♂️「ここの修正工数をファンクションポイント法見積もって〜」
💁‍♂️「実装に入る前に、ER図、クラス図、シーケンス図を見せてね〜」
💁‍♂️「単体テストは、条件分岐網羅でお願いね〜」

これらの意味が理解できますか？
理解できているようであれば、基本情報は多分受かります笑

私は、非情報系卒なので、これらの用語が全くわからず上司とうまく会話できないこと多々ありました。。
その方々と一緒にお仕事するためには、『**情報学を体系的に学ぶ必要がある**』と考えました。

## 2. 自分に自信を持ちたいから
会社に入ると自分より頭の回転が早く、歴が長い人はたくさんいます。その人が実装すれば、1時間で終わることを、私が1日かけて実装することなんてよくあることです
その現実を突きつけられると、やっぱり落ち込みますよね。自信が無くなる時もあります。
国家資格である基本情報を持っていれば、自信を持てるのではないかと思い受験を考えました。
ただの精神安定剤かもしれませんが、自分の実力にあまり自信がない人には、とても良いお守りだと思います。


# スケジュール

|日程|やったこと|
|:-:|:-:|
|2021/02/04|午前試験の勉強開始|
|2021/04/25|初めて午前試験の過去問解く|
|2021/05/09|午前試験|
|2021/05/10|午後試験の勉強開始|
|2021/05/22|初めて午後試験の過去問解く|
|2021/06/22|午後試験|

学習期間は約4ヶ月。

## 勉強時間
||勉強時間|
|:-:|:-:|
|平日|30分|
|土日|2時間|
|合計|140時間|

ざっくりですが、約140時間。
[合格までの勉強時間に関する掲示板](https://www.fe-siken.com/bbs/3466.html)をたまたま見かけたのですが、合格まで勉強時間もまちまちですね。
私は心配性なので、それなりに勉強した方なのかな〜と感じています。


## 費用

||費用|
|:-:|:-:|
|受験料|5,700円|
|キタミ式イラストIT塾|2,310円|
|基本情報技術者 らくらく突破 Java(メルカリで購入)|1,500円|
|合計|9,510円|

お金がないので、国家資格取得を1万円以内に抑えられたのは嬉しいです！

ps. 
上司に基本情報合格の旨を伝えたら、**受験料支給**と**基本給アップ**になりました🥳
これから受験を考えている皆さん、会社にどんどんアピールしていきましょ！！！

# 午前対策
1. キタミ式イラストIT塾 基本情報技術者を2周する
1. 通勤時にYoutubeを見る
1. 過去問を5回分解く

## 1.キタミ式イラストIT塾 基本情報技術者を2周する

言わずもがな、[キタミ式](https://www.amazon.co.jp/dp/4297117819)。
Youtuber、ブロガーが絶賛している一冊。この本はまじで最強です（小並感）
何がすごいかという『**過去問と同じ言い回しで説明が書かれていること**』です。

例えばこの問題 平成31年春 問33
>トランスポート層のプロトコルであり，信頼性よりもリアルタイム性が重視される場合に用いられるものはどれか。
>ア. HTTP　イ. IP　ウ. TCP　エ. UDP

キタミ式では、UDPの説明として、以下のように書かれています。
>データの信頼性よりもリアルタイム性を重視する用途に適している

おそらくキタミ式は過去問を参考に、重要だと思うポイントをテキストに起こしているだと思います。
キタミ式を隅から隅まで読めば、ほぼ確実に午前は突破できます。


## 2. 通勤時にYoutubeを見る

以下の教材を2周見ました。内容としては、キタミ式とほとんど変わりませんが、本だとイメージしにくい部分を補填してくれました。
図を使って説明してくれるのが、大変ありがたかったです。

https://www.youtube.com/watch?v=g0lXirNJ3lM&list=PL5nxpkCe-bwIvKghZvqFbTGDd2pnUkSiQ
※削除されていたら、すみません


個人的に特にわかりやすかったのこちら
『基本情報技術者試験対策 57 セキュリティ（暗号化技術）』
https://youtu.be/7-FAB1pbsiA

『基本情報技術者試験対策 58 セキュリティ（デジタル署名）』
https://youtu.be/rgK4FGENzMo

暗号方式は、覚えにくいくせに頻出問題なので、試験直前に再度チェックすることをおすすめします。


## 3. 過去問を5回分解く
あとは実践あるのみ！！！
キタミ式を1周し終えた辺りから、過去問を解き始めました。

過去問を解く上で以下のことに気をつけました

- 2時間半、時間を図る
- 採点後、わからなかった単語を調べる

午前試験は、時間が余ると言われています。なせか、私はいつも時間が余りません笑
試験本番で慌てないためにも、時間を図って解くのが効果的です。
また、過去問を解いてみて、わからない単語があればさらっと調べておくだけでも、点数が上がります！


# 午後対策
1. 基本情報技術者 らくらく突破 Javaを読んで、書く
2. 過去問10回分解く

## 1. 基本情報技術者 らくらく突破 Javaを読んで、書く

基礎が全くなかったので、「[基本情報技術者 らくらく突破 Java](https://www.amazon.co.jp/dp/4774199052)」で勉強しました。プログラミング言語を書いたことがない人には、少しレベルの高い書籍かと思いましたが、私のレベル感には、ぴったりでした。

実際に動かしてみないとわからない場合には、[IntellJ](https://www.jetbrains.com/ja-jp/idea/)で動かしたりしました。
PHPには、スレッド、ジェネリック、enumあたりがないので、理解に苦しみました。。

## 2. 過去問10回分解く
とにかく時間を図って過去問を解きまくりました。解いていくうちに、問題に慣れていって点数も上がっていきました。
CBT方式になってから、過去問が公開されなくなったため、本番と同じ時間配分で過去問を解くことことが難しくなりましたが、それでも過去問を解くことは重要だと考えます。

# 受けてみた感想
「今の時代、資格なんて意味がない」って意見をたまに耳にします。私も、その意見に基本的に賛成で、資格を持ってる人が超絶仕事ができるかと言われると、そんなことはないと思っています。
ただ、「**意味がない**」とは思いません。同じ職場でずっと働いていると、取得できるスキルにばらつきが出ます。今の職場では教えてもらえないけど、ITエンジニアとして最低限必要な知識を学習するいい機会が基本情報なのかなと、私は考えています。

# まとめ
- 140時間勉強したら、午前80％、午後90％取れた
- 午前は、過去問と同じ問題が出まくる
- 午前は、用語の暗記ゲー
- 午後は、いかにアルゴリズムに時間を割けるかが合格の鍵
- 午後のJavaは、書いたことない人でも、案外解ける
- 基礎的なテキストを1周したら、時間図って過去問解く！