Copal Help File

Copal Help File

Copal(コーパル)はPerlや、AWK等のスクリプト言語をWindows環境で使いやすくするために作った統合環境です。 最新版は<URL:http://copalpro.sourceforge.jp>よりダウンロードできます。

目次

インストールと簡単な使い方

インストール

Copal用にフォルダを作って、そこに書庫ファイルを展開してください。レジストリを書き換えたりはしないので、アンインストールをしたいときはフォルダごと消し去ってください。また、実行ファイルと同じフォルダにCopalPro.cfgという設定ファイルを作ります。またdefsという言語設定ファイルを管理用のフォルダを作ります。

設定

最初にCopalを起動したら、「設定」メニューの「言語」から使用する言語を指定してください。 無ければ「設定」メニューの「新しい言語」を指定して、新規に名前を付けてください。 その後「実行」タブの実行ファイルのパスを設定してください。 例えばC:\Perl\bin\あるperl.exeを使いたいのならC:\Perl\bin\perl.exeと入力してください。 このとき、実行ファイル名までフルパスで入力するのを忘れないでください。

実行パスの指定

実行言語の設定

デフォルトでPerl、Ruby、PHPの言語設定例が付属しています。 AWKを使うのであれば、「言語別の設定」の「実行時オプション」に -f を設定してください。 VBScriptを使うのであれば、「言語別の設定」の「テンポラリファイル名」の拡張子を「vbs」にしてください。例えば、copal.vbsなどにして下さい。

使い方

Copalを起動した直後か、「ファイル」メニューから「新規作成」を選んだときは、フォームのキャプションに「Copal * 新規スクリプト」と表示されているはずです。この状態で、何かスクリプトを組んでみましょう。スクリプトはメインウィンドウに入力します。 以下全ての例をPerlで説明します。

スクリプトウィンドウに print "Hello World"; と入力して、実行ボタンを押してください。

実行ボタン

「実行結果」というページができて、 Hello World と表示されたら成功です。

実行結果

Copalの仕様

注意

Perlのコマンド evalとCopalは非常に相性が悪いようです。evalに限らず子プロセスを起動するようなコマンドはCopalから見て孫プロセスになってしまうため、環境により不安定になってしまうことがあります。ご了承ください。

スクリプトの実行

img

 入力したスクリプトの実行ができます。適当なスクリプトを入力して「実行」から「スクリプトを実行」を選んでください。実行結果が結果表示ウィンドウに表示されます。エラーメッセージなどもここに表示されます。

実行結果をブラウザへ

img

スクリプトの実行結果をそのままブラウザへ送ることができます。実行結果は一時的にファイルに保存されますが、その名前は環境設定で指定することができます。

例えば print "<H1>Hello!</H1>"; 上記のようなスクリプトを書いて、「img実行結果をブラウザへ」ボタンを押すと、ブラウザが立ち上がって結果を表示します。大きな字で Hello! と表示されたら成功です。

ブラウザへ結果を出力するとき、"Content-type・・"等のヘッダ情報をカットする事もできます。環境設定の「ヘッダ情報をカットする」をチェックしてください。結果ウィンドウに表示される結果はそのままで、ブラウザにはヘッダがカットされた情報が送られます。CGIサーバの一種のエミュレーションだと思ってください。

クリップボードから入力

img

クリップボードの内容を入力として実行し、実行結果をクリップボードに送ります。

Hello! World!

であるときに

while (<>){ print ">"; print ; } というスクリプトを書いて「クリップボードから入力」ボタンを押すと

クリップボードの内容が

>Hello! >World!

となります。引用符をつけたり、ちょっとした処理などに使うと便利です。結果をクリップボードに送りたくない場合は、「実行」メニューの「imgクリップボードに出力しないをチェックしておいて下さい。

DOS窓へ出力

img

 現在のスクリプトをDOS窓を開いて実行します。具体的には一時的なバッチファイルを作成し、そのバッチファイルを実行します。このバッチファイルの名前は「設定」メニューの「環境設定」で開くコンフィグウィンドウの実行タブにある「一時的なバッチファイルの名前」で設定することができます。また、バッチファイルの最後に「@PAUSE」を出力することもできます。実行後、すぐにDOS窓が閉じてしまう場合は、環境設定の実行タブにある「@PAUSEを出力する」をチェックしてください。

標準入力を必要とするスクリプトや、eval、grobのようなCopalと相性の悪い関数を使うスクリプトなどはDOS窓で実行すると良いでしょう。

注意:

DOS窓から実行した場合、エラー行ジャンプなどの統合環境での機能は全て使えませんのでご注意ください。

実行時オプションについて

スクリプトを実行するとき、いくつかのオプションを指定することができます。例えば、「クリップボードへ出力しない」をチェックしておけば、「クリップボードから入力」を実行しても、結果をクリップボードへ出力しません。このように、チェックしておくと実行のやり方が変わるオプションが用意されています。

現在指定できる実行時オプションは以下の通りです。

ドロップファイルを記憶

img

 Copalは最後にドラッグ&ドロップしたファイルを覚えています。「実行」メニューから「ドロップファイルを記憶」をチェックしておくと、実行時にそのファイルを引数として実行するようになります。 デバッグ時など、なんども同じファイルをドロップする必要がある場合にチェックしておくと便利です。

 最後にドロップしたファイルは、「imgドロップファイルを記憶」ボタンの上にマウスをあわせると知ることができます。

このチェックが有効なのは以下の処理です。

注意:

 このボタンを押しておかないとドロップファイルを記憶しないわけではありません。Copalは常に最後にドロップされたファイルを覚えています。このボタンを押すと、最後にドロップされたファイルを入力として使うようになります。

常にブラウザへ

img

このボタンを押しておくと、実行結果がすべてブラウザに送られます。何度もCGIの動作を確認したいときなどに使うと便利でしょう。

クリップボードに出力しない

img

このボタンを押しておくか、「実行」メニューの「クリップボードに出力しない」をチェックしておくと、「imgクリップボードの内容に実行」をしたときに、実行結果をクリップボードに出力しません。 デバッグ時など、クリップボードの内容に対して実行をしたいが、その内容を上書きしたくないとき等に使ってください。

このチェックが有効なのは以下の処理のみです。

CGIデータを使う

img

 このボタンが押されていると、フォームエディタで編集された、環境変数とフォームデータがスクリプトに渡されます。これにより、あたかもサーバでCGIとして動作させたような結果を得ることができます。

詳しくは、フォームエディタについてを参照してください。

 このオプションは、imgDOS窓へ出力以外の実行方法(ファイルをドロップしたとき含む)すべてで有効です。

常に結果をファイルに保存

img

 このボタンを押しておくと、実行結果がファイルに自動的に保存されます。デバッグ時など、何度も同じファイルを出力する必要がある場合などに便利でしょう。

 ボタンを押すと、ファイル名を指定するウィンドウが表示されますので、そこで出力ファイル名を指定してください。存在するファイルを指定しても、上書き確認などは出ませんので注意してください。また、読み取り専用ファイルなどを指定するのはやめてください。

 このチェックは、imgDOS窓へ出力以外の実行方法(ファイルをドロップしたとき含む)すべてで有効です。

各ウィンドウについて

Copalには「スクリプトウィンドウ」「結果ウィンドウ」「エラーウィンドウ」の三つのウィンドウがあります。

スクリプトを入力するウィンドウです。

実行結果が表示されるウィンドウです。表示された結果をエディット、保存することもできます。

スクリプトを実行したときに、エラーがあった場合表示されるウィンドウです。エラーをダブルクリックすると、エラー行へカーソルが飛びます。

スクリプトウィンドウ

 「表示(V)」メニューから「スクリプト(S)」を選ぶと、スクリプトウィンドウが表示されます。ここにスクリプトを 入力してください。

結果ウィンドウ

「表示」メニューから「実行結果」を選ぶと、結果ウィンドウが表示されます。また、スクリプトを実行すると自動的にこのウィンドウになります。この結果は編集することも保存する事も可能です。また実行する度に更新されるので、保存はその都度行ってください。 結果は実行が終わったあと表示されます。実行結果が大きいと、プログラム実行終了から表示までしばらくかかることがあります。

エラーウィンドウ

このウィンドウは、スクリプトを実行したら、自動的に非表示になります。 また、このウィンドウは、実行中にエラーがあると非表示にしてあっても、自動的に表示されます。また、自分で標準エラー出力へ出力した場合も自動的に表示されます。

例えば

print "test";

を実行してもエラーウィンドウは開きませんが、

print STDERR "test";

というスクリプトを実行したら、自動的に下にウィンドウが開き、

test

と表示するはずです。

エラー行ジャンプ

 エラー行取得正規表現が設定されていれば、エラー行ジャンプが使えます。エラー行ジャンプが設定してあると、表示されたエラーをダブルクリックすれば、エラーのある行にカーソルが移動します。

注意:

 標準エラー出力も、実行が終わるまで表示されませんので、スクリプトの進行状況の表示として標準エラー出力を使う事はできません。

外部エディタとの連携について

Copalのエディタ機能は、おそらくユーザーが普段使ってるエディタの機能に比べて貧弱です。そこで外部エディタとの連携を考えた作りになっています。

まず、「実行(R)」メニューから、「外部エディタの起動(E)」を選ぶと、設定してある外部エディタで現在編集中のファイルを開きます。この機能はオートリフレッシュとペアで使うことを想定しています。Copalはファイルスタンプを監視し、外部で編集中のファイルが変更されていると警告を出しますが、オートリフレッシュがオンになっていると、警告を出さずにファイルを開きなおします。

これにより、よく使うエディタとCopalで同じファイルを開いておき、オートリフレッシュをオンにしておくと、ファイルをエディタで編集、Ctrl+Sで保存してCopalの実行ボタンを押す、という一連の動作でスクリプトの動作確認ができることになります。つまり、Copalでもう一度ファイルを開き直す手間を省くための機能です。

さらに、「環境設定」「エディタ」「オートリフレッシュ」の「外部エディタでファイルを開いたら編集禁止とする」をチェックしておくと、外部エディタ起動時に自動的にCopalでの編集を禁止します。双方でファイルを編集できると混乱する場合などに便利です。

注意:

エディタによっては、ファイル名に空白が含まれていると開くのに失敗するものがあります。その場合は設定メニューの「エディタ」タブから「ファイル名を""で囲んでエディタに渡す」をチェックしてください。逆に「""」で囲むとファイルを開けないエディタもありますので、その場合はチェックを外してください。

外部エディタの起動

img

あらかじめエディタを登録しておけば、 「img外部エディタを起動」ボタンで外部エディタを起動して、 Copalで編集中のファイルをそのエディタで開くことができます。 外部エディタの登録は、メニューの「設定」→「共通設定」で 行うことができます。エディタによって、 「""(ダブルクオーテーションマーク)」でファイルを囲まないと いけなかったり、逆に囲まない場合もあるので、 ご使用のエディタのドキュメントを参照してください。

外部エディタの設定例(Terapadの例)

(タグジャンプの設定もしてあります)

img

オートリフレッシュ機能

img

「オートリフレッシュ」なんてたいそうな名前がついていますが、要するにファイルを開き直す手間を省く機能です。 Copalは編集中のスクリプトが外部から変更されると警告をだしますが、 「表示(V)」メニューの「imgオートリフレッシュ(A)」をチェックしておくと、警告を出さずに読み込みなおします。これは外部エディタとの連携の為です。

また、「imgオートリフレッシュ」ボタンを押すことによってもオートリフレッシュのオン/オフを切り替えることができます。

タグジャンプ

Copalにはエラー行ジャンプがあり、エラーメッセージを ダブルクリックすると、Copalのエディタの該当箇所にカーソルが移動します。 しかし、外部エディタで作業をしていると、いちいちエラーの場所を 確かめて自分で移動しなくてはいけません。 こんなとき、使っているエディタがタグジャンプに対応していれば、 Copalのエラーメッセージをダブルクリックしたら作業中のエディタの 該当箇所にカーソルが飛ぶようになり、便利です。

エラー行ジャンプでタグジャンプを使うには、 メニューの「設定」→「共通設定」で、 「タグジャンプを使う」にチェックをいれ、 「タグジャンプオプション」を設定してください。

タグジャンプオプションでは、以下の特殊文字が使えます。

たとえば、外部エディタにterapadを使っているなら、「/jl=%L %F」と 設定すればタグジャンプが使えるようになります。 秀丸なら「/j%L,0 %F」とすればよいと思います。

外部エディタの設定をした後、たとえば、以下のようなエラー (printを間違えてplintと打っている)がおきたとします。 その場所をダブルクリックすると、

img

↓terapadが開いてエラー行に飛ぶ。

外部エディタ(terapadに移る)

img

共通設定

環境設定

「設定」メニューの「共通設定」を選んで出てくる設定フォームの「環境設定」タブで設定できる項目です。

CGI設定

一時的なHTMLファイルの名前
実行結果をブラウザへ出力」するとき、実行結果を一時的に保存するHTMLファイル名を設定します。
ヘッダ情報をカットする
実行結果をブラウザへ出力」する時、「Content-Type」情報をカットします。

DOS窓での実行

一時的なバッチファイルの名前
DOS窓へ出力」をしたときに、スクリプトを一時的に保存するファイル名を指定します。
最後に@PAUSEを出力する
DOS窓へ出力」をしたときに出力されたバッチファイルの最後に「@PAUSE」を入れます。これにより、実行終了時にDOS窓がすぐに閉じてしまうことがなくなります。

ホットキー

ホットキーを使う
チェックするとホットキーによりウィンドウフォーカスがCopalに移るようになります。
ホットキー
ホットキーを設定します。「ホットキーを使う」にチェックを入れた 状態で、キーを入力してください。

エディタ

「設定」メニューの「共通設定」を選んで出てくる設定フォームの「エディタ」タブで設定できる項目です。

エディタ
通常使う外部エディタを指定します。詳しくは「外部エディタとの連携について」を参照してください。
””で囲ってファイルを渡す
外部エディタを起動する際に、ファイル名をダブルクオーツ""で囲んで渡します。エディタによっては、""で囲まないといけないもの、囲んではいけないものなどありますので、必要な方を選んでください。

タグジャンプ

タグジャンプを使う
エラー行をダブルクリックすると、通常はCopal内のスクリプトエディタの当該行にジャンプしますが、外部エディタの画面にジャンプするようにできます。外部エディタがタグジャンプに対応していないといけませんので、詳しくはお使いのエディタのヘルプを参照してください。
タグジャンプオプション
タグジャンプをする際、外部エディタに渡すパラメータです。詳しくは「タグジャンプ」を参照してください。

オートリフレッシュ

外部エディタでファイルを開いたら編集禁止とする
ここをチェックしておくと、「オートリフレッシュ」がオンの時に外部エディタを実行すると、自動的にCopalでの編集が禁止されます。

その他

「設定」メニューの「共通設定」を選んで出てくる設定フォームの「その他」タブで設定できる項目です。

ツールボタン

ファイルドロップ時にドロップファイルを記憶する

チェックしておくと、ファイルをドロップしたときに自動的にimgドロップファイルを記憶ボタンが押されるようになります。

カレントディレクトリ

ファイルドロップ時にカレントディレクトリ変更
ファイルをドロップしたとき、実行結果ウィンドウのカレントディレクトリを、ドロップしたファイルのあるディレクトリに変更します。実行結果をドロップファイルの近くに保存したい場合に便利です。
デスクトップからのドロップ時には変更しない
ファイルをドロップするとき、デスクトップからドロップした場合に、カレントディレクトリを変更しないようにします。

言語別の設定

実行設定

「設定」メニューの「言語別の設定」を選んで出てくる設定フォームの「実行設定」タブで設定できる項目です。

実行ファイル
スクリプトを実行する実行ファイルをフルパスで指定してください。 たとえばperlなら、「C:\Perl\bin\Perl.exe」、Rubyなら「C:\ruby\bin\rubyw.exe」等を指定してください。
実行時オプション
実行時に指定するオプションを設定します。たとえばAWKなら「-f」が必要になります。
拡張子リスト
その言語で使う拡張子を指定します。「rb」「pl」など、ピリオドをつけずに指定してください。 二つ以上指定する場合は「rb,cgi」などとカンマで区切ってください。 二つ以上拡張子が指定された場合は、デフォルトの拡張子は最初に指定されたものになります。 たとえば「rb,cgi」であれば「rb」がデフォルト拡張子になり、ファイルを保存する際に拡張子が指定されていなければ、「.rb」が追加されます。

デバッグ

「設定」メニューの「言語別の設定」を選んで出てくる設定フォームの「デバッグ」タブで設定できる項目です。

エラー表示

エラーコードを表示する
チェックすると、実行終了時のエラーコードが0で無いときに、エラーコードを表示します。デバッグ用にお使いください。たとえばPerlのSyntax Errorなら255と表示されると思います。
エラーコードが0以外の場合に結果ウィンドウを表示しない
チェックすると、実行終了時のエラーコードが0で無いときに結果ウィンドウを表示しません。通常、Copalは(Perl.exeなどが返す)エラーコードが0で無い場合はエラーが起きたと判定しますが、PHPなどはエラーが無くても0でないエラーコードを返します。そこでPHPなどを使う場合はこのチェックをはずしてください。その場合、Copalは、標準エラー出力に出力があるかどうかでエラーが起きたかどうかを判定するようになります。

エラー行ジャンプ

エラー行取得用の正規表現
エラー行をダブルクリックした際、その行の中からエラー行を取得するための正規表現を指定します。これはエラー行以外の数字が入らないような正規表現を指定すればOKです。

たとえばPerlの場合なら、

line [0-9]+.?

Rubyの場合なら

:[0-9]+.?:

と指定しておけば、エラー行ジャンプできるようになるはずです。

タグジャンプ

別のファイルにタグジャンプを行う
Perlや、Rubyではrequireを使って別のファイルを読み込むことができます。この別ファイルでエラーがあった場合、外部エディタでそのファイルを開きたい場合にここをチェックします。<B> この機能を有効にするためには、タグジャンプの設定が必要になります。
エラーファイル名取得用の正規表現
エラー行に含まれる、エラーが起きたファイル名を取得するための正規表現を指定します。括弧を用いて、カッコ内のパターンがファイル名になるようにしてください。

Perlであれば、

at\s(.*)\sline

とすれば良いと思います。

フォームエディタについて

 Copalは、CGIの簡易エミュレート機能を持っています。Copalにできることは、

などです。それらの情報を編集するエディタがフォームエディタです。

「表示メニュー」→「フォームエディタ」を選ぶか、imgCGIデータを使うボタンを押すと、フォームエディタが開きます。そこで入力されたデータを、あたかもブラウザ経由で受け取ったようにスクリプトを実行することができます。

注意:

現在、GETメソッドにしか対応していません。

環境変数の設定

フォームエディタの、環境変数タブにデータを入力すると、スクリプトに環境変数として渡されます。 たとえば、環境変数の名前として"test"、値を"value"にして、追加ボタンを押します。

↓追加ボタンを押した後

img

この状態で

print $ENV\{'test'\};

を実行すれば、

value

が表示されます。

注意:

img/usecgi.pngCGIデータを使うを選んでいると、通常渡される環境変数(PATHなど)が渡されなくなります。必要な場合は、自分で新しく設定してください。

フォームデータの設定

フォームエディタの、フォームデータタブにデータを入力すると、スクリプトにフォームデータとして渡されます。 たとえば、REQUEST_METHODがGETで、TEXTタブに名前を"test"、値を"value"として追加ボタンを押してデータを追加します。

↓追加ボタンを押したところ

img

その状態で print $ENV\{'QUERY_STRING'\}; というスクリプトを実行すれば、 test=value という結果が表示されるはずです。TEXTAREA、CHECKBOXなども同様です。

また、HIDDENなどの要素も、すべてTEXTで代用できるはずですので、そちらに入力してください。

参考→文字コードについて

注意:

現在、POSTメソッドには対応しておりません。

Cookieデータの設定

フォームエディタの、Cookieデータタブにデータを入力すると、スクリプトに環境変数「HTTP_COOKIE」として渡されます。直接環境変数エディタでHTTP_COOKIEを設定しても良いですが、Cookieエディタを使ったほうが便利です。

たとえば、Cookieの名前として"test"、値を"value"にして、追加ボタンを押します。

↓追加ボタンを押した後

img

この状態で

print $ENV\{'HTTP_COOKIE'\}; を実行すれば、 test=value となるはずです。 さらに、Cookieデータとして名前"test2"、値"value2"を追加して実行すると、 test=value; test2=value2 などとなります。

参考→文字コードについて

文字コードについて

 フォームデータ、Cookieデータに日本語を入力した場合、URLエンコードされます。その際、URLエンコードする前にどの文字コードでエンコードするか指定することができます。文字コードは、フォームエディタの、「設定」→「文字コード」から指定することができます。

たとえば、フォームエディタに名前が"text"、値が"あいうえお"という日本語のデータがある状態で print $ENV{"QUERY_STRING"}; を実行すると、文字コードがSJISなら結果は text=%82%A0%82%A2%82%A4%82%A6%82%A8 となり、EUCなら text=%A4%A2%A4%A4%A4%A6%A4%A8%A4%AA となります。

注意:

UTF-8には対応しておりません。また、改行コードは変換されません(CRLFになります)。

最新版の入手先

Copalの最新版は、<URL:http://copalpro.sourceforge.jp>よりダウンロードができます。

バグかな?と思う前に

Copalはインタプリタ、つまりプログラムを自分で解釈して実行する能力は持っておりません。あくまでスクリプトを実行するのはPerlやAWKなどのプログラムです。Copalの仕事は、スクリプトをこれらのプログラムに渡し、結果やエラーメッセージを取得することだけです。従って、エラーメッセージが表示されたらCopalは正しく動作をしています。問題点はスクリプトの方にあるわけです。

Copalの動作がおかしいと思ったら、Copalを使わずにDOS窓から同じスクリプトを実行してみてください。それで問題が出るようであれば、Copalの問題ではなく、使用環境かスクリプトの問題です。DOS窓で問題なく実行できるソーススクリプトが Copalで実行できなかったら、Copal側の問題の可能性があります。詳しい状況をメール等でお知らせください。

開発、動作環境

開発環境

動作環境

ライセンス

Copalは以下の修正BSDライセンスにて配布します。

Copyright (c) 2002-2011 H. Watanabe All rights reserved.

ソースコード、バイナリなどの配布形式、及び変更の有無を問わず、以下の条件を満たす限りにおいて、 再配布及び使用を許可します。

  1. ソースコード形式で再配布する場合、上記著作権表示、本条件書及び下記責任限定規定を必ず含めること。
  2. バイナリ形式で再配布する場合、上記著作権表示、本条件書及び下記責任限定規定を、配布物とともに提供される文書、もしくは他の資料に必ず含める事。
  3. 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、著作権者の名前を使用してはならない。
本ソフトウェアはH. Watanabeによって、"現状のまま"提供されるものとする。
本ソフトウェアについては、明示黙示を問わず、商用品として通常そなえるべき
品質をそなえているとの保証も、特定の目的に適合するとの保証を含め、またそれらに
限定されないいかなる保証もなされない。著作権者も、事由のいかんを問わず、
損害発生の原因いかんを問わず、且つ、 責任の根拠が契約であるか厳格責任であるか
(過失その他)不法行為であるかを問わず、著作権者が仮にそのような損害が発生する
可能性を知らされていたとしても、本ソフトウェアの使用から発生した(代替品または
サービスの提供、使用の喪失、データまたは利益の損失の補償、または、業務の中断に
対する補償を含め、またそれらに限定されない)直接損害、間接損害、偶発的な損害、
特別損害、懲罰的損害または結果損害のいずれに対しても一切の責任を負わない。

開発履歴

謝辞

その他、以下の方々に報告や提案をいただきました(順不同)。

谷口さん、ユージさん、守屋さん、Johnさん、黒瀬さん、新藤さん、勘兵衛さん、KENZOUさん、kissaさん

本当にありがとうございました。