箱庭作成のススメ
2008年12月22日
私は趣味で、箱庭を作っています。
箱庭を辞書で調べてみたところ、このような意味だそうです。
----
はこにわ 【箱庭】
浅い箱や鉢に土を盛り、小さな草木や石などを配し、
模型の橋・家その他を置いて山水や庭園の姿を模して観賞するもの。
[季]夏。《―の人に古りゆく月日かな/虚子》
三省堂「大辞林 第二版」より引用
----
唐突に何を言ってるのかと思われるかもしれませんが、
実は箱庭といっても、私の作っている箱庭はこのような風流なものではなく、
自宅で作る小さい情報システムのことを個人的にそう呼んでいます。
実際のところどんなものかということを、
辞書で言うところの箱庭と私の箱庭を対比しながら紹介させていただきます。
<箱>
まず箱です。
すべてのものを配置するベースとなるもの、ハードウェアです。
少し前でしたら、使い古しのパソコンや、オークションで落札したUNIXサーバーなど
を使っていましたが、今はVMwareなどの仮想化ソフトウェアが無料で使用できるように
なったため、その恩恵を受けて、VMwareとXenを使用しています。
<土台>
次に、箱に盛る土です。
配置する小物を載せる土台となるもの、OSです。
仕事で使うサーバーのOSがUNIX、Linuxであることがほとんどなので、
コマンドライン操作の練習もかねて、Linux(Debian、CentOS)を使用しています。
<草木、建物>
最後にその上に草木や建物です。
土台の上にのるもの、ミドルウェアや、アプリケーションプログラムです。
Webサーバーや、サーブレットコンテナ、データベースをはじめ、
普段はちょっとかかわらないようなDNS、メールサーバーなども配置しています。
以上、簡単ながら箱庭の紹介です。
こんなことをして何が面白いのかと思われる方もいらっしゃるかも知れませんが、
以下のようなメリットがあると思います。
(あくまで個人の感想であり、実際の効果を表すものではありません。)
1.システムを箱庭サイズに単純化することにより、システム全体が見渡せ、
どのような構成でシステムが成り立っているかがわかります。
2.システムを実際に構築することにより、
サーバーを構築管理しているシステム管理者の気持ちが(ちょっと)わかります。
3.意識しないで使っていた、「情報インフラ」にあたるサーバー(DNSなど)を自分の
手で構築することにより、情報システムの裏側の仕組みがわかります。
「Write Great Code」という書籍の副題に「ハードウェアを知り、ソフトウェアを書く」という
言葉がありました。
箱庭作りは「情報システムインフラを知り、ソフトウェアを書く」を実現するための手段と
いったところでしょうか。
知らなかったときより、知った後のほうがよりよいシステムが構築できるように思えます。
--- 基本的には、自分の好奇心を満足させるためですが。
「プログラマは毎年1つの言語を学ぶべきである。」という有名な言葉がありますが、
ひとつの言語を覚える代わりに、箱庭を作って遊んでみてはいかがでしょうか?
