1つの物がいくつもの物に分かれる瞬間が大事だと思う

冬休みに入ったのでMySQLRubyを組み合わせてTwitterBotを作っている。データベースをきちんと組み込んだ作品を作るのは初めてだ。いろいろと躓いたが、枯れた技術で情報も豊富なために比較的どん詰まりすることもなく製作が進んだ気がする。

 

いまのところ、一番めんどうだなと感じているのは

データベースの作成 ( CREATE DSATABASE sample)

テーブルの作成(カラムの作成を含む CREATE TABLE )

レコードの作成 ( INSERT INTO )

レコードの削除 ( DELETE FROM )

テーブルの削除 ( DROP TABLE )

データベースの削除 ( DROP DATABASE )

という、データの管理のための構造の部分だ。

 

僕はこれはエクセルのファイルを作成するのに似ていると思う。エクセルで言えばデータベースがファイル、テーブルがシート、レコードが各行に相当するのだろうか。特に今僕が作成しているようなデータベースは非常にシンプルなので、正直言うとエクセルでも済んでしまうレベルだ。あくまで感覚を掴むために利用している面が強く、必要に迫られているわけではない。いつか必要に迫られたときにスッと思い浮かぶようにといった感じだ。

 

エクセルで済むことを、エクセルでやらないというこの方針がプログラミング学習にとって、ひいては学習と呼ばれるものの多くについて効果的だと感覚的に気付いたのはおよそ1年くらい前だとおもう。

 

自分の中で既に完結した、一つの便利ツールであっても、常にそれで済ませてしまうのがいい場合と、それではまずい場合がある。情報管理であるデータベースは自分にとってまさにそうではないかと思った。これからさらに巨大量と立ち向かっていかなければいけないのに、GUIでしか操作できない独自形式ファイルに依存するのは汎用性がなさすぎる。サーバーで365日の間自動で動かしたり、プログラムの処理結果を標準出力の行き先の一つとして指定したりできないのはあまりにもどかしい。CSVファイルでやっていた時期もあったが、定式化が十分ではなく時代の潮流ではない。

 

もっと細かく自分の中のニーズを細分化して、データの集合を扱う方法という物をいくつかに分けていくことができるはずだ。リレーショナルデータベースはまさにその一つであるとおもう。今はさらに別のデータベース形式が流行っているらしいが、とにかくはまずエクセルとの昨日共通部分を理解することから。共通部分を理解したあとのほうが、差分が明確に理解できるので推測しながら二段飛ばしぐらいで習得できるという気がする。

 

ソリューションという言葉は何度聞いてもあまり聞きなれないが、意味はだいぶ体感できるようになってきた。ほんのすこし形式を整えるだけで、作業効率は驚くほど改善する。