10日間で基本情報に合格した話【新シラバス】

![サムネ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574145/1211561f-2fd8-4d29-9263-132832b0c1c1.png)


2024年12月20日、基本情報技術者試験を受けてきました。そして、なんと無事に合格することができました！！Yayy\!\! 🎉🎉。10日間という非常に少ない勉強時間で合格できたので、その勉強法、試験の感想などについて話していきたいと思います。

# 背景

まず、勘違いのないように説明すると、正直ほとんどの人にとって、たった10日間の勉強時間で合格するというのは**現実的ではない**と思います。私は大学でコンピューターサイエンス（情報系）を勉強しているので、一般的な内容は最初からある程度わかっていたし、個人開発やインターンの経験もあります。しかし日本語は母国語ではないし、試験の内容は自分の大学の教材とかと離れていたので、知識が穴だらけでした。

## 受けた理由（外国人必見）

そもそも外国人である自分はなぜ日本の情報試験を受験したのでしょうか。一番の理由は、この試験に合格することで、**大学をまだ卒業していなくても、エンジニアとして就労ビザが取れるからです**。また、日本語の上達や知識の拡充にも繋がると思ったので、受けることにしました。

# 今回の感想

**結果：**  
![情報技術者試験の結果。A: 715点, B: 805点](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574145/a20c6e04-048b-4780-9399-fd50c25b6376.png)

新シラバスになってから、過去問の出題率はかなり下がったなと感じました。ネットで検索してみると、セクションによっては過去問率が40%〜60%らしいですが、**実際にストラテジー系以外は10%に近いと思います**。それでも類題はそこそこあったと思うので、過去問率が少ないにしても、過去問を解きまくった方が良いと思います。計算問題は今回思ったより簡単でしたが、[ただの運にすぎないかもしれません。](https://weknowledge.jp/blog/johosyori/post_28285)

セクションBは一見難しそうに見えても、問題をよく読んでみると、そんなに大したことないと感じる問題が多かったです。基本的な概念を理解していれば、問題の意図が簡単に分かると思います。最後の長文問題は、時間がわずか5〜10分ぐらいしか残っていなかったため、できるだけ速読して答えようとしましたが、結果的にそこで点数をかなり落としたんじゃないかなと思います。

全体的には、落ち着いて問題文を読めば、解き方がわかるような問題が多かった印象です。

# 既に基礎知識がある人の勉強方法

これは、既に大学などで情報工学を学んでいたり、エンジニアとして働いたりしている人向けの勉強法です。大まかにやることは二つあります。

1. 過去問を解きまくって、解けなかった問題をAnkiというフラッシュカードに入れる  
2. 新しいシラバスの知らない単語をフラッシュカードに入れる  

ひたすら[過去問道場](https://www.fe-siken.com/fekakomon.php)に載っている過去問を解きましょう。最低過去五年分を解きましょう。解けなかった問題、自信のない問題はサイトの解説を読みます。それでも完全に理解できなかった場合には、該当する箇所を教科書で調べます。僕はキタミ式を使いました。イラストが多く、非常にわかりやすかったです。完全に理解できたと思ったら、その問題をフラッシュカードに入れます。僕は[Anki](https://apps.ankiweb.net/)というソフトウェアを使いました。Ankiは記憶の定着度に応じて、自分の脳が忘れそうなタイミングで復習させてくれるので、非常に効率的です。

フラッシュカードの形式は、表面に過去問、裏面には答えと解説というようなものでした。フラッシュカードは数百枚作っていたので、復習に2〜3時間もかかっていました笑。ポイントは寝る前にフラッシュカードをやることです。そうすることで、記憶がより定着しやすくなります。




| 表面 | 裏面 |
| :---- | :---- |
| ![フラッシュカードの表面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574145/c78dcb63-52b3-4bfe-b5ec-51179c87de20.png) | ![フラッシュカードの裏面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574145/bc74613d-efa2-47aa-9f40-86e24a1bb31d.png) |

[新シラバス](https://www.ipa.go.jp/shiken/syllabus/gaiyou.html)の対策としては、新しく追加された知らない単語や概念を暗記しました。

セクションBは、データ構造が分かっているか、コードが読めるかという最低限の知識を問う問題なので、プログラミングにある程度自信のある方は、セクションAに集中したほうが良いと思います。因みに僕は全く勉強しませんでした😎。

# 初心者向けの勉強方法

これは、ガチ初心者向けの勉強法です。

## 取りあえず、理解しましょう

過去問を丸暗記するだけでは、類題が解けるようにはなりません。そのためには、基本的な理論を理解しないといけません。理論を理解するために、主に二つの方法があります。

1. 教科書を読むこと。  
2. 過去問を解きまくる

これからエンジニアなどの仕事に就職したいなら、①も②もすることをお勧めします。一方で、ただただ合格したいだけなら、②だけを充実することをおすすめします。過去問の解説は必要な知識をすべて網羅しているので、教科書を読むのは必ずしも必須ではありません。もちろん、教科書を読んだ方がより多くの知識が身に付きますが、過去問の解説だけでも正直充分だと思います。[過去問道場](https://www.fe-siken.com/fekakomon.php)に載っている、過去問を最低五年分は解きましょう。間違えた問題や自信のない問題は、解説を読みます。ここ重要なのは、根本的に理解することです。解説を見て、なんとなくわかったなと済ませるのではなく、実際に回答に至る過程と理論を理解して勉強するのが大事です。類題が出たとして、自信をもって解けるかどうか自問してみてください。サイトに載っている解説が不十分な場合は、該当箇所に関して教科書で学習するのがおすすめです。僕は[キタミ](https://gihyo.jp/book/2023/978-4-297-13807-3)を使いました。イラストが多くて、初心者にもわかりやすいと思います。解けなかった問題や、自信のない問題はフラッシュカードに入れて、夜寝る前に復習するというのが良いと思います。僕は[Anki](https://apps.ankiweb.net/)というソフトウェアを使いました。Ankiは記憶の定着度に応じて、自分の脳が忘れそうなタイミングで復習させてくれるので、非常に効率的です。

## プログラミングの問題を練習するなら、プログラミングをしましょう！！

基本的なデータ構造とアルゴリズムが分かっていないと、セクションBはほぼ無理ゲーです。しかし、逆に言えばそれさえわかっていれば、余裕です。正直難易度自体は比較的低いといえるでしょう。したがって、勉強する方法も簡単です。

1. 2分木、配列、連結リスト、ハッシュテーブルのデータ構造を理解するために、自分で実装すること。使う言語は何でも良いのですが、C言語はコンピュータに近いので、おすすめします。ちなみに、覚えておくべきすべてのデータ構造はこの[記事](https://www.foresight.jp/fe/column/data-structure/?srsltid=AfmBOoptCMcCVbNotYXdRKs32HIzb7NLwHXhMrWpXtuB2aBh3nbPuMXg)に書いてあります！  
2. 過去問じゃなくて、演習問題を練習する。[LeetCode](https://leetcode.com/)（英語ですが、この[動画](https://www.youtube.com/watch?v=y04JFqHTPAQ)みたいな日本語の解説も多いです）や[AtCoder](https://atcoder.jp/?lang=ja)のようなサービスは必要不可欠です。
3. ある程度データ構造を理解したら、過去問に挑む。難しすぎたら、わからない概念をメモして①、②を繰り返す。  
4. 【ボーナス】オブジェクト指向の言語で（Java、C\#、Python）データ構造を実装してみよう！

# 新シラバス対策

新シラバスは2024年の10月から適用されました。過去問がないとどうやって勉強していけば良いのかと不安になる人が多いと思います。おすすめとしては、[解説動画](https://www.youtube.com/watch?v=EEHWUaWJGmA)を見ることです。更に勉強したい方は、[変更されたシラバス](https://www.ipa.go.jp/shiken/syllabus/nq6ept00000014lt-att/youkou_ver5_3.pdf)を確認し、知らない単語を暗記したほうが良いでしょう。新シラバスは必ず出題されますが、単語の意味さえ分かっていればなんとなく行けると思います。

# 試験の意味不明なところ

まず感じたのは、日本では資格に対して執着を持っている人が多いなあということです。このような試験は、欧米にはほぼないと思います。

かなり疑問に感じたのは、**電卓禁止**というルールです。エンジニアとして仕事をするときに電卓が使えないという状態はありえませんね。コンピュータは人間と違って計算ミスをしないので、わざわざ暗算するということは普通しません。

さらにびっくりしたのは、コードを読み正解を選ぶという方式です。コンピューターでせっかく受験するのに、[LeetCode](https://leetcode.com/)や[HireRoo](https://hireroo.io/)みたいなシステムをなぜ使わないのでしょうか。この試験に合格しても、**プログラミングができる証拠には全くなりません。**

## そもそも受ける意味ある？

結論から言うと、ほとんどの人にとって受ける意味はないでしょう。この資格を取って就職に有利になったという話も聞いたことがありません。ただ、会社によってはこの資格に合格することで手当がもらえたりするみたいです。

CPUやOSの根本的な知識は大事ですが、検索エンジンも計算機も使えない状態で、細かい知識や計算まで問われるのはおかしいと思います。

# 最後に

初めて過去問を解いたときの正答率は二割以下で、絶望感しかありませんでした。しかし、10日間ひたすら練習と勉強を積み重ね、本番は無事クリアすることができました。この試験を受けたことによって、久々に難しい壁を乗り越えられた気がします。

# ためになった教材・ブログ

自分が使って面白いや合格に貢献したと感じた教材、ブログなどをここにまとめます！

- [過去問道場](https://www.fe-siken.com/)  
- [教科書](https://www.amazon.co.jp/%E3%82%AD%E3%82%BF%E3%83%9F%E5%BC%8F%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88IT%E5%A1%BE-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E4%BB%A4%E5%92%8C07%E5%B9%B4-%E3%81%8D%E3%81%9F%E3%81%BF%E3%82%8A%E3%82%85%E3%81%86%E3%81%98/dp/4297144727)  
- [https://qiita.com/Iyugo/items/328d67dc9c766b49cf6b](https://qiita.com/Iyugo/items/328d67dc9c766b49cf6b)