tetsu31415.log

androidなどのことを書き綴っていこうと思います。

データベーススペシャリスト試験に合格しました

令和5年度秋期 データベーススペシャリスト試験に合格したので記録を残しておきます。
SCとNWに合格したので、次はDBということで受験しました。
結果的には1発で合格することができました!

受験時の状況

  • FE、AP、SC、NW合格
    • 午前Ⅰ免除が有効
  • Webアプリ開発 職歴2年半
    • 簡単なSQLは書けるが、がっつりは触っていない
  • 修士(工学)
    • 情報系

教材

データベーススペシャリスト過去問道場|データベーススペシャリスト.com

  • IPA 過去問題

過去問題 | 試験情報 | IPA 独立行政法人 情報処理推進機構

勉強方法

2023/08/21から勉強を開始しました。

過去問道場

DB以外の試験でも大変お世話になりましたが、午前Ⅱ対策として過去問道場をやっていきました。 とにかく数をこなして、解説を理解し、問題と回答を覚えていくことで、正答率を上げていきます。 スキマ時間などをつかっていたので何時間やったかは覚えていません。

参考書

参考書での勉強も並行して進めていきました。人それぞれやり方はあると思いますが、私はノートに要点を書いていきました。 普段手書きで文字を書くことが減っているため、試験のときに手書きで文字を書くためのリハビリにもなって一石二鳥です。
各章の終わりに午前Ⅱ問題や午後問題が載っています。午前Ⅱ問題はすぐに終わるため毎回解きましたが、午後問題は時間がかかるので途中で解くのをやめました。
合計22.5時間程度、全然勉強しない週もあったので終わったのは9月末でした。

午後過去問題

残りの1週間で過去問題を解きました。 3年分はやるつもりでしたが、平日に時間を取れなかったためできたのは2年分(令和3年度、令和4年度)でした。 午後Ⅰは問1つあたり1時間強、午後Ⅱの問1つあたり2時間強かかり、2年分で15時間程度かかりました。 参考書の特典の過去問解説が役に立ちました。

ページをめくることが多く、図を書く問題(概念設計)があるため、過去問題の演習は印刷しないと難しいです。 A3用紙1枚に4ページ分を割り付けてコンビニプリントで印刷しました。 1枚10円で3年分を印刷しても500円程度でした。

試験結果

種別 点数 備考
午前Ⅰ - 午前1免除
午前Ⅱ 92.00点 23/25
午後Ⅰ 91点 問2、問3選択
午後Ⅱ 74点 問1選択

思ったより点数は高かったです。
午前Ⅱは過去問題と同じものもあったため、着実に点数を取ることができました。
午後Ⅰは問1と問2が概念設計を含む問題でした。問1が調達システム、問2がホテルの予約システムでしたが、令和4年度の過去問題にもホテルの予約システムの問題があり、馴染みがあったので問2を選択しました。
午後Ⅱは問2が概念設計だったため、問1を選択しました。

所感

午後問題が難しかったです。問題の文字量が多く、読むだけで時間がかかります。

概念設計はDBの知識が問われるというよりかは問題文から内容を理解して、設計に落とし込む力が必要になります。 過去問題を解いていくなかで不正解だった問題は勉強が足りなかったというよりかは問題文を読めていなかったということが多かったです。 解けるようにはしていましたが、かなりパワーを使ってしまうため当日は選択しないようにしました。
文字から内容を理解して図を埋めていくということが、最初に構成図が与えられるNW試験と対照的で難しく感じました。

DB試験の勉強を通して、データベースの基礎的な部分の理解が深まり、システムの設計をする力が身についたと思います。
記述式の高度試験は取り終えたので、次は論述式のSA試験を目指そうと思います。

参考記事

勉強方法を考える上で下記の記事が参考になりました。

データベーススペシャリスト試験に3週間でギリギリ一発合格しました!【勉強方法と教材まとめ】 #資格 - Qiita

社会人2年目でも受かるデータベーススペシャリスト試験の勉強法 #資格 - Qiita

本記事がこれからの受験する方のお役に立てば幸いです。

DD Max M4 で Linux 録画環境構築 (地デジ/BS/CS/CATV)

以前に DD Max M4 を使って Linux で地上波を受信する記事を書きましたが、
BS、CS、CATVも受信できるようになったので構築方法をまとめておきます。

tetsu31415.hatenablog.com

環境

  • OS: Arch Linux (6.1.59-1-lts)
  • CPU: Intel(R) Core(TM) i3-8100
  • チューナー: Digital Devices Max M4
  • チューナーサーバ: Mirakurun 3.8.0
    録画サーバ

受信する放送波

我が家には CATV とフレッツ・テレビの2系統があり、それらを組み合わせて受信しています。

DD Max M4 の真ん中の端子が4チューナー共通の ISDB-T、ISDB-C 用の端子です。 ここに CATV のアンテナ線を接続することで4チューナーで地上波と BS(101ch-222ch) が受信可能になります。 受信(復号)できる BS チャンネルは CATV 事業者によって異なりますが、我が家では101ch-222ch(リモコン番号1-12)が受信可能です。

ISDB-S 用の端子は4チューナ独立して存在していますが、私の使い方ではBS(101ch-222ch以外) や 110° CS は同時に2チャンネルだけで十分なため、2端子だけ接続しています。 4端子すべてに接続すれば4チャンネル同時に受信可能です。

物理配線を減らしつつ主要な BS チャンネルを4チューナーで受信するためにやや複雑な構成になっていますが、構成を簡単にするならば BS はすべて ISDB-S から受信したほうが良いと思います。

また、 BS がチャンネルによってチューナーが変わる都合上、 Mirakurun 上では CATV 側の BS を「BS」に、フレッツ・テレビ側の BS を「CS」に無理やり割り当てています。

図にまとめると下記のようになります。

接続構成図

ドライバのインストール

公式のドライバ (dddvb) をインストールします。 最新リリースの 0.9.38 は Linux Kernel バージョン 6.1.59 ではうまくビルドできなかったため、 master ブランチの最新コミット (100aa25176391f1a9a9d6a7d341a78f845ea19eb) をビルドしました。

ドライバーのビルド方法は下記の記事を参考にしています。

note.spage.jp

GitHub からソースをクローンします。

$ git clone https://github.com/DigitalDevices/dddvb.git
$ cd dddvb

一度ビルドし、 dkms.conf を作成します。

$ make
$ cat <<'EOF' > dkms.conf
PACKAGE_NAME=dddvb
PACKAGE_VERSION=0.9.37-20231009
AUTOINSTALL="yes"
CHECK_MODULE_VERSION="no"
MAKE="'make' all KVER=${kernelver}"
CLEAN="make clean"
EOF

$ let "module_number=0" || true

$ for file in $(find ./ -type f -name "*.ko"); do
      MODULE_LOCATION=$(dirname $file | cut -d\/ -f 2-)
      echo "BUILT_MODULE_NAME[$module_number]=\"$(basename $file .ko)\"" >> dkms.conf
      echo "BUILT_MODULE_LOCATION[$module_number]=\"$MODULE_LOCATION\"" >> dkms.conf
      echo "DEST_MODULE_LOCATION[$module_number]=\"/extramodules/$pkgname\"" >> dkms.conf
      let "module_number=${module_number}+1" || true
done

dkms からカーネルバージョンを動的に変更できるように Makefile を置換し、ソースコード一式を /usr/src 配下にコピーします。
master ブランチの最新コミットにはバージョンが付いていないため、日付をつけておくことにします。

$ make clean
$ sed -i -e 's/shell uname -r/KVER/g' Makefile
$ sudo cp -r  . /usr/src/dddvb-0.9.37-20231009

DKMSに追加し、インストールする

$ sudo dkms add -m dddvb -v 0.9.37-20231009
$ sudo dkms install -m dddvb -v 0.9.37-20231009

受信テスト

dvbv5-zap コマンドで受信テストを行います。 1チューナーで ISDB-T, ISDB-S, ISDB-C を受信できるようにするために合体させた設定ファイルを作りました。

DVBV5 channel config for DD Max M4 · GitHub

dvbconf-for-isdb レポジトリ内の conf/dvbv5_channels_isdbt.conf と conf/dvbv5_channels_isdbs.conf をマージし、さらに ISDB-C 用の設定を追加しています。 ISDB-T のチャンネル名と区別するため、 ISDB-C はチャンネル名にプレフィックス DVBC_ をつけています。

コマンドの最後の引数のチャンネル名は地域に合わせて適宜変更してください。

  • ISDB-Tの受信テスト
$ dvbv5-zap -a 0 -c dvbv5_channels_dd.conf -r -P 25
  • ISDB-Sの受信テスト
$ dvbv5-zap -a 0 -c dvbv5_channels_dd.conf -r -P CS22
  • ISDB-Cの受信テスト
$ dvbv5-zap -a 0 -c dvbv5_channels_dd.conf -r -P DVBC_C62

Mirakurun の設定

Docker 環境で Mirakurun 環境を構築しました。設定ファイル例の一部を下記に記載します。

tuners.yml

基本的には4チューナー分の設定を書くだけです。

今回 Tuner0 と Tuner1 ではすべての type を受信できますが、 Tuner2 と Tuner3 では CS の受信はできません。
このような場合は、記述する順番によってチューナー不足が発生する場合があります。 チューナーは先頭の空いているものから割り当てられるため、すべて受信できるTuner0とTuner1を後に書いておきます。
もし、 Tuner0 → Tuner1 → Tuner2 → Tuner3 の順で記載した場合、 GR → GR → CS → CS の順で4チャンネル同時に受信しようとすると最初の GR 2つが Tuner0 、 Tuner1 に割り当てられるため、その後 CS が利用可能なチューナーがなくなってしまいます。

- name: DDMAXM4_2
  isDisabled: false
  types:
    - GR
    - BS
    - SKY
  dvbDevicePath: /dev/dvb/adapter2/dvr0
  decoder: arib-b25-stream-test
  command: dvbv5-zap -a 2 -c /app-config/dvbv5_channels_dd.conf -r -P <channel>
- name: DDMAXM4_3
  isDisabled: false
  types:
    - GR
    - BS
    - SKY
  dvbDevicePath: /dev/dvb/adapter3/dvr0
  decoder: arib-b25-stream-test
  command: dvbv5-zap -a 3 -c /app-config/dvbv5_channels_dd.conf -r -P <channel>
- name: DDMAXM4_0
  isDisabled: false
  types:
    - GR
    - BS
    - SKY
    - CS
  dvbDevicePath: /dev/dvb/adapter0/dvr0
  decoder: arib-b25-stream-test
  command: dvbv5-zap -a 0 -c /app-config/dvbv5_channels_dd.conf -r -P <channel>
- name: DDMAXM4_1
  isDisabled: false
  types:
    - GR
    - BS
    - SKY
    - CS
  dvbDevicePath: /dev/dvb/adapter1/dvr0
  decoder: arib-b25-stream-test
  command: dvbv5-zap -a 1 -c /app-config/dvbv5_channels_dd.conf -r -P <channel>

channels.yml

チャンネル設定については地域によって異なるため、一例を載せておきます。

- name: 日テレ
  type: GR
  channel: '25'
  isDisabled: false
- name: BS朝日1
  type: BS
  channel: DVBC_C62
  serviceId: 151
  tsmfRelTs: 1
- name: QVC
  type: CS
  channel: CS22
  serviceId: 161

注意点として、CATV では TSMF により TS が多重化されていた場合、うまく受信できない場合があります。Mirakurun 3.6.0 以降から tsmfRelTs 設定が追加され、ここで相対ストリーム番号を指定することで正常に受信できるようになります。
私の環境ではBS朝日のみ該当したため、BS朝日のみ tsmfRelTs を設定しています。 TSMF については下記の記事を参考にしてみてください。

akkkix.hatenablog.com

まとめ

Linuxマシンに DD Max M4 を接続し、地上波、BS、CS、CATV を受信する方法についてまとめました。
録画管理には EPGStation を利用し、現在の構成で1年半ほど運用していますが特に大きな問題は発生していません。
参考になりましたら幸いです。