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

開発言語(Develop Languege)

発言者:前薗 健一
( Date Monday, February 23, 1998 05:27:16 )


Expo で田中さんとも話をしたのですが、現在 Web の CGI, plug-in を
作成するための言語として、「AppleScript」「C/C++」「Java」
「Perl」がありますが、なんの知識も無い人にとってどれが一番の
近道だと思いますか?

AppleScript は敷居の低い言語だと言われていますが、僕はそうは
思いません。僕もたまに AppleScript で書いたりしていますが、
AppleScript で面倒になったら、C だったら簡単なのにとか思って
います。逆に AppleScript だったら簡単だな、と思うことも
しばしばあります。
要は、言語の特性だと思います。

AppleScript. MacPerl は初期導入費用が掛からないということも
ありますし、CodeWarrior では約5万円程かかるというのは事実です。

しかし、人件費、教育費を含んだコストはどうなんでしょうか?

言語というのは慣れの問題だと僕は思っていますが。

御意見を聞かせていただけないでしょうか。

ショージ さんからのコメント
( Monday, February 23, 1998 23:50:38 )

ぼく自身はCGIの作成ということではMacPerlが最も取っ付きやすかったです。
よしもとさんという大先生とここで出会えたというのもありますが、インタプ
リタのデバッグのしやすさというのもあります。もちろん様々なサンプルが出
回っていたというのもありますね。

AppleScriptも書けますが、こちらはエディタの使い勝手などが問題でほとんど
使用していません。AppleScriptはRecordableな環境では良いのかも知れません
が、CGIの作成ではそういうわけにもいきませんので・・・。

CやC++、Javaについてはもうすこしサンプルが出てこれば試してみたいとは
思いますが、自力で理解するには至っていません。

なんだかまとまりがないですね(^_^;)


重松修 さんからのコメント
( Tuesday, February 24, 1998 00:30:20 )

私は一人FutureBasicで開発を続けています。(;_;)
それにしても、FutureBasicは忘れ去られた言語ですね。。。

とりあえず、今は以前ちょっと話した、電子メールをデコードして送信す
る(だけの)CGIを書くために、桁揃え、SJISからJISへの変換、BASE64エン
コードなどをちまちまと書いています。桁揃えはおおはまりです。EXPOで
新居さんにお会いしたので何かいい方法はないか聞いてみたのですが、
自分でするしかない、というありがたいお答えを頂きました。(ToT)
その他はぼちぼちできています。

ちなみに、FBでの開発の効率は私が未熟というのもあり相当悪いですね。
できたアプリはAppleScriptとは比較にならないほど高速ですが。
# 速度を少しでも早くするためにループの中はアセンブラで書くことが多い
です。

他はAppleScriptでしょうか。でも、うちでは速度が遅すぎてタイムアウト
するのでちょっと使えません。

あと、実は念願のC(Think C)をゲットしたので、C言語によるW*API作成
にも挑戦したいです。そのうちにマルチスレッドなPlug-inを作ってみたい
と思っていますが、そのころには、ラプソディーに移行してそう。。。

また、Perlも挑戦してみたい言語ですが、良い本に出会えずにいて、まだ
一度も使ったことがありません。いやあ、インターネットサーバ構築術が
あまりに偉大なため、それ以外の本がゴミに見えます。

私も、まとまりないです。

田中求之 さんからのコメント
( Tuesday, February 24, 1998 01:02:22 )

正しい答えを得るためには、正しい問いを立てる必要があります。

>なんの知識も無い人にとってどれが一番の
>近道だと思いますか?

CGI に何を求めるか、によって答えはおのずから異なります。今や、CGI プログラムを
一口で語ることはナンセンスだと言っても良い状況ですから。

そして、何に対してコストをかけてもよいか(学習する時間はあるのか、それともお金
が十分にあるのか等)によっても答えは異なるわけです。

結局、「私の場合は…」というその人ごとの状況に応じた経験を言うしかない(一般的な
答えなどない)ということになると思います。

ただ一つ言えることは、いずれにせよ、プログラミングを学ぶ必要があることは間違いない
ということぐらいでしょうか。

ま、ぶっちゃけた話、「なんの知識も無い人にとってどれが一番の近道だと思いますか?」
などという問いを発するうちは、何も分かっていないと言っても良いのかもしれません。
(厳しい言い方をすれば)

前薗 健一 さんからのコメント
( Tuesday, February 24, 1998 01:32:12 )

ショージ さん

僕は逆に P 関係は馴染めないんですよね。
Pascal とか Perl とか。

やっぱり、個人に依存するんでしょうね。

前薗 健一 さんからのコメント
( Tuesday, February 24, 1998 01:38:25 )

重松修 さん

FB を忘れていました。ごめんなさい。m(..)m

新居さんは普段はとても優しい人ですので許してやってください。
現場で答えられることと答えられないこともありますので。

前薗 健一 さんからのコメント
( Tuesday, February 24, 1998 01:44:14 )

田中さん

確かにそうです。

重松修 さんからのコメント
( Tuesday, February 24, 1998 01:59:39 )

P系って、、、新しい分類ですね。
PascalとPerlってPで始まる以外、あんまり似てない気もしますが。:-)

新居さんには十分親切に教えていただきました。私の質問は、桁揃え
してくれるToolBoxないですか〜?っていう質問で、ないから、自分で
やるひつようがある、という回答を得たのです。

にしても、奥が深い。>桁揃え

まあ、FBをいれるとPrographというのもありますし、確か田中先生が
もってらしたと思いますが、PrographのCGI開発専用版なんてのも
ありましたね。

FBはPowerPCネイティブでないし、Cで作るのと多分ほとんど手間は変わらな
いと思いますので、Cで作った方がいいのでは、とか思いながらも、一人
ごりごりプログラムをする今日この頃です。

# 近日中にFBのサンプルソースを公開します。FBな人は是非どうぞ。

前薗 健一 さんからのコメント
( Tuesday, February 24, 1998 02:26:39 )

重松修 さん、がんばってください。
応援しています。

田中求之 さんからのコメント
( Tuesday, February 24, 1998 02:54:05 )

Pascal と Perl では、思想が全く異なるように思いますが…

Pがつくなら Python もあります。またそれ以外にも、Frontier や HyperCard でも
CGIは作れます。

だからといって、言語の優劣や向き/不向きを論じるほど不毛なことはありませんよ。

Expo の時に私が言ったのは、「AppleScript が必ずしも CGI を始めようとする
人にとって簡単だとは思わない」(日本における AS の状況などを考えると)という
ことと(これは決して他の言語なら簡単ということではありません)、AppleScriptだけ
では限界がある状況になってきているということです。

ショージ さんからのコメント
( Tuesday, February 24, 1998 09:57:44 )

確かに田中先生のおっしゃる通りなんですが、ある程度刷り込み
みたいなものがあるかも知れませんよ。

ボクの場合は何も知らない時にPerlの仕事の依頼が来ちゃって、
それで勉強しました。で、Macintosh環境でもやはりそのロジッ
クで考えちゃうのでMacPerlなんでしょうね。

それによしもとさんというお手本があって自分なりのものを作れ
たのかな?

このページにふれあってからCGIの開発を始める様になった方は
田中先生の影響を多大に受けておられてAppleScriptが組みやす
い言語となっているんじゃないかしら?

実はCなんかもちゃんと勉強したいと思っているので、前薗師匠
に弟子入りしようとも思っているのですが(^_^;

いやいや家に寝ているFBをもう一度触る為に重松さんに弟子入り
かな・・・。

よしもと さんからのコメント
( Tuesday, February 24, 1998 10:02:25 )

PerlとPascalを一緒にしてもらっちゃぁ、困るなぁ(笑)

まあ、開発言語に何を選かは、その人のトータルな環境に大きく左右
されるから一概に決めるのは難しいですね。

まあ、僕自身はMacでもUNIXでも使える方が何かと便利なんで、今は
Perlを使っていますが、例えばFreeBSDでFrontierが走るようになった
ら、Frontierに乗り換えるかもしれません(笑)

あと、ここでも何度が取り上げられましたが、CGI Assimilator を使えば
CGIはANSI Cで書けるから、結構ポータビリティは上がるんじゃないかなぁ。

まあ、ポータビリティという観点からだけなら、圧倒的にPerlが良いんで
しょうけど、MacPerlって遅いのがちょっと難点ですね。


Hideaki Iimori さんからのコメント
( Tuesday, February 24, 1998 21:09:48 )

》重松修 さんからのコメント
》( Tuesday, February 24, 1998 00:30:20 )
》
》とりあえず、今は以前ちょっと話した、電子メールをデコードし
》て送信する(だけの)CGIを書くために、桁揃え、SJISからJISへ
》の変換、BASE64エンコードなどをちまちまと書いています。桁揃
》えはおおはまりです。

 以前に話が出ていましたが、埋もれてしまいましたのでこちらに
コメントします。

 桁揃え(WordWrap)は StyledLineBreak() / FindWordBreaks()
といった Routineを使うと WorldScriptの機能で各言語に応じた処
理が行えます。
 現在の Script Manager / WorldScript Engineは設計が古くうま
く PPC化/最適化されていませんので速くありませんが、CGIで扱
う程度の Data量では十分な速度が出ると思います。
 ただし offsetで 2 byte integerを使っていますので 32K byte
を超える処理は多少面倒です。
 PowerMacでは MacOS 8で Codeが改良されて速くなった部分もあ
りますので、なるべく新しい Systemを使った方が良いです。

重松修 さんからのコメント
( Wednesday, February 25, 1998 20:35:51 )

Iimoriさん、WrapText Osaxほか、ありがたく使わせていただいております。

> 桁揃え(WordWrap)は StyledLineBreak() / FindWordBreaks()といった
> Routineを使うと WorldScriptの機能で各言語に応じた処理が行えます。

私もラインブレークを検出する方がスマートかと思いましたが、どうも、
WrapText OSAX(68K)はCharacterTypeを使っているように見えましたが。
Iimoriさんのことなので、それなりの理由があるのだろうと思いました。
# 私の勘違いでしたら、お許し下さい。

ご指摘のようにoffsetが2バイトなので、本当に使いづらいです。速度も
遅そうだし、日本語以外の言語に対応させる意味を感じないため、
自前で書いた方がよいのかもしれない、などと思う今日この頃です。

トランスリタレーションも半角かなの変換に使っているのですが、句読点
(半角の)はASCIIに分類されるようで、うまく変換されません。桂さん
というアップルの方から、自前のルーチンでやる方がスマートとのアドバイ
スを頂きまして、過去に書いたルーチンに戻そうとか考え中です。

Hideaki Iimori さんからのコメント
( Thursday, February 26, 1998 00:00:15 )

》私もラインブレークを検出する方がスマートかと思いました
》が、どうも、WrapText OSAX(68K)はCharacterTypeを使っ
》ているように見えましたが。

 StyledLineBreak()は Pixel幅で Line Wrapする routineで
すので中で FindWordBreaks()を使って Wordを切出しながら処
理しています。

 WrapText OSAXは WorldScript Engineのアルゴリズムを 4 
byte offset化 / PPC / C++に最適化した物で、PowerMacでは
現行 WorldScriptの 10〜150倍速で動きます。WrapText OSAX
は Libraryのテストを兼ねて OSAX化しました。

》ご指摘のようにoffsetが2バイトなので、本当に使いづらい
》です。速度も遅そうだし、日本語以外の言語に対応させる意
》味を感じないため、自前で書いた方がよいのかもしれない、
》などと思う今日この頃です。

 FindWordBreaks()等 WorldScriptのアルゴリズムは良くでき
ていて、単純に特定の文字で Wordの切れ目としているのでは
なく、状態遷移表を使って前後の文字のつながりを考慮しなが
ら Wordを決定しています。このため日本語やタイ語の様に 
Spaceで区切らない言語も判定できますし、英単語の 
Hyphenation等もうまく認識します。("123-456" "abc$def"は 
1 Wordではありませんが "Inter-national" "$100.00"は 1 
Wordと認識します)
 ここまで凝る必要がなければそれ程大変ではないと思いま
す。

》トランスリタレーションも半角かなの変換に使っているので
》すが、句読点(半角の)はASCIIに分類されるようで、うま
》く変換されません。

 この辺りは変換 Tableを使って簡単にできると思います。

 普段は空気のような存在なのですが、同様の機能を自分で作
ろうとすると WorldScriptのすごさが解ります。