このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

集計スクリプト

発言者:nara
( Date Saturday, November 16, 1996 21:09:54 )


こちらのMaking Your Mac a WWW Serverにお邪魔するようになってから
Apple Scriptを始めましたので何かと分からないことがたくさんあります。
インターネットサーバー構築術だけは持っているのですが...(^ ^);;

そこで現在ラジオボタンのあるフォームで送られたものを集計(総計と各ボタンで送られた数)
するようなスクリプト(投票していくようなもの)を考えているのですが、
どの様にスクリプトを組み立てて行ったらよいのかにも考えが及びません。

考え方だけでも結構です。御教授いただきますように...

#本当は基本になるようなスクリプトを見せていただけるとうれしいのですが。

田中求之 さんからのコメント
( Sunday, November 17, 1996 15:06:14 )

ラジオボタンの場合は、その項目の部分に、選択されたボタンの VALUE が
入っていますので、それを取り出して判定を行います。

CGI 側にどのようなデータが送られることになるのかをつかむのがポイントに
なりますので、

property crlf : (ASCII character 13) & (ASCII character 10)
property http_10_header : "HTTP/1.0 200 OK" & crlf & "Server: MacHTTP" & crlf & ツ
  "MIME-Version: 1.0" & crlf & "Content-type: text/html" & crlf & crlf

on ヌevent WWWスsdocネ path_args ツ
  given ヌclass kforネ:http_search_args, ヌclass postネ:post_args
  
  set myList to DecodeJArgs post_args
  
  set dx to count items in myList
  set myPage to "<TITLE>Post_args</TITLE>" & return
  
  repeat with x from 1 to dx
    set myPage to myPage & "item " & x & ": " & (item x of myList) & "<P>" & return
  end repeat
  
  return http_10_header & myPage
  
end ヌevent WWWスsdocネ

というスクリプトの CGI を作って、これを FORM から呼び出してみて、どのような
データが渡されるかをチェックしてみてください。

post_args がどのようになっているのかをつかんでから、具体的な処理のスクリプト
を書いていくことになります。

田中求之 さんからのコメント
( Sunday, November 17, 1996 15:23:12 )

もしアンケートのようなものを考えていらっしゃるのであれば、FORM で送って
もらった結果をどのように記録していくのか、というのも問題になります。

たとえば、データベースに記録していくのか? それとも1件毎にファイルに
残すだけでいいのか? などによって処理は全く異なります。

この点はどのように考えていますか?

FORM を処理する CGI を作るときには、

1:どのような FORM にするのか(記入してもらうデータ、ページのレイアウト等)
2:どのようにデータを記録/保存するのか
3:記入してもらった人にどのようなメッセージを返すのか

という3点を、あらかじめきちんと考えた上でスクリプトを書く必要があります。

nara さんからのコメント
( Sunday, November 17, 1996 17:25:04 )

たとえば
あなたはMac、Win、Unixどれが好きですか?
という問いに対しラジオボタンを設定し記入してもらい、
その記入が終わった時点で累計(今までの総記入数と各項目の得点、できれば
パーセンテージやその日時)があるページを返したいのです。

言い換えればネット上の選挙みたいなものを想定しています。

二度、記入ができないように設定できないか?等、考えただけでも
混乱してきます。

田中求之 さんからのコメント
( Sunday, November 17, 1996 18:22:23 )

>二度、記入ができないように設定できないか?

一般に公開しているページ上(ユーザー名やパスワードを入力しなくてもアクセス
できるページ)で、これを厳密に行うのは不可能です。厳密でなくとも、ある程度の
ものでよいとしても、過去に投票した人の記録を残していて、それと比較を行って
重複していないかをチェックするということになりますので、かなりの処理が必要
になります。CGI だけでなく、何らかのデータベースソフトと連携させる方が
現実的でしょうね。

重複のチェックを行わないのであれば、比較的簡単な処理ですみますけれど。

nara さんからのコメント
( Sunday, November 17, 1996 19:16:03 )

お願いばかりで恐縮なのですが、重複のチェックがないとすると
どのような処理になるのでしょうか?

#アップルスクリプトの学習をしなければならない必要性を切に感じるのですが
チュートリアルのようなものはどこで手に入るのでしょうか?

#悲しいかな、右も左も分かりません。

田中求之 さんからのコメント
( Sunday, November 17, 1996 22:49:31 )

>お願いばかりで恐縮なのですが、重複のチェックがないとすると
>どのような処理になるのでしょうか?

post_args をデコードしてラジオボタンで選択された内容を割り出し、これを
別に記録しておいた集計結果にあらたに加えて、その結果をページとして表示する、
という手順になります。選択項目が少ないのであれば、テキストファイルにデータを
記録しておくような方法で処理ができるでしょう。

具体的なサンプルは、今、時間に全然余裕がない状況ですので、勘弁してください。
(他の方、フォローよろしく)

>チュートリアルのようなものはどこで手に入るのでしょうか?

英語の Language Guide であれば Apple のサイトから手に入りますが、
いわゆるチィートリアルというのは、オンラインでは見かけませんね。
(どなたかご存知ですか?)

書籍で販売されているもので良ければ、Danny Goodman の AppleScript Handbook
をお勧めします(英語ですが)。

古い版の翻訳もあったはずですが、もう出回っていないかもしれません。

日本人が書いた AppleScript の解説書も何冊かありますが、購入する前に
スクリプトの表現形式が何が使われているかに注意してください。日本語の
表現形式で解説されている本を購入すると、すくなくとも CGI の作成と
いう点では余分な苦労を背負いこむことになります。

いずれにせよ、AppleScript に関してある程度のことをマスターしてからでないと
CGI を思うように変更するのは無理だと思ってください。冷たいようですが、事実です。
AppleScript といえども、一つの言語ですから、いくら「簡単」と言われていても、
いきなり取り組んでどうこうできるものではありません。

もちろん、CGI をいじりながら AppleScript をマスターすることもできますが
(何らかのガイド本などは必要になります)、その場合は、とことん、自分で試行錯
誤し悩む時間を確保して取り組んでください。

nara さんからのコメント
( Monday, November 18, 1996 04:36:47 )

>いわゆるチィートリアルというのは、オンラインでは見かけませんね。

田中先生のような方がいなかったら、たぶんアップルスクリプトに興味も
出なかったでしょう。アップルはなぜこのようなことに力を注がないのでしょう?

柾木@DDP さんからのコメント
( Tuesday, November 19, 1996 18:10:20 )

私もnara さんと同様、WEBのCGIのためだけにAppleScriptを勉強する羽目になった
くちです。:-)
そのため、英語表現形式のAppleScript関連の書籍は書店で見かけたら、どれでも
とにかく買っています。やってきることは同じでも、本の著者それぞれの考え方
などで、応用例題などが違いますし、いろんなものをやった方がいいと思います
から。

>書籍で販売されているもので良ければ、Danny Goodman の AppleScript Handbook
>をお勧めします(英語ですが)。
>古い版の翻訳もあったはずですが、もう出回っていないかもしれません。

田中先生のおっしゃっている本はまだ、たまにおいている書店があります。
翔泳社から出ているもので、定価4800円(ISBN4-88135-079-X C3055 P4800E)です。
私はこのほかにインプレスから出ている「AppleScript道入門」も主な参考書として
おすすめしたいです。

はじめはみんな右も左も分からないものですが、わからないものでも読んで書いて、
エラーを出して、修正しているうちにいつか動くようになるものです。
お互いがんばりましょう。

柾木@DDP さんからのコメント
( Tuesday, November 19, 1996 18:11:25 )

私もnara さんと同様、WEBのCGIのためだけにAppleScriptを勉強する羽目になった
くちです。:-)
そのため、英語表現形式のAppleScript関連の書籍は書店で見かけたら、どれでも
とにかく買っています。やってきることは同じでも、本の著者それぞれの考え方
などで、応用例題などが違いますし、いろんなものをやった方がいいと思います
から。

>書籍で販売されているもので良ければ、Danny Goodman の AppleScript Handbook
>をお勧めします(英語ですが)。
>古い版の翻訳もあったはずですが、もう出回っていないかもしれません。

田中先生のおっしゃっている本はまだ、たまにおいている書店があります。
翔泳社から出ているもので、定価4800円(ISBN4-88135-079-X C3055 P4800E)です。
私はこのほかにインプレスから出ている「AppleScript道入門」も主な参考書として
おすすめしたいです。

はじめはみんな右も左も分からないものですが、わからないものでも読んで書いて、
エラーを出して、修正しているうちにいつか動くようになるものです。
私自身はオンラインでのチュートリアルだと落ちつかないだろうと思うので、
書籍でじっくり勉強した方がいいと思いますよ。
お互いがんばりましょう。

田中求之 さんからのコメント
( Wednesday, November 20, 1996 00:06:10 )

AppleScript に関してはいろいろといいたいこともあるのですが、ただ、日本の
場合の問題は、やはりスクリプトの日本語表現形式というものができてしまった
ところでしょう。

日本語表記の意義は認めますが、AppleScript に余計な混乱を招き、結果的には
AS の普及の足枷になっていると思います。 Finder と遊ぶのが AppleScript 
の存在理由などではないんですから。


とにかく自分で書いて、自分でエラーを取っていくという作業をこなす中で、
色々なことを身につけて行くしかないと思います。

狩野正嗣 さんからのコメント
( Monday, November 25, 1996 02:52:50 )

 はじめまして。以後よろしくお願いします。

 私はCGI製作には縁の薄い一般のAppleScriptユーザなのですが、最近
AppleScriptに関するホームページを製作しています。まだ完成していな
いのですが、簡単なリファレンスとTipsについてはある程度そろってい
ますので、もしよかったらご利用下さい。チュートリアルについても現
在作成中です。

  http://www.m.ehime-u.ac.jp/~karino/applescript/as.html

 また、AppleScriptの英語表現形式の参考書としては「AppleScript道入門」
(Derrick Schneider著・インプレス)が現在最も入手しやすいと思います。

  Karino,Mandarin
  karino@m.ehime-u.ac.jp

田中求之 さんからのコメント
( Monday, November 25, 1996 03:16:04 )

> また、AppleScriptの英語表現形式の参考書としては「AppleScript道入門」
>(Derrick Schneider著・インプレス)が現在最も入手しやすいと思います。

「AppleScript道入門」("Tao of AppleScript")は、とにかく手っ取り早く
AppleScript で何かしたいという、実践的な入門書としては悪くないのですが、
そのぶん、解説されている内容に偏りがあります(スクリプトオブジェクトとか
継承の話には触れられていない)。その点、Danny Goodman の本は、教科書
的で読み物としては面白味にかけますが、目配りが利いており、あとあとまで
リファレンスに使える本だと思います(ただし、翻訳の出来具合については
知りませんが)。私は、さすがに Danny Goodamn だと感心して読みました。
(この人は、本当にガイド/ハンドブックを書くのがうまい)

なお、英語版の Language Guide の翻訳が、まもなく出版されるようです。
もっとも、AppleScript の場合は、操作するアプリケーションや利用する
osax によって、どのようなスクリプトを書くかが決まりますので、この
Guide を読んだからといってすぐにバリバリとスクリプトが書けるようには
なりませんが、AppleScript のオブジェクト指向的な面をちゃんと理解しておく
(これを怠ると後々辛いことになります)には良いと思います。


狩野正嗣 さんからのコメント
( Monday, November 25, 1996 07:24:15 )

>「AppleScript道入門」---解説されている内容に偏りがあります

 おっしゃるとおりです。私自身もこの1冊では分からないことが多すぎて
困りました。結局最後はQuick Referenceなどを参考にしながら試行錯誤
してましたし…

>AppleScript Handbook

 欲しいと思っていたらいつのまにか書店から姿を消してました。もう手
に入らないかと思っていたのですが、まだ大丈夫みたいですね。内容につ
いては書店で覗いた程度なのですが、しっかりした構成だったと記憶して
います。

  Karino,Mandarin
  karino@m.ehime-u.ac.jp
  

田中求之 さんからのコメント
( Monday, November 25, 1996 11:03:46 )

>欲しいと思っていたらいつのまにか書店から姿を消してました。

できれば翻訳ではなく原書の方がよいですよ。原書は第2版になって Finder の
ことなども触れているはずです。翻訳されている初版は、さすがに情報が古いとこ
ろがありますから(なんせシステムに標準で付属する以前の本ですから)。

nara さんからのコメント
( Monday, November 25, 1996 18:40:23 )

遅々として進まないnaraです。
私にとって初めてのスクリプトなので仕方ないですね。

>お互いがんばりましょう。
はいっ!!!

集計のスクリプトどなたか書いてくれないかなぁー。
#頑張りましょうと言っているそばからこれですから困ります。

田中求之 さんからのコメント
( Monday, November 25, 1996 18:51:26 )

>集計のスクリプトどなたか書いてくれないかなぁー。

ラジオボタンの選択肢から選ぶ非常に単純なものですが、サンプルを登録しておきましょう。

田中求之 さんからのコメント
( Monday, November 25, 1996 19:48:33 )

サンプル opinions.hqx を登録しました。

3つの選択問題の集計を行います。

opinions.acgi.txt をコンパイルして opinions.acgi にしたのち、
opinions.acgi, opinions.html, rec_file を同じフォルダーに
入れて、opinions.html にアクセスしてください。

なお、Tanaka's osax が必要です。

スクリプトの詳しい説明は省略しますが、基本的には、過去の記録を rec_file
に記録しておくという方法を使っています。

→  opinions.hqx

nara さんからのコメント
( Tuesday, November 26, 1996 04:59:32 )

ありがとうございますっ!!!

nara さんからのコメント
( Tuesday, November 26, 1996 05:05:43 )

あなたの人生に似ているもの..かばん
何か奥深くって良いですね。
スクリプトを見て笑ってしまったのは初めてです。
ありがとうございました。これを参考にさせていただきます。

田中求之 さんからのコメント
( Tuesday, November 26, 1996 19:22:20 )

>あなたの人生に似ているもの..かばん

あなたの人生に似ているもの..フロッピーディスク

大切なものほど、すぐにセクター・エラーで読み出せなくなる

…そういう話はおいといて(笑)

rec_file に記録する際のフォーマットですが、スクリプトをごらんいただければ
わかるとは思いますが、質問毎に1行、最終行(4行目)にはアクセスした人の数、
になっており、各行はタブ区切りで、問題番号順に選択した人の数を入れておくように
なっています。

狩野正嗣 さんからのコメント
( Tuesday, November 26, 1996 23:48:08 )

>できれば翻訳ではなく原書の方がよいですよ。

 原書ですか? … 内容が良くてもそれを理解できるかどうかという疑問はあ
ります (^ ^;)

>翻訳されている初版は、さすがに情報が古いところがありますから

 そこが問題ですよね。(日本語版の)この本の出版されたのは
AppleScriptの黎明期でしたから。

  Karino,Mandarin
  karino@m.ehime-u.ac.jp

まり さんからのコメント
( Wednesday, February 12, 1997 23:33:49 )

はじめまして。まり@初心者です。
アンケート集計スクリプトを探していたところ、
このCGIスクリプトを発見しました。
Cなどわからず、ただ必要に駆られてサンプルスクリプト
を改造しながら少しづつ学ぼうと思っていたのですが....。
集計スクリプトのサンプル版ですが、問題数、選択枝数に限界が
あるようですね。この辺の変更の仕方を教えて下さい。

よろしくお願いします!!

mari@knctta.tc.knct.ac.jp

田中求之 さんからのコメント
( Thursday, February 13, 1997 01:33:15 )

FORM の書き方はOKなんですよね?

スクリプトの説明だけでいいですか?

まり さんからのコメント
( Thursday, February 13, 1997 01:43:19 )

はい。いいと思います。
....でも。もしよろしければ、formの説明までお願いしても
いいでしょうか。

それにしても(と言うのも失礼ですが)、こんなに早くお返事が
頂けるとは思わなかったのでとってもうれしいです。


まり さんからのコメント
( Thursday, February 13, 1997 22:21:15 )

3問13の選択枝のアンケートを作りたいんです。
できれば、ボタンよりも、コンボボックスを使いたいです。
そして、その他として、書き込みが出来るようにしたいのですが..。
この書き込まれたデータはメールで処理しようと思います(あとは手作業)
でもとりあえず〆切が迫っているので、大幅改造はひと段落ついてから
だと思います。

よろしくお願いします。



前薗 健一 さんからのコメント
( Friday, February 14, 1997 00:45:41 )

簡単な form でしたら、僕のページを参考にしてはいかがでしょうか?
一応、ひととおりのことはやっていますので、ソースを見てください。

→  Form Sample

まり さんからのコメント
( Friday, February 14, 1997 02:20:33 )

ありがとうございます。
参考にさせていただきました。

各form(?)のスクリプトでの扱い方ってやはり
それぞれ違うのでしょうか。
やっぱり、ボタンが一番扱いやすいんですか?

締め切り近くってほぼ徹夜続きでちょっと頭壊れてます。
風邪には気を付けましょう。

田中先生、お返事お待ちしています(申し訳ありません....)。

田中求之 さんからのコメント
( Friday, February 14, 1997 02:32:41 )

コンボボックスってなんですか? チェックボックスのことかな?

>各form(?)のスクリプトでの扱い方ってやはり
>それぞれ違うのでしょうか。

そうです。基本的には、使用するページに合わせたスクリプトを自分で書く必要が
あることは覚悟しておいてください。逆に言うと、自分で作るからこそ、好きなよ
うに処理できるわけですが。

具体的なスクリプトの話は、来週まで勘弁してください。いま、スクリプトを
試している時間が取れない(書き込む以上はそれなりにチェックしてからでないと
気が済まないたちなので)状況なので。

ところで、AppleScript はある程度は分かりますか? AppleScript も
CGI の処理方法も分からないとなると、かなり先は長くなるのですが…

まり さんからのコメント
( Friday, February 14, 1997 02:50:30 )

何度もすいません、まり@初心者です。
コンボボックスですが、そうです、チェックボックスです。
あれってなんていうんだっけ、と友人と話していて、
コンボボックス、という名前が出てきたんですけど、
何か気になって本をみたらチェックボックスという名が.....!

>ところで、AppleScript はある程度は分かりますか? AppleScript も
>CGI の処理方法も分からないとなると、かなり先は長くなるのですが…

自分で作ることはまだできませんが、サンプルをみて理解することは
できるつもりです。「Macintoshインターネットサーバー構築術」で田中さんの
書かれていたCGI関連の部分ですが、理解することができました。

integerっていうんですか、その変更は難しいんでしょうか。
その辺の記述が見あたらなかったので、困惑したんです。
CGIというのは私が思っている以上に特殊なものなのでしょうか。


前薗 健一 さんからのコメント
( Friday, February 14, 1997 03:26:58 )

田中さん
>コンボボックスってなんですか?

コンボボックス (ComboBox) は文字どうり組み合わせの箱です。
つまり、リストボックスとエディットフィールドの組み合わせですがな。

GUI の環境では標準語だと思っていたのに〜。(^^)

ついでに、講釈をさせて下さい。
GUI の部品(コントロール)には、大きく分けて

ボタン
エディットフィールド
リストボックス

があります。

ボタン
Push Button
Defoult Push Button
Cancel Push Button
Check Box
Radio Button

エディットフィールド
Single Line Field
Multi Line Field

リストボックス
List Box
Combo Box

Combo Box は3っに分かれています。

Simple
Pull down
Editable

です。



田中求之 さんからのコメント
( Friday, February 14, 1997 11:50:11 )

>GUI の環境では標準語だと思っていたのに〜。(^^)

HyperCard の用語で言ってくれないと、僕にはわかんな〜い(笑)

田中求之 さんからのコメント
( Friday, February 14, 1997 14:44:37 )

とりあえずページの方を自分で作ってくださいませんか?>まりさん

それにあわせてサンプルのスクリプトを作りましょう。


まり さんからのコメント
( Friday, February 14, 1997 17:12:30 )

一応、ページはできています。
それをいろいろ改造して、選択肢を6つにしたりしました。
けれど、希望としては下のURLのページを集計したいのです。

ところで、今の所成功していた3問、6つの選択枝の
このページからいただいたサンプルスクリプトによる
アンケートが、実際使おうと、opinions1、2、3、というように
3つ作って(同じフォルダ内に)動かそうとしたら「Folder wasn't found. 」と言うエラー。
何度も確認するんですけどできません。
それと、Mac HTTPでサーバーをたちあげているんですけど、
その中にいれているファイル、つまりアンケートの〜.htmlのファイルですが、
実際ブラウザでみて、リロードをすると「Error! The file you requested 
was not available.」というエラーが出ます。サーバーの設定が必要なので
しょうか。もしかして、実際たちあげているMacではなく、セレクタでつないで
ほかのMacで作業をしているからでしょうか?

もう一度確認してみたいと思います。

→  依頼されたアンケートの原型

まり さんからのコメント
( Saturday, February 15, 1997 04:28:56 )

このページ上でのサンプルスクリプトをそのまま使用した場合で
「text item 1 of " " doesn't understand the ヌevent XUVJimltネ message. 」
のエラーがでる場合はどういう原因が考えられるでしょうか?

なんで突然こんなエラーがでるようになったんだ!
かなり混乱してます。

田中求之 さんからのコメント
( Saturday, February 15, 1997 04:34:56 )

Tanaka's osax がインストールされていないと、そのようなメッセージがでます。

まり さんからのコメント
( Saturday, February 15, 1997 16:15:41 )

Tanaka's osaxはv1.0をインストールしています。
そこで、v1.1をダウンロードして、インストールし直しました。
けれどもやはりエラーが出てしまいます。

まり さんからのコメント
( Saturday, February 15, 1997 16:21:14 )

追伸:「Folder wasn't found. 」のエラーはサーバをたちあげ直すことで
解決できました。限界があるようですね。

まり さんからのコメント
( Sunday, February 16, 1997 16:57:27 )

「text item 1 of " " doesn't understand the ヌevent XUVJimltネ message. 」
のエラーは、根気良くカット&ペーストを繰り返すことでやっと回避できました。
お騒がせいたしました。

結局何が原因かよくわかりません。