第 10 回 CGI ことおぼえ レポート課題 氏名: 池田 紘平 学籍番号: c1110097 語学クラス: 英語 3 コース: 社会福祉コース 1.A require 'cgi' で cgi を使うことを宣言したように、require 'pstore' で pstore を使うことを宣言する。なお、pstore とは、第三者が書き込めるように したいときに宣言するものである。 今回の講義中は、pstore 変数を db、ファイル名を pstoreというディレクトリ の中の bbs.rb というファイルなので db = PStore.new("pstore/bbs.rb") とする。その後 db.transaction do をいれることで、CGI変数に入った値を読込み、表示するようになる。最後に end をつけることに注意する。 2.A < 設定 > 公益大にあるコース、先生の名前を選択すると先生の研究室、オフィスアワーを 表示する。 < プログラム r2_cgi_best.rb > #!/usr/bin/env ruby # coding: euc-jp require 'cgi' # CGI を使うことを宣言 c = CGI.new(:accept_charset => "EUC-JP") # EUC-jp で受け取り print("Content-type: text/html; charset=EUC-JP\n\n") # EUC-JP で書き出すようにする syozoku = c["course"] # 変数 syozoku に 所属コース(course)を代入 name = c["teacher"] # 変数 name に 名前(teacher)を代入 print("\n") # html の開始 print("\n") # head の開始 print("先生の教室はどこ?\n") # タイトルを決める print("\n") # head の終了 print("\n") # body の開始 printf("

名前: %s

",name) # 名前を表示 printf("

所属 : %s

\n",syozoku) # コースを表示 if /政策マネジメント/ =~ syozoku # もし syozoku が政策マネジメントだったら if /出井 信夫/ =~ name # もし name が出井 信夫だったら print("

研究室 : A-5

") # 研究室の表示 print("

内線 : 71543

") # 内線の表示 printf("

オフィスアワー : 木曜 5 限 ( 16:20 〜 17:50 )

") # オフィスアワーの表示 # 以降、上記と同じ仕組みで進む。 elsif /水田 健輔/ =~ name printf("

研究室 : C-4

") print("

内線 : 1263

") printf("

オフィスアワー : 月曜 3 限 ( 13:00 〜 14:30 )

") elsif /阿部 公一/ =~ name printf("

研究室 : H-5

") print("

内線 : 1290

") printf("

オフィスアワー : 月曜 5 限 ( 16:20 〜 17:50 )

") elsif /和田 明子/ =~ name printf("

研究室 : B-2

") print("

内線 : 1256

") printf("

オフィスアワー : 月曜 3 限 ( 13:00 〜 14:30 )

") elsif /内藤 悟/ =~ name printf("

研究室 : C-2

") print("

内線 : 1261

") printf("

オフィスアワー : 月曜 5 限 ( 16:20 〜 17:50 )

") elsif /尾身 祐介/ =~ name printf("

研究室 : G-1

") print("

内線 : 1281

") printf("

オフィスアワー : 月曜 4 限 ( 14:40 〜 16:10 )

") elsif /三島 憲之/ =~ name printf("

研究室 : I-3

") print("

内線 : 1293

") printf("

オフィスアワー : 水曜 2 限 ( 10:40 〜 12:10 )

") else printf("

%s に %s 先生は所属していません

",syozoku,name) end end if /地域共創コース/ =~ syozoku if /杉山 肇/ =~ name printf("

研究室 : D-5

") print("

内線 : 1269

") printf("

オフィスアワー : 木曜 6 限 ( 18:00 〜 19:30 )

") elsif /伊藤 眞知子/ =~ name printf("

研究室 : F-3

") print("

内線 : 1278

") printf("

オフィスアワー : 火曜 3 限 ( 13:00 〜 14:30 )

") elsif /三原 容子/ =~ name printf("

研究室 : D-2

") print("

内線 : 1266

") printf("

オフィスアワー : 木曜 4 限 ( 14:40 〜 16:10 )

") elsif /温井 亨/ =~ name printf("

研究室 : G-3

") print("

内線 : 1283

") printf("

オフィスアワー : 火曜 3 限 ( 13:00 〜 14:30 )

") elsif /渡辺 暁雄/ =~ name printf("

研究室 : H-1

") print("

内線 : 1286

") printf("

オフィスアワー : 木曜 6 限 ( 18:00 〜 19:30 )

") elsif /呉 尚浩/ =~ name printf("

研究室 : A-2

") print("

内線 : 1251

") printf("

オフィスアワー : 木曜 4 限 ( 14:40 〜 16:10 )

") else printf("

%s に %s 先生は所属していません

",syozoku,name) end end if /社会福祉コース/ =~ syozoku if /照井 孫久/ =~ name printf("

研究室 : F-1

") print("

内線 : 1276

") printf("

オフィスアワー : 火曜 4 限 ( 14:40 〜 16:10 )

") elsif /澤邉 みさ子/ =~ name printf("

研究室 : A-4

") print("

内線 : 1253

") printf("

オフィスアワー : 金曜 4 限 ( 14:40 〜 16:10 )

") elsif /武田 真理子/ =~ name printf("

研究室 : E-2

") print("

内線 : 1271

") printf("

オフィスアワー : 火曜 4 限 ( 14:40 〜 16:10 )

") elsif /鎌田 剛/ =~ name printf("

研究室 : E-4

") print("

内線 : 1273

") printf("

オフィスアワー : 火曜 3 限 ( 13:00 〜 14:30 )

") elsif /益子 行弘/ =~ name printf("

研究室 : H-2

") print("

内線 : 1287

") printf("

オフィスアワー : 月曜 4 限 ( 14:40 〜 16:10 )

") elsif /竹原 幸太/ =~ name printf("

研究室 : H-4

") print("

内線 : 1289

") printf("

オフィスアワー : 木曜 3 限 ( 13:00 〜 14:30 )

") elsif /小関 久恵/ =~ name printf("

研究室 : H-3

") print("

内線 : 1288

") printf("

オフィスアワー : 月曜 4 限 ( 14:40 〜 16:10 )

") else printf("

%s に %s 先生は所属していません

",syozoku,name) end end if /環境サイエンスコース/ =~ syozoku if /平松 緑/ =~ name printf("

研究室 : B-5

") print("

内線 : 1259

") printf("

オフィスアワー : 月曜 5 限 ( 16:20 〜 17:50 )

") elsif /市田 光/ =~ name printf("

研究室 : E-6

") print("

内線 : 1275

") printf("

オフィスアワー : なし

") elsif /古山 隆/ =~ name printf("

研究室 : E-1

") print("

内線 : 1270

") printf("

オフィスアワー : 火曜 4 限 ( 14:40 〜 16:10 )

") elsif /松山 薫/ =~ name printf("

研究室 : C-3

") print("

内線 : 1262

") printf("

オフィスアワー : 月曜 4 限 ( 14:40 〜 16:10 )

") else printf("

%s に %s 先生は所属していません

",syozoku,name) end end if /リベラルアーツ/ =~ syozoku if /國眼 眞理子/ =~ name printf("

研究室 : G-5

") print("

内線 : 1285

") printf("

オフィスアワー : 木曜 6 限 ( 18:00 〜 19:30 )

") elsif /遠山 茂樹/ =~ name printf("

研究室 : E-5

") print("

内線 : 1274

") printf("

オフィスアワー : 火曜 3 限 ( 13:00 〜 14:30 )

") elsif /山本 裕樹/ =~ name printf("

研究室 : I-5

") print("

内線 : 1295

") printf("

オフィスアワー : 火曜 4 限 ( 14:40 〜 16:10 )

") else printf("

%s に %s 先生は所属していません

",syozoku,name) end end if /外国語特別選抜/ =~ syozoku if /呉 衛峰/ =~ name printf("

研究室 : F-2

") print("

内線 : 1277

") printf("

オフィスアワー : 月曜 4 限 ( 14:40 〜 16:10 )

") elsif /松田 憲/ =~ name printf("

研究室 : I-4

") print("

内線 : 1294

") printf("

オフィスアワー : 木曜 4 限 ( 14:40 〜 16:10 )

") elsif /菅井 マリー/ =~ name printf("

研究室 : G-4

") print("

内線 : 1284

") printf("

オフィスアワー : 火曜 4 限 ( 14:40 〜 16:10 )

") else printf("

%s に %s 先生は所属していません

",syozoku,name) end end if /情報特別選抜/ =~ syozoku if /広瀬 雄二/ =~ name printf("

研究室 : B-3

") print("

内線 : 1257

") printf("

オフィスアワー : 金曜 4 限 ( 14:40 〜 16:10 )

") elsif /西村 まどか/ =~ name printf("

研究室 : B-4

") print("

内線 : 1258

") printf("

オフィスアワー : 月曜 2 限 ( 10:30 〜 12:10 )

") elsif /神田 直弥/ =~ name printf("

研究室 : F-4

") print("

内線 : 1279

") printf("

オフィスアワー : 木曜 3 限 ( 13:00 〜 14:30 )

") else printf("

%s に %s 先生は所属していません

",syozoku,name) end end print("\n") # body の終了 print("\n") # html の終了 < ページ r2_cgi_best.html > # html の開始 # head の開始 先生の教室はどこ?(CGI 最高傑作) # タイトル表示 # 背景色の設定終了 # head の終了 # body の開始
# action の中には起動するプログラムを入れておく

広告
           タイトル


# ロゴを表示する

CGI 最高傑作として先生の教室を表示するプログラムを作りました

# どんなものなのか表示する

使用にあたっての注意

# 仕様書のリンクをはっておく

政策 # 政策のラジオボタンの設定( 最初は政策に・をつけておく ) 地域共創 # 地域共創のラジオボタンの設定 社会福祉 # 社会福祉のラジオボタンの設定 環境 # 環境のラジオボタンの設定 リベラル # リベラルのラジオボタンの設定 外国語 # 外国語のラジオボタンの設定 情報

# 情報のラジオボタンの設定

# ドロップダウンメニューの終了

# 表示するときのボタンの設定

# リセットするときのボタンの設定
# form の終了 # body の終了 # html の終了 < 実行結果 > 〜 尾身先生を選択した場合 〜 先生の教室はどこ?

名前: 尾身 祐介

所属 : 政策マネジメントコース

研究室 : G-1

内線 : 1281

オフィスアワー : 月曜 4 限 ( 14:40 〜 16:10 )

〜 澤邉先生をせんたくした場合 〜 先生の教室はどこ?

名前: 澤邉 みさ子

所属 : 社会福祉コース

研究室 : A-4

内線 : 1253

オフィスアワー : 金曜 4 限 ( 14:40 〜 16:10 )

〜 國眼先生を選択した場合 〜 先生の教室はどこ?

名前: 國眼 眞理子

所属 : リベラルアーツ

研究室 : G-5

内線 : 1285

オフィスアワー : 木曜 6 限 ( 18:00 〜 19:30 )

< 説明 > どのように検索すれば良いのかを知らせるために、ページの最初に注意書きとし てリンクを貼ることで、親切なページになったと思う。プログラムに関しては、 第 9 回目の結果を分岐させるものを使って、もし〜だったらこれを表示するよ うにした。 < 考察 > 上記は正しいコースとそこに所属する先生が一致したため、うまく表示されたが、 実際には正しい入力がされないかもしれない。そこで、コースと名前が一致しな い場合の結果を書きに示す。 〜 尾身先生の所属を間違えた場合 〜 先生の教室はどこ?

名前: 尾身 祐介

所属 : 外国語特別選抜

外国語特別選抜 に 尾身 祐介 先生は所属していません

〜 澤邉先生の所属を間違えた場合 〜 先生の教室はどこ?

名前: 澤邉 みさ子

所属 : 地域共創コース

地域共創コース に 澤邉 みさ子 先生は所属していません

〜 國眼先生の所属を間違えた場合 〜 先生の教室はどこ?

名前: 國眼 眞理子

所属 : 情報特別選抜

情報特別選抜 に 國眼 眞理子 先生は所属していません

上記のように所属を間違えると、選択した名前とコースは表示されるが、その先 生はそのコースに所属していないことを表示できた。 2.B ロゴを作るために gimp& で立ち上げるが、日本語入力を可能にするために最初 に addfont とした後に gimp& として立ち上げる。その後は 拡張 → Script-Fu → ロゴ → (例)コミック本 というように選んでいく。フォントに関しては、aquqfont , yozfont が自分的 にオススメ。ロゴには署名がないとマイナスになるので気を付ける。保存時には 「拡張子で判別」のところを PNG にして、ファイル名を入力してから Ctrl - s をする。終了時には Ctrl - q で終了する。 基礎プログラミングII バナー http://roy/~c111009/adv2/logo_r2_c111009.png < 感想 > CGI を使うことに最初は抵抗を感じたが、作業をしているうちにおもしろくなっ てきた。この調子でグループワークも頑張りたい。 稲村洋樹君の CGI スクリプトが良いと思った。名前を入力したあとに交 付日等を選ぶことで、偽装の免許証を作れるのがおもしろいと思った。結果画面 のマチマチ感がたまらなかった。 http://roy/~c111021/rubycgi/order_input_c111021.html < 参考文献 > ・基礎プログラミング II 第 9 回 (CGI ことえらび) 「結果を分岐させるには」 西村まどか http://roy/~madoka/2012/r2/09/r2_09_02_theme_01_branch.html 追伸:プログラム CGI 傑作ページ、後期最高傑作とロゴを添付します