基本情報技術者試験の試験範囲「試験要綱」Ver. 4.2改定(2019秋,2020春以降の変更)による影響とか変更点をまとめてみた

#注

最新版にアップデートしたものを別記事として掲載済みです。
[「情報処理技術者試験の基本情報技術者試験における、試験範囲「試験要綱」Ver. 4.2～4.4改定について(2019秋試験対応版)」](https://qiita.com/ditflame/items/c6d36bedfcebcda475e6)

##はじめに
情報処理技術者試験は何年か一度、試験範囲の見直しが入るのですが
新たな試験要綱に関する[プレスリリース](https://www.ipa.go.jp/about/press/20190124.html)がIPAから出ましたね。(https://www.ipa.go.jp/about/press/20190124.html)
これによると、基本情報技術者試験は2019年春まで、2019年秋、2020年春からの試験はそれぞれ少し違う試験となるようです。
(なんかこの試験だけ見直しが多いよね…)

この変更点について下にまとめてみました。

まず、全体の変化をわかりやすく図示すると次のような感じになります。

||2019春まで|2019秋|2020春から|
|:--|:--|:--|:--|
|午前試験|現行と同じ|**新基準での出題**|**新基準での出題**|
|午後試験|現行と同じ|現行と同じ|**新基準での出題**|

##午前試験の新基準(2019秋以降)について
先の[プレス](https://www.ipa.go.jp/about/press/20190124.html)から要点を引用します。

>（3）午前試験での数学に関する出題比率の見直し（適用時期：2019年の秋期試験から） 
>理数能力を重視し、線形代数、確率・統計等、数学に関する出題比率を向上

つまり、理数能力を使って解くタイプの問題の比率が上がるという事なので、
次の様な論点は気を付けておいたほうが良いのかなと思いました。
・上に書いてある「線形代数、確率・統計等、数学に関する出題」そのもの
・稼働率の計算(MTBF,MTTR)
・MIPS値の計算
・ストラテジ系でありがちな試算させるタイプの問題

また、過去に情報処理技術者試験の大幅改定があって出題比率が弄られたケースで
思い出したのは、「高度試験で情報セキュリティに関する設問を増やす」という時なのですが、
その際は、セキュリティに関する設問が追加され、時間も追加されました。

ですが、今回のプレスにはこんなことも記載されていますね。

>具体的な見直しの内容は次のとおりです。試験時間、採点方式及び合格基準に変更はありません。

試験時間が変わらないので恐らく問題数も変わらないのでしょう。
(おそらく本質的な試験対策も、そう変わらないと思います。)

##結局、午前試験対策には何が必要なのか？
(※注：他に書いた記事のほぼ再掲です。)

結局のところ、用語と概念をどれだけ覚えてるかが午後の解答力にも効いてくるので、まず午前をしっかりさばけるようにしましょう。

予め準備しておくものとしては、
・教科書的なものを1冊
・過去問を印刷できる環境
・朱書き用のペン
・ルーズリーフ
・テープのリ(コクヨのドットライナーがお勧め。)
・はさみ
があると良いです。

以下、対応手順です。

1. 初回受験者は、まず適当な厚さの本(基本論点が乗っている教科書的なもの)を１～２回通読。
2. IPAのサイトに過去問( https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html )があるので、過去3年分(3年×春、秋で6回分になるはず)を**片面印刷**で印刷。
3. 過去問を解きましょう。前々回の試験問題から過去に遡って解いていきます。(前回と同一の問題は、過去に出た事が無いので、前回過去問は知識の抜け漏れがないかのチェックの為、最後に時間があれば解くぐらいの扱いで良いです。ただし、**2020年春試験を受験する人のみ**2019年秋試験の試験問題は**出題比率を見るため**、一度解いておいたほうがいいでしょう。)
4. 間違えた問題をルーズリーフに切り貼りして、ミスノートを作成しましょう。(解答導出手順や用語の説明は朱書きするもよし、過去問題集の正答がどこかで手に入る場合はそれも貼るのも良いでしょう。)

私が作ってたミスノートを貼りつけると、こんな感じ。(下記例はDBスペシャリストの問題ですが。)
![DSC_0206.JPG](https://qiita-image-store.s3.amazonaws.com/0/144657/8cff8782-e988-52c4-a89a-3243c0aaea70.jpeg)

あとは、4.で作成したミスノートを集中的にこなせば、7割ぐらいはコンスタントに得点できる様になっているでしょう。
(※試験の出題比率が変更された直後の2019年秋試験を受験される場合は、出題比率が調整されるため
　少し手厚く準備しておく方がよさそうな気はします。)

なお、あまりIPAの試験を受けてない人には認知されていない気がするのですが、午前の多岐選択試験で過去問から出る問題は、**問題と選択肢まですべて一緒の形で、過去問からそっくりそのまま再出題**されます。
（※注１：**そっくりそのまま出てこない場合は新問**です。新問出題率は過去の私のイメージでいうと、多くて2割ぐらいでしょうか。なお、新問 ≒ 新出題論点なので、本試験の午前で新問に出くわした場合は昼休憩のタイミングで用語をググってチェックぐらいはした方がいいでしょう。午後で同一論点の出題が出たりします（私が受けた時のセマネで本当に出たので…））
（※注２：高度情報の各種試験ですら同様です。この方針が変わるとすればまあ、高度から変わるでしょう…）

##新基準における午前試験対策について
先の[プレス](https://www.ipa.go.jp/about/press/20190124.html)から要点を引用します。

>（3）午前試験での数学に関する出題比率の見直し（適用時期：2019年の秋期試験から） 
>理数能力を重視し、線形代数、確率・統計等、数学に関する出題比率を向上

つまり、理数能力を使って解くタイプの問題の比率が上がるという事なので、
次の様な論点は気を付けておいたほうが良いのかなと思いました。
・上に書いてある「線形代数、確率・統計等、数学に関する出題」そのもの
・稼働率の計算(MTBF,MTTR)
・MIPS値の計算
・ストラテジ系でありがちな試算させるタイプの問題

実際、どういう出題が増えるのかは蓋をあけてみないとわからないですね…
ただ、トータルで６割を取ればいい試験なので、他分野の問題を重点的に解いておけば
受験者としてはあまり影響がないのでは？とも思っています。

##午後試験の新基準(2020春以降)について
大問の構成は以下の様にかわります。
冷静に考えたら、結構…激変だと思う。

・現行(2019年秋試験まで)→新基準(2020年春試験から)

|問番号|必須選択|選択数|配点|
|:--|:--|:--|:--|
|問1:情報セキュリティ    |〇 |1 |12→**20**|
|問2～7→問2～5|   |4→**2**|12→**15**|
|問8→問6:データ構造及びアルゴリズム    |〇 |1 |20→**25**|
|問9～13→問7～11:ソフトウェア開発(プログラム言語)|   |1 |20→**25**|

※現行：問2～7は以下の設問
・ハードウェア or ソフトウェア or データベース or ネットワーク　から3問
・ソフトウェア設計　から1問
・プロジェクトマネジメント or サービスマネジメント　から1問
・システム戦略 or 経営戦略・企業と法務　から1問

※新基準：問2～5は以下の設問
・ハードウェア or ソフトウェア or データベース or ネットワーク or ソフトウェア設計　から3問
・プロジェクトマネジメント or サービスマネジメント or システム戦略 or 経営戦略・企業と法務　から1問

何が変わったかを以下に書いていきます。

###変更点１：大問のトータルでの選択数が減少し、配点が増えた
　→問題の出題に割り振れる**ページ数は、一般的には問題の配点に正比例**します。
　　問題の配点が増えるということは、出題に使えるページ数が当然増えるので、結果として問いの内容が深くなるないし、広くなる方向になるでしょう。

###変更点２：情報セキュリティの配点が大幅に増えた
　→昨今の情報セキュリティ人材不足を踏まえて、配点を増やしているのだろうなと。これに伴い、
　　情報セキュリティマネジメント試験(セマネ)の受験者が受かりやすくなるのだろうと思います。**情報セキュリティ分野に
　　関しては**高度試験も(歴史的な経緯から)春秋両方で唯一開催されていますし、**得意分野にしておく**のが望ましいと
　　昔から言われていたのですが、さらにその傾向が顕著になってきている様に思います。

###変更点３：出題方針が昔の試験に近くなった
　→かなり昔の情報２種と言っていた頃や、基本情報技術者試験に名称変更された直後は、（うろ覚えな点もあるのですが）
　　試験の内容はテクノロジ系(ハード、ソフト、ソフトウェア設計)の設問＋マネジメント系(プロマネ、サービスマネジメント)の設問に集中していたのですが、その後改定が入って全ての分野からまんべんなく出題されるようになったんですよね。
　　(※注１：多分時期的にはITSSとか言い出したころ…)
　　(※注２：更に昔だと簿記とかが試験に含まれていた みたいな話を聞いた事があるので、その頃は多少ストラテジ分野も含んでいたといえば含んでいたようです。)
　　ですが、ハードウェア or ソフトウェア or データベース or ネットワーク or ソフトウェア設計　から3問中2問を選べばよいので、
　　**新基準だと他の分野(プロジェクトマネジメント、サービスマネジメント、システム戦略、経営戦略・企業と法務)は午前さえ通せれば無視しても大丈夫**になりました。
　　逆に**ハードウェア、ソフトウェア、データベース、ネットワーク、ソフトウェア設計で苦手分野があるとかなり厳しく**なります。(出題が深くなるのも相まってヤバい)

　　基本情報技術者試験は一応建前として「実務経験１年程度で受かる」想定で作っている試験だそうなので、
　　たしかにそれぐらいのＩＴエンジニアだとマネジメント系やストラテジ系は少し縁遠いし出題傾向としては減るよなぁ…というのはわかるところです。


##新基準における午後試験対策について
以下、今っぽい対策案を書いておきます。

###問1(必須) 情報セキュリティ
必須なのでがんばろう。応用情報でも情報セキュリティが必須、高度でも通年で受験可能なのは情報処理安全確保支援士試験のみ、更に各種スペシャリスト試験でもセキュリティに絡めた設問が頻発する（方針で出題されるようになっている）ので、得意分野にしておくのが後々の受験パスを考えても幸せだと思います。セマネを受けるのも**今まで以上に**良いでしょう。

###問6(必須) データ構造及びアルゴリズム
必須なのでがんばろう。どんな言語でも良い(基本の午後に出てくる言語で無理に頑張る必要はない)けれど、手を動かしてループ、データ構造(木やハッシュ)、探索、ソーティングアルゴリズムに関して自前で書いてみると何となく言ってる事がわかるようになると思います。(かつての自分もそうだったので)

###問2～問5(2問選択)
・ハードウェア
　技術変化の少ない試験領域。(計算機の基礎なので変わりようが無い。量子コンピューターが実用化されてメインストリームに乗ってくると話は変わるだろうけど。)
　論理回路は独特なので覚えるコストが少し高いが、エンベデッド系の基礎になるので知っておきたい(と思うけど人によっては要らないでしょうね…)

・ソフトウェア
　OSとかそっち系の話が中心
　基本的には知ってるか知ってないかで選択を決める事になるだろう…という気がします。ただしこういった設計の知識はシステムを組む上で有用で、学んでおいて損はないです。

・データベース
　比較的技術変化の少ない試験領域。(データベースにおける論理的な整合性を確保させるための理論は変わりようがないので)
　CRUDとcreate,alter,dropの各構文でテーブル作ってこねくり回せて、あとgrant構文周りで権限設定までできれば昔はよかったんですが今どれぐらいのレベル感が求められているのかは最近過去問解いてないのでわからないです。普段から触ってないと少ししんどいかもしれないですね。（特に学生さんとかは）
　SQLiteとかオープンソースDB(MariaDBとかぽすぐれとか)を入れて遊んでみるのが良いと思います。SQLServerとかOracleの開発者版でもいいでしょう。(注:Accessは標準SQLから外れたSQLしか受けてくれないケースがあるのでお勧めしません。)

・ネットワーク
　プロトコルは比較的技術変化が少ない(物理層のI/Fは3～4年経つと1世代変わったりする）ので、今の情報処理技術者試験は基本的にOSI参照モデルのデータリンク層以上を問う傾向なのでそんなに影響はないような…

・ソフトウェア設計
　システム設計的な観点での設問、技術変化は少ないのですが、対象とする物理的な業務に合わせたシステムの問いが来るので過去問をやっておくと一番幸せになれる大問な気がします。ちなみに昔の情報一種などでは、このカテゴリが必須設問で、得意分野にしておくことで一気に点が取れるようになるうれしい範囲でした。

・プロジェクトマネジメント or サービスマネジメント
　マネジメント系の問題は基本的には文章題です。読んで理解できれば解ける公算が大。ＩＴエンジニアで開発職なら関わる事も多い分野なので、知っておくに越したことはないのですが。

・システム戦略/経営戦略 or 企業と法務
　ストラテジ系の問題も基本的には文章題ですが、たまにお金の話とか法律の話が出てくる。無理だとおもったら逃げて良い。

###問7～問11(1問選択) ソフトウェア開発(プログラム言語)
C，~~COBOL~~ → Python，Java，アセンブラ言語(CASLⅡ)，表計算ソフトの5種から選択

とりあえず、はっきり言えるのはCや~~COBOL~~ → Python、Javaが超得意でずっとコード書いてるマン以外は**無理に多少知っているからといってそういう言語を選ばない方が幸せ**かもしれないです。
なぜかというと、各言語に対しての割り当てられる試験冊子のページ数は当然決まっているだろう(多分~~6ページぐらい~~ → 増えて8ページぐらいかな？)し、**同一の記述量であれば記述性の低い言語の方が当然ロジックは簡単**になるので、問題も単純な問いになります。
あと、**アセンブラと表計算は試験問題集巻末にリファレンスが絶対に付く**ので解答導出手順さえわかっていれば確実に点が取れるのは大きい気がします。
(※注：表計算は標準的な規格がない、アセンブラはアーキテクチャ差異による有利不利が出ないように独自にCASL2を定義してる　という理由でリファレンスが付いてるそうなんですが、Pythonはどうなるんでしょうね… ~~2019/02/07時点ではJIS規格化されてはいませんが、このまま春先までJIS規格化されていない状況であれば、リファレンスが付くのかもしれませんね。(Pythonで受けたい人はリファレンスを当てにせず、しっかり勉強したほうが良いと思いますが。)~~)
(※2019/08/27追記:Pythonはリファレンスは付かない事が明記されましたね。あと、あまり私も明示的に理解できていなかったのですがJavaはJIS規格ではなくOracleの言語仕様に準じているようです。 ソースは次を参照。https://www.jitec.ipa.go.jp/1_13download/shiken_yougo_ver4_2.pdf)

よって受かるためのお勧めは**表計算ソフト**か**アセンブラ言語(CASLⅡ)**です。
ただし、配点が20点から25点に増えている関係で出題ページ数も２割ぐらい増えるんじゃないかな…　と思っています。
結果、問われるロジックの解析能力や出題される問題数が増えるので、結構きつくなるのではという気がします。
※ページ数が線形的に増えたとしても、コードの長さに対しての複雑度は一般則として指数的に増える傾向があり、この性質が出題にモロに効いてくると辛いよね… と。
　そういう意味で複雑になったとしても程度が知れている表計算かアセンブラがやっぱり楽なのではと読んでいますが、どうなるでしょうか。

##おわりに
試験改定はなかなか対策が悩ましいですね。

まあ、ここまでの記載内容を見てもらうとわかると思うのですが、
ぶっちゃけ試験改定後の合格戦略のほうが組み立てやすいのは事実だと思います。
（問いが深くなる可能性はあるので、取得が易化するわけでは全然ないのだけど。）

こういった絶対評価系の試験対策は自分の点の取りやすいところで点を稼いで合格ラインの６０点にどう乗せるのか？
というのがほぼ合格戦略の全てなので、そういう意味では
・パターンワークで攻略できる午前をサクッと終わらせておき、
・情報セキュリティ、データ構造及びアルゴリズム、ソフトウェア開発(プログラム言語 ※表計算ソフト)をきっちり深堀り
・後の選択問題を取れそうなところでサクサク拾う
と、普通に合格できるんじゃないかなぁ… という気がします。

なにか指摘があればお気軽にどうぞ。