資格なし就活から4か月で、未経験で基本情報に合格した

# はじめに
就活終了間際に「情報方面に志望業界変えよう」と思い立ってから4か月程度勉強し、この度、基本情報技術者試験に合格しました。正直この手の記事は既出ですが、完全な文系でも、完全な情報系や理系でもない自分の記録に、もしかしたら需要があるかな、と考えて記します。

なお、現時点では自己採点結果から合格見込みと判断しています。

#(2019/11/27追記) 合格しました
![SNS基本情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263888/5530db35-b2a1-b306-897d-66c46551cd3f.png)
配点の都合で、予想より点が下がっていましたが、無事合格です。次の応用情報目指して勉強します。


# 「基本情報」とは
正確には基本情報技術者試験。対象者について、実施するIPAを引用すると
> 高度IT人材となるために必要な基本的知識・技能をもち，実践的な活用能力を身に付けた者

とのこと。つまり立ち位置としては、プロが通る最初の関門。プログラマー志望の高校生、情報系学部の大学生、未経験枠の駆け出し社会人エンジニアなどが最初に取るようなものだとか。リンク先の図が分かりやすいかも。

[https://www.jitec.ipa.go.jp/1_11seido/seido_gaiyo.html](https://www.jitec.ipa.go.jp/1_11seido/seido_gaiyo.html)


- **午前試験**と**午後試験**に分かれ、**2時間半ずつ**
- それぞれ100点満点で評価され、**どちらも60点以上であれば合格**。


実は就活中は資格欄に何もなく、コンプレックスの1つでもありました。この点も後押しし、情報系企業内々定後に、すぐ「資格取ろう」と思い立ちました。

# 私の状況
## 2019年春(約半年前)の私
- 理系全般何でもやるタイプの学部所属
- 大学4年、就活中
- pythonを講義で少し触った
- javascriptはある程度読める
- Illustratorのスクリプトをjavascriptで公開した
- vuejsやnodejsを触り始めたけれど、お手本から外れると何も分からない
- オブジェクト指向ってなに

上記のようなレベルだった為、いきなり基本情報を目指すのではなく、ITパスポートでワンクッション置くことにしました。

ITパスポートは基本情報の午前試験を切り出して、かなり優しくしたようなものです。対象者も

> 職業人が共通に備えておくべき情報技術に関する基礎的な知識をもち，情報技術に携わる業務に就くか，担当業務に対して情報技術を活用していこうとする者

となっています。基本情報を目標にしつつも、まずここからの取得を目指しました。

## スケジュール
ざっくりスケジュールを書き出すと、以下になります。

- 2019年春頃、就活終盤に思い立って志望就職業界を変更
- 6月頃、某中堅SIer内々定
- すぐにITパスポートを申しこむ、勉強開始
- 7月、ITパスポート合格(780/1000点)
- 8-9月、週4日8時間のバイトと並行して基本情報午前対策
- 10月、集中的に基本情報午後対策
- 10月20日、基本情報当日

ITパスポートの勉強については、図書館で借りたキタミ式を2周した程度です。ここでは省略し、以下から基本情報について触れます。

# 午前試験について
4択問題*80問です。ITパスポートの勉強だけだと6割は厳しいと思います。最終的に、点数は以下になりました。
※投稿時点での自己採点結果です

|正解|不正解|正解数/問題数|点数|
|---|---|---|---|
|66|14|66/80|82.5/100|

## 勉強したこと
基本はキタミ式＋過去問道場です。

[キタミ式イラストIT塾 基本情報技術者 平成31/01年 (情報処理技術者試験)](https://www.amazon.co.jp/dp/4297102110/ref=cm_sw_r_tw_dp_U_x_T4dSDb07NCM4B)

[基本情報技術者試験ドットコム 過去問道場](https://www.fe-siken.com/fekakomon.php)

夏季休暇中、週10時間*10週でキタミ式の20章を丁寧に消化し、同時にスキマ時間に過去問道場を進めていました。
## 良かった点
7月にITパスポートというワンクッションを置いて、非常に良かったと思います。ここで資格勉強の基礎的な体力と、PC周りのあやふやな知識を整理しつつ、基本情報の午前試験の土台を作れました。

基本情報を目指す日程に余裕があれば、取って損はないかもしれません。
## 反省点
今回の結果を見ると、明らかに午前試験で間違えている箇所が、最初の20問に固まってました。テクノロジーや数学が苦手だったようです。この部分については、勉強不足だったのかもしれません。

また、キタミ式は1周ではなく3周した方が、理解がスムースだったかもしれない、考えています。最初の1周でざっくり理解し(ノートも取らず流し読みするレベル)、2周目でノート取るなど入念に行い、基本情報近くなったら見返すようなイメージです。ノートに書き忘れた内容を中心に、少し知識の抜けが本番になって出てきてしまい、失点に繋がりました。ここは大きな反省点です。

# 午後試験について
どちらかというとこちらが肝です。午前試験の知識に加え、プログラムの流れの理解力や、問題文からの読解力が求められます。

## 選択した設問
※投稿時点での自己採点を基にした推定です

|||分野|点数|
|---|---|---|---|
|問1|必須|情報セキュリティ|9/12|
|問2|2-7から4つ|ソフトウェア|10/12|
|問3|2-7から4つ|データベース|12/12|
|問4|2-7から4つ|ネットワーク|未選択|
|問5|2-7から4つ|ソフトウェア設計|12/12|
|問6|2-7から4つ|プロジェクトマネジメント|12/12|
|問7|2-7から4つ|経営戦略・企業と法務|未選択|
|問8|必須|データ構造及びアルゴリズム|13/20|
|問9|9-13から1つ|C|未選択|
|問10|9-13から1つ|COBOL|未選択|
|問11|9-13から1つ|Java|10/20|
|問12|9-13から1つ|アセンブラ|未選択|
|問13|9-13から1つ|表計算|未選択|
|合計|||80/100|

選んだ理由を記しておきます。問2-7について、ネットワークはマニアックなので避けろ、と本で見かけました。また問7は、過去問を解いた印象だと決して難しくはないものの、点数が安定しませんでした。ある本曰く「傾向が無いのが傾向」だとか。このため、ネットワークと経営戦略を未選択としました。

## 勉強したこと
### Java
内定先でJavaを使うこともあり、プログラミングの設問では、最初からJava選択で行こうと考えていました。とはいえ、プログラミング言語はjavascriptとpythonを触った程度で(プログラミング言語？)、正直に言うとここが最大の難関だと見積もっていました。

午前対策に飽きた日に、午前対策の時間を使って以下の本を読んでいました。
[スッキリわかるJava入門 第2版](https://www.amazon.co.jp/dp/484433638X/ref=cm_sw_r_tw_dp_U_x_rxeSDbHV1F6YQ)

多少コードは書きましたが、ほぼ実践的なものは行っていません。基本文法とオブジェクト指向を理解したのみでした。が、最終的には問11で半分取れてしまい、若干拍子抜けしました。

なお、偶然にもオブジェクト指向を意識したコードにjavascriptで触れていた為、オブジェクト指向については、短時間で理解できました。

### それ以外
正直に言うと、java以外については、10月に入ってから勉強し始めました。初めて9月末に、午後試験の過去問を1度解いた際、57点でした。ここから慌てて、午後試験の対策をしました。使った本は、出るとこだけ基本情報ですが、一周した後はそのまま本棚に戻りました。

[情報処理教科書 出るとこだけ! 基本情報技術者[午後]](https://www.amazon.co.jp/dp/4798151963/ref=cm_sw_r_tw_dp_U_x_VbeSDb92W1NET)

コンパクトに纏まっている一方で、テクニカルすぎて自分には合いませんでしたし、直接的な点数向上には結びつきませんでした。ただ、選択肢の消去法などの時間稼ぎは出来たと思います。

この時間稼ぎテクニック習得と同時並行で、集中的に午後試験の過去問を週3-4前後解きました。この期間中、午前の対策は過去問道場のみでしたが、点数が下がることはなかったです。

また、最後までSQLに苦労した為、ここは重点的に対策しました(過去問で86点なのに、内訳を見るとSQLで半分失点していたことも)。

## よかったこと
Javaは勉強して本当に良かったと思います。私が習得した内容は、基本文法とオブジェクト指向のみでしたが、過去問では16点取れたこともありました。抽象クラス周りの知識や.equals()あたりまで抑えれば、半分はきちんと取れる印象があります。

また完全に独自のものですが、プログラムに記号を振ったことが、スムースな理解に繋がりました。「(2)クラスXXXX ①メソッドYYYYはZZZZを返す」と問題にあったら、プログラムですぐさまXXXXを見つけ(2)と併記、YYYYの下に①などです。記号の隣に、一言で役割を記したのも時短になりました(端末登録、配信、待受、終了操作、テスター...)。

私の考えだと、アルゴリズムである程度点が取れる方なら、下手に表計算に進むよりjavaなどに触れた方が、良いのかもしれないですね。

## 反省点
午後試験の過去問2時間半を、まとめて取るのに苦労しました。ゼミや卒業研究の時間の兼ね合い、体調不良、印刷し忘れ、図書館の休館日など、思わぬ障壁が多かったです。こういう事態を見越して、勉強してすぐに午後試験を解くだけ解くべきだったと反省しています。点数が取れなかった分野を、午前対策と並行で、Javaにプラスアルファの対策ができれば、最適解でした。

# 全体を通して
ITパスポートや基本情報については、勉強して本当に良かったと思います。確かに、ITパスポートに40時間程度、基本情報に午前対策100時間＋午後対策30時間を費やしており、決して少なくない時間です。しかし、勉強した内容が役立ったエピソードも既に複数あり、知識が身につき始めている実感があります。

勉強した箇所を理解できる喜びを感じると同時に、もう数年早く取っておきたかった、という後悔もあるのが本音です。

しかし、これはやっと入口に立った、というのみ。今後も欠かさずに学び続けたいですね。