基本情報技術者試験に合格したフリーターの勉強方法
はじめに
一年ほど前に基本情報技術者試験に合格したので忘れないうちに書き残しておこうと思います。
基本情報技術者試験とはプログラマやエンジニアなどのIT人材となるために必要な基礎知識技能を身に着ける国家資格です。当時、情報を探すのが苦手だった僕は勉強法など探すだけでも苦労したので少しでも誰かの参考になれればうれしいです。
自己紹介
エンジニアを目指してるフリーターです。
一浪して阪大工学部に合格するほど勉強した経験があります。
フリーターといってもがっつり働けているわけではなく、うつ状態から社会復帰を目指している途中だったので実家暮らし&勤務時間は週30時間程度で、社会人よりは勉強時間は確保しやすい状況でした。プログラミングはC言語を少し勉強したことがあり、文法はわかる程度です。
受けようと思った理由
仕事を探す中でやりたいことの一つにゲームを作ってみたいというものがありました。
ゲームの作り方を調べているうちにプログラミングの世界に興味がわき、IT関連の基礎知識を身に着ける上でエンジニアの登竜門と呼ばれてるこの試験を知り、受けてみようと思いました。
試験の概要
方式 CBT形式
受験料 7500円(令和4年から変更されたようです。)
試験時間 午前試験150分(80問)
午後試験150分。(11問から5問選択)
午前試験、午後試験という名前はあくまで昔の名残であり、2種類の試験があるということです。別の日でもいいし、別の場所でもいいし、時間も決まっていません。ただし、午前試験に合格しないと午後試験は受けられません。
合格率 60%程。
申込リンク https://www.jitec.ipa.go.jp/1_02annai/r04-1fe_exam.html
勉強方法
使用したサイトや書籍
※注意 最新版を選ぶようにすること。趣味程度でも本気でも情報技術は日々進化しています。最新の情報を手に入れる姿勢は大切です。
キタミ式イラストIT塾 基本情報技術者 令和04年
「うかる!基本情報技術者 [午後・アルゴリズム編] 」
過去問
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html
過去問(私は解説目的で利用)
C言語
http://c-lang.sevendays-study.com/
スケジュール
最初の1か月半
勉強は試験日の3か月前から開始しました。
まず「キタミ式基本情報技術者試験」を購入し読みました。自分の場合は急いでなかったし、無理をしたくなかったので1日15分を目安に1節~2節ずつ読み進めていきました。全部で100節くらいあるので、1か月半程度で一通り読み終える計算です。読むときに大事そうな言葉や覚えた言葉難しそうな言葉はiPhoneにメモしておき、後からスプレッドシート(エクセル)に貼り付けて暗記帳代わりにして利用しました。
例 暗記帳の様子
直前の1か月半
テキストを読み終えた後、残りの1か月半で暗記と過去問に取り掛かりました。
勉強時間は1日150分ほどに増やしました。
内訳は暗記の時間が30分、午前試験の過去問が30分間、その解答復習が30分、同様に午後試験を解く時間30分と復習30分です。勉強時間の配分は人によって異なると思いますが、自分の場合はITの基礎がわかってきてモチベが上がっていたので勉強時間を増やしてもすんなり打ち込めました。
過去問は公式のサイトに載っているものを使用しました。
過去問は公式のサイトを見て、1回分のテストを3日くらいに分けて解きました。午前試験は1日目30問、二日目25問、三日目25問、午後試験は1日2問、アルゴリズムは1日1問といった具合です。過去問を直近から徐々にさかのぼってやっていき、複数年やることで各分野の傾向や自分が間違えやすい分野を把握していきました。自分は試験日までに午前試験を5年分(年2回あるので系10回分)、午後試験を4年分(年2回あるので系8回分)解きました。
暗記や過去問の解答にはスプレッドシートを使用しました。
基本情報技術者試験は過去問から同じ問題が出ることがあるので、答え合わせの後には間違えた理由と分野、語彙も記録するようにしました。
意味が分からなければ解説を検索します。
キタミ式のテキストは試験範囲を広くカバーしていますがすべてをカバーしているわけではありません。とくにSQLの制約の箇所は詳しく記載されていなかったので解説サイトを参考に別途勉強しました。ストラテジーやマネジメントの分野では新しい用語がたくさん出てきますが、ここら辺は頻繁に出てくる言葉だけをチェックしてあまり気にしないようにしていました。
スプレッドシートの様子2 過去問
午前試験対策
午前試験は4択から1つ選ぶ形式で分野ごとに分かれています。
ざっくりいうとテクノロジー約25問、DB約5問、通信約5問、セキュリティー約10問、開発約5問、マネジメント約10問、ストラテジー約20問の計80問です。
一部時間のかかる問題もありますが、基礎が入っていればほとんどの問題をサクサクと解いていけます。大事なのは点数に一喜一憂するのではなく、自分の苦手なところをつかみ同じ間違えをしないように復習することです。解いているうちに自分の苦手なところがわかってくるのでそこを重点的に暗記します。自分の場合はLRU、RAIDなどが苦手でした。
また、時間間隔をつかむことも大切です。
午前試験は時間いっぱいまでかかることはありませんでしたが、ケアレスミスを減らすために見直す時間も計算しました。自分の場合は苦手なテクノロジーとストラテジーに時間を割くようにしました。それでも制限時間の半分くらいで解き終わっていました。
例題
午後試験対策
午後試験も選択問題ですが、午前試験と違い長文を読んで4以上の選択肢から選ぶ問題です。
各分野から必須問題と選択問題を合わせて13問から7問を選択します。
問1セキュリティ、問8アルゴリズムが必須で、問2~問7(ソフト、データベース、ネットワーク、設計、マネジメント、ストラテジー)の6問から4問選択、問9~13(C言語、COBOL言語、Java言語、アセンブラ、表計算)の5問から1問選択です。
例題
午後試験のポイントは集中力と問8のアルゴリズムです。
集中力について
午後試験は、毎問毎問長い文章を集中して読む必要があります。
コツは時間をかけてゆっくり丁寧に読むことです。自分の場合はマジで根気がいりました。慣れないうちはすぐ読み飛ばしてしまい、解くときになって全くわからず何度も読んで1問20分で解くところを40分かけてしまうこともありました。
アルゴリズムについて
アルゴリズムは別途勉強が必要だと思います。
自分の場合は次の手順で学びました。(0と2は基本情報受験を決める前からさらっと触れていました。)
- 0プログラミング言語の基礎を知る。
- 1疑似言語を学ぶ。
- 2基本的なアルゴリズムを覚える。
- 3過去問をゴリゴリ解いていく。
0プログラミング言語の基礎を知る
私はC言語で勉強しました。最低限(変数、型、関数、if文、for文、while文など)わかるようになれば問題ないと思います。私はリンク先のサイトを参考にしました。
1疑似言語を学ぶ
擬似言語とは基本情報試験専用のプログラムの書き方のことです。プログラミング言語にはたくさんの種類があり、少しずつ異なります。その中でも基本的な処理は変わりませんが、わずかに言語によって差が生じないよう統一するための書き方です。これは覚えることは少ないのですぐに覚えられると思います。公式に配布されている過去問から確認することができます。午後試験問題の冒頭2ページあたりに書いてあります。
2基本的なアルゴリズムを覚える。
たとえば、バブルソート、挿入ソートなどです。必須ではありませんが、頻出するパターンを覚えておけばすこし楽になります。アルゴリズムや基本情報独特の記法、トレースのやり方は「うかる!基本情報技術者 [午後・アルゴリズム編] 」を購入し、参考にしました。
※アルゴリズムの種類を知る、トレースを知ることが目的だったので必要な個所のみ読むようにして、隅から隅まではやりこみませんでした。
3過去問をゴリゴリ解いていく。
これが一番大事です。
過去問では自分はひたすらトレースして解いていきました。トレースとはパソコンが計算する処理を自分でちまちま記録していく方法です。現在の変数の値をられつして記録していきます。トレースのやり方は「うかる!基本情報技術者 [午後・アルゴリズム編] 」を購入し、参考にしました。
アルゴリズムは頭のいい人なら頭の中でパパっと解けるかもしれませんが、私は紙にゴリゴリ書いて45分くらいかけていました。
選択問題について
選択問題は当日選ぶようにして勉強時は気にせずすべて解いていました。
理由は苦手な分野でも簡単な問題があったりするし、そもそも自分はエンジニアを目指していたので基礎全般を押さえておきたかったからです。
言語選択について
自分の場合は調べたときにたくさん出てきそうでプログラマーっぽいという理由でC言語を選択しましたが、あんまり深く考えてなかったのでここはあまりアドバイスできないです。アルゴリズムと同じだと認識していました。
参考までに、私はこのサイトでC言語を勉強しました。勉強サービスを作るには不十分ですが基本情報試験を受けるうえでは十分な知識です。
時間配分について
午後試験は毎回ギリギリ足りないくらいでした。自分の場合、1問あたり15分から20分と決め、問8アルゴリズムと問9言語は1問40分で解いていました。
勉強時に意識していたこと
頭の中で整理することを常に意識していました。
これは、テキストを読むとき、過去問を解くとき、午前試験、午後試験に関わらずすべてに言えることです。全部で習うことは大まかにいくつあって今はこれをやっている。例えばHDDの項目について勉強するなら以下のような感じです。範囲が膨大なので整理していかないと単語は覚えていてもどの分野で出てきた言葉かわからなくなってしまいます。
たとえば、HDDの項目について「PCの基礎となる部品にはCPUとOSとHDDがあり、今はHDDの項目をやっている。HDDで勉強する内容は主に4つある。アクセス時間の計算、フラグメンテーション、Raid、その他補助記憶装置たち。この中でRaidには三種類あってその違いは。。。」といった感じです。
当日
当たり前ですが、とにかく体調管理が大切です。
遅刻しそうになると心も焦るし、息も上がって落ち着いて問題に取り組めないので早めに試験会場に行きましょう。また、変なものを食べないこと、夜早く寝ること。何事も準備してきたら当日はこれだけです。自分の場合は朝起きれなかった時が怖かったので午前試験と午後試験を両方別日で午後に受けました。
それから、自分が直前に見直すために作ったリストがあるので載せておきます。
私が直前に読み直した内容
午前も午後も文章をゆっくり丁寧にめんどうくさがらず読む。焦ると何も頭に入らない
計算をゆっくり丁寧にすることが大切、わからなければトレースする。
アルゴリズムも問題文をよく読み、似た変数の違いをはっきりさせる。意味を考える。同じ値が入ってても役割が違う。
IPアドレスは全て0と1になおす。
受けた感想
朝が苦手なぼくにとっては遅刻せずに会場入りすることが最大の難関でした。
午前試験のサクサク度合いと午後試験のなかなか進まずゴリゴリ解いていく温度差が激しかったです。念入りに準備していたこともあって問題自体は難しく感じませんでしたが、やはり150分間長文たくさん読むのは普通に大変でした。私の場合は午前試験が何割、午後試験が何割でした。
最後に
受験、資格に受かるための勉強と実際の生活に活かすための勉強は違います。
活かすならアルゴリズムとSQLは大事すぎるし、プログラマになるだけなら企業戦略の知識などはいらないかもしれません。基本情報試験のためだけの勉強は仕事にも人生にも役立ちません。エンジニアになるための基礎知識とあらゆることに応用できる勉強法を身に着けることができたと思うことが大切です。
とはいえ、自分にとってはこの試験を受けたことは間違いなく努力の証になりました。なんなら大学受験よりも楽しく勉強できました。世の中にはまだまだ難しい試験がありますが、自分の自信につながったことは確実です。
読んでいただきありがとうございました。
誰かの参考になればと思います。
今後受ける人を応援しています。