roy > naoya > 基礎プログラミングII > (10)自由課題実施期間[1]
(10) 11/28の授業内容:自由課題実施期間[1]
[1]自由製作課題について
これまでは一人で限られた時間の中でプログラムを作成してきたため、規模の大きなものを作成することが難しかった。1年間続いたRubyの授業もそろそろ終わりを迎えようとしている。そこで、1年間の集大成として、これまで学んだ技術を駆使してグループで規模の大きいログラムを作ってみよう。
作成条件は以下の通りとする。
作成するもの
- プログラム(必ず2つ以上作成すること)
- 理由(1):プログラムが1つだと得意な人が任されることになり、作業量の偏りが生じやすい
- 理由(2):プログラムが1つだとグループ内の得意な人1〜2名の力量により結果が決まってしまう
- 理由(3):プログラムが1つだと複数の案が出た時に却下される案が多くなる
- 理由(4):今年は例年と比べて受講生のレベルが高いので2つくらい作れそう
- Webページ(プログラムの説明書やプログラム本体を掲載)
- プレゼンテーションファイル(発表時に使用)
自由課題グループわけ
これまでに獲得をした得点に基づき、各グループの戦力が同程度になるよう に調整している。
1 | 2 | 3 |
---|---|---|
C1080829 齋藤 千春 C1120411 金田 涼 C1120859 鈴木 昌紘 C1121020 中澤 智也 C1121209 水尾 啓太 |
C1111576 山口 大志 C1120115 有路 裕子 C1120606 今野 美菜子 C1120635 齋藤 萌衣 C1121014 飛澤 由佳 C1121221 皆川 一貴 |
C1120090 阿部 倫之 C1120434 菊地 あゆ美 C1120517 黒澤 祐太 C1120730 佐藤 菜 C1120977 田村 雄太 C1121333 渡辺 瑞希 |
4 | 5 | 6 |
C1120150 井澤 勇斗 C1120670 佐々木 捷人 C112099A 都築 幸恵 C1121072 橋口 櫻子 C1121238 向 周太 |
C1120339 大畑 慶太 C1120380 小野 雅大 C1120440 菊地 晶樹 C1120948 竹内 裕 C112134A 渡辺 雄基 C1121356 渡邉 祐介 |
C1120345 大巻 拓之 C1120641 斎藤 優衣 C1120747 佐藤 春香 C1120902 高橋 和矢 C1121008 綱淵 葉子 C1121043 中西 愛 |
題材設定
後期グループ課題は諸君の実力を公(おおやけ)にアピールできるよう公開しやすい題材を選ぶ形式とする。以下の各部門から好きなものを選んで課題作成する。
- 地域活性部門
何か地域を盛り上げる助けになるもの
- 福祉部門
不自由を克服する人を支援するものなど
- 役立ち情報部門
知りたい人にとってしっかり役立つ情報を提供するもの
- シミュレーション部門
実世界でのできごとを計算機上で仮想的に実験するもの
- 教育部門
何かを学習する人の強力な助けになるもの
- ビジュアル部門
効果的な視覚情報を多数用意した凝った作りのもの
- エンターテイメント部門
大人から子供まで幅広く楽しめるもの
他チームの作品を評価するときに、その作品がエントリした部門のテーマに則しているかも大きく加味する。
前期同様の投票を行ない、上位2チームには合同発表会でのクラス代表発表をしてもらう。
過去の自由製作課題
参考までに過去の自由製作課題の例を示す。
- 2012年度(後期)自由製作課題
- 2011年度(後期)自由製作課題
- 2010年度(後期)自由製作課題
- 2009年度(後期)自由製作課題
- 2008年度(後期)自由製作課題
- 2007年度(後期)自由製作課題
- 2006年度(後期)自由製作課題
- 2005年度(後期)自由製作課題
作成が望ましくないプログラム
以下のプログラムは作成を避けるか、作成に当たりユーザが実施したいと思うような工夫を相当に考える必要がある。
- 占い:乱数で結果を出すだけなので求められる技術レベルが低く、1年間学んだ集大成のプログラムとしては達成感に欠ける
- 心理テスト:学術的に信頼性や妥当性が確認されている心理検査は著作権の問題があり、自由に利用することができない。適当に作った心理テストは根拠がないので面白みに欠ける
- クイズ:取り扱うジャンルや問題数が豊富であれば実施したいと思うが、いずれかが不足していると実行してもらえない傾向にある
[2]今後の予定
本日の後半より自由製作課題を実施する。5〜6人のグループで規模の大きなプログラムを作成する。以降の予定は以下の通りである。1月の授業は19日からであるが、すでに発表1週間前であるため、本日中に作業分担を行い、各自で作業を進めておくとよい。
- 11月28日(木)
- 自由課題グループ分け
- 楽しいプログラムを作るためのテクニック
- グループ名の決定
- 役割分担の決定
- 作成するプログラムの検討
- 12月5日(木)
- プログラムの作成開始
- Webページの作成開始
- プレゼンテーションファイルの作成開始
- 発表の流れの検討
- 12月12日(木)
- trr
- プログラムの完成
- Webページの完成
- プレゼンテーションファイルの完成
- 発表練習
- 12月19日(木)
- 休講(作業時間に当てても良い)
- 1月9日(木)
- 自由課題発表会(授業内)
- 1月○日(補講期間)
- 各クラス上位2チームによる合同自由課題発表会
[3]本日の作業内容
役割分担を決める。その上で何をいつまでにやるのかを相談する。役割としては例えば以下がある。準備期間中、当日それぞれについて役割を決定し、何もすることがない人が出ないようにしよう。
授業以外の時間に集まって作業を行う可能性があるので、連絡が取り合えるようにしておこう。後で、連絡が取れなくなって困ることがないようにしておくこと。
準備期間の役割(例)
- プログラム作成
- プログラムデータ作成(クイズなどの場合)
- プログラムシナリオ作成(シミュレーションゲームなどの場合)
- Webページ作成
- 画像作成(Webページやプログラムで使用)
- プレゼンテーションファイル作成
- 発表シナリオ作成(時間配分や発表の流れ)
当日の役割(例)
- 発表役
- タイムキーパー
- コンピュータ操作役
「応援」や「遊軍」、「パシリ」などの実質的に仕事のない役割は定めず、各人が何かしらグループ活動に貢献できるように分担を考えること。
役割分担が決まったら、作成するプログラムやWebページのイメージ、作成する画像などについて相談し、早速作成に取り掛かること。
[4]作業の進め方
役割が決まったら各自で作業を行うが、その際担当に応じて該当するページを確認しておくと良いだろう。
- プログラムを作成する上でのTIPS(今日のページ)
- Webページを作成する上でのTIPS(第11回のページ)
- プレゼンテーションを行う上でのTIPS(第12回のページ)
- 自由課題の評価について(第13回のページ)
[5]プログラム作成上の注意
作成するプログラムは公開することを考え、以下の点に留意しよう。
- 操作方法をわかりやすくする:ユーザ≠プログラム作成者であるため、初めて実行した人でも操作方法がわかりやすいことが望ましい。例えば、実行直後にprint"好きな数字を入力してください\n"とすると、何をするプログラムであるのか、何のために数字を入力しなければならないのかがわからない。ただし、余りにも細かく説明しすぎると、読むのが煩わしくなってしまう。プログラム作成担当でないグループ内の他のメンバに意見を求めると良い。
- プログラムの構造をわかりやすくする:どこでどのような処理をしているのかについてコメントを残しておくと良い。複数人で協力して作成する場合、他人が書いたプログラムを理解するためには時間がかかることがある。また、よく出来たプログラムの場合、次年度以降の自由課題作成において参考にされる可能性もある。せっかく作ったプログラムであるため、将来的に活用してもらえるよう、構造をわかりやすくしておこう。
- 協力して作成する:例えばクイズを作る場合、一人で問題を考えると20問程度が限界かもしれない。しかし、全員で考えれば100問以上の問題を作ることも出来る。毎回同じ問題が同じ順番で出題されるプログラムは1〜2回しか実行してもらえないが、プールした100問の問題からランダムに10問出題するようなプログラムであれば、何度でも楽しむことができる。せっかく作るのであるから、多くの人に繰り返し実行してもらえるようなものを作ろう。
- 技術レベルの高いプログラムを作成する:1年間Rubyを学んできた集大成のプログラムである。単に楽しい/役に立つだけではなく、技術的にもレベルの高いものを目指そう。if文を使ったシナリオ分岐型のプログラムは、ストーリーとしては面白いかもしれないが、それほど難しい技術を使っているわけではない。open-endやハッシュ、CGIなどを使うことを考えてみよう。
[6] 特定の文字・文字列の出現回数を調べる(count, scan)
[7] 乱数の発生(rand)
[8] 少し間を空ける(sleep)
[9] 時刻を取得する(Time.now)
[10] 大きな文字を出す(systemを用いたbannerコマンド)
[11] ポップアップで画像を表示(systemを用いたdisplayコマンド)
[12] 文字色変更・画面操作(\e[Xm)
[13] 配列に関するTips
[14] プログレスバーを作る
[15] 文字列操作
[16-1] コマンドラインを用いたデータ入力(ARGV)
[16-2] コマンドラインを用いたファイル出力
[16-3] STDERRとSTDIN・プログラムの強制終了
[17] 正規表現で文字列を分割
[17]出席課題
グループのメンバー、チーム名、役割分担、作成するプログラムの案について報告する。グループの他のメンバーにお任せにしていないことを確認するため、グループの代表者のみではなく、全員が提出する。
提出要領は下記の通り。
- 提出先:課題提出用メールアドレス
- メールのSubject:attend10
- 提出期限:授業終了時まで
Tips:emacsでの日本語入力のオンオフはCtrl-oです
Tips:Mewによるメールの送り方はMewコマンドを参照