開放より2段絞ったところ

徒然なるままに…主にカメラの事を書いていくことになるかと。

Shedinja開発記 Part2

前回はShedinjaの基本的な、計算アルゴリズムを組みました。正直ここまでは余裕のよっちゃん

さて今回はDB(データベース)の構築をやっていきます。

仕事は他人にさせる。※大事

ポケモンSMに登場するポケモン数は延べ918であり、これを手作業で裁くのには少々(というか完全に)無理があります。

なのでできることなら既存のDBを転用するのが不本意なミスを防ぐという観点でも有効です。

 

(私が知っている範囲では)多くのゲームWikiはDBを組まず、HTMLにデータ値をべた張りしています。DB組むよりもこの方が最初に作るときは楽なのですが、変更があった際には関連ページをすべて更新する必要があるので面倒です。幸いポケモン攻略Wikiは乱立状態だったので検索トップにDBが存在しなくても他のWikiを当たればよさそう。有効なデータシートを持ってるWikiがあるといいですね…

 

閑話休題:データベースとは?

ここでExcelに代表されるスプレッドシートとデータベースの違いを明らかにしておきます。

スプレッドシートとデータベースの違いを一言で言い表すならば、スプレッドシートには構造があるという点です。

まずスプレッドシートというのは、何でもアリのただのセル群。どこにどんな値を入れようが、同じ値が繰り返されようが、途中に空白セルがあろうが、Excel方眼紙にしようが、極端な話はいいわけです。

一方のデータベースというのはもっと厳格で、データ(数値)を格納するという点ではスプレッドシートとあまり変わりませんが、同じ意味を持つ値は繰り返されてはいけませんし、基本的に空白があってもダメ。 例えば「名前」列があったとしたら、そこには名前以外のデータが入ってはいけません。方眼紙なんて論外です。(Excel方眼紙も本来的には論外ですが)

必要最小限だけど、不足のないようにデータを整然と並べなければならないDBは、構築の前にCSD(Conceptual Schema Diagram, 概念構造図とでもいうのでしょうか)などの図を描いてデータ同士の関係を整理するなど工夫が必要です

f:id:kabegamikamio:20190707181948p:plain

CSDの一例。データが増えて関係が複雑になるほどCSDも広がっていきます。

ネットの先人を頼る。

しばらく探していると、意外にもあっさりとお目当てのDBが見つかりました。まあDBというか、実際はスプレッドシートなんですが…

f:id:kabegamikamio:20190707180618p:plain

yakkun.comからお借りしました。このリスト、ウルトラサンムーンのやつらしいですが、まあいいか。

自分好みにカスタマイズ。

必要なものは見つかったといえ、これをそのままDBにするわけにはいきません。

名前が長いポケモンに改行が入っていたりするからです。

この修正をDB作成ソフト(Microsoft Access)でやるのは少し面倒なので、邪道ですがExcelで体裁を整えてからAccessにコピペします。

f:id:kabegamikamio:20190707180932p:plain

私とてAccessよりExcelの画面のほうが見慣れています。実家のような安心感。
f:id:kabegamikamio:20190707181105p:plain
f:id:kabegamikamio:20190707181134p:plain
主な作業は行が分かれてしまったデータ(左)を一行表示(右)に戻すことです。DBにおいて見た目は二の次です

コピペは大事。

改行の処理が終わったら、いよいよこのデータをAccessのほうに張り付けてDBにしていきます。スプレッドシートとデータベースの違いを肝に銘じながらの作業。

f:id:kabegamikamio:20190707181324p:plain
f:id:kabegamikamio:20190707181348p:plain
コピペ時のポイントは列をExcelAccessで同じにすることです。ここではExcel側のIDに重複があったため、Access側ではこの値の列であるPokemonIDに加えて固有値であるInternalIDを追加しました。加えて注釈しますが、IDは本来固有番号なので重複はあってはならないことです

 さて、データベースができました。ここまで来てしまえばあとは煮るなり焼くなり。実際DBを作ることよりもうまく運用することの方が重要で、かつ非常に複雑な問題でもあるのですが… ひとまず材料が完成しました。

f:id:kabegamikamio:20190707182146p:plain
f:id:kabegamikamio:20190707182213p:plain
DBの見た目自体はあまりExcelのそれと変わりありませんが、列の管理用の画面があるところが大きな違い。またSQLというプログラム言語でほしいデータを検索できる機能があるのですが、それは次回のネタに。

次回予告

次回は出来上がったDBをVisual Studioに取り込んで、Shedinja内から操作できるようにします。

これがまた大変ですよ…