Method を使って分担しよう

分担しながら壮大なプログラムを完成させたいとき、 仕事内容の分割は次のように行う。

  1. プログラムの部分を分割し、何を変数とするか決定する。
  2. 2 番目以降のパートの人は、適当な値を変数に代入しておき、どんどん進め ておく。
  3. それぞれについて個人個人で書く。

    両方でうまくいったら合わせる。

    作成方法の工夫

    いちばんやりやすいのは、method を使う方法。

    
    def jusco(food, life)
      :
    end
    
    bread = gets.chomp
    happy = gets.chomp
    
    jusco(bread, happy)
    

    2 番目の学生は

    
    def rubio(food, life)
      :
    end
    
    bread = 1      # 仮に決めておく
    happy = 1      # 仮に決めておく
    
    rubio(bread, happy)
    

    として def -- end の中を完成させる。3 番目の学生は

    
    def yone(food, life)
      :
    end
    
    bread = 1      # 仮に決めておく
    happy = 1      # 仮に決めておく
    
    rubio(bread, happy)
    

    として def -- end の中を完成させる。 最後に def 文を上にまとめればよい。

    CGI で作るのもよいが、動かすのに時間がかかるので、 まずは Ruby 言語で書き、そのあと CGI に変更するようにしよう。

    自由課題準備

    今期の課題について、条件は以下のとおりである。

    • 遵守事項
      • 全ての画像は自作する(自分たちで撮影した写真は OK)。
      • どちらか片方は Method (def -- end) を含めること。
      • どちらか片方は Hash を含めること。
      • プレゼンテーションでは、 プレゼンテーションツールに付随したアニメーション機能は使わない。 本番で動かないことが多い。
      • おみくじ、じゃんけん、占い など基本が random あるいは if 文のみを使用するプログラムで、 どこかから資料を持って来ておしまいのプログラムは 禁止
    • 工夫を希望する点
      • 前期同様どちらか片方は実用プログラムがのぞましい。
      • 画像を多用して、自作静止画や自作アニメーションを使うことが望ましい。
      • ダウンロードするときには tar.gz 形式が望ましい。 (わからない場合は全てのファイルが出来上がってから質問すること)

    おすすめの手順

    前期で示したように粛々と進めていけばよい。

    1. テーマ 2 本決定。プロジェクトでグループを半分に分ける。
    2. まずはプロジェクトで必要なデータファイル、画像などを全て準備する。
    3. プログラムを作成し、データや画像を使って表示させるまでにする。
    4. プロジェクトホームページを作成する。
    5. プレゼンテーションツールでプレゼン原稿を作成する。
    6. プロジェクトに関して互いに実際にプレゼンテーションを行い、 どちらをメインにするか決定する。その際、 互いのいいところをうまく取りこんで、改良する。
    7. メインにするほうは拡張を行い、 サブの人にも画像作成などを手伝ってもらって、第 2 版を出す。
    8. 本番用のプレゼンテーション原稿を作成する。

    ひとりよがりで作ったものは、本番で酷評される可能性が高いので、 みんなに見せて感想を聞き、直すべきところは直そう。

    君たちの実力で作れるプログラム

    実力が伯仲している。各自がかなり工夫しないと、 発表時の印象が薄れてしまうので、濃い作品を作ろう。

    • るびおっちに画像をつけた生き物を育てるゲーム (お座りやお手などを display コマンドと pkill display コマンドを組み合わせて作る)
      「Nintendogs」のようなもの
    • 個人情報を入力すると、年賀はがき(や暑中見舞い)が作成できるプログラム
      「オンライン年賀ハガキ作成ソフト」
    • 出発地と行先とを入力すると、乗車券と特急券を作成するプログラム
      「乗車券券売機」
    • だるま落としゲーム
    • 文字コード (や認証やデジタル署名などに使われるハッシュ関数 MD5) を使ったカードゲーム(ヒント)
      「ムシキング」や「遊戯王」、「脳内メーカ」の類
    • ニュース投票システム (意見ごとにグラフを作成するなど)
    • 通信販売のユーザーズボイスコーナー
    • 見た映画の意見を集計し、感想はリンクでたどって読む映画サイト
    • 大手ファーストフードのマニュアルどおりに動くロボット
    • コンビニレジのロボット (売上げを記録し、在庫と照らし合わせ、発注も行う)
    • 授業アンケートプログラム (集計も行う)

    先輩の作品と同じ傾向のものは避ける

    ばらばらのプログラムを 1 つのプログラムに組み立てる

    ばらばらのプログラムを Method に変更し、 1 つのプログラムにすることができる。

    同じ directory に def -- end ではさんだプログラム を作成しておく。

    
    % ls -l
    esmall.rb    jusco.rb    sakata.rb    rubio.rb    
    

    それぞれのプログラムでは

    
    def food(x)
      x * 10     # 食べ物をもらった量を 10 倍にして返す
    end
    

    などと書いておく。代表者のプログラム esmall.rb では残りのプログラムを呼び出す設定を行う。

    
    require 'rubio'
    require 'jusco'
    require 'sakata'
    
    # 物語 
      :
    food(gramme)          # 何グラムの食べ物を食べたか
      :  
    

    呼び出し設定をすると、他の人の関数を呼び出すことができる。

    後期プログラムで含めなければならない技術的内容について

    各プロジェクトには後期の内容を含める。

    • Method
    • Hash または CGI

    来週以降に作るような全体はこのような感じである。

    デモ版の作成

    RPG などで長大なプログラムを作成した場合など、 「おいしいとこどり」の短いバージョンを作るとよいことがある。

    「続きはホームページからダウンロードして」 という広告手法を使うチームが多いが、 人気が高いチームの傾向は、 「お試し版」を発表するのではなく、 「おいしいとこどり」の作品プロジェクトを発表に使用するチームである。

    デモ版作成に際し、 できればプロジェクト内の、 プログラムを担当していなかった方が担当するとよい。 顧客にはどこに一番注目してほしいか、よく相談しあって作ること。

    データベースを読みこんで結果を発表するプロジェクトも お試し版用のデモ版を作成するが、 実際の発表では、長大なプログラムそのものの方がよい。 発表までにデータベース数を増やしたり機能を強化させ、 機能の紹介項目をできるだけ増やしておくと、 人気が出る。

    広告の手法はいろいろあるので、工夫しておこう。