ゲームを作成するために、調べたことや、まとめたことなどはデータとして持っておきたいものです。
そして、ゲームの中で使えるものは使えるようにしたいと思うのが人情だと思います。
そんなわけで、今回はCSVデータを作成しそれをDBに登録する方法に関して記載したいと思います。
前提
・DBはレンタルサーバーなどで、使用できるphpAdminなどのツールを使用している
・CSVファイルを読み込ませてDBに登録できないときは、プログラムでデータをINSERTする
まずはテーブルを考える
シンプルに、データを保存して管理するには、DBを使うのが一般的です。
今後、仕事でもDBを使用することは多くなると思います。(あてにはなりませんが、そんな気がする。。。)
というわけで、簡単にテーブルの概念を理解してCSVを作成しようと思います。
突然出てきた「CSV」は
カンマ区切りのデータが記述された、テキストファイル』です。
そして、サンプルとして以下のようなものを作りました。
ID, AreaName
1, アジア
2, 大洋州
3, 北米
4, 中南米
5, 欧州
6, 中東
7, アフリカ
世界の地域を7つに分類してあります。参考はこちらのサイトです。外務省のページなので問題ないでしょう。。。
ここで、ちょっと疑問を持ってみてください。
「左の数字派なんだ?」、「カンマ区切りの。。。はいいけどなんで区切ってるの?」。。。
これらの疑問に対する答えは、下のような目的のためです
- 番号(ID)を振っておくとテーブル同士を関連づけするときに楽
- DBのデータは「テーブル」という領域に保存されます。テーブルは「カラム」という枠を持っていてそこにデータを保存します。
具体的に。。。
TABLE名: World_Area
カラム名1: ID
カラム名2: AreaName
簡単に定義してみました。ちなみにこれらのテーブルを定義するのに使用するのは「SQL」というプログラミング言語です。こんな感じです。
テーブル名が一番上にあり、中にカラム名があります。
そしてその横には「データ型」があります。
テーブルを作成したと仮定して話をすると、作成した国名のテーブルと地域のテーブルを結合してやると国名と地域の関連付けした形の表を作ることができます。
いわゆる「SELECT文」を使用します。
「SELECT * FROM XXXX」のような形でSQLを書きます。
他にも「制約」をつけたり、色々とできますが、今の所はここらへんで。。。
データセットを作る
ちょいと作った「世界の地域」テーブル用のCSVデータは表にすると下のようになります。
世界の地域一覧
ID | AreaName |
---|---|
1 | アジア |
2 | 大洋州(オセアニアを含む) |
3 | 北米 |
4 | 中南米 |
5 | 欧州 |
6 | 中東 |
7 | アフリカ |
この状態では、自分の欲しい情報が何も載っていないので追加します。
|
国名一覧(今後更新していきます)
ID | CountryName | AreaID |
---|---|---|
1 | アイスランド共和国 | 5 |
2 | アイルランド | 5 |
3 | アゼルバイジャン共和国 | 5 |
4 | アフガニスタン・イスラム共和国 | |
$ | アメリカ合衆国 | |
6 | アラブ首長国連邦 | |
7 | アルジェリア民主人民共和国 | |
8 | アルゼンチン共和国 | |
9 | アルバニア共和国 | 5 |
10 | アルメニア共和国 | 5 |
11 | アンゴラ共和国 | |
12 | アンティグア・バーブーダ | |
13 | アンドラ公国 | |
14 | イエメン共和国 | |
15 | イスラエル国 | |
16 | イタリア共和国 | 5 |
17 | イラク共和国 | |
18 | イラン・イスラム共和国 | |
19 | インド | |
20 | インドネシア共和国 | |
21 | ウガンダ共和国 | |
22 | ウクライナ | 5 |
23 | ウズベキスタン共和国 | 5 |
24 | ウルグアイ東方共和国 | |
25 | 英国(グレートブリテン及び北アイルランド連合王国) | 5 |
26 | エクアドル共和国 | |
27 | エジプト・アラブ共和国 | |
28 | エストニア共和国 | 5 |
29 | エスワティニ王国 | |
30 | エチオピア連邦民主共和国 | |
31 | エリトリア国 | |
32 | エルサルバドル共和国 | |
33 | オーストラリア連邦 | |
34 | オーストリア共和国 | 5 |
35 | オマーン国 | |
36 | オランダ王国 | 5 |
37 | ガーナ共和国 | |
38 | カーボベルデ共和国 | |
39 | ガイアナ共和国 | |
40 | カザフスタン共和国 | 5 |
41 | カタール国 | |
42 | カナダ | |
43 | ガボン共和国 | |
44 | カメルーン共和国 | |
45 | ガンビア共和国 | |
46 | カンボジア王国 | |
47 | 北マケドニア共和国 | 5 |
48 | ギニア共和国 | |
49 | ギニアビサウ共和国 | |
50 | キプロス共和国 | 5 |
51 | キューバ共和国 | |
52 | ギリシャ共和国 | 5 |
53 | キリバス共和国 | |
54 | キルギス共和国 | 5 |
55 | グアテマラ共和国 | |
56 | クウェート国 | |
57 | クック諸島 | |
58 | グレナダ | |
59 | クロアチア共和国 | 5 |
60 | ケニア共和国 | |
61 | コートジボワール共和国 | |
62 | コスタリカ共和国 | |
63 | コソボ共和国 | 5 |
64 | コモロ連合 | |
65 | コロンビア共和国 | |
66 | コンゴ共和国 | |
67 | コンゴ民主共和国 | |
68 | サウジアラビア王国 | |
69 | サモア独立国 | |
70 | サントメ・プリンシペ民主共和国 | |
71 | ザンビア共和国 | |
72 | サンマリノ共和国 | 5 |
73 | シエラレオネ共和国 | |
74 | ジブチ共和国 | |
75 | ジャマイカ | |
76 | ジョージア | 5 |
77 | シリア・アラブ共和国 | |
78 | シンガポール共和国 | |
79 | ジンバブエ共和国 | |
80 | スイス連邦 | 5 |
81 | スウェーデン王国 | 5 |
82 | スーダン共和国 | |
83 | スペイン | 5 |
84 | スリナム共和国 | |
85 | スリランカ民主社会主義共和国 | |
86 | スロバキア共和国 | |
87 | スロベニア共和国 | |
88 | セーシェル共和国 | |
89 | 赤道ギニア共和国 | |
90 | セネガル共和国 | |
91 | セルビア共和国 | 5 |
92 | セントクリストファー・ネービス | |
93 | セントビンセント及びグレナディーン諸島 | |
94 | セントルシア | |
95 | ソマリア連邦共和国 | |
96 | ソロモン諸島 | |
97 | タイ王国 | |
98 | 大韓民国 | |
99 | タジキスタン共和国 5 | |
100 | タンザニア連合共和国 | |
101 | チェコ共和国 | 5 |
102 | チャド共和国 | |
103 | 中央アフリカ共和国 | |
104 | 中華人民共和国 | |
105 | チュニジア共和国 | |
106 | チリ共和国 | |
107 | ツバル | |
108 | デンマーク王国 | 5 |
109 | ドイツ連邦共和国 | 5 |
110 | トーゴ共和国 | |
112 | ドミニカ国 | |
113 | ドミニカ共和国 | |
114 | トリニダード・トバゴ共和国 | |
115 | トルクメニスタン | 5 |
116 | トルコ共和国 | |
117 | トンガ王国 | |
118 | ナイジェリア連邦共和国 | |
119 | ナウル共和国 | |
120 | ナミビア共和国 | |
121 | ニウエ | |
122 | ニカラグア共和国 | |
123 | ニジェール共和国 | |
124 | ニュージーランド | |
125 | ネパール連邦民主共和国 | |
126 | ノルウェー王国 | 5 |
127 | バーレーン王国 | |
128 | ハイチ共和国 | |
129 | パキスタン・イスラム共和国 | |
130 | バチカン市国 | 5 |
131 | パナマ共和国 | |
132 | バヌアツ共和国 | |
133 | バハマ国 | |
134 | パプアニューギニア独立国 | |
135 | パラオ共和国 | |
136 | パラグアイ共和国 | |
137 | バルバドス | |
138 | ハンガリー | 5 |
139 | バングラデシュ人民共和国 | |
140 | 東ティモール民主共和国 | |
141 | フィジー共和国 | |
142 | フィリピン共和国 | |
143 | フィンランド共和国 | 5 |
144 | ブータン王国 | |
145 | ブラジル連邦共和国 | |
146 | フランス共和国 | 5 |
147 | ブルガリア共和国 | 5 |
148 | ブルキナファソ | |
149 | ブルネイ・ダルサラーム国 | |
150 | ブルンジ共和国 | |
151 | ベトナム社会主義共和国 | |
152 | ベナン共和国 | |
153 | ベネズエラ・ボリバル共和国 | |
154 | ベラルーシ共和国 | 5 |
155 | ベリーズ | |
156 | ペルー共和国 | |
157 | ベルギー王国 | 5 |
158 | ポーランド共和国 | 5 |
159 | ボスニア・ヘルツェゴビナ | 5 |
160 | ボツワナ共和国 | |
161 | ボリビア多民族国 | |
162 | ポルトガル共和国 | 5 |
163 | ホンジュラス共和国 | |
164 | マーシャル諸島共和国 | |
165 | マダガスカル共和国 | |
166 | マラウイ共和国 | |
167 | マリ共和国 | |
168 | マルタ共和国 | 5 |
169 | マレーシア | |
170 | ミクロネシア連邦 | |
171 | 南アフリカ共和国 | |
172 | 南スーダン共和国 | |
173 | ミャンマー連邦共和国 | |
174 | メキシコ合衆国 | |
175 | モーリシャス共和国 | |
176 | モーリタニア・イスラム共和国 | |
177 | モザンビーク共和国 | |
178 | モナコ公国 | 5 |
179 | モルディブ共和国 | |
180 | モルドバ共和国 | 5 |
181 | モロッコ王国 | |
182 | モンゴル国 | |
183 | モンテネグロ | 5 |
184 | ヨルダン | |
185 | ラオス人民民主共和国 | |
186 | ラトビア共和国 | 5 |
187 | リトアニア共和国 | 5 |
188 | リビア | |
189 | リヒテンシュタイン公国 | |
190 | リベリア共和国 | |
191 | ルーマニア | 5 |
192 | ルクセンブルク大公国 | 5 |
193 | ルワンダ共和国 | |
194 | レソト王国 | |
195 | レバノン共和国 | |
196 | ロシア連邦 | 5 |
しかし、ここまでやるのに時間がかかったので、やはりプログラムで表を作成する方向にシフトしようと思います。
実際に手で作業をしてみたので、手順はすでに頭の中にあります。
問題はどのように、地域別にデータを作成するか?というところですが、こちらのページに地域別の国名リストがあるのを発見したので、こちらを失敬しようと思います。
素材のCSVファイルを作る
「素材の〜」というのは、プログラムに食わせる(渡す)ためのCSVです。
大まかな設計としては下のようなものです。
- 地域別のCSVを作成する
- 地域別のIDを付与して全ての(地域別の)CSVをまとめて1つのCSVにする
大まかな設計なので、いまいちピンと来ないと思いますが、下のように作成します。
1. 素材CSVファイルを作成する
世界の地域を7つに分けました。以下のような表になります。 | ID | AreaName |
---|---|---|
1 | アジア | |
2 | 大洋州(オセアニアを含む) | |
3 | 北米 | |
4 | 中南米 | |
5 | 欧州 | |
6 | 中東 | |
7 | アフリカ |
そして、それぞれの地域にリンクを貼り付けておきます。
上の表地域名から参考ページに遷移できます。
CSV作成
上の名前のCSVファイルを作成します。ID=1であれば「アジア.csv」というファイルを作成します。
そしてこれをJavaプログラムに食わせます。
Javaでファイル読み込み
JUnitでのFile読み込みのテスト及びソースをこの記事に記載しています。
こんな感じでFileを読み込みます。愚多的には、全ての作成したCSVを読み、それをプログラムで整形して改めてCSVに出力します。
とりあえずは、設計がまとまらないのでここで中断します。
でわでわ。。。