今回は基本情報技術者試験(FE)での午後問題について、おすすめする分野選択について紹介しようと思います。
本記事の執筆時点は2021年ですので2020年4月の変更点を考慮しています。
また、個々の分野の中の解説や対策法などは別途記事にしたいと思います。今回は「どの分野を選択するか」を主眼としますので、それぞれの対策について知りたい人はまた記述したらお知らせします。
私の基本情報の合格体験記もありますが、過去問を少し解いただけで絶対に参考にならないので改めてまずは分野選択について解説をしたいと思います。
基本情報技術者試験の午後試験について
基本情報技術者試験の午後試験は、長文の対問形式の問題です。
問題としては必須問題も含めて11問から5問を選択して回答する方式です。必須問題は確実に勉強する必要がありますが、選択問題はいくつかは捨てても大丈夫です。(私も苦手分野は完全に捨ててました。)
試験時間
午後試験の試験時間は13:00~15:30の150分間です。
問題数も多く、長丁場になっています。後半に集中力を切らさないように一度は試験時間と同じ時間帯で試験問題を解くということもしておいたほうがいいでしょう。
丁度午後の眠い時間帯にも重なるので前日に夜更かしなどは禁物です。
出題分野
出題分野は下記のようになります。
午後試験の出題分野は、「情報セキュリティ」と「データ構造及びアルゴリズム」を必須とし、テクノロジ系から3つ出題、マネジメントや戦略から1つ出題される4つの中から2つ選択、ソフトウェア開発(プログラミング言語問題)の5つ(C/Java/Python/アセンブラ/表計算)から1問選択となっています。
また、配点としてはアルゴリズム、プログラミングが25点、情報セキュリティが20点、その他が15点となっており、正直なところ選択問題がどうする以前に必須の分野だけで70点となってます。まずはこれらを対策しなければ絶対に受かりません。
分野、プログラミング言語のおすすめ選択
問2~問5の分野の選択
私のおすすめは「ソフトウェア・ハードウェア」「データベース」「ソフトウェア設計」と、問5の「プロジェクトマネジメント」~「経営戦略・企業と法務」になります。
要するに、基本的には問5を1問解いて、あとは問2~問4で「ネットワーク」以外の解けそうな問題を解くという感じになります。
問5の選択について
問5に関しては、基本的に文章問題となっており、技術などの知識というより国語問題に近いです。
もちろん必要な知識はいろいろありますが、午前問題の知識レベルをしっかり持ち、かつ午後の過去問を対策さえできれば解ける問題です。
特に「プロジェクトマネジメント」と「サービスマネジメント」は知識がほとんどいらないです。初めて見た問題だとしても問題文をしっかり読んでしっかりと解答できれば大体の人は解けると思います。
ただし、長い文章が読めない人などは少し厳しいかもしれません。そういった人は何度も過去問を練習して問題慣れしておいてください。
あと、一つ注意点があって、この問5において「経営戦略・企業と法務」に関する問題が出た場合は捨ててもいいと思います。
私は捨てます。
特に法務に関する問題がでた場合は、法律を覚えてないと解けないので事前対策が結構必要になります。法律を覚えるのに時間をかけるくらいだったら他に時間をかけたほうがいいです。
なので、問5に関してが基本的にはほぼ選択してくださいというのですが、ただし法律に関する問題が出て解けそうになかったら問2~問4から2つ選択する、というイメージです。
また、法務以外の問題でも年によって難易度がまちまちになるので軽く問題を読んで理解できそうになければ捨てるという潔さも必要になります。
問2~問4の選択について
上記で挙げた通り、「ソフトウェア・ハードウェア」「データベース」「ソフトウェア設計」を選択することをお勧めします。
それぞれ個別に解説していきます。
ソフトウェア・ハードウェア
私が「ソフトウェア・ハードウェア」を選択する理由としては、出題される問題が午前問題とそこまでレベルが変わらないからです。
出題される問題は基礎的な知識を必要としているものが多く、応用で考える必要がありません。
なので、午前問題を勉強するにあたってしっかり問題と解答を理解して勉強していた人からするとこの「ソフトウェア・ハードウェア」は得点源となり得ます。
ただ、このソフトウェア・ハードウェアにも一つだけ問題があります。それは「出題範囲が広い」ことです。
ハードウェアとソフトウェアが一緒になっているので、「論理回路」「機械語命令」や「浮動小数点数」などのハードウェアの知識と、「探索木」「状態遷移図」などのソフトウェアの知識が必要になってきます。
なので、午後問題単体で考えるとそれなりに対策に時間はかかってしまいます。
しかし、午前問題の勉強がそのまま午後問題の対策に直結しますので、意外と勉強時間は多くはならないです。
ちなみにごくまれにソフトウェアの問題はほぼ事前知識なしの状態でも問題を読めば解ける問題もあります。そういったときはラッキーと思いながら解いてください。
データベース
データベースの問題は、正直一番対策しやすいです。
問題自体はそれなりに難しく、理解できるまでは時間がかかるかもしれません。
しかし、出題される内容がほぼSQLに偏っているため、SQLの勉強さえしておけば、高得点も狙えます。
SQLも、SQLの穴埋めとSQLの実行結果がどうなるかの二つはほぼ確実に出題されますので、対策は簡単です。
また、システムエンジニアには、「データベース」はほぼ必須知識です。
ネットワークに関してはネットワークエンジニアやインフラエンジニア以外はあまり使うことが少ないのに対し、通常のソフトウェアエンジニアとして業務を進めるにあたって、「データベース」が絡まないことはほとんどありません。
上流として要件定義をするにあたってもDBの話をしますし、開発するにあたってもデータベースの構造を意識したりSQLを書いたり、運用をする人でもSQLで現在のデータの調査など、さまざまな場面で使われます。
よって、SEのなりたての人や今後SEを目指す人で、「データベースが苦手だな…」って人は、今のうちにしっかり知識をつけておくのも悪くないと思います。
そういった点も含めて「データベース」はほぼ確実に選択すべきだと思います。
ソフトウェア設計
こちらもデータベースほどではないですが、出題される内容が限られており、対策がしやすいです。
フローチャートとUMLが出題されやすいので、この二つをしっかり理解しておけば点数を稼ぐことができます。
また、ソフトウェア設計の問題も結構な割合で問題文中に答えがあります。
なので、フローチャートの図などをしっかり読めるようにしておき、それに対して落ち着て答えるだけで済みます。勉強時間も他の分野より少なくて済むのでソフトウェア設計は選択するのがよいと思います。
ネットワーク
はい、私がおすすめしないのが「ネットワーク」です。
学生で専攻がネットワークの人や今後ネットワークをしっかり勉強したいって人は取ったほうがいいかもしれません。
ただ、午前問題やって意外とネットワークの問題が解けたよってレベルではまず解けないです。
午前と午後の問題は難易度が違っており、また、範囲も広く、毎年こういった問題が出題されるといった対策が非常に取りづらいです。
要するに難易度が高く、範囲も広い、という非常に面倒な分野となっております。
なので、ネットワークを選択しようとする人はある程度時間をかけることを覚悟しておく必要があります。
私は最初から捨てるつもりで一切勉強をしませんでした。大体の人はそれでいいと思います。
プログラミング言語の選択
ここは結構人によるのではないでしょうか。
大きく分けると「C/Java/Python」と「表計算」と「アセンブラ」に分類できます。
今までC、Java、Pythonでプログラミングをやったことがある人は迷わずその言語を選択しましょう。
PHPやRubyなど、選択肢にないけどプログラミング自体はやったことある人は「Python」あたりが言語としてわかりやすくておすすめです。
エクセルやマクロを使ったことがある人は表計算でしょう。また、プログラミングしたことがない、もしくはプログラミングやってみようと思ったけど難しくて全く分からないという人も表計算がよいと思います。
アセンブラはもちろん今までアセンブラをやってる人は選択するといいですが、そういう人は大体CかJavaをやっているのでわざわざアセンブラは選択しないと思います。ただ、今までプログラミングをやったことがなく、エクセルの関数も全くわからないという人にはアセンブラは意外とおすすめできます。
ではこれらを個々に見ていきましょう。
C/Java/Python
難易度自体はどれも大きく変わらないと思います。
好きなものを選択しましょう。
私は学部時代にC言語をやっており、大学院に入ってから少しだけJavaをやった程度でJavaをよく理解できていなかったのでC言語を選択しました。
Pythonに関しては始まったばかりで過去問が少ないので対策は少しだけ難しくなります。
ただし、CやJavaよりも理解しやすい言語となりますので、プログラミングやってないけど今後やりたいって人はPythonから取り組んでみるのもいいかと思います。
表計算
次に表計算です。
エクセルの関数やマクロについて出題されます。
昔だったら確実に表計算をお勧めしていたのですが、最近はあまりお勧めできないかもしれません。
私は比較自体はしていませんが、「明らかに昔に比べて難しくなった」とのもっぱらの噂です。
勉強したら十分解けるレベルではあります。ただ、昔は明らかに他のプログラミング言語より問題が簡単で、正直プログラミングが得意じゃないなら表計算一択でしょってレベルだったのが今は他の言語を知ってるならそっちでもあまり変わらないようです。
要するに今までが簡単すぎたってだけなんですけどね。
なので、プログラミングやったことない人やエクセルの関数を日常的に使ってる人などは表計算を選択した方がいいことには変わりません。
アセンブラ
アセンブラは他と比べると少し毛色が違いますね。
実は表計算と同じく、今までプログラミングをやったことない人にお勧めできる選択肢です。
何より、他の言語に比べて命令の数が少ないので覚えることが少ないです。
正直なところとっかかりは難しいですが、知識がゼロの状態から学ぶにはほかの言語に比べたら勉強時間が少なくできるのは確実です。
問題点をあげるとしたらOSや機械に近いところを触らない限り、今後ほとんど使う機会がないということですね。普通のSEであればまず使わないです。
表計算は大体の会社でエクセルは使うと思いますし、ほかの言語も一つ学べば別の言語を学ぶのに参考になったりしますが、アセンブラは書き方が特殊すぎてアセンブラできるから他の言語ができるようにはなかなか難しいです。
なので、プログラミングを今後しないけど基本情報には受かりたいって人向けかなと思います。
もちろんアセンブラやってる人はこれ一択だと思いますが。
まとめ
以上が私が思う基本情報技術者試験で選択すべき分野と言語を記述しました。
もちろん分野の選択は非常に迷うところではありますが、セキュリティ、アルゴリズム、プログラミング言語をしっかり勉強することが合格への近道だと思います。
ものによっては完全に捨てていいものもあるので、何とか勉強時間を確保して、7割程度取れるようにしましょう。6割ギリギリは目指さないように。
また、当日はわからない問題があっても焦らないようにしましょう。とりあえずわからなくても何か書いておけば正解になることもあります。
以上、少しでも参考になれば幸いです。
コメント