基本情報技術者試験　午後問題　分野別勉強法と得点プラン

## この記事について

**午後問題は特有の難易度のブレがあります。**

午前問題は6割程が過去問を流用していたという性質上、過去問を**80点**から**90点**取れていれば安定して**合格**を狙う事が出来ましたが、
午後問題は数年の過去問で**○○点**を取れていれば安泰という指標がありません。

【アルゴリズム】の分野が特に特徴的で、その他の選択分野でも問題によって難易度のバラツキがあるため、
対策方法を考えるのが非常に難しく、若干運の要素もあります。


※過去問から各分野ごとにどんなジャンルが出題されていたかをまとめているサイトを参考に貼っておきます。
分野ごとにどれだけ**ジャンルのブレ**があるかが分かると思います。

https://www.seplus.jp/dokushuzemi/fe/fenavi/gogo_arukikata/trend_to_questions_at_pm/

そこで、この記事では

**第一章　この分野は勉強しなくても問題ナシ！**
**第二章　分野別の勉強方法とポイント**
**第三章　得点プランと選択問題の選び方**

に分けて、午後問題を安全に合格するためのポイントを紹介します。

**午前対策はこっちで書きました。**

https://qiita.com/108_130_95_80_85_102/items/166b1edb4e4d464b03fa

## 第一章　この分野は勉強しなくても問題ナシ！

意外な事実ですが、午後問題は勉強しなくても全く試験に影響がない分野が存在します。

**それは、【ネットワーク】と【マネジメント、ストラテジ系】です。**

<br>

| 問                                | 分野                                                                                             | 必須/選択                                                | 配点   | 
| --------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------- | ------ | 
| 問1                               | 情報セキュリティ                                                                                 | 必須                                          | 20点   | 
| 問2~4                             | ・ハードウェア・ソフトウェア<br>・データベース<br>・ネットワーク<br>・ソフトウェア設計       | 選択<br>4問中3問がランダムに出題<br><br><br>| 15点 | 
| 問5                               | ・プロジェクトマネジメント<br>・サービスマネジメント<br>・システム戦略<br>・経営戦略・企業と法務 | 選択<br>4問中1問がランダムに出題<br><br> | 15点   | 
| 問6                               | データ構造/アルゴリズム                                                                          | 必須                                          | 25点   | 
| 問7 | ・C <br>・Java<br>・Python<br>・アセンブラ言語（CASLⅡ）<br>・表計算ソフト                       | 必須<br>1問選択                  | 25点   | 

<br>
午後問題の出題形式と配点は以上のようになっており、問2~5については合計4問出題されるうちの2問を選択するという形式になっています。

この選択問題である問2~5の【ネットワーク】と【マネジメント、ストラテジ系（※問5）】を捨てます。
（※試験制度改定前はアルゴリズム、ソフトウェア開発（プログラミング）の配点がそれぞれ**20点**づつで合計**40点**であったため、この2つの分野に関しては基礎的な知識だけ確実に正解し、
後半部分の応用的な問題は捨てるという戦略がよく取られていたようですが、改定後にそれぞれ**25点**づつに引き上げられ、合計**50点**になってしまったため**捨てるリスク**が増加したのでその方法はオススメしません。）

それぞれ捨てる理由について解説します。

**【ネットワーク】**
過去問の年度によって難易度の違いが大きすぎます。

これといった傾向も特にないため、的を絞って勉強することが難しく、安定して高得点を狙うことがかなり難しい分野です。

そして、【ネットワーク】は完全に捨てても問2~4はランダムに3問出題され、問5を含めて2問選択するという性質上、
どのパターンで出題されても、問2~4のうち1問は完全に捨ててそもそも**選択しない**という事が可能です。

そのため、この問2~4のうち一番難易度にブレがある【ネットワーク】は難しい問題を引いた時のリスクが高いため、捨て問題になります。
<br>
【ネットワーク】を捨てても何の影響もないことは↓のパターン分けの説明で詳しく紹介されていました。

https://qiita.com/yusuke_blog1026/items/d6b079fa026ce6776773

**【マネジメント系・ストラテジ系】**
マネジメント系、ストラテジ系は4つの分野から1問出題されるという形式です。

そして難易度は総じて低く、初見で解けるものばかりであるためそもそも特に対策をする必要が無いという特徴があります。

出題される問題は完全に国語の問題であり、大抵の問題は問題文の中に答えが書いてあるため特段知識が必要というわけでもありません。

そのため点数を取ること自体は簡単であり、全く勉強もしないし選択もしない【ネットワーク】とは異なって、**勉強しない（してもしなくても変わらない）が選択するかもしれないという立ち位置になります。**

しかし、問題の種類によっては解くのにかなり時間がかかったりするため、実際の試験で選択するかどうかは当日の問題次第で、早く解けて確実に点が取れそうな問題を引いたら選択するといった形になります。

実際の試験で選択するかどうか、選択する具体的な基準については、
**第三章　得点プランと選択問題の選び方**にて紹介します。

:::note info
ネットワーク、マネジメント系、ストラテジ系の学習優先度は低い
:::













## 第二章　分野別の勉強方法とポイント
分野別にそれぞれの特徴と勉強方法を紹介します。

### 【情報セキュリティ】重要度★★★★★難易度☆☆☆☆★※必須
**・特徴**
最重要科目の一つ。

なぜか試験制度改定で配点が上がったボーナス問題です。

午前問題の延長と行った感じで難易度がかなり低く、問題の幅もかなり狭い事から難しい問題に当たって全然点数が取れなかったという心配もありません。

満点も普通に取れる程度の難易度であるため、ここをしっかりと抑えるかどうかで合格率も変わってきます。

**・対策方法**
この分野の基本的な学習方針としては、午前と同様に[過去問道場](https://www.fe-siken.com/fekakomon.php)で過去問演習を行うことです。

ここで20点を獲得しておけば、80点満点中40点を取れば合格の試験に変わるため、
[過去問道場](https://www.fe-siken.com/fekakomon.php)では、過去問の全年度を全て100点取れるくらいにしておきたいところです。



### 【ソフトウェア・ハードウェア】重要度☆☆★★★難易度☆☆☆☆★〜☆☆★★★※選択
**・特徴**
試験制度改定でそれぞれ独立していたソフトウェアとハードウェアが合体したため、少し学習範囲が広がりました。

基本的には2進数や論理演算、簡単なアルゴリズムといった午前問題の応用といった感じですが、簡単な問題もあれば結構数学力が求められるような問題もあります。

問題によって難易度のブレが少しあるため、簡単な問題を引いたときは【情報セキュリティ】同様満点も狙える分野です。

**・対策方法**
この分野も基本的には[過去問道場](https://www.fe-siken.com/fekakomon.php)で演習を繰り返すだけで対策は十分です。



### 【データベース】重要度☆★★★★難易度☆☆☆★★※選択
**・特徴**
情報セキュリティの次くらいに高得点を取るのが簡単な分野です。

基本的に「特定の絞り込みや表示順変更をしたい時に使うSQL」が問われる問題しか出ないので、
基礎的な構文のSELECT,FROM,WHERE+α(ORDER BY DESC/ASKなど）が理解出来ていれば得点率にもブレがなく、6割はまず切らないくらいの難易度です。
（※たまに制約に関する問題が出るので、少し運ゲー要素もあり）

**・対策方法**
対策としては[過去問道場](https://www.fe-siken.com/fekakomon.php)で演習を繰り返すだけでも十分ですが、[スッキリわかるSQL入門](https://www.amazon.co.jp/スッキリわかるSQL入門-第2版-ドリル222問付き-スッキリシリーズ-中山清喬/dp/4295005096)等で基礎的な構文を理解しておくと学習が進めやすいです。

個人的には、[出るとこだけ-基本情報技術者-午後](https://www.amazon.co.jp/情報処理教科書-出るとこだけ-基本情報技術者-午後-第2版/dp/4798162175/ref=sr_1_2?keywords=出るとこだけ+基本情報技術者&qid=1644405032&s=books&sprefix=出るとこだけ！%2Cstripbooks%2C242&sr=1-2)に書いてあるテクニックが一番助かりました。

SQLの性質から逆算して選択肢を見るだけで正解が分かるようになるテクニックが複数あるため、余裕のある方は見ておくと役立つと思います。

### 【ソフトウェア設計】重要度☆☆★★★難易度☆☆☆☆★〜☆☆★★★※選択
**・特徴**
フローチャート、UML、E-R図などの図形問題が出ます。

一瞬で解けるものから、時間がかかって面倒くさい問題まで結構難易度にブレがあります。

**・対策方法**
基本的には【ソフトウェア・ハードウェア】と同じ要領の対策で十分で、[過去問道場](https://www.fe-siken.com/fekakomon.php)で演習を繰り返しておけば大丈夫です。

### 【アルゴリズム】重要度★★★★★難易度★★★★★※必須
**・特徴**
必須問題でありながらアルゴリズムで高得点を取れれば受かるし、コケると落ちるくらい重要な分野です。

難易度は他の選択問題と比べ物にならないくらい高く、1問解くのに1時間くらいかかります。

問題ごとの難易度のブレも特に大きく、全く分からない問題が出たら20点や30点を平気で出してしまうので、問題運で落ちたくない場合は特に幅広く対策する必要があります。

実際に過去問を数年分やってみると分かりますが、
**ダイクストラ法**といった少し**難易度の高い**アルゴリズムやオリジナルの複雑なアルゴリズムなど様々な問題が過去に出題されています。


**・対策方法**
対策方法としては最終的には[過去問道場](https://www.fe-siken.com/fekakomon.php)で演習を繰り返すことになるんですが、
いきなり問題を解いてみても0点だったり2時間3時間かけても全く意味が分からなかったりと、絶望するので特に対策を考える必要があります。


結論から言えば
色々と試した中で一番良かった教材が、YouTubeチャンネル[文系でもわかる!IT勉強会](https://www.youtube.com/playlist?list=PLCHgb5A4oO6nTjEtd6svleCbdG0vfWpvF)です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1956427/cb0712e6-1aa6-ed14-7eac-e92d191b8904.png)


このチャンネルの基本情報アルゴリズムの再生リストを全部見ておけば普通に[過去問道場](https://www.fe-siken.com/fekakomon.php)で点が取れるようになるくらい優れた解説をしてくれるチャンネルでした。YouTubeのある時代に生まれてよかった。

対策の基準としては

**①1時間程で解く**
**②6割取れる種類の問題を出来るだけ増やす**
**③4割以下しか解けない種類の問題を作らない**

をクリア出来るレベルまで持っていく事が重要になります。


**①1時間程で解く**

実際の試験時間では時間配分を考える必要があり、アルゴリズムに使える時間は1時間程が限界です。

それ以上を超える場合は他の問題を解いて点数を稼いでいったほうが効率的なため、練習段階から1時間を切ることを目標に取り組む必要があります。



**②6割取れる種類の問題を出来るだけ増やす**

【情報セキュリティ】などの選択問題は100点を目指せる分野ですが、アルゴリズムに関しては無理に100点を目指す必要はないです。

基本的にはアルゴリズムの問題では、「ある一定条件で並び替えを行うため」に様々なソートを使用してデータの並び替えを行う、という問題の中で正確にデータの流れを追ったり、実行回数の計算をする力が求められます。

そのため、この「ソートの特徴」を理解しておけば類似のソートを使う問題に対しては、全く点数が取れないということは無くなります。

逆に、全く違う性質の「ソート方法」を用いる問題を出されると急激に点数が落ち、解く時間も増加するため、出来るだけ多くの種類のソート方法を理解しておく事が重要です。

ここで役に立つのがYouTubeチャンネル[文系でもわかる!IT勉強会](https://www.youtube.com/playlist?list=PLCHgb5A4oO6nTjEtd6svleCbdG0vfWpvF)です。

ヒープソート、クイックソート、マージソートなど各種ソート別にどういった仕組みで並び替えが行われているか？やどうしてそれを使うのかといった事まで分かりやすく解説してくれるので、各種ソートについて理解を深める事が出来ます。

**③4割以下しか解けない種類の問題を作らない**

4割、5割の得点率であれば選択問題などの得点次第で**合格点6割**に到達することが可能ですが、
4割を切ってくると配点の性質上、アルゴリズムとプログラミングが25点と一番高いため、他の問題をほぼ満点レベルに持っていかなければカバーしきれなくなります。

アルゴリズムの問題では、全くやり方が分からない種類の問題が出てきた場合、20点や30点を取ることは普通に起こりうるので、最低でも4割以下しか解けないような種類の問題を事前に出来るだけ潰しておくことが重要になります。

### 【プログラミング(Java)】難易度★★★★★重要度★★★★★※必須

**・特徴**
Javaしか対策をしていなかったので、Javaの解説をします。

今後受験予定の方で、資格を取ることだけが目的であればJavaを選択しないことをオススメします。

Java対策としては、[スッキリわかるJava入門](https://www.amazon.co.jp/スッキリわかるJava入門-第3版-スッキリシリーズ-中山清喬/dp/4295007803)が有名ですが、これを1冊マスターしたくらいでは6割取ることは不可能なくらいの難易度です。

[スッキリわかるJava入門](https://www.amazon.co.jp/スッキリわかるJava入門-第3版-スッキリシリーズ-中山清喬/dp/4295007803)をマスターした上で、
これよりも難易度の高い[基本情報技術者試験のJava問題がちゃんと解ける本](https://www.amazon.co.jp/情報処理教科書-基本情報技術者試験のJava問題がちゃんと解ける本-坂下-夕里/dp/4798128112)に書いてある内容でやっと問題を解くためのスタートラインに立ったくらいの難易度であるため、

教本1冊で十分得点が取れると言われている表計算などに比べると難易度も勉強時間に対する得点率も全然違います。
確実に試験に合格することが目的であれば選択する必要はないです。（実際の現場で使うレベルらしいので、資格目的ではなく勉強目的ならありだと思います）

**・対策方法**
対策としては、[過去問道場](https://www.fe-siken.com/fekakomon.php)で問題を解く→Eclipseなどで実際にコードを書き動かしてみる→デバッグ機能で詳細な動きを確かめる
という演習を繰り返し、【アルゴリズム】対策と同様に出来るだけ得点を大幅に減らさないように幅広く対策を行っておく事が重要です。

実際の過去問では、[スッキリわかるJava入門](https://www.amazon.co.jp/スッキリわかるJava入門-第3版-スッキリシリーズ-中山清喬/dp/4295007803)や[基本情報技術者試験のJava問題がちゃんと解ける本](https://www.amazon.co.jp/情報処理教科書-基本情報技術者試験のJava問題がちゃんと解ける本-坂下-夕里/dp/4798128112)にも詳細に書かれていない内容で、Println()メソッドをtoString()メソッドで代用出来ることを知らないと解けない問題があり、その問題が後の問題を解く前提条件になっていたりするので、万全な状態で試験に臨むことはかなり難しいと思います。

この分野に関しても【アルゴリズム】同様に配点比率が高いため、他の分野でカバーしきれない点を取らない事が最優先になると思います。

## 第三章　得点プランと選択問題の選び方

実際の試験では、150分と時間が限られているため、時間が足りないと言われる午後問題では、時間配分や選択問題の選択基準などをあらかじめ考えておく必要があります。

### 【選択問題の選択基準】

午後問題の出題形式は以下のようになっています。

<br>

| 問                                | 分野                                                                                             | 必須/選択                                                | 配点   | 
| --------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------- | ------ | 
| 問1                               | 情報セキュリティ                                                                                 | 必須                                          | 20点   | 
| 問2~4                             | ・ハードウェア・ソフトウェア<br>・データベース<br>・ネットワーク<br>・ソフトウェア設計       | 選択<br>4問中3問がランダムに出題<br><br><br>| 15点 | 
| 問5                               | ・プロジェクトマネジメント<br>・サービスマネジメント<br>・システム戦略<br>・経営戦略・企業と法務 | 選択<br>4問中1問がランダムに出題<br><br> | 15点   | 
| 問6                               | データ構造/アルゴリズム                                                                          | 必須                                          | 25点   | 
| 問7 | ・C <br>・Java<br>・Python<br>・アセンブラ言語（CASLⅡ）<br>・表計算ソフト                       | 必須<br>1問選択                  | 25点   | 

<br>
問2〜問5については当日ランダムに4問が出題され、そのうち2問だけ答えるというシステムになっているので、まず最初にどの問題を選択するかを吟味する時間が必要です。

選択する基準としては

**・簡単そう**
**・早く解けそう**
**・間違えることがなさそう**

の3つを基準に選択するといいです。

例えば、ハードウェア・ソフトウェアで計算ミスが起こりそうで怖い問題やマネジメント系の問題で時間がとにかくかかりそうな問題は、問題文や選択肢を見ればすぐに判別出来ると思います。
（計算問題への対策がしっかりしてあって、他の選択問題よりも確実に点が取れそうなら選択してもおｋ）

他の選択問題の問題文や選択肢を見て、上記の3つの基準に当てはまる度合いが高い場合は、わざわざ間違えやすい問題を選ぶ必要はないので、そこを基準に選択問題を選びましょう。

### 【問題を解く順番】
最初に問題全体の問題文と選択肢を見た後に、問題を解いていく順番としては「簡単な問題から解いていく」ことをオススメします。

理由は単純で、試験中に時間の逆算がしやすいからです。

一番簡単だと思う問題から解いていけば、事前に想定していた時間よりも早く解ける可能性が高く、確実に合っていると確証が持てるものから得点を計算していけば、
試験中にどれだけの得点率で最後の問題でどれだけ点数を取ればいいといった計算が出来ます。

**「アルゴリズム苦手だけど、他の問題を解いた感じだとアルゴリズムで30点だけ取れば合格ラインに乗せられる・・・」**
と事前に分かっていれば問題の解き方も変わるはずです。

簡単だと思う問題から解いて、想像以上に難しい場合や想定時間を大幅にオーバーしてしまう場合は、どっち道難しい問題から解いても心境的には同じなので、難しい問題から解くメリットはないと思います。

### 【得点プラン】

安全に合格するために最も簡単な得点プランを紹介します。

【情報セキュリティ】８０％以上（16点）
【各選択問題】　　　７０％以上（10.5x2点）
【アルゴリズム】　　５０％以上（12.5点）
【プログラミング】　５０％以上（12.5点）

この割合で得点が取れていれば合格点の６０点を超えることが可能であり、
労力的にもそれぞれ無理のない範囲で狙う事が出来る得点ラインです。
（情報セキュリティ80%と選択問題70%よりもアルゴリズム、プログラミングで確実に50%取る方が難しい）

最低でもこの割合は取れるレベルまで勉強をしておけば得点プラン的に落ちる心配がないので、
このラインを**最低ライン**として勉強の目標を立てるといいと思います。
# まとめ

【ネットワーク】と【マネジメント、ストラテジ系】は捨てる

【情報セキュリティ】で20点ボーナスを獲得し、
【選択問題】で早く、簡単に、間違えない問題を選択し、
【アルゴリズム】と【プログラミング】で大幅に点数を落とさないか、
この3つが重要!!

目標となる最低ラインと得点プランは
【情報セキュリティ】８０％以上（16点）
【各選択問題】　　　７０％以上（10.5x2点）
【アルゴリズム】　　５０％以上（12.5点）
【プログラミング】　５０％以上（12.5点）