roy > naoya > 基礎プログラミングI·情報検索 > (11)楽しいプログラムを作ろう

(11) 06/28の授業内容:楽しいプログラムを作ろう

[1] 自由製作課題について

前期の授業も終盤に入り、4月当初では想像できないような難しいプログラムを書くことができるようになった。最後に、これまで学んだことを踏まえて自由に題材を選んでプログラムを作成してみよう。一人では負担が大きいので5名程度のグループを作り、アイデアを出し合いながら分担して作業を進めよう。

作成するもの

  1. プログラム(大きなもの1つ・もしくは中程度のもの2つ)
  2. Webページ(プログラムの説明書やプログラム本体を掲載)
  3. プレゼンテーションファイル(発表時に使用)

自由課題のグループ(2限)

これまでに獲得をした得点に基づき、各グループの戦力が同じになるように調整しています。

1234
c106060 川口徹 c106174 三浦剛介 c109009 五十嵐聡美 c109022 伊藤瑞希 c109047 嘉村爽太 c109054 菊地美香 c109096 庄司京平 c109099 菅原拓哉 c109003 阿部美由紀 c109069 齋藤沙友希 c109072 齋藤和 c109110 高橋千鶴 c109131 船越大輝 c109135 本間光之 c109138 松田悠平 c109153 阿部祐輔 c107021 伊藤大 c109012 五十嵐隼人 c109019 石山あゆみ c109060 黒木康平 c109086 佐藤和貴 c109104 鈴木美貴 c109140 三浦拓己 c109143 村井しおり c108202 津島千佳 c109028 遠藤太朗 c109031 大江裕輔 c109057 工藤哲仁 c109059 熊谷望 c109089 佐藤峻 c109100 鈴木愛里 c109148 山科雄介
567
c108186 三浦優士 c109036 小川健太 c109050 神尾勇健 c109051 菊地浩平 c109083 佐藤綾香 c109127 林貴広 c109129 原田美乃 c109145 森田咲季 c108200 後友子 c108201 金内恭子 c109008 飯田達也 c109010 五十嵐千尋 c109038 小川仁志 c109041 小澤諒 c109052 菊池桑 c109005 阿部優人 c109034 太田開 c109061 黒澤江莉奈 c109071 齋藤尚実 c109107 大門卓矢 c109115 田中愛 c109136 松坂佳美

題材設定

グループ課題は諸君の実力を公(おおやけ)にアピールできるよう公開しやすい題材を選ぶ形式とする。以下の各部門から好きなものを選んで課題作成する。

  • 地域活性部門

    何か地域を盛り上げる助けになるもの

  • 福祉部門

    不自由を克服する人を支援するものなど

  • 役立ち情報部門

    知りたい人にとってしっかり役立つ情報を提供するもの

  • シミュレーション部門

    実世界でのできごとを計算機上で仮想的に実験するもの

  • 教育部門

    何かを学習する人の強力な助けになるもの

  • ビジュアル部門

    効果的な視覚情報を多数用意した凝った作りのもの

  • エンターテイメント部門

    大人から子供まで幅広く楽しめるもの

他チームの作品を評価するときに、その作品がエントリした部門のテーマに則しているかも大きく加味する。

過去の自由製作課題

参考までに過去の自由製作課題の例を示す。

[2] 今後の予定

  • 6月29日
    • 楽しいプログラムを作るためのテクニック
    • 自由課題グループ分け
    • グループ名の決定
    • 役割分担の決定
    • 作成するプログラム案を考える
  • 7月6日
    • trr
    • 作成するプログラムの決定
    • Webページの構成の決定
    • プログラムおよびWebページの作成を開始
  • 7月13日
    • プログラムの完成
    • Webページの完成
    • 発表方法の検討
    • 発表練習
  • 7月16日
    • 自由課題発表会

[3] 役割分担について

役割分担を決め、何をいつまでにやるのか相談しよう。役割としては例えば以下があげられる。準備期間の役割、当日の役割いずれも分担し、何もすることがない人が出てこないようにしよう。

授業以外の時間に集まって作業を行う可能性もあるため、連絡が取り合えるようにしておこう。後で、連絡が取れなくなって困ることがないようにしておくこと。

準備期間の役割(例)

  • プログラム作成
  • プログラムデータ作成(クイズなどの場合)
  • プログラムシナリオ作成(シミュレーションゲームなどの場合)
  • Webページ作成
  • 素材(Webページ・プログラム)作成(GIMP)
  • プレゼンテーションファイル作成
  • 発表シナリオ作成

当日の役割(例)

  • 発表役
  • タイムキーパー
  • コンピュータ操作役

[4] 作成するプログラムの例

例えば以下のようなプログラムが考えられる。面白いものや実用的なものを作ってみよう。

  • 4択クイズ
  • ロールプレイングゲーム
  • 30秒あてゲーム
  • 対戦型ゲーム
  • 一番安い送料を調べるプログラム
  • 占い
  • 心理テスト

ただし、占いや心理テストはいい加減に作ってしまうと面白みが薄れる一方、診断の根拠を何らかの資料に求めると著作権の問題が発生してしまう。また、構造も単純なため、半年間学んだ集大成のプログラムとしては達成感に欠ける。あくまでも最終手段と考えておこう。

なお、最終的に公開することを考え、以下の点に留意しよう。

  • 操作方法をわかりやすくする:ユーザ≠プログラム作成者であるため、初めて実行した人でも操作方法がわかりやすいことが望ましい。例えば、実行直後にprint"好きな数字を入力してください\n"とすると、何をするプログラムであるのか、何のために数字を入力しなければならないのかがわからない。ただし、余りにも細かく説明しすぎると、読むのが煩わしくなってしまう。プログラム作成担当でないグループ内の他のメンバに意見を求めると良い。
  • プログラムの構造をわかりやすくする:どこでどのような処理をしているのかについてコメントを残しておくと良い。複数人で協力して作成する場合、他人が書いたプログラムを理解するためには時間がかかることがある。また、よく出来たプログラムの場合、次年度以降の自由課題作成において参考にされる可能性もある。せっかく作ったプログラムであるため、将来的に活用してもらえるよう、構造をわかりやすくしておこう。
  • 協力して作成する:例えばクイズを作る場合、一人で問題を考えると20問程度が限界かもしれない。しかし、全員で考えれば100問以上の問題を作ることも出来る。毎回同じ問題が同じ順番で出題されるプログラムは1〜2回しか実行してもらえないが、プールした100問の問題からランダムに10問出題するようなプログラムであれば、何度でも楽しむことができる。せっかく作るのであるから、多くの人に繰り返し実行してもらえるようなものを作ろう。
  • 技術レベルの高いプログラムを作成する:これまで学んできたことを活かし、技術的にもレベルの高いものを作成しよう。例えば、恋愛シミュレーションゲームを作る場合、プログラム自体はif文だけで書けてしまうので、後述するポップアップ画像の表示やプログレスバーなどを組み込んで見ると良い。

[5] Webページの構成

作成したプログラムを実施してもらうためには、わかりやすい説明や楽しそうなページ作りが求められる。以下の項目を含めよう(それぞれ別ページにしても良いし、1ページにまとめて書いても良い)。

参考として、架空の自由課題のページを示す。

  • メンバー紹介:メンバーの名前や役割分担。各自のページ(1年生のときに作成したもの)へのハイパーリンク
  • 説明:プログラム名やプログラムの概要、保存方法、実行方法、遊び方、著作権の表記など
  • プログラム:プログラム自体も~/public_html/におき、ダウンロードできるようにする

プログラム名・プログラムの概要

何をするプログラムだかわからないままに実行する人はいない。何ができるのかというのはまさにプログラムの売りになる点である。ゲームであれば難易度が数段階に分かれていることが売りになるかもしれないし、実用的なプログラムでは細かな設定ができる点が売りになるかもしれない。淡々と機能を説明するのが良いのか楽しさを前面に出すのが良いのかは、作成するプログラムによって変わってくる。実際にプログラムを公開しているページを確認し、参考にしてみよう。

保存方法・実行方法

これまで、この授業を受けてきた人であれば詳しく説明しなくてもわかるため、これらは不要と感じるかもしれない。しかし、Webページにプログラムを掲載するということは、(学内のみに制限されているが)誰でも自由に閲覧することができる。プログラムを実行したことのない1年生が、2年生になるとどのようなプログラムを作ることが出来るのかを確認しているかもしれない。こうした点を踏まえ、誰でも保存して実行できるよう詳しく説明しておこう。

遊び方

実行しても、どのように操作をすればよいのかわからないプログラムでは、積極的に使ってみようとは思ってもらえない。プログラムを作成する際にprintメソッドなどで説明を盛り込むことも重要であるが、「遊び方」(取扱説明書)のページを作ることも考えるべきである。プログラム内に表示されるメッセージはその時しか見ることが出来ないが、Webページに記載しておけば、実行しながら随時確認することができる。懇切丁寧な説明は不要だが、最低限知っておいて欲しいことを書いておくとよい。

著作権

プログラムの著作権は作成者に帰属する。プログラムをダウンロードした人は著作権を取得できるわけではない。著作権を保有する作成者は、作成したプログラムについて改変(内容を書き換えること)や再配布(ダウンロードしたプログラムを第三者に配布すること)の可否、免責事項(このプログラムを使用して生じたいかなる損害に対しても作成者は責任を負わないというようなこと)などを定めることができる。現在では、OpenOfficeやFirefoxなど、プログラムのソースを公開し、誰でも改変、再配布が認められたオープンソースが普及してきている。今回作成するプログラムも営利を目的としたものではないため、改変や再配布など厳しく制限しないようにしよう。

ページのデザイン

背景と文字色のコントラストを考え読みづらくならないようにすること、文字を小さくしすぎないようにすること、重要な点を強調することなどに加えてページのデザインにもこだわってみよう。野暮ったいページであれば、読んでみようと思わないかもしれない。プログラムの中味だけでなく、Webページの見栄えでも勝負しよう。

適切な色の組み合わせ。白背景に黒文字が最も読みやすい

[6] プレゼンテーションファイルの構成

14回目の授業では、作成したプログラムの発表会を行う。プレゼンテーションを上手に行うことは、出来栄えの良いプログラムを作るのと同じくらい重要である。いくら素晴らしいものが出来上がっていても、聞くに堪えない発表であれば、聞き手は話を聞かずに他のことを始めてしまうだろう。発表時間は10分間とするが、聞き手の10分間を無駄にすることがないよう時間を有効に活用しよう。

そのためには、行き当たりばったりで発表するのではなく、発表の流れを決めておく必要がある。また、単に口頭で発表するだけでは重要なところがわかりづらいし、音声情報は時間的に保存ができないので、聞き手がWebページに注意を向けた際に聞き逃してしまう可能性がある。プレゼンテーションソフトでスライドを作成しておくと、発表者は重要な点を言い忘れることなく発表することができ、聞き手は聞き逃してもスライドを確認して内容を把握することができる。

以下が発表内容になるだろうが、これらの項目の順番や内容は各グループで自由に決めてよい。社会に出れば大学卒の皆さんはプレゼンテーションをできることが当然だと思われる。「もう少ししっかり準備していればよかった」とならないよう、この機会を有効に活用しよう。

  • チーム名の由来
  • メンバー紹介
  • プログラムの概要
  • プログラム作成理由
  • 使い方・遊び方
  • セールスポイント

[7] 乱数の発生(rand)

>>More

[8] 少し間を空ける(sleep)

>>More

[9] 時刻を取得する(Time.now)

>>More

[10] 大きな文字を出す(systemを用いたbannerコマンド)

>>More

[11] ポップアップで画像を表示(systemを用いたdisplayコマンド)

>>More

[12] 文字色変更・画面操作(\e[Xm)

>>More

[13] 配列に関するTips

>>More

[14] プログレスバーを作る

>>More

[15] 文字列操作

>>More

[16] 出席課題

決定したグループのメンバー、グループ名、役割分担、プログラムの案など決まったところまで報告する。

授業終了時までに提出。出席点は2点。提出要領は下記の通り。

  • 提出先:課題提出用メールアドレス
  • メールのSubject:ruby11
  • 本文の構成:1行目で学籍番号、氏名を記載する。2行目以降でメンバーの学籍番号と氏名を記載する。