第8回 CGIことはじめ レポート課題(再提出) 筆記問題とプログラム問題で作成したプログラム (report.rb と order_input_c111135.rb)のプログラム内に説明文をつけて いなかったので、説明文を付け加えた。 氏名: 村上茉奈美 学籍番号: C1111352 語学クラス: 英語3 コース: 社会福祉 1. A. 以下に、CGI変数とHashの似ている点を挙げる。 1. 新しく変数を作る際の表記 Hash では新しく作る際に、 (例: shop = Hash.new) とプログラムに書いて 「新しく shop というハッシュを作る」ことを宣言する。 CGI でも新しく作る際には、 (例: cgi = CGI.new) とプログラムに書いて 「新しく cgi という CGI用のハッシュを作る」ことを宣言する。 この2つに共通しているのは、 ◯◯ = …….new で新しくハッシュを定義しているという点である。 (CGI に関しては、「CGI用のハッシュ」という意味。) 2. 定義した後に代入される値の入り方 Hash では定義後に (例: shop["文字列 か 数字"] = 文字列 か 数字 ( = の後に入るものが文字列だった場合には 前後に " " がつく。)) と書くと 入力された文字列に基づいて 「 = の後の文字列もしくは数字」を表示す る仕組みになっている。 CGI では定義後に 一旦、(例: a = cgi["b"]) と書いて 「入力された文字列に基づいて、それに対応する option(CGIで選択肢を選ぶ 部分)を a に代入する」ことを示す。 この cgi = ["文字列"] の文字列部分には、option によって選ばれた ものが入る。 CGI も表記の仕方を変えると cgi["文字列"] = "文字列" とできるであろう。 その理由は、option の部分を a に代入させて a を表示することも、 option の部分を key にして value( = の後の文字列)を表示すること も、どちらも同じ意味を持つからである。 入力された文字列に基づいて、対応する値(もしくは文字列)を表示する 点が CGI変数と Hash の似ている点だと考える。 A の参考文献 ・ http://roy/~madoka/2012/r2/02/r2_02_03_theme_02_hash_input.html 2012年度 基礎プログラミングII 第2回 (なになにといえばこれこれ) 「入力したデータを取り出そう」 ・ http://roy/~madoka/2012/r2/08/r2_08_07_theme_07_actionprogram.html 2012年度 基礎プログラミングII 第8回 (CGI ことはじめ) 「CGIスクリプトの解説」 ・ http://roy/~madoka/2012/r2/08/r2_08_09_theme_09_declare.html 2012年度 基礎プログラミングII 第8回 (CGI ことはじめ) 「Ruby で CGI を作る宣言」 ・ http://roy/~madoka/2012/r2/08/r2_08_08_theme_08_ruby.html 2012年度 基礎プログラミングII 第8回 (CGI ことはじめ) 「動作プログラム作成」 上記4つともに、作者: 西村まどか B. .htaccess というファイルは 「CGI を使用することを宣言するもの」である。 .htaccess に AddHandler cgi-script .rb Options +ExecCGI と書くことによって、 「そのディレクトリの中に作成する、ファイル名の末尾に「.rb」がつくファ イルはCGIスクリプトである」と認識される。 *.html は「利用者にデータを入力してもらうためのページ」である。 *.rb は「入力されたデータを受け取り、その後処理をするプログラム」で ある。 B の参考文献 下記に示す2つの文献は、共に 2012年度 基礎プログラミングII 第8回 (CGI ことはじめ) 作者: 西村まどか である。 ※URLの下の「 」の部分は、ページのタイトル※ ・ http://roy/~madoka/2012/r2/08/r2_08_03_theme_03_makecgi.html 「CGIの作り方」 ・ http://roy/~madoka/2012/r2/08/r2_08_04_theme_04_declare.html 「CGIを使用することを宣言しよう」 以降、 C と D の問題については、 ・ report.html ・ report.rb を作成して、それぞれ解説する。 C. C の問題を解説するためのHTML文書(report.html) 基礎プログラミングII レポート解説

あなたは公益大が好きですか?

解説 まず初めに、
で 「report.rb というプログラムに入力されたものを反映させる」という ことを表す。 次に、で選択肢(ドロップダウンメニュー)を作る。 select 部分の先頭に name = "answer" と書いているが、 これは、「CGI変数に answer という名前をつける」という意味だ。 select の中の
・プログラム(order_input_c111135.rb) #!/usr/bin/env ruby #coding: euc-jp require 'cgi' #「CGIを使う」ということを宣言する cgi = CGI.new(:accept_charset => "EUC-JP") #CGI用のハッシュを新しく作り、CGIを日本語で受け付ける print("Content-type: text/html; charset=EUC-JP\n\n") #CGIの値を日本語で書き出す sei = cgi["seibetu"] #変数 sei には CGI変数の seibetu を代入する tosi = cgi["age"] #変数 tosi には CGI変数の age を代入する month = cgi["birth"] #変数 month には CGI変数の birth を代入する tiiki = cgi["area"] #変数 tiiki には CGI変数の area を代入する #以下、HTML文書の中身 print("\n") print("\n") print("Registration\n") print("\n") print("\n") print("

登録内容

\n") printf("

性別-- %s

\n", sei) printf("

年齢-- %s歳

\n", tosi) printf("

お誕生月-- %s月

\n", month) printf("

お住まいの地方-- %s

\n", tiiki) print("\n") print("\n") 3. もとにしたプログラムからの変更点 授業で作成した ticket.html と ticket.rb をもとにした。 HTML については、前期に作成した個人作品に対応するよう、CGIを 使用する部分(選択する部分)を増やした。 CSSを使って背景色等の色を設定した。 また、CGI変数の名前や input type の部分の value の名前を 変更した。 プログラムについては、「選択されたものを取りこんで printf文を 使って表示するため」の変数の名前(上記のプログラムでは、sei・ tosi 等)を変更した。 4. 実行結果 (Webページ上での出力結果を出すため、ソースを貼り付ける。) ・ order_input_c111135.html(HTML文書) の実行結果 Personal Data

個人情報の登録を行います

・ order_input_c111135.rb(プログラム) の実行結果 Registration

登録内容

性別-- 女

年齢-- 31~40歳

お誕生月-- 11月

お住まいの地方-- 近畿

5. 考察 プログラムがきちんと表示されるのか、Kterm上でも確認する。 roy{c111135}% ./order_input_c111135.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) seibetu="女" age="31~40" birth="11" area="近畿" /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match/.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:610: warning: regexp match /.../n against to EUC-JP string Content-type: text/html; charset=EUC-JP Registration

登録内容

性別-- 女

年齢-- 31~40歳

お誕生月-- 11月

お住まいの地方-- 近畿

Web上で選んだもの(実行結果)と同じ選択肢を選んだ。 その結果、内容がきちんと反映されていることが分かった。 よって、このプログラムは正しいということができる。 当初、プログラムも背景色等の色を設定し、見た目も綺麗に見やすく したかった。 そこで、HTMLと同様に として style.css を組み込もうと したのだが、その部分を入れるとWeb上でエラーが出てしまい、上手く出 来なかった。 今後、「どのようにすれば、プログラムにCSSを組み込むことができるの か」を考え、学んでいきたい。 6. 参考文献 下記に示す4つの文献は、共に 2012年度 基礎プログラミングII 第8回 (CGI ことはじめ) 作者: 西村まどか である。 ※URLの下の「 」の部分は、ページのタイトル※ ・ http://roy/~madoka/2012/r2/08/r2_08_06_theme_06_firstcgi.html 「基本のCGIホームページの作りかた」 ・ http://roy/~madoka/2012/r2/08/r2_08_08_theme_08_ruby.html 「動作プログラム作成」 ・ http://roy/~madoka/2012/r2/08/r2_08_09_theme_09_declare.html 「RubyでCGIを作る宣言」 ・ http://roy/~madoka/2012/r2/08/r2_08_11_theme_10_printhtml.html 「print()文とHTML文書のなかみ」 今回作成したCGIのリンク先 http://roy/~c111135/rubycgi/order_input_c111135.html なお、前期に作成した個人作品のリンクが切れていたので 訂正して再度リンク先を書く。 http://roy/~c111135/openweb/c111135.html 3. 今回の授業では、CGIの使い方を学ぶことができた。 今までは「KTerm上でプログラムを実行させ、Hash や print を使って、選択 肢を表示させる。その後、その入力された文字列に対応する結果を表示する」 ということを行ってきた。 しかし、今回からは「Web上で入力し、Web上で結果を表示する」ことを学び、 それを作成する私たちにとっても、Webを利用する人にとっても、より使いや すいものになった。そして、Web上でのアンケートや、マウスでクリックして 選択肢を選ぶページの構造を理解することができた。 これから最高傑作を作る時期になるが、今回学んだことを活用してよりよい Web を作っていきたい。 共同学習者: 浅沼佑香 ・ 伊藤詩野