横浜市立図書館の予約状況確認 CGI はシェルスクリプトで書かれている(のかも)

2006/10/10

URL の拡張子だけを見て判断した小ネタなんですが……

横浜市立図書館 予約状況https://www.lib.city.yokohama.jp/cgi-bin/Swwwsyce.sh

シェルスクリプトで CGI を作っているとしたら,かなりコアというかなんというか,「なんでワザワザ……」な感じもしてしまいます。やっていることは認証と貸出・予約状況等の表示・変更くらいなので,DB とのやりとりを仲介するインターフェイスだと思えばよさそうです。それにしても,なんでワザワザ……。DB とどうやって連携しているのか気になるところですけれど,コマンドラインのクライアントを起動しているとかいったことになるんでしょうか。

シェルスクリプトで CGI を作るという例は,まったく聞いたことがないわけではなくて,『マスタリングCsh(シーシェル)—サタデー・ナイト・スクリプト』でちょろっと読んだことがあります。

もっとも,実務で CGI にシェルスクリプトを使うというのは,あまり聞いたことがありません。もちろん,具体的に何が悪いのかというと,これといって思い付かないわけですが……。というわけで,少し調べてみました。

検索したところから少しピックアップすると,シェルスクリプトで CGI を作るのは,以下のような問題点があるようです。

処理の内容にもよるけど、複雑な処理になれば 当然CやPerl等とは差が出てくると思います。 例えば、あるディレクトリ以下のファイル一覧を 表示するだけなら、大差は無いと思いますが、複数の ディレクトリのファイル一覧を表示し、且つファイル数を カウントみたなことをすると、差が出てくると思います。 #シェルスクリプトって、計算が特に遅いと思う。

「シェルスクリプトは遅い」というのが,理由のひとつ目のようです。この他に「CGI を起動後,結果が返る前にブラウザを閉じるとプロセスが残る」という話もあるけれど,本当なのかしらん。

上の練習問題ではシェルスクリプトを使いましたが、実際にはCGIでシェルスクリプトを使うことは、次のような理由から、あまり多くありません。

  • 機能が少なくて不便である。

  • 実行速度が遅い。

  • セキュリティホールができやすい(21)。

「遅い」という理由の他に,「不便である」という理由と「セキュリティーホールができやすい」という理由が挙げられています。後者については,セキュリティーホールの問題はシェルスクリプトに限った話じゃないという注があるわけですけれど,たしかに Perl や Ruby と比べたら,セキュリティまわりを自前で気にする必要は増えてきそうです。

言語について アット・ホームページでは、CGIにご利用可能な言語はPerl、シェルスクリプト(sh)です。C言語はご利用いただけません。また、SSIはご利用いただけません。

@nifty のホームページサービス(@homepage)では,Perl の他にシェルスクリプトを使える旨書かれています。こういう記述はあまり見たことがありません。あたしんとこのレンタルサーバ屋さんでは,シェルスクリプトを CGI に利用することは積極的に薦めていないようです(CGI == Perl という前提で話を進めている)。もしかしたら,自前で立てているサーバと違って,レンタルサーバやホスティングの場合だと,サーバにどんなコマンドが入っているのか教えたくない,という理由があるのかもしれません。単純に「シェルスクリプト使えます」と書いたところで,何ができるかはインストールされているコマンド次第ですしね。

なんだか話がえらく広がってしまったけれども,実際のところ横浜市立図書館がシェルスクリプトで CGI を動かしているのかは分かりません(これはあくまでも強調しておく)。ただ,もしシェルスクリプトを使っているとしたらすげーな,という話でした。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.