データベーススペシャリスト試験合格に向けた学習過程をまとめてみる


自分自身の経験を思い出しつつ学習過程を書いてみる。

私自も先人たちの合格体験記を参考にしながら試験勉強をしてきた経緯もあったので、
いつかは私も貢献する側に回れると良いなと思っていた。

2016年という少し古い情報ながら、合格を目指す方々の参考になれば...。


# はじめに

受験当時の私は金融系SIerのアプリケーションエンジニアという立場だった。
（今はPM的な役回りが増えたけど大差なし）
アプリケーションからSQLでDBアクセスするコードを書いたりレビューしたりする立ち位置であって、
DBA系の業務はインフラ専門部隊にお任せという役割分担で、自分自身ではあまり経験のない状態から学習開始。

一般的には実務経験者であっても200時間程度の学習時間が必要と言われているようで、
私自身も計測はしていないもののそれぐらいは学習したかなと思う。


# 学習のロードマップ

大別するとおおよそ以下４段階で学習を進めた。


1.基礎知識習得フェーズ
2.午前II対策フェーズ
3.午後I対策フェーズ
4.午後II対策フェーズ

学習期間はおおよそ半年ほど。
1.基礎知識習得〜2.午前II対策を極力早期に終えて、
3.午後I対策、4.午後II対策にできる限り多くの時間を割くペース配分とした。

この学習プロセスは以下の本に準拠して計画している。
三好(2016). 情報処理教科書 データベーススペシャリスト 2016年版 翔泳社

<img width=200 src="https://www.seshop.com/static/images/product/18318/L.png">


少し脱線するが、この本にはロードマップの策定から午後対策に至るまで終始お世話になった。
親しみを込めて、以下「みよちゃん本」と呼ばせていただく。

この本を購入する場合は必ず最新版を選ぶことをお勧めする。
読者特典として過去数十年分の過去問解説資料がダウンロードできるようになるからだ。
後述する通り私はこの読者特典を使い倒して試験対策を進めた。


# 1. 基礎知識習得フェーズ

教科書的な本をさらっと一通り読み通す。

個人的には以下の本を好んで読んでいる。

山本(2012). 体系的に学ぶデータベースのしくみ　第2版 日経BP社

<img width=200 src="https://m.media-amazon.com/images/I/41Nq+VPIz7L._SY344_BO1,204,203,200_.jpg">

ただ好き嫌いが分かれる本のようで、Twitterのあるフォロワーさんからは難しいと不評だった。
私は詳しくてわかりやすい良書だと思うんだけどな...。

どのような本であれ試験範囲を網羅していて最後まで通読できそうなものを選ぶと良いと思う。
どこに何が書かれているか把握するレベルでさくっと読み終えて終了。

SQLは実際に手を動かしながら学習した方が学習効率が良いので、
適当なRDBMSをPCにインストールして実際に動かしながら覚えると良い。

私自身はPostgreSQLとMySQLを自宅のPCに入れてあれこれとSQLを書いて動かしてみた。


# 2. 午前II対策フェーズ

IPAが公開している過去問を解んでは、みよちゃん本の読者特典の解説資料を読み込むことを繰り返す。

解説を読む時は問題文に対する正解を覚えるのは当然のこととして、
間違いとされる選択肢がなぜ間違いなのか説明できる程度に理解していく。

理解度が足りないと感じるところがあればスポット的に教科書に戻って読み直す。

4〜5年分ぐらい解いていくと、だいたいコンスタントに7割程度取れるようになってきたのでそこで学習終了。

### 後日
午後対策に完全集中しているうちに午前の対策効果が薄れてきているのではないか？と不安になって、
問題を解き直してみたことがあったが、初見の問題でもで8割近いスコアになった。
午後対策をしていると勝手に実力が上がっていくようだ。
もう午前IIは対策不要と判断して完全放置することにする。


# 3. 午後I対策フェーズ

ようやくここからが試験対策の本番。

個人的にはいかに早く基礎を固めて（≒午後IIでコンスタントに合格点が取れるようになって）
午後問題の対策期間をどれだけ長く確保できるかが合否を分けるポイントになると考えている。

ひたすらIPA公式の過去問を解いては、みよちゃん本の読者特典の解説を読むことを繰り返す。

午後Iでは全3問が出題されてそのうち2問を選択して回答するが、
問題ごとにデータベース設計、SQL（+2014以前までの基礎理論）など主要なテーマが設定されている。

時系列に沿ってひたすら解いていくのも一つのやり方とは思うが、
私自身はたとえば、まずは設計の問題ばかり、つぎはSQLの問題ばかり...と
テーマごとに連続で解いていって個々に基礎力を固めていく作戦をとった。

基礎力不足を感じたらやはり教科書に戻って読み直し、
マニアックなSQLが出題されたら実際にコードを組んでみて挙動を確認。

2014年ごろから出題傾向が変わって「基礎理論」は単独では出題されなくなったものの、
2016年時点ではその方向性が続くかどうかは読めなかったので一応手を抜かずに対策した。


午後Iは制限時間90分で3問出題されてそのうち2問を選択するので、1問あたりにかけられる時間は最大45分となる。

氏名・受験番号を書いたり問題選択をしたりする余裕も加味すると実際にはもっと短時間で解かなくてはならない。

ただ過去問演習をするうえでは、私自身は制限時間を経過したらそこで切り上げるようなことはせず
たとえ制限時間をオーバーしても一旦最後まで解ききってから解説を読むことにしていた。

心配しなくても解答スピードも精度も徐々に上がっていく。

演習を繰り返すうちに徐々に1問あたり45分未満で解き切れるようになり、
だいたい6割以上の得点が取れるようになってきたところで午後IIの対策も並行して開始する。

午後Iは午後IIと並行しながら進め過去10年分以上を解いた。


# 4.午後II対策フェーズ

午後IIは120分制限で2問出題されてうち1問を解答する。

現在では問1で物理設計、問2で概念設計という傾向が定番化しているものの、
物理設計が連続で出題され始めたのが2014年ごろからで、2016年時点ではその傾向が続くか予想しづらい状態だった。

### 概念設計対策

一旦概念設計を本命と位置付け、概念設計が解けなかったら物理設計に切り替える作戦で学習を進める。

ここでもやはりIPA公式の過去問を解いてはみよちゃん本の過去問解説を読み込むことを繰り返していった。
制限時間の考え方も午後Iと一緒で、120分は一旦の目安として最後まで解ききってから解説を読み込んだ。

8年分ぐらい演習を繰り返していくにつれて徐々にスコアは上がり、
合格水準をクリアする回が増えてきたが、どうにもスコアが安定したとは言いづらい状況になった。

自分自身が金融系のSIer勤務ということもあって、
金融業界を舞台にした問題文であれば業務フローが容易にイメージできる一方で、
製造業や物流などの未経験業務が舞台になるとどうしてもイメージが湧きづらいのがその一因と考えられたので、
業務知識を補完する意味で以下の本も通読してみた。

ITのプロ46（2014）ITエンジニアのための【業務知識】がわかる本 第4版 翔泳社
※今は第五版が最新版
<img width=200 src="https://www.seshop.com/static/images/product/17046/L.png">

### 物理設計対策

本命は概念設計という位置付けではあったものの、保険の意味で物理設計の方の対策も開始した。

データサイズ、制約、ストレージ容量、パフォーマンスなどが中心の問題で、
実際に解いて、みよちゃん本の解説を読んでみるサイクルを繰り返してみると、
苦労してスコアを上げていった概念設計よりも物理設計の方が比較的容易にスコアが上がっていった。

特にデータ所要量計算の設問は2年連続ほぼ同じ計算要領で出題されており、
計算方法を覚えておけば確実に満点が見込める設問だとさえ言える。

ただ、物理設計は2014年が初登場で2015年は連続出題されていたものの、
2016年にもその傾向が続くか否か予測しづらいことは懸念材料だった。
（今となっては杞憂だった。2022現在に至るまで物理設計の出題は続いている）

半分賭けになるが作戦を変える。
午後IIの本命を物理設計にし、出題されなかったら概念設計に切り替える。



# 試験当日

### 午前I
免除。

### 午前II
さすがに余裕。
大幅に時間を余らせて終了。
2周ぐらい見直しをしてそれでも10分ぐらい時間が余って最後はぼーっとしていた。
（最後の10分は退室禁止なので）

### 午後I
1問目は問1の駐車場管理の問題を選択。
問題は関数従属、正規形、概念データモデル、関係スキーマなど王道系。

2問目は問2の卸業者の受注・出荷・発注・在庫管理・販売分析業務の問題を選択。
少し苦手意識のあった物流系だったが、業務知識を補完する対策の効果か業務フローがイメージできる。
問題はトランザクション、差分／増分バックアップ・ログを用いた復元などで、これも過去問でしっかり対策済。

自信がない設問もあったものの、たぶんここで落ちることはないだろうなという手応え。

ちなみに解かなかった３問目のテーマは「セキュリティ」。
どの試験区分であってもセキュリティは題材に含めるというIPAの宣言は知っていたけど、
まさかデータベーススペシャリスト試験で大問1個まるまるセキュリティに割くのか！と衝撃を受けつつ敬遠した。
（後日解いてみたら権限設定、VIEWの設計、SQLなどの複合問題で全然身構えるほどのものではなかった）

### 午後II
本命は物理設計。
今年も出題されますように...と祈るような気持ちで開始。

無事出題されていたので迷わず問1を選択した。
データ所要量計算も前年と変わらず出題されていてこれは僥倖。
概念データモデルがカーディナリティ付きだったりデータ移行も絡めた問題になっていて
少し捻りが加わっていたけどまあ対策済なので大丈夫。
順当にサクサクと解いていく。

一瞬手が止まったのは次の問題。

<img width=500 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978246/092483c8-bf9a-5222-f293-655e03d6e8ee.png">

...これセキュリティの問題だ。
（2016年当時の私はセキュリティ系未対策）

何も思い付かず「セキュアプログラミングが必要になり開発効率が低下する」みたいな適当な答えを埋めた。

IPAによる解答例はこちら。
<img width=500 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978246/92691cbc-687e-db49-82a7-0468a4d4ddab.png">

ですよねー。
完全に不正解だわ。

気を取り直して続きの問題も解いていって制限時間内に終了。


# 結果

2016/6/17合格発表
<img width=500 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978246/5acc01eb-1a61-c21e-2077-cf9bf5175c95.jpeg">


2016/7/2証書も届いた
<img width=400 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2978246/3d9414e4-81e0-d6a1-a4a1-10676f7ea6fa.jpeg">


# おわりに

資格を取ったからといって業務内容が変わったりということは特になかったが、
データベースに関連するところは自信をもって仕事を進められるようになったように思う。

副次効果として？前提知識がついたお陰でデータベース関連の書籍は苦労せず読めるようになった。

私にとっては初めての高度区分試験への挑戦で、学習方法を確立するまでは少し苦労をしたところもあったが、
ほぼ同様の学習プロセスを適用することで他の高度試験も続けて2つ取得できた。
有効で再現性のある学習プロセスを確立できたことも良かったことの１つだと考えている。

総じて挑戦して良かった。

半分自分の挑戦記録のような記事になったが、合格を目指す人の参考になると幸いである。