Nekoと遊ぼう
こんにちは。連日の猛暑で完全に夏バテの高橋です。
さて、皆さんは犬と猫ではどちらが好きですか?
私はどちらかと言えば犬のほうが好きですが、今回は猫と遊ぼうと思います。とはいっても、猫はネコでも「Neko」というプログラミング言語です。
私も最近まで存在を知ら なかったのですが、「【レビュー】新進気鋭のプログラミング言語「Neko」ってなに?」の記事を読んで興味がわいたので、ちょっと触ってみようと思います。
まずは、Nekoのサイトへアクセスします。
なんか怖い顔のお出迎えです。猫というより狼のような……。
それはさておき、Neko Language Specificationへアクセスして、言語仕様を見てみます。
ざっと眺めてみると、確かにPHPやJavaScriptを知っている方なら、すぐ覚えられそうです。ただ、組み込み関数の呼び出しに「$」が付いて、変数には「$」が付かないので、PHPを書きなれている方はタイプミスしそうですね。
では、早速使ってみるべくDownloadsへアクセスし、一番手軽に試せそうなWindows binariesをダウンロードします。
ダウンロードが終わったら、neko-1.6.0-win.zipを展開し「c:\neko」として配置します。
あとは、Neko Starter's Guideを見ながら触っていきます。
はじめにコマンドプロンプトを開き、動作確認を行います。
C:\>cd c:\neko
C:\neko>neko test
The virtual machine is working !
Calling a function inside std library...
Test successful
無事動作したので、次に、hello.nekoというファイルを作成します。
$print("hello neko world !\n");
そして、コンパイルします。
C:\neko>nekoc hello.neko
hello.nというファイルが出来ましたので、実行してみます。
C:\neko>neko hello
hello neko world !
無事動作しました!
今度はAn Introduction to Mod_nekoを見ながらいじってみます。
Apacheモジュールだけでなく、なんとWebサーバまで用意してあるんですね。早速動かしてみます。
C:\neko>nekotools server
Starting Neko Server on localhost:2000
ブラウザで「http://localhost:2000/」へアクセスしてみます。
404 Not Foundのページになりますが、ページのフッターに「Neko Web DevServer」と表示されますので、ちゃんと動作しているようです。
とりあえず今回はApacheへのセットアップはおいといて、このまま進めていこうと思います。
では、index.nekoファイルを作成します。
$print("Hello Mod_neko !");
コンパイルします。
C:\neko>nekoc index.neko
index.nが出来たことを確認し、再度「http://localhost:2000/」へアクセスします。
Hello Mod_neko !
無事表示されましたので、index.nekoを書き換えて、次の例を試します。
get_params = $loader.loadprim("mod_neko@get_params", 0);
$print("PARAMS = " + get_params());
今度は「http://localhost:2000/?p1=v1&p2=v2」としてアクセスします。
PARAMS = [p1,v1,[p2,v2,null]]
渡したパラメータが無事表示されました。これでパラメータの取得を行う処理が書けますね。
他にどんなことができるのか、Neko Librariesを見てみます。
お、MySQLの文字が見えますね。リンク先のページを見てみると、最低限必要な関数は一通り揃っているようですので、MySQLへアクセスするプログラムを作成してみます。
まずは、MySQLサーバへ接続して、データベースを作ります。
CREATE DATABASE `neko` DEFAULT CHARACTER SET utf8;
次に、テーブルを作成して、データを登録します。
CREATE TABLE `neko` (
`id` INT NOT NULL auto_increment,
`name` VARCHAR(255),
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `neko` (`id`, `name`) VALUES (1, 'タマ');
INSERT INTO `neko` (`id`, `name`) VALUES (2, 'ミケ');
INSERT INTO `neko` (`id`, `name`) VALUES (3, 'シロ');
準備が整ったので、mysql_test.nekoファイルを作成します。
と思ってはみたものの、MySQLの関数をどうやって呼び出せばいいのかわかりません……。
とりあえず、ググってみます。
http://lists.motion-twin.com/pipermail/neko/2006-January/000633.html
http://lists.motion-twin.com/pipermail/neko/2006-January/000649.html
どうやらloadprimを使ってfunctionを作ってから使用すればいいようです。では、そのように書いてみます。
// MySQL function
mysql_connect = $loader.loadprim("mysql@connect", 1);
mysql_close =