DBスペシャリスト受験記録

2022/10/9に実施された令和4年度秋期データベーススペシャリスト試験を受験しました。
せっかくなので受験までに取り組んだことを残しておきます。

# 受験の動機

ソフトウェアシステム開発業務の中では色々な開発領域がありますがデータベース関連の事でいつも弱みを感じていました。普段の業務ではアプリケーションの機能改善関係のことが多くデータベース関係は初歩的なことでもわからないことが結構ありました。
また、最近はMLのデータ基盤周りのことに興味を持ち、この界隈の技術をもっと知りたいなーと思ったためデータベースの事を勉強し始めました。
そして、せっかくなら目標があった方が勉強が捗ると思い受験することに決めました。

# 経歴

学生を卒業してからソフトウェア開発の仕事をしています。
2022年11月の時点で仕事歴は10年くらいになり、要望の聞き取りや、システムの設計やテスト工程まで一通りのフェーズの開発をしてきました。
資格は基本情報処理技術者と応用情報処理技術者を数年前に取得して、そこからなぜか上位資格には挑戦せずに今に至ります。
ですので、この受験は知識ゼロからのスタートではなく、ある程度システム開発の下地があった状態からの学習スタートでした。

# 受験スケジュール
データベーススペシャリストを受験しようと決めたのは2022年3月上旬くらいでした。
ですので、半年ちょっとの学習期間がありました。
はじめは試験対策のテキストに一通り目を通して試験内容を把握して、その後しばらくは過去問とテキストの復習を続けていました。ただ、それだけだとあまり深い理解が得られなかったので、5月くらいから他の参考書籍も読むようにして抜けている知識を埋めていきました。
8月くらいから仕事が忙しくなりあまり勉強に手が付けられない期間が続き、9月に入ってから急ピッチで午後試験対策等をして受験！という感じでした。

# 勉強方法
社会人にとって勉強時間の捻出と習慣化は大きな問題だ。さらに既婚で子供も生まれたばかり。
飲み会（最近はないが）や残業、家事、育児、家族行事、、、やることは山のようにある。その中でなんか時間を作って勉強をしなければならない。
そのために、朝の時間を活用した。頑張って早起きする。6時までには起きる。頑張って起きる。気合いだ。朝は参考書を読んだ。そして、会社までの通勤中にポッドキャストを聞きつつ読書。
勤務中は業務に集中するが、データベース関連のことを見かけるとそれをを調べるようにした。
仕事のお昼休憩は基本的に午前1 or 2の過去問を解く。
帰宅後は22:00くらいまでは家のことをして、子供が寝てから過去問に取り組んだり、SQLの練習に取り組んだり、手を動かすことを中心に学習した。
ただ、業務多忙になり残業が続くと勉強も手につかなくなった。こればっかりは仕方ない。
その中でも体力を振り絞って10分だけでもいいので読書か過去問に取り組んだ。

# 勉強のために使用した教材

勉強のために使った教材を紹介します。

## 書籍

### 情報処理教科書　データベーススペシャリスト2022年版

https://www.shoeisha.co.jp/book/detail/9784798174907

資格試験のためには対策テキストは必須。4, 5回繰り返し読みました。
試験に特化しているため内容に面白味はないのですが、試験の出題範囲、傾向、解答のテクニック等が乗っているので絶対読んで問題を解いた方がいいです。

### 達人に学ぶDB設計指南書

https://www.shoeisha.co.jp/book/detail/9784798124704

DB設計に関する基礎知識を学ぶことができます。
試験対策テキストではDB設計の各要素のHOWは説明されているが、WHYは説明されていないに等しい。
この本ではDB設計について説明となぜそれをやる必要があるか等の情報がまとめられている。
例えば、正規化は第1 ～ 5まであるが、各正規化の方法だけでなく正規化はデータの不整合をなくすために行っていること等の正規化を行う理由まで解説されています。
初心者向けで分かりやすく、私のレベルにはあっていた。

### SQLアンチパターン

https://www.oreilly.co.jp/books/9784873115894/

DB設計でよく見かけるアンチパターンの説明とその設計の辛いところ、解決策がまとめられた書籍。関わっているプロジェクトのDB設計のイケてない部分をズバズバ指摘されるかのような気分になる。
どこかでよく見る設計がアンチパターンとして20数個紹介されている。
DB設計のノウハウは試験対策テキストでは得られにくいのでこういったテキストを読むと良い。

### 失敗から学ぶRDBの正しい歩き方

https://gihyo.jp/book/2019/978-4-297-10408-5

SQLアンチパターンと似たような構成の書籍です。
データベース設計の勉強になります。午後試験では設計済みのデータベースに対して問題点が指摘され、その理由と改善策を記述する問題がでます。
設計の方法論だけでなく、このような書籍でアンチパターンを学び、何が辛みでどうすれば良いか、という知識を身につけると良いと思います。

### 詳細データベース

https://www.oreilly.co.jp/books/9784873119540/

PostgreSQLやOracleなどの固有のサービスに着目したトピックではなく、データベース自体の成り立ちや分散データベースの仕組みなどが学べます。
データベースシステムがどんな構成なのか、SQLはどのように解釈されるのか、タイトルの通り詳細に説明してあります。
なんとなく覚えていた同時実行制御と分離レベルについも説明してあり、シリアライザブルとはどういうことかなど試験対策だけでは分からなかったデータベースの詳しくことがわかります。
ただ、内容は結構難しいです。全部読みましたが最後の方は分からなかったことも色々あります。。

### NOSQLの基礎知識―ビッグデータを活かすデータベース技術

https://contendo.jp/store/ric_t/Product/Detail/Code/J0010400BK0056077001/

NOSQL、何それ？美味しいの？状態だったので、古い本だがNOSQLのことを学ぶために読んだ。
NOSQLとは何か、RDSにはどんな課題があったのか、NOSQLの特性などがまとめられています。
NOSQLを勉強するとCAP定理やBASE特性がなぜ必要なのかが理解できたので良かったです。
この本以外にも、[ビックデータを支える技術](https://gihyo.jp/book/2021/978-4-297-11952-2)とかも面白そうだなと思いました(まだ読んでないですが。。）

## Webサイト

### データサイエンス100本ノック　SQL版

https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

SQLは文法を勉強しただけでは身につかない。自分でSQLを実行し、実行結果を確認し、試行錯誤する。そうしないと身につかない。筋トレみたいなものだ。
ある程度のデータがあってSQLを試せる環境として使え、さらに問題と答えのセットが100問もありSQLの訓練にとても役立ちました。
python版とR版もあるので気が向いたらトライするのも良い。

### データベーススペシャリストドットコム

https://www.db-siken.com/

主に午前2の対策のために使っていました。試験のためには過去問、とにかく過去問を何度も取り組みました。間違えたところは解説を読んで、テキストや参考書を読み返しました。
スマホから手軽に取りめるのが良いところですね。

## その他

### 個人開発

会社の同僚数名とデバイスからデータ収集してデータベースへ保存してアプリで可視化するシステムを作ったり、社内勉強会を開いてそのアンケート結果をデータベースは保存、集計、可視化するシステムを作りました。
小規模でもデータベース設計からアプリ開発すると書籍で学んだことがシステムの中でどうやって使われてどんな効果があるかを知る事が出来ます。時間を作って取り組む価値はあると思います。

### Podcast

通勤や散歩中などの隙間時間に何かインプットする為に聴いてます。データベース関係の話題のものを探して聴いてました。
よく聴いたチャンネルを書いておきます。これらの中でデータベース関係のトピックの回を探してました。

**Fukahori.fm**

https://fukabori.fm

**ajitofm**

https://ajito.fm

**PHPの現場**

https://php-genba.shin1x1.com

# 受験した感想

医者や看護師などと違いソフトウェア開発者は資格業ではありません。ですので、この資格がないと出来ない事は特に無いと思います。そんな資格のために勉強しても意味がないと思ってしまうのかも知れません。
しかし、実際に受験してみて、自分が知っている範囲はほんの一部だった事が分かった一方で、試験対策テキストだけの勉強だと理解が表面的で現場ですぐ役に立つものだとは思いませんでした。さらに、試験対策の勉強は面白くないです。自分はデータベースの勉強をしたいわけで、別に試験対策をしたい訳じゃないとも思いました。
ですので、試験対策テキストや過去問だけでなく、試験範囲をキーにして色々な技術書を読んだ方が良いと思います。その方が純粋にデータベースのことを学べますし、面白いです。
勉強時間の確保は1番の課題だったと思います。毎日1時間はなんらかの勉強をしたいですが仕事が忙しくなるとそれも難しくなります。その分準備期間を長くするか、隙間時間などの活用をし、時間が作れた時は集中出来るようにTVは消すなど工夫が必要です。

この記事を書いた2022/11時点ではまだ試験結果は出てなく、午後試験にあんまり自信がないですが合格を願ってます。