【科目AB】基本情報技術者試験に合格するまでにやったこと
はじめに
基本情報技術者試験が令和5年度から新方式に変わったので、2023年4月9日に受けてきました。
1年半前に、旧方式で一度受験したのですが、そのときはあまりにも準備不足でボコボコにやられました。
今回の結果は・・・
科目A:680 / 1000 科目B:1000 / 1000
正式な結果はまだ出ていませんが、スコア的にリベンジ成功だと思ってます。
科目Aはなんとも言えない微妙な点数ですが、科目Bが異常に調子が良かったようです。
どんな準備をしてきたか、ここに記録に残しておきます。
新方式のサンプル問題はこちら。IPAから公式のサンプル問題が出ています。
受験時のプロフィール
リベンジ受験当時(2023/04)の私のプロフィールはこんな感じです。
26歳
社会人5年目
Webエンジニア歴 1年半ちょい
前職は畜産業界の営業職
大学はなんちゃって理系学部卒(農学部)
未経験からWebエンジニアへ転職した人(RUNTEQというプログラミングスクールを受講していました)
実務では主にPHPを使っています。Laravelを用いて開発したり、PHPでスクラッチで開発したりするような現場です。SQLでデータ抽出して分析したりも多いです。
最近では個人的に、Next.js、TypeScript、Swiftあたりを広く浅く触ってみています。
勉強時間
一度落ちてるので、準備期間は2ヶ月とやや長めに設けました。
受験料7,500円で結構高いですし、無駄にはしたくなかったので短期集中で取り組みました。
勉強時間は大まかに、
朝:1.5時間(科目B)
夜:1時間(科目A)
ランニングしながら:0.5時間(科目A)
で、1日あたり3時間くらいでした。
朝は一番集中できるので、気合が必要な科目Bに充てました。
科目Aは隙間時間でも進められるので、ご飯が炊けるまでとか、ジムに行く前とか、寝る前とかに少ずつ進めていました。
科目A
680 / 1000 で微妙な点数なので、あまり参考にならないかもしれませんが、やったことを残しておきます。
使った教材
使った教材は下記の3つです。
勉強方法
メインはほぼ過去問道場を解きまくることでした。
いきなり、過去問道場で最新の過去問を通しで解いてみる。
間違えた箇所の解説を読んで、必要そうな知識をまとめていく。
自分専用のまとめノートを作るイメージ(私はNotionでまとめてました)こちらを参考に、過去問道場の分野指定機能を使って、分野ごとに3回分ずつ解いていく。
ここでも間違えた箇所は、まとめノートに殴り書きしていく。
解説を読んでも分からない箇所は、キタミ式イラストを参考書代わりに読む。
キタミ式イラストの例題を解いてみる。
2〜6を2回繰り返す。
ここらで、まとめノートのボリュームが出てくるので、さらーっと振り返ってみる。
振り返ってもあやふやな箇所は、再度キタミ式イラストを読んで、例題を解いてみる。
過去問道場の復習機能で、間違えたところだけを解いてみる。
8〜9の時点で復習が済んでるので、知識の定着が確認できる。試験1週間前に、IPAのサンプル問題を解く。
試験前日までは、まとめノートを眺める&すーさんのYouTubeを2倍速で聞きまくる。
一度間違えたところや、理解しにくい箇所は、まとめノートとキタミ式イラストでだいぶカバーできていました。
ビット計算、クロック周波数、ハードウェア全般、ネットワーク全般が理解するのに時間かかりました。
まとめノートはこんな感じで、殴り書きしていました。
あと、私はほぼ毎日、夕食後にジムに行っていて、筋トレの日とランニングの日を交互に設けています。
ランニングの日は、走りながら約30分間、こちらの【基本情報技術者試験YouTuber】すーさん で勉強させてもらいました。
単元ごとに再生リストでまとめられているので、2倍速で聞き流し、結果的に、全ての再生リストを3周ほどしました。
情報セキュリティはA試験・B試験共通なので、5周ほどしたと思います。
科目B
科目Bは満点だったので、多少は参考になるかと思います。
次項で紹介する「福嶋本」に記載があるのですが、アルゴリズムのパターンを身につけるのと、アルゴリズムを順を追ってトレースしていくことが大事だと感じました。
勉強中はトレースに時間がかかり、進みも遅くて正直面倒と感じますが、トレースしていくうちに、なんとなくパターンを身につけられるようになり、本番では「なんとなくこんなことがしたいのだろう」と当たりをつけて読み解けました。
使った教材
勉強方法(情報セキュリティ)
情報セキュリティに関しては、すーさんのYouTubeの情報セキュリティの再生リストを聞きまくったくらいです。
科目Aともダブっている範囲なので、過去問道場を進めていれば、自然と科目Bの情報セキュリティの対策にもなっていました。
勉強方法(アルゴリズム)
福嶋本をひたすら読みました。
福嶋本は下記のような構成になっています。
まずは福嶋本を通しで1周読んでみる。
正直、第1章と第2章はちょっと退屈な感じ。過去問道場で、旧午後試験を解いてみる。
新方式の科目Bと比べると明らかに難しいのを感じて、時間がかかってでも最善を尽くして自力で解いてみる。まだまだ基礎ができていないことを感じ、福嶋本の第3章〜第5章をもう1周する。
過去問道場の旧午後試験を再度解く。
依然として時間はかかるが、なんとなくパターンが読めるようになり、ちょっと正答率が上がる。4を6回分ほど繰り返す。
ここが一番辛い。福嶋本の第3章〜第5章を2周する。
4〜5の旧午後試験で鍛えられたからか、簡単に感じる。試験1週間前にIPAのサンプル問題を解く。
「福嶋本でやったやつだ!」を感じると共に、福嶋本の偉大さを感じる。試験前日に福嶋本の第3章〜第5章の例題をささっと解く。
人によって合う合わないはあると思いますが、私は福嶋本のことを信頼しました。
アルゴリズムに関しては、ググると色々とおすすめの参考書がヒットします。ですが、あれこれ手を出さず、1冊を信じてひたすら叩き込む戦法が功を奏したと思います。
ざっとまとめると、
福嶋本で解き方とトレースの大切さを学ぶ
旧午後試験で強敵に慣れる
福嶋本を周回してアルゴリズムのパターンを身につける
こんな感じです。
正直、旧午後試験を解く必要があったのかは謎ですが、キツイ練習に慣れておくと大会では相手が弱く感じる現象を信じてやってみました。
あと、実務でフレームワークだけでなく、PHPでフルスクラッチでも開発しているのも、かなり為になっていたかと思います。
小手先テクニック
福嶋本とサンプル問題のトレースをひたすら繰り返していて身についたアルゴリズムを解くための小手先テクニックです。
二次元配列では、だいたい i が行で、 j は列という意味
「for (i を 配列の要素数 から 1 まで 1 ずつ減らす) 」というプログラムは、だいたい配列の要素を後ろにずらしたいとき。言い換えると、配列の要素をずらして空けるときは末尾から。
w や tmp が使われているときは、だいたい配列の要素を交換したいとき(w は work、tmp は temporary)
結局なにが目的のプログラムなんだっけ?を忘れない
最終的に return する変数を更新している箇所はどこかをまず最初に確認
while や do のループ文の場合、 繰り返し条件を変化させている箇所はどこかを確認( i を 増やしたり減らしたり、x ≠ y を x = y に切り替えたり、flg = 0 を flg = 1 にしたり)。無限ループにならないようにどこかで値を変化させているはず
イメージつかなかったら要素数5くらいの簡単な配列でトレースしてみる
図の回転・反転・拡大・縮小とかは、例えば 1辺の要素数が4の二次元配列だったら、四隅の[1, 1], [1, 4], [4, 1], [4, 4] をトレースしてみる
ポインタでつなぐ線形リストは図を描けば単純
t ← (空欄) + 配列[i] みたいな箇所は、だいたい合計を求めている(t は total)。空欄に入るのは t。
l は、だいたい length の意味で、文字列の文字数とか配列の要素数
再帰処理は地道に計算するのが安全
最後に
最後まで読んでいただき、ありがとうございます。
基本情報技術者試験って「基本」とあるので簡単そうに思えますが、しっかり対策しないとちゃんと落ちる試験だと感じました。
2ヶ月間大変でしたが、私自身久しぶりの成功体験だったのでモチベーションが上がりました。
次はPHP技術者認定試験に向けて勉強を進めていきます!
試験当日は、途中休憩で食べる用のチョコを持っていくのを忘れずに!