Pure PerlのRDBMSを作る

今日からブログを書くことにしましたkoherです。

突然ですが、Pure PerlRDBMSを作りたいと思います。

自己紹介

某ITコンサルに勤めていましたが、より技術的なことに取り組みたいと思い、退職して大学院に戻ろうと考えています。8月でプロジェクトがひと段落したこともあり、会社にも退職の意思を伝えて現在休暇中です。

はてなでアルバイトがしたい

大学院に戻るといっても生活費は稼がなければなりません。せっかくならスキルアップにもつながる会社でアルバイトができればと思ってさがしている際に、はてながアルバイトの求人をしていることを知りました。はてなであれば技術的なこだわりもありそうですし、一度WEB系の会社を内側から見てみたいという思いもあったのではてなに応募してみることにしました。

なぜPerlRDBMSを作るのか

はてなで最もよく使われているプログラミング言語Perlのようです。これまで、Java、C、JavaScriptPHPActionScriptなどを触ってきましたが、Perlはおそろしいほど経験がありません。大昔に本を見ながら簡易掲示板のCGIを作っただけです。もはや、変数に$をつけることしか覚えていませんでした。

はてなの求人のページには

求められる知識/経験

http://www.hatena.ne.jp/company/staff/applicationengineer

とありますが、さすがにPerlは書けませんでは通用しないと思います。ですので、一からPerlを勉強することにしました。

しかし、ただ勉強するだけではおもしろくありません。それに、本やWEBを読んでいるだけでは身に付きません。練習がてらPerlを書くのであれば、せっかくなので前々から作ってみたいと思っていたRDBPerlで書いてみることにしました。

はてなのWEBアプリケーションエンジニアに応募するならWEBアプリでも作った方が良いように思えるかもしれません。もちろん、PerlでWEBアプリも書いてみようと思います。GETやPOST、Cookie、セッションの扱い方、MemcachedやDBアクセスの方法(DBIx::MoCoなんかも)、テンプレートエンジンくらいはおさえておきたいところです。ただ、WEBアプリはあまり複雑な処理を行わないことが多いのでプログラムも定型的になってしまい、言語の勉強としてはベストでないように思います。

それに、勉強の過程をブログに記すのに、題材がWEBアプリではおもしろみがありません。公開しておもしろそうなもので、プログラミング的にある程度の難易度があり、自分が興味を持っているもの。そう考えるとRDBMSなんかいいんじゃないかと思ったわけです(キーバリューストアなんかも考えましたが、RDBMSの方が複雑そうだったので)。

何を作るのか

方針変更に伴い、一部修正しました。

ここまで作る、ということは明確には決めていませんが、大体下記のようなものを考えています。

  • 100%Perlで開発する。
  • 10月上〜中旬10月下旬くらいまでにある程度形にする。
  • まずはMyISAMのような、トランザクションなし、テーブルロックで動作するものを作る。追記型MVCCでトランザクションをサポートする。
  • 実用性は重視しないが、小型のシステムに気軽に組み込んで使えるようなものを想定する。
  • SQLのサポートは構文解析が大変な上に、アルゴリズム的な本質ではないので後回し。

どんなものができあがるかわかりませんが、あたたかく見守っていただければ幸いです。