🎉

令和4年度データベーススペシャリスト試験に合格しました

2022/12/29に公開
2

この記事はUniposアドベントカレンダー2022の25日目の記事です!

はじめに

Uniposのサーバーサイドエンジニアの周東です。
2022年(令和4年度)のデータベーススペシャリスト試験に合格することができました。
一年前に目標に設定したデータベーススペシャリスト試験にしっかり合格できたということもあり、長期的な目標達成が上手くいったケースとして、その学習記録を残しておこうと思います。

データベーススペシャリスト試験とは

経済産業省管轄のIT系国家試験の情報処理技術者試験における、高度試験区分の一つです。

IPAのページから引用

高度IT人材として確立した専門分野をもち、データベースに関係する固有技術を活用し、最適な情報システム基盤の企画・要件定義・開発・運用・保守において中心的な役割を果たすとともに、固有技術の専門家として、情報システムの企画・要件定義・開発・運用・保守への技術支援を行う者

僕はこの中でも、情報システムの企画・要件定義・開発・運用・保守への技術支援を行う者というポジションをキャリアビジョンに置いていたのでピッタリの試験でした。

勉強開始前のスペック

  • Webエンジニア(サーバー)2年目
  • 高専・大学・大学院(修士)と全部情報系の勉強やってました

春の応用情報技術者試験に合格していたので、基礎的なIT知識はなんとなく頭にある状態でした。
また、業務でKVSとRDBの両方をある程度触っていたので、SQLの構文とDBの種類くらいはある程度わかっていたと思います。

学習内容

午前Ⅰ

多肢選択式(四肢択一) 出題数: 30問 解答数: 30問 試験時間: 50分

応用情報技術者試験の午前試験を30問に丸めたやつです。6割にあたる18問以上の正解で合格です。
応用情報技術者試験に合格していたため、免除でした。

午前Ⅱ

多肢選択式(四肢択一) 出題数: 25問 解答数: 25問 試験時間: 40分

データベース分野の専門的な知識を問う問題が出ます。6割にあたる15問以上の正解で合格です。
知らないと解けない問題もある程度あって、計算系の問題などは慣れが必要です。

全範囲を網羅的に把握するために、参考書を一周しました。とにかく知らないことはノートに写経して、図表なども理解できるまで自分で絵を描いたりしながら整理していました。

一通り学習を終えてからは、過去問演習をひたすら繰り返していました。
試験直前にも過去3年分の問題を解いたのですが、直近3年分でも相当な数の同じ問題が出ていて、「ああ、今年もこの辺の問題が出るだろうな」というある程度の予想をつけることができたので、ほとんど心配はありませんでした。案の定、本番でも問題文を見た瞬間に答えがわかるレベルまで知っている問題が2割くらいあったように思います。

もし時間がなくて理解よりも合格を優先したいという方がいれば、とにかく過去問演習だけをしておけば6割は余裕なんじゃないかなと思います。

午後Ⅰ

記述式 出題数: 3問 解答数: 2問 試験時間: 90分

実際の業務に近い形の文章問題が出ます。ある程度出題分野を把握しておいて、当日にどの問題を解くか(どの問題は解かないか)を決めていました。

勉強内容としては、午後重点対策を2週 + 過去問3年分を2週しました。

僕が想定していた出題分野は下記の通りです。

  • 概念設計(ER図・正規化理論・設計・機能追加)
  • 物理設計(性能見積もり・INDEX設計・性能設計)
  • 同時実行制御(デッドロック回避・バッチ処理設計)
  • 運用・保守(データウェアハウス・バックアップ設計)
  • その他

このうち、学習の中で物理設計とその他の分野で点数が安定しないことに気づいたので、その二つの分野に関してはできる限り選択しない方針を取りました。万が一選択せざるを得ない状況でも、一応最低限頑張れるくらいには過去問演習はしてましたが、本番でも選ぶことはありませんでした。

物理設計に関しては個別のDBMSの実装や仕様に依存する部分でもあるので、業務での実践やベンダー資格で深く学んだ方が良いであろうと思うので、得意でないかぎりは学習優先度も下がるのではないかと感じました。

午後Ⅱ

記述式 出題数: 2問 解答数: 1問 試験時間: 120分

この試験で一番の鬼門です。10ページ以上ある問題文中から、要点を読み解き、出題者の意図に沿った解答をする必要があります。午後Ⅱにたどり着いた時点でかなりヘトヘトで、集中力も切れかけているところから2時間の試験がスタートするため、午後Ⅱは徹底的に対策してとにかく読解の負荷を減らす必要があります。午後Ⅱだけは対策なしで合格するのは無理だと思います。

午後Ⅱは大きく分けると概念設計と物理設計の2択なので、午後Ⅰの時点で切っていた物理設計は演習すらしませんでした。その代わりに、午後重点対策を2週 + 過去問8年分を2週しました。

午後Ⅱの概念設計を選ぶ場合は、必ずテストの問題文と解答用紙を印刷していました。問題文はA4、解答用紙はA5で印刷することで実際の試験に近い状態を作って、時間も2時間を測って取り組んだので相当問題に向き合う精神力が鍛えられたと思います。それでも、本番では2時間の間に何度も全てを投げ捨ててちゃぶ台返しして家に帰りたくなるくらい苦しかったです。

こんな感じで、ER図などの作図問題が必ずあるのですが、問題用紙を印刷しておかないと問題を解くための準備に精神をすり減らすことになってしまいます。実際の問題を解くスピード感を把握するためにも、印刷しての演習が重要だと感じました。

夜な夜なコンビニに行って30分くらい印刷していたので、結構恥ずかしかったし、過去問演習のために合計で1万円弱くらいはかかってました(プリンター欲しいけど、家に置くスペースがない)。

試験当日の振り返り

会場到着

当日は市ヶ谷の試験場に1時間くらい余裕を持って到着しましたが、結果的には会場には試験ギリギリまで入ることが出来ませんでした。会場が狭く、縦に長い形状をした建物だったため、入場整理が行われていたのが原因です。午前Ⅱからの参戦だったので、フリーパスくらい優雅に入場できると思っていたのですが、僕の行った会場ではほとんど全ての人が午前Ⅱからの参戦で、入場時に大混乱が起きていました。同じ部屋の受験者は全員午前Ⅱからでした。

余裕を持って入場できなかったため、トイレが大混雑して入れずに困っている人がたくさんいたのが印象的です。収容人数に対してトイレが少なすぎたため、午後の試験前にもトイレに行くと時間がギリギリになるといった感じでした。

午前Ⅱ

問題自体はすごく簡単で見たことあるか、すぐ解ける問題しかなく、20分くらいで全部解き終わりました。早めに退室してトイレの混雑を避けて、午後に困らないようにしていました。

午後Ⅰ

今年の午後Ⅰの問題は、王道である問1の概念設計・基礎理論の問題が難化しており、ぱっと見で30秒くらい固まりました。特に、ER図のエンティティの名前がほとんどわからない状態で与えられている部分は、本当に焦りました。

事前に概念設計は絶対に解くと決めていたので、見た目に怯まずに解こうと思って突撃しました。結果的には、問題文をしっかり過去問と同じように整理しながら解いていけば、しっかり埋められる問題だったため順調に全て埋めることができました。

続いて問2はバックアップとトリガーの問題でしたが、ここはパッと全体を見た時にSQLの解答が多めで、単純な計算が少しあるくらいだったので迷わずに選択しました。結果的には、難易度も低めで解きやすい問題だったと思います。ただ、問1で結構時間を使ってしまったため、若干焦って解いてしまい、ケアレスミスがあったんじゃないかなーという感じでした。

午後Ⅱ

これまた、概念設計の問題が難化していました。おそらく、概念設計を選択するという王道の戦略が余りにも浸透してしまい、合格者層が想定とはズレてしまっている近年の課題感があったのだと思います。午後Ⅰも午後Ⅱも概念設計は過去問と少し形式をずらした問題が出題されており、ER図の作図で荒稼ぎをして6割ギリギリを狙うような例年通りであれば受かっていた受験者層をふるい落としているんだろうなという感想を持ちました。

ちなみに、問題の概要としてはフェリーの乗船予約システムの複雑な仕様を理解しながら概念データモデルに落とし込む問題でした。予約管理システムに馴染みがないと、そもそも正確に予約・キャンセルの仕組みを理解することもできないだろうし、トリガーの仕組みをしっかり理解していないと答えられない問題が多かったです。また、「迷ったら線引いとけ」 というリレーションの解答の原則があるのですが、それも今回の出題では 「2本のリレーションを引け」 と解答できる数が制限されていたり、全体的に部分点を狙いにくく深い理解を求められていると感じました。


試験自体は全て問題を埋めて、時間にも余裕を持って終えることができましたが、試験後に振り返ってみるともったいないミスが結構あって、「あれ?これ6割ギリギリかも...」と思っていました。

例えば、トランザクション領域の予約客と乗船客のサブタイプを答える問題で、マスタ領域の顧客エンティティタイプからのリレーションが伸びていることに気づかず、顧客登録有予約客・顧客登録無予約客を逆に解答していました。


他にも、「以上」「以下」「未満」などの言葉を適当に使っていて不正解の部分や、よくテーブル構造を見ておけば見逃すはずのないリレーションの不足に気づけなかったりと、色々ボロボロでした。

試験結果

色々と午後Ⅱに不安が残っていましたが、蓋を開けてみるとどの試験も8割を超えていて、余裕を持って合格することができました。特に午後Ⅱに関しては、想定していたケアレスミス以外は全て正解か部分点の扱いだったっぽく、悲観的な自己採点よりも20点くらい高い点数でした。

情報処理技術者試験では、解答例はあくまでも例であり、自己採点とは全然違う結果が出てきたりします。なので、この試験では諦めずに最後まで食らいついて解答を埋めるということが一番重要なんじゃないかなと思ったりもしました。午後Ⅱの設問2なんかはギリギリまで本当にこれでいいのか悩みに悩んで、ずっとフェリーの予約・キャンセルユースケースを紙に書いて確信が持てるまで検証したりしていたので、変に悩んで余計な解答をせずに済んだ気もしていますし、最後まであがくのをおすすめします。

おわりに

エンジニアの仕事をしながら勉強するのは大変で、特に午後問題は解くだけで2時間かかってしまうということもあり、時間の捻出が課題でした。幸いにもフルリモート可能な会社に所属しており、通勤時間を丸々試験勉強に充てることができたというのも大きかったです。

また、会社のチーム内での勉強会でアウトプットしてみたり、一緒に勉強してくれる仲間の存在も僕を後押ししてくれていました。

ひとまず、一発で合格できて本当によかったです。春は情報処理安全確保支援士を受けてみようと思うので、合格できたらまた記事を書こうと思います。

Discussion

てべすてんてべすてん

良記事ありがとうございます!

自分は午後Ⅱ59点でした...

支援士は思いの外(少なくともDBよりは)簡単だと思うのでぜひ頑張ってください!

kngnrkngnr

お返事が遅くなってしまい申し訳ありません!(いいねつけてわすれてしまい。。。

59点不合格はめちゃくちゃ悔しいですよね。僕も学生の頃にITパスポートでギリギリ落ちて、しばらく不貞腐れていました。

見たところあれから継続して学習していらっしゃるようで、SMも取得されていて素晴らしいですね!

僕もSCを無事に取得できたため、春のNWに向けて学習しているところです。お互いに走り続けて成長しまくりましょう!!