コンパクトでない空間

a good experience become even better when it is shared

ブラウザでSQLを描く

今回は、ER図を編集し、コードを自動生成してくれるウェブサービス

WWW SQL Designer  のレビューのようなものを書こうと思う。

 

ウェブアプリケーションを作ってみたら、

ER図、サイトマップワイヤーフレームなど、

コードを描きはじめる設計の段階で図を描きたいという状況に遭遇した。

今回の記事では扱うのはER図の方だ。

サイトマップワイヤーフレームについては、

現在Cacoo(カクー)というサービスを試しているところなので、

そちらがある程度まとまってきたら記事にしてもいいかもしれない。

 

このブログはIT系でない読者も想定しているので、一応ER図を簡単に説明しておく。

住所録などのデータベースを、複数の表(テーブルと呼ぶ)の組み合わせで表現することがある。(これを、リレーションデータベースと呼ぶ)

アメリカのなんちゃら(調べたら「米国標準技術研究所」らしい)が

リレーションデータベースを図として表現する記法を規格化した。

ER図と言った場合、大体の場合この規格に沿った図のことを指す……と思う。

私も初心者もいいとこなので、こんな適当なことを言っていたら詳しい人に怒られてしまうかもしれない。

怒られたくない読者さんは、私の言うことを鵜呑みにせずきちんと調べてほしい。


話を戻そう。サテでは紙とペンやお絵描きソフトでそれを描くかというと、

やっぱり直線がきれいにひけないのも文字をへっぽこな手書きで書くのも気分が悪いし、

なによりあとから修正を加えたいと思ったときに、あまり融通が効かない。

ここの枠、もうちょっと中に文字を描きたかったから大きくしたい、だとか、

いろんなところに矢印のつながっているこのオブジェクトを移動させたい、だとか、

想像しただけでめんどくさそうだ。


やっぱり私もエンジニアのはしくれ、できればデジタル化したいし、

欲を言えば軽量でどんな環境でも使えて図の製作に特化したいろんな機能のついているエディタを使いたい。

Libre OfficeやMicrosoft Officeの各種製品でもできるのだろうけれども、

ER図を描くのに特化したよいソフトがあると教えてくれた人がいたので、

特化したよいソフトがあればそれにこしたことはないと、飛びついて調べてみた。


しかし、なんせ32bitのUbuntuという時代遅r特殊な環境を入れてしまったせいで、

対応しているソフトがなかなか見つからない。

「ブラウザで動くのとかないの?」

と冗談混じりに調べて見たところ、「WWW SQL Designer 」というのが見つかった。

f:id:saho-london:20160301131644p:plain

操作にクセはあるものの、動作も快適だし、フォーリンキーの設定もでき、

リレーションを表す線もテーブルの移動に合わせてぬるぬるついてきてくれる。

残念ながら多重度を表現する機能は見受けられないので、本格的な開発には向かないのかもしれないが、

私が作ろうとしていた小規模なアプリケーションであれば十分だった。

テーブルやフィールドの追加、消去は右端のメニューから行う。

「Add table」/「Add field」ボタンをクリックすると新規テーブル/フィールド編集のボックスが開き、

情報を入力したらEnterまたはなにもないところをクリックで確定できる。

編集は、テーブル/フィールドを選択して「Edit table」/「Edit field」ボタンか、

もしくはこちらは少しグラフィカルに、編集したいテーブル/フィールドをダブルクリックでもできる。

フォーリンキーの追加の操作はややヤヤコシイ。

f:id:saho-london:20160301131648p:plain

参照したいテーブルのプライマリーキーを選択し、メニューから「Create foreign key」をクリック

f:id:saho-london:20160301131653p:plain

ボタンの表示が「[click target table]」になったら、フォーリンキーを追加したいテーブルをクリック

f:id:saho-london:20160301131657p:plain

フォーリンキーが追加できた。

先にフィールドを作り、それをあとからフォーリンキーに設定する場合でも、

同様に参照したいプライマリーキーを選択した状態で「Connect foreign key」ボタンを使う。

f:id:saho-london:20160301131706p:plain

MySQLであればコードも自動生成してくれる。

「Save XML」を選択して表示されたコードを保存しておけば、

それをロードすることで絶対位置まで含め完全に復元することができる。

注意したいのが、なぜか各フィールドは新規作成した際にデフォルトの値がNULLに設定されている。

NOT NULLにしたい場合や、デフォルトの値を別の値に設定したい場合は忘れずに編集しないといけない。

 

やはり、機能が最小限で、操作も位置が固定されたボタンで行うため、動作が安定するのが一番よいところだと思う。

マウスの位置がすこしずれただかなんだかよくわからない理由で、

勝手に新規テーブルの作成、極端な拡大など意図しない動作をしてしまう、という

高度でグラフィカルなエディタにありがちなストレスはまったくない。

しかし、多重度が表現できない点もあるし、

アカウントで管理もできないので、他のユーザーとのシェアなどには不便さがある。

私のような、個人の開発者向けにはいいという印象だ。

 

GitHubの使い方のテストもかねて今回作ったxmlファイルを公開してみた。

もともと自分用のメモだったのもあり、

使いたかったのはSQLiteで自動生成されたMySQLをそのまま使うつもりもなかったので、

かなり雑な作りになっていて、データベースとしては参考にならないと思うけど、

www SQL Designser の Save/Load 機能を理解する助けには使ってもらえるかもしれない。

github.com

目標、指針、あるいは取らぬ狸の皮算用

はてなブログをはじめてみた。

というのも、現在大学2年生、情報の世界と関われば関わるほど、

「自分用にIT関係の活動を記録しておけるアーカイブ」の必要性を感じるからだ。

生々しい話をしてしまえば、インターンシップの選考や就職なんかで、

URLひとつ書けばそこに自分のすべてがつまっているようなブログがあると楽そうなのだ。

とはいえ、就職のためだけにそこまでできるほど私も就活に意欲のある人間でもない。

正直できれば就活なんて一生せず、大学という社会の厳しさから隔離された環境で、

研究という名のモラトリアムを続けていたい。

ブログという選択肢を思いついたきっかけが就活だっただけで、

単純に私は文章を書いてアウトプットしていくのが好きなのだ。


IT関係の記事だけを書いていれば当初の目的は達成されるわけだけれど、

なんでも書ける!なにを書こう?と考えてみると、IT関係以外にも書きたいものはいっぱいある。

むしろ、はじめてC言語に触れ、情報の世界の扉を開いてから2年と経ってない身、

ITの記事に限定したら書けるものなんて大した深みのないものばかりになってしまう。

だから、ジャンルを絞らず、雑多なことを思いつくがままにとりとめもなく書いていくと思う。

今のところ、漠然とこれネタになるかな?と考えているのは、以下のような話だ

  • 成人してから「発達障害」と診断されたこと

  • 昨年のマレーシア留学とそこで出会った人たちとのその後

  • 修士から海外の大学という選択肢は現実的なのか

  • vimをつかいはじめて一ヶ月経った感想

  • LPICレベル1を受けてみた

  • GitHubをはじめてみた

この中のどれだけを書くのかは定かではないし、もしかしたらひとつも書かないかもしれないけれど、

これらの記事をかかなかったとしても、方向性はこんな感じになると思う。

ここにないジャンルでは、数学の記事を書く可能性もあるが、数学の記事なんて書こうものなら、

数学クラスタにはボロクソに言われ、

そうでない人たちには「何言ってるんだろうこの人」、と引き気味にかわいそうな目で見られる様子が、

ありありと目に浮かぶ。ちょっと書きたくない。

話を戻して、もしこれについて書いてほしいと思っていただけたテーマがあれば、

是非コメントに残していってほしい。



最後に、意気込みも書いておこうと思う。

先述の通り、記録がつけられれば私の当初の目的は達成されるけど、

技術の交換の場になるようなブログや、

読者が感化されて影響されていくブログというのには、

少し憧れたりもする。

もちろん、一日にしてみんなが欲しがる技術を身につけられたり、

誰もに愛される人格者になれたりなんて甘い話は落ちてないので、

せめて、読む人に親切な、わかりやすいブログを書きたい。

ひとつの記事の文章量、句読点や改行の量などの形式的なところも、内容の論理構造も、

気がついた範囲で気を配って記事を書いていこうと思う。

もし、ここがわかりにくかったということがあれば、

それも遠慮なくコメントに書いていただけると嬉しい。