【未経験】基本情報技術者試験に合格できる勉強法【合格体験記】

##０.この記事のまとめ
追記していったら記事の量が膨大になったので、要点を以下に記載します。

【対象】
IT未経験の方向け
【合格の鍵】
午後試験の対策（選択科目の選び方・分野別の目標点・時間配分を考える）
【必要なもの】
「キタミ式」と「過去問道場」（午後試験に不安があれば「出るとこだけ！基本情報技術者」もあると良い）
【基本情報の資格取得の意義】
IT業界に詳しくないけど挑戦する方にとっては、この資格を取得する意味は十分にありますし、業務で役に立ちます。

##１.はじめに
基本情報技術者試験はエンジニアの方なら多くの人が受験する資格だと思います。

今年入社したばかりのエンジニアですが、
平成30年4月の基本情報技術者試験に合格することが出来ました。

今回は**文系出身などでIT業界未経験だけど、この業界に飛び込んでみた！という方に向けて**、
基本情報技術者試験に合格するために必要な勉強方法と試験の戦略について解説します。

##２.勉強開始時の自分のスペック
・大学は政策学系を専攻。情報系とは無縁の文系。
・プログラミング経験はほとんど無し。(５日間のインターンでHTMLを少し勉強した事がある程度)
・PCを触るのは大学のレポートを書くときだけ。(wordとパワポを使用する程度)
##３.勉強期間
|タイミング| 時期 | 自身の状況 |
|----|----|----|
|勉強開始|平成29年10月|大学４年生|
|受験|平成30年4月| 入社１年目で研修中|

勉強期間としては半年間あります。

ただ、１２月中旬〜３月中旬の間はゼミ論や卒業旅行、
引越しの準備などで忙しく、ほとんど勉強できませんでした。

そのため勉強期間は実質**３ヶ月程度**です。

##４.試験の構成
基本情報の試験は午前試験と午後試験があり、どちらの試験も合格する必要があります。

|   | 問題数 | 時間 | 合格得点 | 形式 |
|----|----|----|----|----|
|午前 |80問|150分 |60点|小問形式/選択式|
|午後|13問中７問選択|150分|60点|大問形式/選択式|


##５.合否のカギを握る午後問題
基本情報の合格率は２３〜２５％程度に推移しており、決して高くはありません。
合格率が低い理由として、個人的には**午後試験の配点**が原因であると考えています。

####午後試験の配点

|  問番号 | 分野 | 必須/選択 | 配点割合 |
|----|----|----|----|
|1 |情報セキュリティ|必須 | 12点|
|2−7  |ハードウェアなど |4問選択 | 各12点|
|**8** 　|**アルゴリズム** | **必須** | **20点**| 　　　
|**9−13** | **プログラミング言語**  | **1問選択** | **20点**|

午後試験に出題されるアルゴリズムとプログラミング言語問題は
**未経験には物凄く難しいだけでなく、試験の配点の４割を占めます。**
　　　　　
午後試験の合格点は60点なので、この２つの分野を捨てて合格するのはかなり難しいです。
午前試験に合格できても午後試験に落ちてしまった・・
という人の大半はここの分野で躓くからだと考えられます。

そのため、合格するには、午前試験の対策をするだけでなく
**午後試験の対策も早めに行うのが重要**です。
##６.利用した書籍、Webサイト
基本情報の合格までに利用した書籍、Webサイトを紹介します。


【午前対策】
◯[キタミ式イラストIT塾 基本情報技術者] (https://www.amazon.co.jp/%E3%82%AD%E3%82%BF%E3%83%9F%E5%BC%8F%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88IT%E5%A1%BE-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E5%B9%B3%E6%88%9030%E5%B9%B4%E5%BA%A6-%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93-%E3%81%8D%E3%81%9F%E3%81%BF%E3%82%8A%E3%82%85%E3%81%86%E3%81%98/dp/4774193496)        **※必須**
・基本情報で出題される分野をイラスト付きでわかりやすく丁寧に解説　
・細かい知識は網羅出来ていないので、この本だけで試験に望むなら過去問演習を多く取り組む必要有り
◯[基本情報技術者合格教本](https://www.amazon.co.jp/%E5%B9%B3%E6%88%9030%E5%B9%B4%E5%BA%A6%E3%80%90%E6%98%A5%E6%9C%9F%E3%80%91%E3%80%90%E7%A7%8B%E6%9C%9F%E3%80%91-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC-%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93-%E8%A7%92%E8%B0%B7/dp/4774193143)
・キタミ式と違いわかりやすい解説はないが、実際の試験に出題される用語を幅広く網羅している

【午後対策】
◯[出るとこだけ！基本情報技術者［午後］](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-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E5%8D%88%E5%BE%8C-%E6%A9%8B%E6%9C%AC/dp/4798151963)
・本のタイトル通り本当に「出るとこだけ」の問題に絞って解説している問題集
・午後試験で得点を取るためのテクニックも豊富に紹介されている
◯[うかる! 基本情報技術者 [午後・アルゴリズム編]](https://www.amazon.co.jp/%E3%81%86%E3%81%8B%E3%82%8B-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E5%8D%88%E5%BE%8C%E3%83%BB%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E7%B7%A8-2018%E5%B9%B4%E7%89%88-%E7%A6%8F%E5%B6%8B%E5%85%88%E7%94%9F%E3%81%AE%E9%9B%86%E4%B8%AD%E3%82%BC%E3%83%9F/dp/4532409411)
・基本情報のアルゴリズム対策でおそらく一番有名な本
◯[スッキリわかるJava入門 第2版](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC/dp/484433638X)
・プログラミング未経験にも優しいわかりやすい解説
・開発環境も用意されており、環境構築って何？という人でも気軽にプログラムを動かせる
・これだけでJavaの言語問題で高得点を取るのは大変かも

【演習用】
◯[基本情報技術者試験ドットコム 過去問道場](https://www.fe-siken.com/fekakomon.php)　**※必須**
・登録すればこれまでの過去問を無料で解くことができるWebサイト
・年度別や分野別に問題を解くことが可能なため、苦手な分野のみ演習するということも可能
・問題演習は基本的に過去問道場を利用

参考書、問題集、Webサイトなど色々使用しましたが、正直なところ**キタミ式と過去問道場があれば合格点まで届く**と思います。
午後試験の対策に不安があれば**出るとこだけ！基本情報技術者［午後］**を追加するのも良いです。
##７.試験の戦略
###午前試験
午前試験に関しては、

**①「キタミ式」を一通り通読する
②過去問道場でひたすら過去問を解く(最低限、過去８回分程度はやっておきたい)
③過去問で間違えた知識や用語を合格教本で参照する**

といった流れで勉強すれば大丈夫です。

過去問にはキタミ式に載っていない用語が沢山出題されるため、初めは得点率が低くなると思います。
ですが、過去問には同じような問題が多々出題される為、数をこなすことで自然と得点率が向上します。
午前試験に限らず、基本情報は**過去問を多く解くことが合格の近道**です。
###午後試験
ただ過去問を多くこなせば良い午前試験と違い、午後試験は少し戦略が必要です。

####戦略１. プログラミング言語何を選ぶべきか
未経験の方なら**表計算**を選ぶべきだと思います。
前述の通り、プログラミング言語だけで配点が２０点もあるので、ここで得点を取れるかどうかで大きく合否に関わります。

・・・と言いつつも私は会社の方針で表計算ではなくJavaを選択しましたが、やはりJavaの実務経験が無いと難しく、得点率も低かったです。
一応、表計算以外を選択しても合格はできたので、戦略２以降ではプログラミング言語問題で表計算以外を選択した方に向けた戦略を紹介しています。


####戦略２. 分野別目標得点
午後試験は大問毎に出題分野が決まっているため、
事前に分野毎の目標得点を考えて試験に望むと良いです。

IT未経験の方がプログラミング言語で表計算以外を選択して合格点を目指すなら、
分野毎の目標点を以下のように設定すると良いと思います。

**◯問１〜７（計５問）：8割
◯アルゴリズム：5〜6割
　→簡単な問題だけ確実に得点する
◯プログラミング言語：ほぼ捨てる
　→基本的な文法知識が問われている問題だけ確実に得点する**

未経験の方がプログラミング言語で高得点を取れるまでかなりの時間を要するため、
この問題に勉強時間を割くのはあまり得策ではありません。

基本的なif文やfor文、配列などの基本的な文法知識を理解する程度で良いと思います。
（基本的な文法知識単体で解ける問題はあまり出題されませんが・・）

プログラミング言語問題でほとんど正解ができなくても、問１〜７までの５問で８割程度稼ぎ、
アルゴリズムの比較的優しい問題を確実に得点できるまで勉強を進めれば
合格点である６割には到達することが出来ます。

####戦略３. 時間配分

**◯問1〜7（計５問）：各15分で解答(合計75分)
◯アルゴリズム：45分
◯プログラミング言語：30分**

プログラミング言語で高得点が望めないため、その分アルゴリズムで点数を確実に取る必要があります。
アルゴリズムは時間をかければ基本的な問題は正解できると思うので、余裕を持って４５分程度は確保したいです。
問1〜7までは各15分で8割取れるようにし、残りの時間で難しいアルゴリズムとプログラミング言語問題に費やせることが理想です。
午後試験は問題文が非常に長く集中して問題を解くのは大変ですが、**「出るとこだけ！基本情報技術者[午後]」で点を取るテクニックを学び、過去問演習を重ねれば**、問1〜7を各15分で解くことができるようになります。

####戦略４. 問1〜7までの選択問題の選び方

**◯難しい計算が問われる問題は選択しない　
◯ネットワーク分野は選ばない
◯問５、問６、問７のような長文問題を３問とも選ばない**

実際の試験で１問15分ペースで問題を解くようにするには、選択問題の精査が不可欠です。
上に挙げた３つとも、難易度が高く時間がかかる問題のため選択しない方が良いです。

##８.自身の勉強の流れ
大学４回生の１０月から４月の基本情報技術者試験の受験までに、実際に取り組んだ勉強内容について紹介します。
###10月の勉強内容
####①「キタミ式イラストIT塾 基本情報技術者」を2周する
まず「キタミ式」を通読しました。
ページ数は多いですが、イラストが多く解説もわかりやすいので１ヶ月で２周することができました。

これ１冊で基本情報に必要な基礎知識を身につける事が出来ます。
ただ、この本だけ読んでも、過去問に載っていない用語も多く、知識量としては不足しています。
そのため、その後の過去問演習が非常に重要となります。

####②過去問道場で演習する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/292212/cff6bb90-59d4-ef6d-b397-121536a069a0.png)
[過去問道場](https://www.fe-siken.com/fekakomon.php)はこれまでの基本情報試験の過去問を無料で解くことができる非常に有益なwebサイトです。

テキストの２周目が終わった後、このサイトで午前試験のテクノロジ系80問、マネジメント・ストラテジ系80問ランダムに解いてみました。
テキストを２周した状態でしたが、正答率は約50％程度だったと記憶しています。

###11月~12月上旬の勉強内容
####①「基本情報技術者合格教本」を２周する
**正直ここまでやらなくてよかったです。**
この本を2周して「キタミ式」に出ない細かい用語を覚える事が出来ました。
ただ、この本を２周するよりは過去問道場を解き、
わからない用語を合格教本で調べるという勉強方法の方が効率が良いと感じました。

出題されない用語も数多くありましたので・・・。

####②「うかる! 基本情報技術者 [午後・アルゴリズム編]」を３章まで進める
**この本は途中で挫折しました。**
アルゴリズムの本としてはかなり有名ですが、このレベルでも私には難しすぎました。
プログラム言語について何も知らない状態で挑むと、アルゴリズム以前に
問題文のソースコードの内容があまり理解できずに挫折してしまうかもしれません。

アルゴリズムで５割〜６割を目指すだけなら、この本を３章まで進め、
後は過去問演習と「出るとこだけ！基本情報技術者」のアルゴリズムの問題の演習と復習を丁寧に行うことが重要だと思います。

###12月中旬~３月中旬の勉強内容
勉強期間の項目でも述べたように、この時期はあまり勉強時間を確保することが出来ませんでした。
この時期にしたことは2つあります。

####①会社が用意した模試を受験(12月,2月,3月)
12月の時点で午前試験は既に60％を越えることが出来ました。
一方、午後試験は壊滅的で、2月の時点で40％を割り、3月の時点でも50％程度しか得点できなかった為、かなり焦っていた記憶があります。
####②「スッキリわかるJava入門」を１０章まで読み進める
10章まで読み進めましたが、これだけではJava言語問題をまともに解けるようになりませんでした。

ただ、プログラミング言語を少し勉強することで、アルゴリズムの問題で出題されるソースコードをなんとなく読めるようになったので、勉強自体は無駄ではなかったと思います。

また、Java言語問題は難しいですが、基礎的な文法知識があれば解ける問題も少し出題される為、「スッキリわかるJava入門」を取り組んだほうが良いです。


###３月中旬から試験当日までの勉強内容
####①「出るとこだけ！基本情報技術者」を２周＋午後の過去問２回分解く
3月中旬からは午後試験の対策を中心に、最後の追い込みをした時期でした。

「出るとこだけ！基本情報技術者」は午後試験の問題が出る順に出題され、
また正解を導くためのテクニックを多く紹介してあるので、かなり助かりました。

この問題集を解くことでSQLやスケジュール管理の問題などは
簡単に解くことができるようになります。

この本を２周した後に午後試験を解いてみるとかなりスムーズに問題が解けるようになり、
時間配分を意識して問題を解くことができるようになりました。

※プログラミング言語の問題は解いてないです。
####②移動時間などの隙間時間に過去問道場をやる
通勤などの移動時間に午前試験の過去問を解いて、知識の抜け漏れがないか最終確認しました。
##９.結果
|  午前 | 午後 |
|----|----|
|７７点|６７点|

午前、午後共に６０点を越え、無事に合格しました。

設問ごとに結果を見てみると、

|問1　情報セキュリティ|問2　ハードウェア|問3　データベース|問5　ソフトウェア設計|問6　プロジェクトマネジメント|問8　アルゴリズム|問11　Java|
|----|----|----|----|----|----|----|
|3/5|4/5|4/4|4/5|6/6|4/5|1/7|

アルゴリズムで８割取れたのは出来過ぎですが、
やはりJavaで殆どの正解することが出来ませんでした。

ただ、予定通り最初の５問で８割以上を取り、
Javaの分をカバー出来たのが合格に繋がったと思います。


##１０.基本情報技術者試験してから半年以上経過して感じたこと（平成３１年２月追記）
基本情報に合格してから半年以上が経過しました。
合格した頃はまだ研修中でしたが、７月に配属が決まり、
現在はエンジニアとして仕事を着実に進めることが出来ています。

現場の業務を経験して感じたことは、**基本情報の勉強をして絶対に損は無い**ということです。

ビット数などのコンピュータの基本的な仕組みや絶対パスや相対パスの違い、ハードウェアやソフトウェア、データベースの知識、ウォーターフォールモデルや単体テスト、結合テストなどの開発業務を行う上で当たり前となっている手法等々・・。

上記の基本情報に出題される知識は**本当にエンジニアとして仕事をする上で当たり前となる知識**です。

現場ではこれらの知識は知ってて当然という前提で業務が進むので、
配属直後は勉強しておいてよかった・・となりました。

合格することももちろん大事ですが、基本情報技術者試験に限って言えば
**勉強すること自体に意味がある**と強く感じました。

その為、文系学部出身などでIT業界に関して詳しくない方が、
まず初めに何から手を付けたら良いのかとなった時に**基本情報の勉強をする**のを選択肢の一つとしてお勧めしたいです。

基本情報は資格の難易度としては難しい試験ですが、
本当に業務をする上で役に立つ試験だと思うので、皆さん是非挑戦してください！

##おまけ
基本情報以外にJavaSilver/JavaGoldも合格していますので、よければ参考にしてください。

- [【JavaSilver】Java SE8 Silverに合格した勉強法【合格体験記】](https://qiita.com/ebichan_88/items/8409c9b99bf5a2977cc7)
- [新卒１年目でJavaGold合格できたので勉強法について語っていく](https://qiita.com/ebichan_88/items/a2b526c3e206ed573ec4)