インターンに来ている女子大生に「データベースの勉強したいんですけど」と言われた時用のLOVE理論

LOVE理論 [DVD]

もしインターンに来ている女子大生に「せんぱぃ、データベースってやつを勉強したいんですけどぉ」と言われらどうすればいいか。

「OSは何使ってる?MySQLPostgreSQLを自分のパソコンにインストールしてみるといいよ」、それが自分でできる女の子であればそもそもお前に質問してないであろうし、 こんな返事をしたらLOVE理論でお馴染みの水野敬也先生が聞いたら鉄拳が飛んでくるぞ!

「俺が個人的に借りてるサーバーにアカウント作ってあげるから使っていいよ」、一見太っ腹に見えるがあとで作業履歴をこっそり閲覧していることがバレたら確実にキモい人宣告されSNSで晒されるのでやめておくべき。それ以前に「ふえぇまっくろな画面とか怖ぃですぅ:;(∩´﹏`∩);:」なんて言われるのがオチだ。正直自分のサーバーにphpMyなんとかはあんまインストールしたくない。

そこでつるセコ世代のわたくしめがSQLの学習環境を無料で用意する方法を考案しました。底辺だからフリーミアムモデルの上澄みを啜って生きていくのは得意です(落ちぶれてすまん)。

ミッション系の大学に通う女子大生だから、英語のサイトでも拒否感ないという前提でいきますね。

一言でまとめると、HerokuのPostgreSQL上にテーブル作って、WebベースのデータベースクライアントであるJackDBから接続してブラウザ上でSQL使えるようにします。学習用データベースで容量食わないため、どちらも無料プランの範囲で済みます。ちなみにHerokuのアドオンにPostgreSQL Studioってのもあるのですが、ベータ版のためか挙動がいまいちで、確かアドオン使うにはクレジットカード登録しないとダメだったはずなのでパスしました。

VagrantとかでVirtualBox上に彼女専用の仮想環境をちゃちゃっと作ってあげて作業が終わったらまるごと削除し、ブラウザのシークレットウィンドウ使えば、紳士っぽくてよいと思います。

そもそも我々キモメンは、好感度を上げる以前にまず可能な限り減点を避ける方針をとるべきでしょう。

Heroku

まずはSign up for freeから登録してください。

Getting Started with Heroku

単純にデータベース作るだけならターミナルからログインしてSSH Keysの登録とか必要ないかも。ダメだったら上記の手順を参考にしてください。

DashboardからDatabasesをクリック。Create Databaseから下の方にひっそりと存在するDev Plan (free)を選択。

heroku-postgres-xxxxxx :: redというデータベースが作られているはずなのでそれをクリック。Connection Settings : Defaultという画面になると思いますが、ここではConnection Settings : PSQLに切り替えます。

psql "dbname=dokoka.amazonaws.com user=mononofu password=momoclo port=5432 sslmode=require"

こんな感じのコマンドが表示されるので、これをコピペしてPosgreSQLインストールした仮想環境からpsqlで接続します。

ちなみに今回勉強に使うのは、改訂新版 反復学習ソフト付き SQL書き方ドリルです。

改訂新版 反復学習ソフト付き SQL書き方ドリル

架空の小さなお店の販売管理と従業員管理をイメージした学習用データベースを使ってお勉強していきます。なぜこの本を選んだかというと、ゆるい猫のイラストが可愛くて女子受けが良さそうだからです。さらに付属のCD-ROMにPostgreSQL用のサンプルデータが含まれていて都合がいいです。

いつでも貸してあげられるように一冊買って会社においておきましょう。

マンガでわかるデータベース

ちなみにマンガでわかるデータベースもいいとは思いますが、表紙がアレゲなのでよほどのイケメンでもない限りいきなりおすすめしないほうがいいと思います...

では、さっそくCD-ROMからcreate_for_postgres.sql data.sql drop_table.sqlを取り出して、Heroku上のPosgreSQLにテーブル作成してデータを突っ込みます。作業中会話に詰まって、「君へのINSERT権限くれないかな?」とか鉄板のオヤジギャク言っても時間はロールバックできないので気をつけてください。

\i ./create_for_postgres.sql

テーブル作成用のスクリプトを実行します。

\d
                 List of relations
 Schema |      Name       | Type  |     Owner
--------+-----------------+-------+----------------
 public | belongto        | table | mononofu
 public | categories      | table | mononofu
 public | customerclasses | table | mononofu
 public | customers       | table | mononofu
 public | departments     | table | mononofu
 public | employees       | table | mononofu
 public | prefecturals    | table | mononofu
 public | products        | table | mononofu
 public | salary          | table | mononofu
 public | sales           | table | mononofu
(10 rows)

作成されているのが確認できましたね。

\i ./data.sql

サンプルデータを先ほど作ったテーブルにつっこむスクリプトを実行します。

nkf -g data.sql
nkf -w --overwrite data.sql

日本語含まれているのでutf8になっていることを一応確認しておいたほうがいいかも。

\i ./drop_table.sql

削除用のスクリプトもついているので、テーブルをまっさらにするのもお手軽ですね。

\q

接続を切ります。

次にJackDBにアカウントを作って、Heroku上に作ったデータに接続します。GoogleGitHubのアカウントがあれば、面倒くさい登録作業なしです。

メニューからData Sourcesをクリックして、Herokuを選択。OAuthでJackDBに権限を与えることによって、JackDBからHerokuのPostgreSQLに接続できるようになります。

Authorizing JackDB with OAuth
Connecting to Heroku

詳しくはドキュメントを参照。

メニューからConnectionsをクリックして、先ほど接続したHeroku上のデータに接続します。

Editor 1という画面の下にSQLを入力して、Executeボタンを押せば実行されます。試しに68ページの「最近の女性の名前って、昔みたいに〜子ってつく人少ない気がするんだよな。うちの会社だと何人いるんだろう」と言う上司からの指令を実行してみましょう。

SELECT
  COUNT(*) AS 子のつく社員の人数
FROM
  Employees
WHERE
  EmployeeName LIKE '%子'
;

2と表示されましたね。

SELECT
  EmployeeName
FROM
  Employees
;

+ボタンを押せばタブが増やせるので、本当にそうなのか社員データと見比べるのも楽ですね。Save SnippetでSQL保存しておくこともできるのも勉強に役立ちそうだし。

これでブラウザを開けばどこでもSQLの勉強ができるようになりました(やったね!)

基本的なSQL覚えてPostgreSQL自体の使い方を覚えたいと言ってきたら、LPI-Japanがクリエイティブ・コモンズで配布してくれているオープンソースデータベース標準教科書(PostgreSQL)が役に立ちそうですね。無料で使えて我々底辺にはありがたいっす。

PostgreSQL全機能バイブル

万が一ですが本気で使いこなしたいと言ってきたら、鈴木啓修氏のPostgreSQL全機能バイブルをオススメしてあげるといいと思います。誰も教えてくれなくて(と言うかDB分かる人がいなかった)泣いてばかりいた新入社員当時、旧版には大変お世話になりましたm(__)m

他にもOreillyのPostgreSQL: Up and Runningとか。U.S. Census Bureau(アメリカ合衆国国勢調査局)のデータ利用したサンプルデータが置いてあったので参考にどうぞ。数カ月後に改訂版出るっぽいので買うの保留。

まぁ、世間的にはイルカなMySQLでしょうが、『キリンさんが好きです、でもゾウさんのほうがもっと好きです』なんて言ってた女の子もいたことですし、メジャーどころを避けるサブカル女子ウケ良かったりするかもですね☆

エンジニアのかれピッピに上記の設定作業頼めばすぐにやってくれると思いますし、オタサーの姫なら囲いにやらせればいいでしょう。万が一周りにその手の人がいない女子大生の方がいましたら、ac.jpアドレスからヘルプメールを送信してもらえればわたくしめがお手伝いしますので。

花見に誘われなくて暇だったので、頑張ってスクリーンショットとか加工してわかりやすくしたので皆様ご活用ください(;´Д`)