先ほどの例では、ソースコードをできるだけ標準のCファイルに近い形のままにしてccodを使用した。単一ファイルからなる簡単なプログラムならば、ソースコードの上に2行追加するだけで、ccodを使用することができる。ccodのウェブサイトにあるサンプルのほとんどは、PHPに倣って定義された、混在モードのC構文を用いている。たとえば以下の例に示すように、main()関数は存在せず、<?ブロックの外にあるテキストは、プログラム実行時にそのまま端末に出力される。
$ cat ./main2.c
#!/usr/bin/ccod
hi there
<?
printf("and more\n");
return 0;
?>
$ chmod +x ./main2.c
$ ./main2.c
hi there
and more
この構文は、提供されるC Server Pagesインターフェースを用いたウェブプログラミングにccodを使用する場合に適している。ドキュメントページには、C Server Pagesを用いたCGIプログラミングをかなり容易にしてくれる、ちょっとした関数の集合が提供されている。セッション処理、クッキー、フォーム、クエリ文字列へのアクセス、リダイレクトなど、ウェブプログラミングに必要となる関数が、C Server Pageアプリケーション向けの一般的なC関数としてすべて提供されている。
最初に示した例では、「#pragma CCOD:script」を用いて、ccodがCソースファイルを扱う方法を指定している。同プロジェクトでは、このようなpragmaが10種類ほど提供されており、使用するコンパイラ、コンパイラに指定するフラグ、プログラムにリンクするその他のライブラリ、C Server Pageプログラム特有のオプション数種を指定することができる。
ccodはコンパイル済みのバイナリをキャッシュするため、実行の度にソースコードがコンパイルされるわけではない。もちろん、今回私がcksum関数に加えたちょっとした変更は、しっかりとテストしたわけではないので、キャッシュ処理を妨害してしまっているかもしれない。問題は、変数sに大きすぎる値が代入されていることのようであったため、データ型を変更した。別のチェックサム関数をどこかから持ってきて、cksum関数の中身を完全に入れ替えてしまうというのも解決策の1つかもしれない。
CまたはC++で書かれたコードが既に存在し、その機能の一部をプロトタイプとしてウェブに公開したいという場合には、C Codが最適だろう。簡単なコーディング、コンパイル、テスト実行を繰り返す作業においてC Codを用いれば、makefileを作成したり、コンパイルプロセスを気にしたりする煩わしさから解放してくれる。
Ben Martin 10年以上にわたってファイルシステムを研究。博士課程を修了し、現在、libferris、ファイルシステム、検索ソリューションを中心にコンサルティングをしている。
