データベーススペシャリスト受験のすすめ
こんにちは。株式会社TOKIUM・経費精算チームでWebエンジニアをしている城戸です。
少し前の話になりますが、10/9(日)に、データベーススペシャリスト試験を受験してきました。
その受験経緯や、学んだ事について、ざっと紹介しようと思います。
特に、バックエンドエンジニアとしてジュニア・ミドルレベルの方々こそ、この試験の学習をする事で得られるものは多くあると思います。
データベーススペシャリスト試験とは
IPA(情報処理推進機構)が主催する試験で、その名の通りデータベースの物理設計・論理設計・SQLなどに関して幅広く知見を問う試験となっています。
IPAが主催する試験の中では「高度試験」といわれる区分に位置し、こう紹介されております。
高度IT人材として確立した専門分野をもち、データベースに関係する固有技術を活用し、最適な情報システム基盤の企画・要件定義・開発・運用・保守において中心的な役割を果たすとともに、固有技術の専門家として、情報システムの企画・要件定義・開発・運用・保守への技術支援を行う者
合格率は例年、15%程度です。
ドラマ「逃げ恥」で、星野源さん演じる津崎平匡さんが保有する資格の1つでもあります。
こうして聞いて頂けると、それなりに難易度の高い試験だということがイメージ頂けるかと思います。
試験は午前Ⅰ・午前Ⅱ・午後Ⅰ・午後Ⅱの4つに区分され、ほぼ丸一日を使う長丁場となります。
(データベーススペシャリスト試験より引用)
ちなみに、過去2年間の間に応用情報技術者試験に合格していれば、午前Ⅰ試験が免除されます。
よって、応用情報を取得してからできるだけ早くデータベーススペシャリスト試験を受験する事が推奨されています。
(僕の感覚的にも、試験当日に会場にいた方々のうち、3割程度はこの免除制度を活用していそうな様子でした)
受験しようと思ったきっかけ
この資格を取得すれば星野源さんのようにガッキーにお近づきに ゲフンゲフン、
僕は普段、Railsを使ってバックエンドの開発をしています。
Rails経験は1年ほどで、Rails「は」一通り扱えるようになったかと思います。
しかし、Rails(ActiveRecord)に依存するばかりだと、DB・SQL力はいずれ頭打ちになるように感じていました。
具体的に言いますと、
- DB設計のベストプラクティスを知らない
- そもそも生のSQLを読む力が弱い。Rails以外のフレームワークで通用しないかも知れない
- SQLのクエリチューニングなんて出来そうにない
…といったあたりです。
そういったの危機感から、一度DBについて本腰を入れて学ぶ必要がありそうと感じ、受験を決めました。
そして、10/9の試験に向けて、7月の頭から学習を始めました。
ちなみに、勉強方法や参考書についてはネット上に沢山の記事がありますが、
参考書に関してはこの本が個人的には一番お勧めです。
IPAの試験は、とにかく一にも二にも過去問演習です。
参考書は、「過去問の解説が丁寧かつ充分なボリュームか」で決めるべきだと考えます。
そんな中、私が見た限り、この参考書が最も解説のクオリティが高いと感じました。
感想・学んだ事
いざ試験本番。午前Ⅱまでは順調だったのですが、午後Ⅰで完全にしくじり、不合格を確信するほどには解けませんでした(´;ω;`)
過去問で見たことない切り口の問題が出て、「え??え???」という感じで1時間半が過ぎていきました。(Twitterを見る限りでもかなり阿鼻叫喚の嵐でした…)
高度試験の難しさを痛感しました…また来年頑張ります。
しかし、この試験で学んだ事は沢山あり、4点紹介します。
(1) DBの論理設計の引き出しが増えた
弊社・TOKIUMでは、経費精算と請求書管理という2つのサービスを運営しています。
私自身、業務をしていく中で「経費」「申請」「承認」「会計出力」といった領域に関しては一応それなりに慣れることが出来たかと思います。
しかし、業務でやらないような領域のDB設計については自身を持つことが出来ませんでした。
そんな中、試験勉強をする中で、普段の業務でやらない領域のDB設計に沢山触れる事ができ、模範例を多く学ぶ事ができました(例:「売上・債権管理」「決済」「在庫管理」etc...)。
DB設計の引き出しは、確実に増えたと確信しています。
(2)SQL力が上がった
私自身、普段はActiveRecordに頼ってDBとやり取りしており、たまに調査タスクやArel.sql
構文等で生SQLを書く機会があると少しウッ(´;ω;`)となってしまっておりました。
しかし、この試験の中でSQLを自分で組み立てる中で、そのアレルギーが減ったかなと思います (今も多少は残ってますが…笑)。
また、普段は「なんとなく」SQLを書く中でおざなりになりそうな事について理解を深める、いい機会になりました。
例えばSQLでは、3値論理と言いまして、真(TRUE)と偽(FALSE)の2つの真理値に加え第3の値「不明(UNKNOWN)」という値を加えた3つの値で表現されるのです。
そういった知識を実際のクエリや計算ロジックと結びつける事で理解が深まりました。
(3)DB関連のトラブル対応の引き出しが増えた
本番の試験では、データ不整合やデッドロックが発生したケースを題材にする事がよくありました。
こういったインシデントが発生するパターンとして座学で知識を蓄えられた事・インシデントが発生した場合に(←考えたくもありませんが…)原因究明のための手がかりを得られた事は大きいです。
(4)物理設計について
箇条書きで書きます。
- バックアップ & リカバリ
- レプリケーション
- 分散データベース
- トランザクション分離レベルとリード現象
- インデックススキャンの仕組み、B木インデックスとビットマップインデックス
- 結合のアルゴリズム (Nested Loop, Sort/Merge, Hash)
正直な話、今の時代ではAWSやGCPなどのクラウドサービスが隠蔽してくれたり、RDBMSがよしなにやってくれている部分も多々あります。
しかし、偉大なる先人達が共通化してくれたそれらの機能を、ただ利用する事と背景を理解して利用する事は、今後DBに関する知見を深める上で大きな違いになると考えています。
特に、トランザクション分離レベルについては非常に学びが多いと思いました。
「普段の業務で意識する事」はあまり無いかも知れませんが、いざデータの信頼性と最も近い所にある、重要なトピックだと感じました。
別で記事を書いたので、よければこちらもご覧ください。
終わりに
データベーススペシャリスト、資格を取得する必要があるか…は分かりませんが、勉強をするメリットは沢山あるかなと思います。
「WEB業界では資格は不要!」とよく言われますが、個人的には理論と実践の両輪を回す事が重要です。理論だけでも実践だけでもダメですが、資格勉強をする事で理論が深まり、実践力に繋がると考えています。
こちらの記事を読んで興味が湧いた方がいれば、是非とも受験をお勧めします!
そして、私は来年も恐らく受験しますため、一緒に高めあえれば嬉しいです。
TOKIUMでは、技術に対して関心が高いメンバーが多く在籍しています。
もしも当ブログを読んで、興味を抱いてくださった方がいれば、是非とも是非ともTOKIUMの面談まで来て頂ければ幸いです。
(転職を考えておらずとも、話を聞きにいらっしゃるだけでも全然大歓迎です!!お待ちしています)
Discussion