SQLiteのインデックス

2009/11/08 | SQLite

普段SQLiteに触れる際はFireFoxのプラグイン「SQLite Manager」を使っている。以前はウェブベースで操作できる「SQLiteManager」(って同じ名前かよ)を使っていた。理由はSQLite2を取り扱うことができたから。あと、仕事で使ってみて、実際に稼動させてしまった環境で使うのに、ダウンロードやら何やらしている間にデータの欠損ができると嫌だったのでダイレクトに処理できるウェブベースな環境がよかったのだが・・・。今となってはSQLiteで納品する可能性はかなり低いし、PHP5な環境が一般的になりSQLite3だけ対応できていればいい。そしてローカルな環境でさえ動けばいい。そういう理由でプラグイン版を使用している。

でもSQLiteを使いこなすにはまだまだ初心者なのでいろいろとわからないことが多い(いや、SQLiteに限らずPHPもデータベース全般に対してもまだまだひよっこであるのだが)。SQLiteのインデックスのことがよくわからない。というかこれってFireFoxのプラグインの機能でインデックスを作成しようとするのが悪いのか(特殊なのか)、いったいどうすればよいのやら。

通常インデックスって「CREATE INDEX …」の構文で作成すればよいはず。ウェブで調べてもSQLiteも同様の書式で作成できると書いてある。実際にそのコマンドでインデックスができることも確認している。

FireFoxのプラグインで作ろうとすると、使用カラムを選択する際に「Ascending」か「Descending」を選ぶことになっている。この意味がわからない。並べ替えのために同じカラムに対して二つのインデックスを作成しなくてはいけないのか、それともまた別の意味なのか。

実際のところ、最大でも1000件くらいのデータしか投入しない予定なので、それほど問題にはならないのだが、イマイチすっきりしない。暇ができたら調べてみようと思うのだが・・・。

待ち合わせ場所連絡ツールkokode.inに機能追加

2009/11/07 | JavaScript/Ajax

再度kokode.inに機能を追加した。

今までは単純に、地図に位置をプロットするだけだった。たしかに「渋谷のハチ公前」とか「上野の西郷さん」とかでの待ち合わせなら十分だったのだが、待ち合わせ場所といえばやっぱりカフェ。カフェを簡単に選択して待ち合わせ場所として使えないか、と思って少し考えた。

結局どこかが提供するAPIを使用することになるのだが、候補に挙がったのは「HotPepper」と「ぐるなび」。ということで最初は「HotPepper」を使ってみることにした。こちらのAPIは返してくれるデータの形式がいろいろ選べるのが便利。xmlとかjsonpとか。サーバサイドスクリプトを使わなくてもJavaScriptだけで対応できた。でも一つ問題。そもそもHotPepperだと登録されているデータ数が少なくて・・・。

ということで「ぐるなび」を使うことにした。ただしこちらはxmlでしかデータを返してくれないので、JavaScriptだけでは処理できない(クロスドメインの問題)。仕方がないので、サーバにxmlを取得するプログラムを設置して、そのプログラム経由で処理することにした。「ぐるなび」は登録データが多いから、カフェの候補もたくさん表示されるのでこちらのほうが断然いい。ということでカフェ検索機能を追加してkokode.inをリニューアルした。

待ち合わせ場所連絡ツールkokode.in

jQueryによるAjax処理でxmlを受け取るときに

最近はjQueryに夢中。毛嫌いしてきたJavaScriptだったが、jQueryに出会ってからは一転。できることならPHPをやめてしまって、jQueryでご飯を食べたいくらいだ(でもそれは無理)。

Ajaxアプリを記述するときに、サーバサイドPHP、フロントエンドjQueryが今のお決まりのスタイル。基本的にはPHPからの応答はjsonを使うのだが、今回とある理由でxmlでデータを返すことにした。ここではまった。

jQuery側では以下のような記述で受け取りたかったのだが、どうしてもデータを処理できない。

$.ajax({
type:’GET’,
url:’index.php’,
dataType:’xml’,
success:function(data){
//JavaScriptによる処理
}
});

dataTypeでxmlを指定すると、動作しないのだ。なぜだ。

なにぶん、JavaScriptはまだまだ初心者なので、さんざんJavaScriptのプログラムを疑った。でも実はPHP側に問題があったなんて・・・。

PHPからは単純にXMLを吐き出していただけなんだが、それがまずかった。通常特別なことをしない限り、PHPによる応答のContent-typeの指定はtext/htmlなはずだが、これがいけない。jQueryはこのHTTPヘッダを読み取り、Ajaxで帰ってくるデータがhtmlであることを期待しているのに、xmlが返ってきてしまったわけで、それで動作しなかったようだ。

PHP側の処理で、以下の一行を加えることで解決できた。

header(‘Content-Type: text/xml; charset=UTF-8′);

PHPでXMLを返すのではなく、単にdata.xmlのように、拡張子xmlのファイルを呼び出すのであれば問題なかったのにね。

待ち合わせ場所連絡ツールkokode.in検索機能追加

2009/11/04 | JavaScript/Ajax

待ち合わせ場所サービスkokode.inが楽しい。機能はなきに等しいけど、自分で使っていて楽しい。

待ち合わせ場所サービスkokode.in

今日は車で外出の予定があったのだが、地図が必要。ということでkokode.inを早速使用する。行き先の名前はわかっていたのだが・・・検索機能つけてなかった。ということで早速キーワードによる場所検索機能を追加。もともとジオコーディングの関数を組み込んでいたのでインターフェイスをつけただけ。でも、やっぱり便利。自分で使いたいと思えるサービスって、なんかいい。

新しいアンケートASPサービスの開発

2009/11/01 | その他

ウェブ上で簡単に無料でアンケートを作成して、集計・ダウンロードまでできる「CubeQuery」を開発して、もう2年半がたった。無料でできる同様のサービスは他にもいくつかあるみたいだけど、自分としては特にライバル視せず、また調査をするわけでもなく、ひたすら放置をしてきたわけだが、Googleからページランク4をいただいて、もうお腹いっぱいって感じだ。

アンケート作成者も多岐に渡るようで、結構大きな企業さんにも活用していただけているようだ。高評価もいただけて何より。でも今、新たなアンケートASPサービスを模索しているところだ。昨今のプログラム環境や各種API、JavaScriptフレームワークによるインタラクティブな環境が当たり前になりつつあるので(といってもまだまだなんだけど)、それに準じた使いやすさを求めたくなった、というのが正直なところだ。

あと、有料化も見据えたいんだけど、利用者にとってその敷居は高い。とても高い。だから新サービスは、現状のCubeQueryに、少し機能追加して使い勝手をよくしたものを無料で提供し、さらに付加価値をつけて有料版を提供しようと思っている。ここのところ業務でアンケートシステムを構築する機会があったので、それらで得た知識もいかせると思う。

もしCubeQueryの利用者の方で、ほしい機能があれば、ここにコメントとして残していただきたい。実は現状新システムはほぼ完成の域まできていて、ウェブサイトを作って、デザインを加えれば公開できる状態まできているのだが、まだまだ手を加えたいと思っている。是非、リクエストをいただきたい。リクエスト数の多さや論理性を検討しつつ機能を追加できたらと思う。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net