👤

【エンジニア向け】戦略的に勉強して基本情報技術者試験に合格した話

2022/05/27に公開

こんにちは。とあるフロントエンドエンジニアです。

令和4年度春期の基本情報技術者試験に合格したので、私がそれまでにどんな勉強計画を立てて合格ラインまで持っていったかを紹介します。

私は普段フロントエンドエンジニアとして仕事しているので、ある程度のエンジニアのケーパビリティを持った視点での勉強計画の立て方、勉強の仕方、考え方を反映した内容になっています。

特に午後試験の対策ではエンジニア視点での勉強計画の立て方が大いに反映されています。完全なIT未経験者や開発未経験者の方には若干参考にならない点もあるかもしれません。。。すみません。

以上を踏まえ、これから基本情報技術者試験を受験しようとしているエンジニアの方々の勉強計画の参考になれば幸いです。

この記事に書いていないこと

  • 「たった1ヶ月!」などの短期間の勉強で合格したノウハウなど
  • 試験直前の詰め込み勉強方法

この記事は受験日の約2.5ヶ月前に勉強スケジュールを立て、その通りに淡々と勉強して合格したスケジュールやノウハウを載せています。

世の中には様々な勉強期間で基本情報技術者試験に合格した人がいますが、以下勉強を始める前に思っていた個人的な所感です。

勉強期間 勉強する前に個人的に思ったこと
1ヶ月程度 ITの基礎知識が既にあるか、余程効率良く勉強しないと合格はきつい。。詰め込みになりやすい。勇者。仮に不合格になった時にほぼ確実に「もう少し余裕を持って勉強すればよかった」って言い訳しそう。リスクでしかない。
3ヶ月以上 長く感じる人は長く感じる。。モチベーション維持が大変。だれる。飽きる。

でも(主観的に)長くも短くもない2.5ヶ月なら頑張れる気がしませんか!?

というのもあり、試験日にまだ数ヶ月ほど余裕がある人にとっては参考になると思います。

マインド

勉強計画を立てる上で、マインドは非常に重要なファクターだと個人的に思っています。

以下個人的な偏見が入りますが、

勉強期間 マインド
1ヶ月程度 試験に受かるか受からないかが基準
2.5ヶ月 正答率60%(基本情報の合格点)で受かるか80%以上で受かるかが基準(なのでしくじっても60%では受かる前提)

ぶっちゃけ試験に受かるか受からないかが最も重要なのでそういうマインドでも間違いでは全くないのですが、メンタル的なところで差が出ると思っています。

2.5ヶ月の勉強は短くはありません。なので確実に合格をとりにいくマインドで挑みます。

試験当日も、余程イレギュラーな問題が多く出なければまぁ受かるだろうという気持ちでした。

ギリギリで戦いに来ているわけではないので試験もリラックスして解けます。(経験談)

タイムスケジュール

勉強期間

勉強の期間は2~3月の2ヶ月 + 4月の第2週までの約0.5ヶ月の合わせて2.5ヶ月程度です。

一日の勉強時間

曜日 勉強時間帯 勉強時間(計)
月~金 8:00 - 9:00, 21:00 - 0:00 3~4時間
土~日 22:00 - 0:00 1~2時間

私は平日は通常業務が基本的に9:00から18:00まであるので、始業前の1時間、及び夜寝る前の3時間は勉強時間に当てることにしました。

土日は1~2時間と平日よりも少なめです。理由としては、平日8h働いて4h勉強しているとオーバーヒート寸前になるため、土日は休息に徹しようと計画しました。

ただ試験範囲の知識には毎日触れていようと思っていたので、最低1時間は勉強時間を確保していましたが、長時間はやりませんでした。(というより土日も同じ勉強時間をこなすというモチベーションがなかった)

カッコつけるとメリハリというやつです。笑

平日は仕事と勉強、土日はプライベートな時間、このスタンスを2.5ヶ月貫いたので仕事、試験勉強、プライベートの両立ができました。

使用テキスト

使用したテキストは基本情報技術者試験の勉強では有名な「イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室」、通称猫本の1冊のみを使いました。今後この記事ではテキストのことを猫本と記載します。

すでに合格していた友人からこの猫本だけで良いと言われていたので、それを信じてこの1冊で基本的な知識のインプットを図りました。笑

細かい使い方は後述の勉強スケジュール詳細で記載します。

https://gihyo.jp/book/2020/978-4-297-11716-0

勉強スケジュール概要

勉強内容 学習到達目標
2月 猫本を使って試験範囲の頻出知識を抑える 猫本を1周読み終える
3月 午前の過去問題を解きまくってインプットを図る 午前の模擬試験正答率80%
4月(始業前) 午前の過去問題の反復演習 -
4月(終業後) 午後の過去問題の演習 選択する単元の過去問題は最低10年度分解く

このスケジュールをもう少し要約すると以下のようなイメージです。

勉強内容
2月 猫本
3月 午前問題対策
4月 午後問題対策

また今回、自分の勉強の進度を数値的に図るために各月末に到達指標を定めました。この指標をベースに、次月の勉強スケジュールを微調整しながら進めようと考えていました。

例えば

勉強内容 学習到達目標
3月 午前の過去問題を解きまくってインプットを図る 午前の模擬試験正答率80%

であれば、3月末には午前の模擬試験の正答率が80%を超えていればとりあえず順調だろう、という基準です。

ちなみに基本情報技術者試験の合格点は以下とされています。

区分 正答率
午前 60/100点以上
午後 60/100点以上

今回私が定めたスケジュールをこなして合格した試験結果は以下です。

区分 正答率
午前 85/100点
午後 85/100点

ではなぜこのような学習到達指標にしたのかは次項、勉強スケジュール詳細の各月の項目で記載します。

勉強スケジュール詳細

2月

勉強内容 学習到達目標
2月 猫本を使って試験範囲の頻出知識を抑える 猫本を1周読み終える

概要

2月はとりあえず猫本を叩き込んで基本的な内容や頻出事項を抑えることに徹しました。

ここで重要なのは理解までしないことだと思っています。内容を理解するよりはざっくりとしたイメージや、試験でこんな知識が出るんだー程度に留めておくことです。なので気持ちは楽にただ本を読んでいる感覚で勉強します。

そして必要そうなところはノートなどにまとめました。

また私は普段Webフロントエンドの開発業務がメインなので、ハードウェアやインフラ関連の知識はほとんど知りませんでした。

なのでこの時期は猫本を進めながら、関連するワードなどをネットで調べたり画像検索してモノのイメージを見て覚えていました。

勉強時間と内訳

この時期は平日の始業前と終業後は特に勉強内容に違いはなく、どちらの時間も猫本をゆっくり読み進めていきました。

学習到達目標

とりあえず大体1ヶ月で猫本を1周読み終えて、早く終わったら終わったで午前の過去問題演習に入ればいいや、という感じで目標を定めました。

3月

勉強内容 学習到達目標
3月 午前の過去問題を解きまくってインプットを図る 午前の模擬試験正答率80%

概要

3月は特に複雑なことは考えずにただひたすら、時間の許す限り午前の過去問題を解きまくる、という計画を立てました。

過去問題は基本情報技術者試験ドットコムの過去問道場を使います。

勉強時間と内訳

3月も2月と同様、始業前と終業後で勉強内容に違いはなく、ひたすら過去問道場を解き続けました。

ただ、3月は初旬~中旬と中旬~下旬で過去問題の進め方を変える形で計画しました。

期間 過去問の進め方
初旬~中旬 分野別に対策、または苦手単元のみ重点的に対策
中旬~下旬 模擬試験形式でランダムに問題を解く

前半は分野別に解いていき、分野の得意不得意関係なく一定の正答率を取れるよう目指しました。

元々猫本を読んでいて「おそらくこの分野は自分にとって苦手分野になるだろう」と苦手分野の予想は付いていたので割とそこを重点的に対策しました。

そのほか、基礎理論系など、計算問題が多い分野の対策を重点的に行いました。

学習到達目標

3月末の到達指標である「午前の模擬試験正答率80%」の設定には午後試験の問題形式を考慮して設定しました。

基本情報の午後試験は午前問題を文章問題にしたような問題が出題され、午前問題の知識が入っていないと太刀打ちできないと聞いていました。

これは言い換えれば午前問題を徹底的に叩き込んでいれば午後問題はそれほど苦労しないのではないかと考え、とりあえず3月末には午前試験の合格正答率(60%)プラスαの計80%を安定して取れていれば午前の知識はあらかたインプットできていると判断して良いだろうと考えました。

実際も計画通りに勉強をしていて、3月末には85%程度は安定して取れるレベルにはなっていたので割と間違っていなかったのかなと思います。

4月

勉強内容 学習到達目標
4月(始業前) 午前の過去問題の反復演習 -
4月(終業後) 午後の過去問題の演習 選択する単元の過去問題は最低10年度分解く

概要

4月の試験日までの2週間は午後試験の過去問題演習に全集中しようと計画しました。

実際、3月末段階で午前試験の知識のインプットはあらかた終わっていたので、初見で午後試験を解いても正答率が壊滅していた問題はほとんどなく、時間制限も特に課題なく解けるレベルにはなっていました。

また午後問題は必須科目と、選択科目の中から自分が選択する科目とその予備の科目のみ過去問題を解くことにしました。

私が勉強した科目は以下。

科目 区分
情報セキュリティ 必須
データベース 選択
ネットワーク 選択
ソフトウェア設計 選択
データ構造及びアルゴリズム 必須
Python 選択

そのほかの選択科目の勉強はガン無視です。

勉強科目と優先度について

科目 優先度
情報セキュリティ
データベース
ネットワーク
ソフトウェア設計
データ構造及びアルゴリズム
Python

今回、午後試験の対策をするにあたって、科目ごとに優先度を設定しました。これは自分の得意不得意に付随するもので、普段のフロントエンドの業務とのベクトルが離れているもの、及び苦手科目を「高」、業務とベクトルが近しいもの、及び得意科目を「低」と設定し、優先度「高」のものを重点的に勉強しました。

優先度を設定した経緯としては、4月の約2週間で午後試験を対策するという計画では、愚直に全ての科目を同等のウエイトで勉強するには、対策が追いつかない科目が出る可能性があると踏んだためです。

そのリスクを考慮し、優先度を設定して「高」の科目に時間を割き、「低」の科目は必要なところを抑える程度で配分しようと計画しました。

データベース

短い問題文や提示されているテーブルを見ながら、問題の答えとなるSQL文を選ぶのが基本でデータベース分野。もう少し端的に言うと、「〇〇を出力するためのSQL文を選べ」と言うような問題が主に出題されます。

なので選択肢のSQL文を読んで〇〇を出力できるやつを選ぶだけなので、SQLが読めるエンジニアであればここは特に苦労しないと思います。私はこのデータベースは得点源にしたかったので演習は多めにやりました笑。なので優先度高で設定。

データ構造及びアルゴリズム

普段の業務でプログラムをよく組むので、「データ構造及びアルゴリズム」はあまり苦手にはならないだろうという推測でウエイトは低めに設定しました。ただ、上記科目はプログラムをトレースして解く問題が頻出だと知っていたので、素早くトレースできるよう演習は積みました。

Python

Pythonは大学院の頃ずっとAI開発で使っていたのと元々競技プログラミングをやっていたのもあり、ここは特に対策しなくて大丈夫だろうと予想(謎の自信)。普段の業務はJavaScriptを使うことが多いので、そっちのメソッドと混同しないようPythonのメソッドを復習する程度に留めました。

Pythonの代わりに表計算を選択するというオプションもありましたが、表計算のために新しい知識を入れるのはコスパが悪いと踏んでPythonを選択しました。

ただ、2020年から試験科目に導入されて過去問が全く公開されていないPythonです。当日Pythonの問題が訳わからない感じだった場合がリスクだったので、数問だけ表計算の過去問題に触れておいて、どんな感じで出題されるのかだけは把握していました。

が、当日はPythonを選択しました。

選択科目の所感

ネットで午後試験はどの科目を選択するかというのをリサーチすると、ほぼ必ずと言っていいほど「ストラテジ系・マネジメント系」と「表計算」が入ってきますが、エンジニア業務など、普段から開発をされているのであれば、これらは選択せず、SQLなどの「データベース」や「Java」「Python」などのプログラミング言語系を選択する方が得策だと思います。

特に「ストラテジ系・マネジメント系」は文章量が多い(個人的に読むのがだるい)のが特徴。対して「データベース」は短い文章やテーブルを読んで必要なSQL文を選ぶだけなので、容易、かつ得点源になりやすい科目です。

勉強時間と内訳

4月の内訳としては、始業前は割と直感的に解ける午前問題をスピーディに解く練習、終業後はしっかり午後問題を解くという形で分けていました。

始業前は朝ということもあり、あまりじっくり頭を使いたくなかったので、仕事前の頭のウォーミングアップ的な感じで解いていました。

学習到達目標

午後試験の傾向を把握するという最終目的を念頭において、大体それぞれの大問で10年度分ほど解けば傾向をつかめるだろうと思ったのでそれぞれ最低10年度分解くという目標を設定しました。

実際やってみると、10年分もやれば大体どの分野でどんな用語、仕組みがよく問われるのかが分かってきます。

おわりに

今回自分で立てた計画どおりに勉強できたのもあり、試験前日も特に徹夜することもなく、普段通りの就寝時間に寝ました。

計画は大事ですね。

この記事が今後基本情報技術者試験を受験するエンジニアの勉強の参考になれば幸いです。

Discussion