Nursery
Nurseryとは、私が個人で開発しているCocoaフレームワーク向けのオブジェクト指向データベース(OODB)です。
フレームワークとして開発しているので、アプリケーションに組み込む形で利用できます。
この記事では、Nurseryの基本的な使い方を説明するつもりでしたが、開発動機のくだりを書くだけで力尽きました。ごめんなさい。使い方の説明は次回に行う予定です。機能の概要やごく単純な使用方法は、GitHubのNurseryリポジトリのREADMEに書いてあります。また、READMEのドキュメントへのリンクから、APIリファレンス等にアクセスできます。
開発動機と私の略歴
よくある話ですが、私は中学1年の春頃に交通事故に遭いました。幸い怪我等はなかったのですが、1週間ほど念のため学校を休むことになりました。もともと内向的で周りと馴染めない性格だったことや、始まって間もない時期に長めの休みを取ったことで、引け目を感じてしまい、不登校になりました。
しばらくして、私は物作りが好きだった事もあり、Mac OS X(当時)でCocoaフレームワークとObjective-Cを使い、趣味としてプログラミングを始めました。Cocoaでのプログラミングを初めてしばらくして、アプリケーションはMVC(Model View Controller)というものを考慮した方が良いとされていることを知り、MVCを調べていくうちにその発祥であるSmalltalkという言語を知りました。そしてその処理系であるVisualWorksやSqueakを使ってMVCに沿ったアプリケーションの作り方を学び、そしてオブジェクト指向データベースの存在を知りました。Smalltalkで何か作るというよりも、Cocoaでアプリケーションを作るために、オブジェクト指向やMVCについて理解を深める目的でSmalltalkを使っていました。
その後、中学を卒業するまでと卒業後の数年間は家事の手伝いをしつつ、プログラミングを続けました。それから通信制の高校に入学し、しばらくプログラミングから遠ざかりました。
高校を卒業後、主にWindows向けの業務系システムを開発する会社に就職しました。
そこでの使用言語は主にC#で、使用するデータベースはOracleやSQL Server等のリレーショナルデータベースでした。オブジェクト指向言語を使っているのに、永続化にリレーショナルデータベースを使っているため、データの保存時には、オブジェクトをテーブル構造に変換し、データの読み込み時には、テーブル構造からオブジェクトに変換する必要があり、強いストレスと怒りを感じていました。データベースの変更に、SQLやストアドプロシージャを使う必要があり、オブジェクト指向に基づく処理ができないことにも同様にストレスと怒りを感じていました。また、プライベートでは、Core Dataにリレーショナルデータベースの影響が見受けられ、本来のオブジェクト指向データベースとは異なるものだと思い、そのことにも失望と怒りを感じていました。それらの感情が原動力となり、私は、オブジェクト指向データベースの開発を始めました。会社には7年ほど勤務しましたが、これもよくある話ですが、残業が多く心身に異常をきたしうつ病を発症し、退職しました。退職後も、鬱の症状が落ち着いている時期には、Nurseryの開発を続けていました。
現状ではインスタンスオブジェクトとそのインスタンス変数をデーターベースに永続化できます。
次の目標として、インスタンス変数だけではなく、メソッドもデータベースに永続化するため、その準備として、リポジトリのcブランチでCコンパイラの開発を進めていて、現在はCプリプロセッサを実装中です。
ライセンス
ライセンスは、zlibですので、商用・非商用のどちらでも利用できます。