つれづれ

ちょっと、ゆとりができたので、いろいろと模索していた。
Androidというのを教えてもらったので調べてみた。
Googleケータイ用の開発言語。
Windows用の開発キッド(SDK)がフリーで手に入るよ、これはすごい!
iPhoneは、SDKMacOSではないと駄目だったが、
これなら、手が出せそうな気がした……JAVAだけどね!
とりあえず、環境を作ってサンプルソースコンパイルまではしてみたが、
Cしかできないオレにはハードルが高い……うう。
でもまあ、エミュレータも付いているし、
時間がとれたら、関数群を調べつつ、なんか作ってみたいな、コンテストもあるみたいだし。
で、このAndroidを調べていて、自分的にクリティカルな発見。
というのが本題。


それは、SQLite
調べてみると、サーバに依存しない(ファイル一つに対してオープンする)形で、SQLが使用可能らしい。
しかも、パブリックドメイン
こんな便利なものがあったのかと、びっくり。
で、早速、いじってみた。


http://www.dbonline.jp/sqlite/index.html


このサイトで、仕様を斜め読み。
MYSQLのような使い方でいける。
多少違うとはいえ、ほぼ同じ感覚でクエリーを発行できるよ、これはすごい。
しかも、型が緩いから、Luaとの親和性が高いかも。
今まで苦労して、ファイル間の連携処理を作っていたが、
C++のクラスから、クエリーを叩くようにすれば、
バイト位置とか考えずにガンガン書込読込処理が出来そうだ。
と、夢が広がる。


具体的にいうと、武器をテーブルにしておいて、
主人公が、アイテム’鉄の剣’を持っていたなら、
その’鉄の剣’で、クエリーを走らせれば、一発で武器の詳細情報を取得できる。
主人公の所持品テーブルに対してLEFT OUTER JOINしてもいいし、都度読みだしても良い。


ほかの例でいうなら、シューティングのランキング。
エントリーのテーブルを一つこしらえておけば、
得点、日付順でORDER BYのDESCをすれば、一発で、ランキングを作ることができる。


.outputで、いろいろな仕様に吐き出せたり、
トランザクションも出来たりと何かと便利な機能が盛り沢山。


ただ一つ、気になったのが、
今のところ、COLUMNのDROPとCHANGEが出来ないようだ……。
ググってみたら、やはり出来ないという記述を見つけた。
ADDができるのに、なぜか削除が出来ない謎。
まあ、出力と取り込みが容易にできる設計上、
テンポラリのテーブルを介して受け渡し出来るから、問題ない……ということかな……うーん。
今後のバージョンアップで機能が付いてほしいな!


SQLiteは、ググっても日本語の記述が少ないが、いろいろなところで利用可能らしい。
話の糸口となったAndroidはもとより、iPhonePHPPythonとかでも標準対応されているとか。
まあ、これだけ便利なら、さすがに機能として付けるよね、さすがに。
Luaは、最小限をウリにしているから、
きっと、別の人が機能を提供するという形になりそう。
まあ、SQLiteのバージョンの都度、
受け側自身も変えないといけないのは目に見えているから、Luaの姿勢はすばらすい〜。


ながながとなったが、便利この上ないから、自分も積極的に使うよ!
まだ、Cのソース側では、データベースのopenとcloseが成功したというテストしかしてないけどね!