はじめに
2024年8月、4回目の受験でようやく基本情報技術者試験に合格しました。
Webエンジニアへの文系30代未経験転職のため、ITの基礎知識を身につけることが目的でした。
筆者のスペックとしては、2023年11月からプログラミングスクールのRUNTEQさんでプログラミングを学んでおりました(2024年8月に無事卒業)。それまでプログラミングはまったくの未履修です。
大学は経営学部で学んできた身なので、ストラテジ・マネジメント等の経営関係の知識も問われる科目Aは毎回合格しておりましたが、科目Bのアルゴリズム問題が大の苦手で3度も不合格になり心が折れそうでした…文系には、ここが1番辛い。
基本情報技術者の合格体験記はいくつもありますが、私の合格体験記では、主に科目Bで苦戦している方向けに行ったことを残しておきたいと思います。
学習期間
基本情報を学び始めたのはRUNTEQさんの入学と同時期で、2023年12月から。合格までの学習期間は約9ヶ月ほどです。
平時はRUNTEQのカリキュラムの学習のほうがメインで、基本情報は試験の2週間くらい前になって詰め込むように取り掛かってました。つまり、このやり方が今回よくなかったのですが……2月・4月・6月に受けた試験は、すべて科目Bだけ不合格になってしまいました。
しかも、2月と4月に受けたときの科目Bの点数は410点・405点となんとも言い難い数字。なんなら4月の2回目の受験のほうが、科目Bの勉強時間を確保したにも関わらず点数地味に下がってるし…このときは相当ショックでしたね。「自分はエンジニアに向いてないのかも」と真剣に落ち込みました。
6月の試験は535点と、少し光が見えました。問題を解く際の手応えも、このときは以前よりありました。「諦めずに勉強すればちゃんと伸びるし次こそいける!」と、また1ヶ月後に受験を申請していました。
この懲りない姿勢がなんだかんだ1番大事だったかもしれません。「資格が取りたい!」という動機以上に「エンジニアになるなら基本情報くらいは取れないといけない」と思っていたので、もしエンジニアを目指してなかったら諦めてたかも。
学習に利用した教材
科目Aの対策は、これ1冊によるインプットと過去問道場でのアウトプットで充分でした。
テキストの最初のほうで学ぶことになる基礎理論やアルゴリズムは、文系脳にとってはチンプンカンプンで読んでいて嫌になりましたが、ここが理解できないと科目Bが解けないので最終的には1番読んだ項目だと思います。あと試験前は、巻末の「重要用語総復習」を寝る前に毎日眺めていました。意外と記憶に残るので良かったです。
過去問道場は、旧試験の最新の過去10回分をやりました。過去問からまったく同じ問題が結構出題されるので、これをひたすら繰り返すのがいいと思います。2回目以降の受験では、過去3回分やって科目Aの対策は終えてました。それでも合格はできます。というか、科目Aの知識を前提に科目Bを解くことになるので、自然と科目Aの勉強も随時することになってました。特に基礎理論、アルゴリズムとプログラミング、セキュリティはそうですね。
科目Bの対策に最も買われていると思われる本。9割近く正解できるまで、累計3週やりました。
本書でも作者自身がそう言っておられるのですが、プログラミング未経験で科目Bをこれから対策する人がいきなり挑むのは「難しい」です。スクールで勉強しているからプログラム(if文やfor文等)に少しは慣れていたのですが、それでも難しかったです。特に応用問題は、1周目はほとんど自力で解けませんでした…。解説は丁寧でわかりやすくオススメなのは間違いないのですが。私と同じく躓いた方は、後述の動画から入ってみてください。
最も初心者向けの動画をリンク先として貼っていますが、この方の科目B対策の動画はすべて3週視聴して問題を解きました。この動画ではプログラムの基礎知識から解説してくれてるので、科目Bの1番最初の教材としてオススメしたいです。
この方の動画で特に良いのが、科目Bの必須スキルであるトレースの過程を、1行1行丁寧に解説してくれていること。非常にわかりやすいです。オリジナルの科目B問題に挑戦できるのもありがたく、これが無料でいいのか?と驚くクオリティです。
科目Bは、20問中4問がセキュリティに関する長文問題です。たかが4問、されど4問。私のようなアルゴリズム苦手な文系の人ほど、セキュリティは全問正解を目指すつもりで点数を取りに行ったほうがいいと実感しました。実際この本を読んだ3度目以降の試験で点数が上がっています。舐めてはいけなかった。
この本は、ライトな雰囲気で読みやすく、まるまる1冊セキュリティについて広く学べます。本書にも掲載されているセキュリティ問題の過去問を解いていれば、当日の試験が幾分楽に感じられるかと思います。
その他に、IPAの科目Bサンプル問題を試験直前は毎回解いたり、『アルゴリズム図鑑』『数学ガール 乱択アルゴリズム編』等アルゴリズムに対するアレルギーを克服するために読んだりしました。
振り返って改めて思いますが、これだけ様々な教材に手を出して科目B不合格で3回落ちてるってどんだけ苦手分野だったんだ…って感じですね笑。
科目Bをノー勉合格している理系出身の方々の体験談を読んで、その差にちょっと凹むこともありました。
結局、科目Bを克服できたのは「競プロ」のおかげ
2度目の試験に落ちた4月から、AtCoder(競技プログラミング)を始めました。
今でも1日1問はAtCoderの過去問を解くことを継続していますが、特に基本情報に合格するまではABC(AtCoderビギナーコンテスト)に毎週参加したり、『競技プログラミングの鉄則』でAtCoderに頻出のアルゴリズムをプログラムで書くにはどのようにすればいいか、実際にVScordでコードを書いて動かしたりして勉強していました。
この競技プログラミングが、アルゴリズムに慣れる過程として特に有用でした。
基本情報の試験問題は用意された答えから正解を選択しますが、競プロは科目Bで出てくる問題文のようなコードを自分自身でゼロから書いて答えを出力する必要があります。やっていることは科目Bよりも難易度が高いです。しかし、これができるようになれば科目Bのプログラムも自然と読めるようになります。なぜ理系や既にエンジニアをされている方々が、ノー勉で科目Bを合格できるのか理解できた気がしました。日々、似たようなことをやっているのです。アタリマエのことですが…笑。
それになんといっても「楽しい」です。基本情報科目Bという資格試験のためだけに使う疑似言語を勉強するよりも、実際にアルゴリズムのコードを書いてプログラムを動かすほうが面白いです。ちなみに解くAtCoderの過去問は、ABCのA問題(1番簡単な問題。解けそうならB問題も)で充分です。科目Bに出てくる簡単なアルゴリズムに慣れることができます。自分もB問題までしかろくに解けません…Aですら自力で解けない問題もありますし。それでも、確実に力はつくと思います。アルゴリズムとプログラムを読むことに対する抵抗は薄くなっていきます。科目Bのサンプル問題や演習問題と違って、挑戦できる問題の数自体大量ですし笑。
4度目の試験を受けた7月は、実はプライベートで落ち込むことがあって勉強する気力もあまりなく、直前に詰め込むようなことはまったくできなかったのですが、それでも試験中科目Bの問題を解くことに今までよりも手応えを感じられたし、ギリギリではありますがついに合格点を取ることができました。
感想:資格勉強も日々継続してやることが1番大事!
簿記2級やFP2級etcの資格も取得していますが、私にとっては基本情報技術者が今まで挑戦した資格の中で1番難しかったです。とにかく科目Bのアルゴリズムがもう嫌で嫌で憎しみすら覚えかけました笑。
不合格が続き「自分にはエンジニアの適正がないのかも」と落ち込んだりもしましたが、合格までやってみれば、これは私に適正がないわけではなく「今までやってこなかったせいだな」と感じられました。アルゴリズムの苦手意識克服に最も効果があったのはAtCoderで毎日コードを継続して書いて慣れることでしたが、この資格試験を通して、エンジニアにとって大切な「手を動かし続けること」「諦めずに解決するまでやること」の重要性を実感することができました。
とんでもなく遠回りだし、もっとスマートに1発合格する方法も他にあると思いますが、アルゴリズムが大の苦手な文系未経験でも諦めずに継続すれば合格できる成功体験として参考になればと思います。
転職活動が落ち着いたら、応用情報技術者の取得に向けて、また頑張りたいです。