Insight Technology, Inc

インサイトテクノロジー

Japanese | English

オープンソースSQeeLイメージ

SQeeL とは「 手軽に使える、速い、WEBに適した言語が欲しい 」という(開発者たち自身の)要求から生まれた言語処理系です。 SQeeL は、GPL にしたがって配付されるフリーウェアです。

まず、次のコードを見てください。 これは SQeeL(スキール)というプログラミング言語のソースコード”sample01.eel ”です。


SQeeLバナー

[ sample01.eel ]
require 'dboralib.slb'

// 変数の定義
global usr_pwd
global TAB_NAME
global i
global CSR
global sqlbody
// ユーザ名の入力
usr_pwd = getopt("INPUT user/password=>")
if usr_pwd eq ''
  usr_pwd = 'scott/tiger'
  endif
// オラクルへアクセス
connect ${usr_pwd}
sql SELECT TABLE_NAME FROM USER_TABLES;
csr=fetch(0)
// 結果の表示
loop i = 0;i < count(csr);i ++
  sqlbody =  "ANALYZE TABLE ${csr[i]['TABLE_NAME']} COMPUTE STATISTICS"
  sql ${sqlbody};
  if dberr eq 0
    print ('"${sqlbody}" 正常終了')
  else
    print ('"${sqlbody}" 異常終了 err=${dberr}')
  endif
endloop
exit

このプログラムは、オラクルのユーザを指定するとそのユーザが所有するすべてのテーブルを analyze するというものです。

このように、ちょっと複雑なデータベースの処理を気軽に実行できるプログラミング言語 SQeeL とはどのような言語か、ご紹介しましょう。



データベースのアプリケーションを構築するのに最適

SQeeLでは複雑な手続きをすることなく、簡単にオラクルにアクセスできます。
例えば、オラクルへの接続はconnectコマンドを使い、

connect SCOTT/TIGER

のように記述します。
オラクルへの接続を切断する場合は logoutコマンドで、

logout

と記述します。
SQL文は>sqlコマンドを使い

sql SELECT ENAME FROM EMP;

のように sql に続いて SQL 文を指定します。
SQL文に >SQeeLの変数を使用することもできます。

sql SELECT EMPNO, ENAME FROM EMP WHERE ENAME = '${username}';

と記述し、変数 "username"に文字列 "SCOTT"が代入されていた場合、

sql SELECT EMPNO, ENAME FROM EMP WHERE ENAME = 'SCOTT';

と同じ意味になります。
SQL文が SELECT文の場合、システム関数 fetch() を使って、選択されたデータを取り出すことができます。
システム関数 fetch() は配列を返します。

tbl = fetch(0)

この場合、1行目のデータにアクセスするには、

tbl[0]

とします。
各行のデータは連想配列になっていて、選択したカラム名でデータにアクセスします。
例えば1行目の "ename" というカラムにアクセスする場合は、

tbl[0][ 'ename' ]

とします。
このようにプログラミング言語 SQeeLはオラクルへのアクセスを簡単にすることを1つの目標に開発されています。
よって、ちょっと複雑なデータベースの操作を気軽にプログラミングするのに SQeeLは最適です。
また、SQeeL の他の機能も合わせて、本格的なアプリケーションを開発することもできます。



気軽にプログラミングできる言語 SQeeL

では、先ほどのプログラム "sample01.eel" を実行してみましょう。
SQeeL プログラムはテキストファイルです。テキストエディタなどで先ほどのコードを入力し、"sample01.eel" というファイルにセーブします。
そして、sqeel コマンドに "sample01.eel" というファイルを指定し実行します。


> sqeel sample01.eel

C 言語のようにコンパイルしたり、リンクしたりする必要がありません。テキストエディタで、プログラムを作成してすぐに実行し、 バグがあったらテキストエディタで修正してすぐに実行、というように気軽にプログラミングすることができます。



高速に動作する言語 SQeeL

気軽にコーディングして実行できる言語は他にもたくさんあります。
スクリプト言語やインタプリタ言語(例えば Perl や csh など)です。一般にこのような言語は実行速度が遅いというイメージがありますが、SQeeL は扱い易さと実行速度の速さを両立させています。

SQeeL は eelVM と呼ばれる仮想マシンを実装しており、この eelVM は独自のバイトコードを実行します。 ユーザが実行する SQeeL プログラムはこのバイトコードにすべて変換されて実行されます。バイトコードへの変換は SQeeL が自動的に行いますので、ユーザはコンパイルやリンクの作業をする必要がありません。

インタプリタ言語のようにテキストファイルで記述されたプログラムを実行するよりも SQeeL のように変換されたコードを実行するほうが高速にプログラムを実行できます。

ただ、テキストのプログラムをバイトコードに変換する作業には時間がかかります。 SQeeL は1度実行されたプログラムは変換されたバイトコードをディスク上に保存していて、もとのテキストファイルが変更されない限り、この変換作業は行いません。 よって、2回目以降の実行は高速になります。



簡単に習得できる言語 SQeeL

SQeeL のプログラムは一般的な式と、変数や関数の宣言文、数個の制御文で構成されています。
文法が単純ですので SQeeL でプログラミングできるようになるまで、そう時間はかかりません。 C 言語や BASIC 、Perl などでプログラミングの経験がある方でしたら、マニュアルを見ながらすぐにコーディングを始められます。