Code022: Q&A式 CGI入門 :CGIを動かそう!

この記事は2002年に書かれたものです。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
【 Webプログラミング Code Sample 】                          Since2001/11/23

                    Code022: Q&A式 CGI入門 :CGIを動かそう!

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                                                    Produced by ichikoro.com

           ▼毎週月曜日と金曜日に配信しています。
           ▼等幅フォントでご覧いただくとキレイに見えます。
           ▼登録・解除はこちらから可能です。
               < http://www.ichikoro.com/webp/ >
                  ※バックナンバーへのリンクもあります。
                  ※お友達にもぜひお勧めください(^^)/


─【Contents】───────────────────────────────
    01.Answer ............... 前回の回答
    02.Tips ................. Q&A式 CGI入門(Perl編)
    03.News ................. ネット業界の一週間
    04.From Editor .......... 編集後記


                   【 Webプログラミングは毎週2本立て! 】

             ・月曜日版はWebの実際の活用方法などを特集します。
             ・金曜日版はHTMLやCGIなど一つの分野について最初から
              解説する講座になっています。現在はC言語入門です。


こんにちは、編集者の勝部です。

上京してきてから知り合った3つ(?)下の妹みたいな女の子がいるのですが、“日芸
に受かりました”のメールが携帯に。一年前とは打って変わって「三谷(幸喜)さん
や爆笑問題の後輩になっちゃった」と、うれしそうな声で受験の様子を語られ、
ちょっと安心しました。よかったね。と同時に思わずこっちも来年受験しそうにな
りました(笑) とりあえず、4年間、がんばって遊んでください(^-^)/


ではでは、今週も行ってみましょう!



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  01.Answer  「前回の回答」
──────────────────────────────────────

金曜日版で出題した問題の回答例です。
出てきていない部分がたっぷりですが、もちろん今まで解説してきた情報で
解けると思います。早い話ひっかけ問題なのです。


    Q. 次のプログラムは、オセロのプログラムの一部分である。
       これのバグを見つけなさい。

            #include<stdio.h>
            #define TABLE_SIZE 8

            typedef enum {
                NULL,
                BLACK,
                WHITE
            } OTHE_BORD;

            /*
             * オセロ版表示関数
             */
            int disp_table(OTHE_BORD table[][TABLE_SIZE])
            {
              int i,j;

              for( i=0 ; i<TABLE_SIZE ; i++ ) printf("%2c", i + 'A' ); /*上の英字/
              printf("\n");

              for( i=0 ; i<TABLE_SIZE ; i++ ){         /*オセロ盤表示*/
                 printf("%d",i+1);

                 for( j=0 ; j<TABLE_SIZE ; j++ ){
                    switch( table[i][j] ) {
                     case NULL : printf("・");break;
                     case BLACK: printf("●");break;
                     case WHITE: printf("○");break;
                     default   : return(FALSE);
                    }
                 }
                 printf("\n");
              }

              return(0);
            }

    A. 次の行のコメントが間違っています。

>     for( i=0 ; i<TABLE_SIZE ; i++ ) printf("%2c", i + 'A' ); /*上の英字/

       コメントは /* と */ で挟まれた間だけが有効になります。上のプログラムだ
       と“オセロ盤表示”までがコメントとなってしまい、そこまでの処理は全て無
       視されることになります。
           ※正確には括弧の整合性が取れなくなるのでコンパイルを通りません。

       当時の私はこれをみつけるのに半日潰したようです。
       まぁバグなんてこんなもんです(^^;



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  02.Tips  「ちょっとがんばれば分かる FAQ式CGI入門 Perl編」
──────────────────────────────────────

前回までの内容はちょっとだけ置いておいて、今回より「ちょっとがんばれば分か
る FAQ式CGI入門 Perl編」をお送りいたします。基本的にホームページを一通り作
れる方が対象です。最低限のことは出来るようにはなると思いますが、あまり詳し
いことには積極的に触れません。本編で取り上げるまでお待ちくださいませ。

では早速行ってみましょう。


■CGIを使うためには?

    [Q]. CGIを使うには何が必要ですか?
    [A]. CGIが動作するサーバが必要です。
         BIGLOBEやリムネットなど、普段契約しているプロバイダが無償(もしくは有償)
         で提供している場合があります。まずはプロバイダにお問い合わせください。

    [Q]. 契約しているプロバイダでCGIが使えません。
    [A]. プロバイダを移るか、レンタルサーバ会社(データセンター)と契約しましょう。

        ・プロバイダエクスプローラ
          http://www.tky.3web.ne.jp/~masao777/
           ↑昔よく使ってました。

        ・独自ドメイン レンタルサーバーnavi
          http://www.inter-eye.com/domain/

        ・レンタルサーバ総合検索サイト
          サーバエステート
          http://kochi.wisnet.ne.jp/server-estate/

        ・レンタルサーバお役立ちガイドブック
          http://rentweb.org/
            ↑サーバのOSでも絞り込めるみたいです

    [Q]. 金がないのですが...。
    [A]. 無料でのサービスも存在しますが、それなりの対価を払って学習されること
         をオススメします。(背水の陣ですな)

    [Q]. サーバに違いはありますか?
    [A]. あります。
         まずOSが違う可能性があります。サーバソフト(httpd)が違う場合もあります。
         基本的には何でもいいのですが、下記の組み合わせのところが多くインター
         ネット上のドキュメントも比較的多いです。

           ・OS
             UNIX系(Linux, BSD, Solarisなど)

           ・サーバソフト
             Apache

    [Q]. サーバに必要なものはありますか?
    [A]. あなたが得意なプログラム言語が使えるか確認してください。
         このメルマガであれば、とりあえずPerlが動くかどうか確認してください。
         Perl以外にもC/C++言語やCシェル、Java、AppleScriptなどでも作成は可能です。


■CGIは危険か

    [Q]. CGIは危険ですか?
    [A]. 使い方、作り方によっては大変危険です。
         サーバをダウンさせてしまう事もあり、賠償請求...という可能性も契約内容
         によってはあり得ます。また甘い物を作るとSPAMメールの発信元にされたり、
         悪意のある人があなたのCGIを利用して、ファイルを全て消去してしまう可能
         性もあります。

    [Q]. 他人に迷惑をかけることがありますか?
    [A]. あります。
         専用サーバでない場合、100人以上の人が同じ一台のマシンを使う場合がほと
         んどです。つまりあなたがサーバを落としてしまったり、大変重たい処理をし
         ていると、同じサーバにいるたくさんの人が迷惑を被ることになります。
         
         また、誰にでもメールが送れるようなものを作ると、メール爆弾に利用された
         りするわけです。この場合インターネット利用者全てに迷惑や損害を与える可
         能性があります。


■テスト環境の必要性

    [Q]. サーバにアップする前に、チェック(デバグ)は必要ですか?
    [A]. 絶対に必要です。
         たった数行のプログラムで、サーバがダウンすることもあります。

    [Q]. どのようにチェックすればいいですか?
    [A]. まずはご自分のパソコンにサーバソフト(httpd)をインストールしましょう。
         ここで上手く動くのを確認したらサーバにアップするように心がけましょう。

        ・自宅マシンWWWサーバ化計画 (AN HTTPD編)
          http://www.kent-web.com/www/index.html
            ※こちらはWindowsな方向け

        ・Macで簡単!マイサーバ
          http://www.ipc-tokai.or.jp/~wood/server/
            ※Macの場合、OS8からついてくるWeb共有を使うことでいとも簡単に
              できます。


■CGIを動かそう!
    ここではOSがUNIX系であること、httpdがApacheであることが前提と
    なっています。

    [Q]. とりあえず動かしてみたいのですが
    [A]. 以下のスクリプトを“hello.cgi”として保存し、実行してみてください。
         パーミションは0755あたりでOKです。一行目は変更してください。

        #!/usr/bin/perl
        
        print "Content-type: text/html\n\n";
        print "<HTML><HEAD><TITLE>Hello!</TITLE></HEAD><BODY>\n";
        print "<H2>Hello!</H2>\n";
        print "</BODY></HTML>\n";

        exit(0);

    [Q]. 動作せずプログラムがそのまま表示されます。
    [A]. CGIが使える設定になっていない可能性があります。
    
            (1)サーバがCGIを動かさない設定になっている場合、「CGIを使うためには?」
               の項を参考にしてください。また、特定のディレクトリでしか動作しない
               場合や、HTMLや画像を置くサーバとCGIが動作するサーバが別の場合もあり
               ます。詳しくはプロバイダ(データセンター)にお問い合わせください。

            (2).htaccessの設定が必要な場合もあります。
                ・CGI を有効にするには
                  http://www.mikeneko.ne.jp/~lab/web/htaccess/cgi.html#cgi1


    [Q]. 一行目の“#!/usr/bin/perl”は何ですか?
    [A]. CGIとは直接の関係はありません。UNIXの仕様です。
         実行権のあるファイルの場合(例えば0755)、一行目にある#!以降に記述
         してあるプログラムが実行されます。例ではPerlが起動されます。

    [Q]. 次の行は何を意味しますか?
            print "Content-type: text/html\n\n";
    [A]. これから送ろうとしているデータが何か、ブラウザに教えています。
         これは必須項目で、実際の内容を送る前に必ずこの一行は必要です。
         記述しないと 500 InternalServerError が出ます。

         例では「HTML」を意味しています。
         他にも、

                 text/plain        べたテキスト
                 image/gif        GIF
                 image/jpeg        JPEG
                 sound/x-wav        WAV

         などがあります。

    [Q]. printした物がそのままブラウザに渡されるのですか?
    [A]. That's Right!
         正確には“標準出力”という場所に出力されたものがWebサーバ経由で
         ブラウザに渡されます。printは標準出力に出力する命令です。


---【PR】-------------------------------------------------------------------
                CGIで困った、腕を上げたいならまずはココ
                  『CGIプログラミングメーリングリスト』

                   < http://www.ichikoro.com/cgi/ml/ >
                                                    Produced by ichikoro.com
-------------------------------------------------------------------【PR】---

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  04.News  「今週の気になるニュース
                インターネット業界の一週間」
──────────────────────────────────────

3月ともあり新サービスが続々と登場しています。それと同じくらい淋しいニュース
もよく聞きます。しかし先週は面白いニュースが盛りだくさんでした。特にFLASH MX
は衝撃です!


───────
  3月4日(月)
───────

・2ちゃんねる、専用ビューワーを使った有料サービスをスタート (窓の杜)
  http://www.forest.impress.co.jp/article/2002/03/04/2channel.html

・WebブラウザーにYahoo!の機能を取り込める「Yahoo!コンパニオン」
  http://www.watch.impress.co.jp/internet/www/article/2002/0304/yac.htm

・ドコモ、年内にカメラ内蔵の「251iシリーズ」を発売か
  http://k-tai.impress.co.jp/cda/flash?site=ktai&aid=8505


───────
  3月5日(火)
───────
・NTT東日本、フレッツ利用者同士でファイル共有ができるサービスを開始
  http://www.watch.impress.co.jp/internet/www/article/2002/0305/flets.htm
    ついに始まりましたね!
    日本で初めての、合法な大型P2Pサービスとなるのでしょうか。
    ちょっと高目の価格設定のような気がしますが.....。

・米Macromedia、Flash開発環境「Flash MX」を発表
  http://www.watch.impress.co.jp/internet/www/article/2002/0305/mx.htm
    マクロメディアがやってしまいました。
    動画が動かせるのはもちろん、GUI環境の構築に対しても力を入れている模様。
    (現在もACTIONスクリプトと呼ばれる言語で作成できます<GUI)
    一番びっくりするのは、ターゲットが携帯電話、PDA、双方向テレビ、家庭用
    ゲーム機(PS2)にまで及んでいることです。思わぬところでJavaのライバルが
    現れましたね。今後の展開に要注意です!


・「濃く短く」なるネットの利用
  http://www.zdnet.co.jp/news/reuters/020305/e_survey.html
    KNNの神田さんが日刊デジクリで書かれていた
    
        「インターネットの、もはや戦後である」
        http://www.dgcr.com/cgi-bin/backnumber/back.cgi?mode=right&year=2002&month=3&day=4

    を思い出しました。


・SFC、iアプリを活用したデジタルシネマの双方向型映像イベント
  http://k-tai.impress.co.jp/cda/flash?site=ktai&aid=8527
    これが大変面白い試みだと感じたのですが、その生かし方がスゴク難しいと
    思います。うーん例えば幕張メッセなどでよく行われるセッションでやると
    か?講師のイケテル度が最後に表示されるみたいな(笑)そういう使われ方
    が日本人チックな気がしますね。みなさんあまり質問されないですし。

・トラフィックゲート、サイバーエージェントグループにアフィリエイトを拡大
  http://www.watch.impress.co.jp/internet/www/article/2002/0305/tg.htm


───────
  3月6日(水)
───────
・米NECの研究者たちがインターネットの新しい検索アルゴリズムを発見
  http://www.watch.impress.co.jp/internet/www/article/2002/0306/neci.htm
    ようするに特定の“カテゴリ”の中をロボット検索させるわけですね。
    確かアメリカで人為的なカテゴリの中から検索させる、という検索エンジンが
    すでに動いていたと思います。各言う私も似たようなことを考えていましたが(^^;


・TTNet、東電のFTTH網を利用した接続サービスを3月29日開始
  http://www.watch.impress.co.jp/internet/www/article/2002/0306/ttnet.htm

・Verisign社CEOが来日〜インターネットには第二の波が訪れている
  http://www.watch.impress.co.jp/internet/www/article/2002/0306/verisign.htm

・フレッシュアイ、東芝グループ会社に吸収合併〜サービスは存続
  http://www.watch.impress.co.jp/internet/www/article/2002/0306/feye.htm

・リクルートコスモスとUSEN、新築マンションの光ファイバー事業で提携
  http://www.watch.impress.co.jp/internet/www/article/2002/0306/rcg.htm

・RealNetworksが「RealOne」リリース
  http://www.zdnet.co.jp/news/dj/020306/real.html

・IPv6——普及の条件
  http://www.zdnet.co.jp/broadband/0203/06/ip.html

・携帯に欲しいサービス、「病院の混雑情報」と「選挙の投票」 
  http://japan.internet.com/wmnews/20020306/5.html


───────
  3月7日(木)
───────

・ポータルから“トレンドセッター”向けサイトへ〜エキサイトが事業計画を発表
  http://www.watch.impress.co.jp/internet/www/article/2002/0307/excite.htm

・Sun Microsystems CEO ScottMcNealy氏来日
  LinuxもSolarisも「SunONE」の“部品”にすぎない
  http://www.watch.impress.co.jp/internet/www/article/2002/0307/sun.htm

・NetscapeやSunの「JVM」に「盗み見」のセキュリティホール
  http://www.watch.impress.co.jp/internet/www/article/2002/0307/jvm.htm

・世界のインターネット人口、2001年第4四半期に約5億人に
  http://www.watch.impress.co.jp/internet/www/article/2002/0307/nn.htm

・ロータスがいなくなる日 
  http://japan.internet.com/finanews/20020307/5.html


───────
  3月8日(金)
───────

・マイクロソフト、「.NET」戦略の日本における取り組みを発表
  http://www.watch.impress.co.jp/internet/www/article/2002/0308/msnet.htm

・国税庁、「国税電子申告・納税システムホームページ」を公開 
  http://japan.internet.com/public/news/20020308/4.html

・Visa、カード決済時のパスワード認証機能を日本でも提供へ
  http://www.watch.impress.co.jp/internet/www/article/2002/0308/visa.htm

・米AOLがISPの世界シェアで14%と圧倒的な第一位〜米調査
  http://www.watch.impress.co.jp/internet/www/article/2002/0308/wss.htm

・Yahoo!JAPAN、決済手続きが簡略化できる「Yahoo!ウォレット」を開始
  http://www.watch.impress.co.jp/internet/www/article/2002/0308/yw.htm

・ウワサの“超音波ペン”を見てきました
  http://www.zdnet.co.jp/news/0203/08/fujitsu_labo.html

・携帯電話の不通に太陽のマイクロ波も影響
  http://www.hotwired.co.jp/news/news/technology/story/20020308306.html

・楽天、東京ヴェルディのメインスポンサーに 
  http://japan.internet.com/wmnews/20020308/2.html

・Nielsen//NetRatings、ブロードバンドユーザーの利用動向を発表
  ——フジテレビ、産経新聞、トヨタが人気
  http://ascii24.com/news/i/mrkt/article/2002/03/08/634265-000.html



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                           編    集    後    記
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「FAQ式CGI入門 Perl編」が今回より始まりました。これは本編でCGIの話が出るまで
のつかみです。来週何を取り上げましょうかねぇ。今のところの最有力はアクセスカ
ウンタです。今後このコーナーがどうなるかお楽しみに。


最近、ブリヂストンのCMが気に入ってます。
山崎まさよしさんが「♪どこまーでもゆこう〜」と歌ってるやつです。これは昭和41
年に同社がCMで使っていた、小林亜星さん作曲の「どこまでも行こう」のリメークに
なるそうです。

心地よく早回しで流れていくクルマの窓から見えるような景色がなんとも言えず、曲と
もマッチしていて、心の奥底にグッと来るものがあります。あんな道を思う存分満足す
るまで走ってみたいなぁ.....。バイクだったら、もう卒倒しちゃうかもしれないです
ねぇ。そうそう、大黒摩季さんのアップテンポバージョンも見ました。元気が出ますね!

CD出してくれないかなぁ。

    ・BRIDGESTONE
      http://www.bridgestone.co.jp/

    ・小林亜星オフィシャルサイト 
      http://www.remus.dti.ne.jp/~astro/asei/asei_files/index.html



ではでは、今度は金曜日にお会いしましょう! (^-^)/~~


■Information 
 「Webプログラミングからのお知らせ」

    【相互広告募集のお知らせ】
      読者数を増やしたいメルマガ発行者さんを募集しています。お互いに一定期間(1〜
      3回程度)広告を掲載し合いませんか?詳細はご相談ください(無料)

         お問い合わせ: mm-webp@ichikoro.com

    【コラム募集のお知らせ】
      Webプログラミングでは、寄稿していただけるコラムやプログラムなどを募集して
      います。たくさんの読者の方にあなたをアピールする場にもなります。ぜひ有意義
      な情報やご意見をお送りください。

         お問い合わせ: mm-webp@ichikoro.com


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

                   【 Webプログラミング Code Sample 】

                    発  行 : ichikoro.com
                発行責任者 : 勝部 麻季人
                              < mailto:katsube@ichikoro.com >
                  発行部数 : 1767部(前回)
                 Webサイト : < http://www.ichikoro.com/webp/ >
            お問い合わせ先 : < mailto:mm-webp@ichikoro.com >

                            Powerd by まぐまぐ
    All Right Reserved, CopyRight(C) 2001 Webプログラミング Code Sample
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

コメント

コメントを入力. Wiki文法が有効です:
J M O U M