初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦...

72
初初初初初初初初初初初初 初初初初初初初初初初初初初初初初初初 ~~ 初初初初初初 初初初初初初初初初初初初初 初初初初 Summer Science Camp 2014 Aug. 21-23 初初初初初初 初初初初初初初初初初初初初

Upload: rajah-stone

Post on 03-Jan-2016

50 views

Category:

Documents


0 download

DESCRIPTION

Summer Science Camp 2014 Aug. 21-23 東京 工科 大学 コンピュータサイエンス 学部. 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~. 東京工科大学 コンピュータサイエンス学部 亀田弘之. スケジュール( 1 日目 ). 14:00-14:20  スケジュール確認、自己紹介 、          開始 時アンケート等 14:20-14:30  課題ゲーム Greeps の紹介 14:30-16:00 Greenfoot の 体験 ・開発 環境操作法とプログラミングの 基礎 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

初めてのソフトウェア開発体験~オブジェクト指向でゲーム開発に挑

戦~東京工科大学

コンピュータサイエンス学部亀田弘之

Summer Science Camp 2014 Aug. 21-23東京工科大学 コンピュータサイエンス学部

Page 2: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

スケジュール( 1 日目)14:00-14:20  スケジュール確認、自己紹介、         開始時アンケート等14:20-14:30  課題ゲーム Greeps の紹介14:30-16:00   Greenfoot の体験 ・開発環境操作法とプログラミングの基礎       ・講義付き演習および相互教え合い

16:00-16:20  チームビルディング16:20-17:00  施設見学 ( 各種デモゲーム体験 )

2

Page 3: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

スケジュール(2日目)9:30-10:00 ソフトウェア工学入門(講義)       (ソフトウェア開発の現状と開発プロ

セスについて) 10:00-10:10 ゲーム大会の説明        (チャレンジ内容の説明・確認)

10:10-12:00 Greenfoot でゲームプログラミング         ( 一部講義・対話形式 )

13:00-16:00   Greeps ゲームの作成(実習)16:00-17:00  ファイナルゲーム大会と        成果発表会

3

Page 4: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

スケジュール(3日目)9:30-10:00 ソフトウェア開発と       プロジェクトマネジメント(講義)10:00-11:00   RPG 型プロジェクトマネジメント        教育システムによる PM体験11:00-12:00  自作ゲームの開発企画書作成         (講義付き演習)

13:00-14:30 ゲーム作りに役立つ関連知識の        紹介(既存のツールなど)14:30-15:00  最終アンケート、表彰式、閉会式

4

Page 5: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

ソフトウェアの現状

5

社 会 基 盤

大規模化 複雑化

安心・安全

変更

高度なソフトウェア

エンジニアが必要

Page 6: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

産業界からの要望

6

Page 7: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

産業界からの要望

7

• 即戦力型 ICT エンジニア• 実用システム開発ができるエンジニア

Page 8: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

高校生のレベル

産業界からの要望

プロジェクトマネジメント

ソフトウェア開発プロセスプログラミング

RP演習システム教材開発

8

大学

Page 9: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

講 義 概 要

 今日からプログラマーへの第一歩を踏み出そう! プログラミング初心者でも OK 。まずは簡単なゲームプログラミングから始めてみよう!

9

Page 10: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

まずは予備知識から

10

焦らずに、まずはゆっく

りと

Page 11: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

第1部

1. ハードウェアとソフトウェア2. ソフトウェア開発とその手順

– ソフトウェアの開発ってどんなことをするの?

3. プログラマーとは4. ゲーム制作に関わる人たち

– 誰がどんなことをするの?

11

Page 12: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

ハードウェアとソフトウェア

12

s(A,C):-n(A,B),vp(B,C).vp(A,C):-v(A,B),np(B,C).np(A,C):-d(A,B),n(B,C).n([tom|T],T).n([cup|T],T).v([broke|T],T).d([the|T],T).

英語の文を解析する人工知能プログラム

Page 13: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

ソフトウェア開発

13

ゲーム、知的情報検索システム、携帯電話システムなどに関するソフトウェアを開発すること。

(注) ソフトウェア開発 ≠ プログラミング

Page 14: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラマー ≠ ソフトウェア開発者

14

Page 15: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

ソフトウェア開発プロセス

15

Page 16: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

ソフトウェア開発プロセス(1)

1. 要求分析2. 設計3. プログラミング4. デバッグ5. テスト6. 運用

⇒ 再び1へ戻る

Page 17: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

ソフトウェア開発プロセス(2)

1. 何(どんなもの)を作ればいいの?2. どう作ればいの?3. 作成作業そのもの(デバッグもやりなが

ら)4. 本当にちゃんとできたのかな?5. 実際に使おう!6. ちょっと変更したいな。

Page 18: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラマーとは

• ソフトウェアの設計図に基づき、ソースコードを作成する人たち

18

Page 19: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

ゲーム作成に関わる人たち

1. ゲームクリエータ2. アーティスト3. レベルデザイナ4. ゲームプログラマ

19

Page 20: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

第2部

1. プログラミングに必要なものとは...2. プログラミング言語とは

20

Page 21: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラミングに必要な知識・技能

• PC の基本的操作( ITリテラシー)• プログラミング言語• プログラム開発ツール

21

Page 22: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラミングに必要な知識・技能

• PC の基本的操作– ウィンドウズの操作方法

• プログラミング言語– Java言語や C言語

• プログラム開発ツール– エディタや統合開発環境ツール

• (ソフトウェア開発プロセス)• (プロジェクトマネジメント)

22

Page 23: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

PC の基本操作は知っているものとしましょう。

23

Page 24: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラミング言語とは

• プログラムを作成するための言語。• プログラムとは、コンピュータに行って

もらいたい仕事(の手順)を書いたもの。

24

Page 25: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

豆知識

25

Page 26: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラミング言語の種類• 手続き型言語• 関数型言語• 論理型言語• オブジェクト指向型言

26

Page 27: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

手続き型言語

• BASIC言語• C言語• Fortran言語• Pascal言語• Cobol言語

27

Page 28: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

関数型言語

• ML• Haskell• Lisp

28

Page 29: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

論理型言語

• Prolog

29

Page 30: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

オブジェクト指向型言語

• Smalltalk• C++• C#• Java• Eiffel

30

プログラミング言語は少なくとも約8000種類あると言われています。

Page 31: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

東京工科大学で学ぶ言語

1. 必須言語– Java

2. 第2言語– C言語

3. その他の言語– C++– Prolog– Php, Ruby など

31

Page 32: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

第3部

• いよいよ本題です!

32

Page 33: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

今日の目標

• 簡単なソフトウェアゲームを作ろう!

33

Page 34: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

今日の内容

• プログラミング基礎の基礎変数、代入、条件文、繰り返し文

• コンピュータの計算モデル• Greenfoot の紹介• ゲーム作成のデモ

34

Page 35: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

行動指針

1. サイエンスキャンプを楽しむ2. お互いに教え合う(他利的に行動する)3. 主体的に行動する

(考える・質問する・教える)

35

(注) 他利的 (altruistic)  利己的(egoistic)

Page 36: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラミングの基礎の基礎

• その前に

36

Page 37: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

コンピュータ= ソフトウェア + ハードウェア

37

プログラム main ( ) { int i, n = 10; double mean = 0; for ( i = 0; i < n; i++) { mean += I; } mean = means / n; printf(“mean=%lf”, mean); }

Page 38: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

コンピュータの基本構成要素

1. 入力装置2. 出力装置3. CPU (中央演算装置)4. 記憶装置5. 制御装置

38

コンピュータの基本構成図(出典) http://www.infonet.co.jp/ueyama/ip/ concept/composition.html

Page 39: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

• ハードウェア– メモリ

• 箱(複数個)• 作業台(1つ)

– 作業者 (CPU+ 制御 + バス )

39

Page 40: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラミング入門

• (各自図書あるいは Web で勉強してください。1つの言語をしっかりと学ぶことから始めてください。英語の勉強,古典(日本語)の勉強など,自分の過去の経験も活用してください。

  学び方を学ぶためにも,知っている学び方を応用してみよう!)

40

Page 41: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

本サイエンスキャンプでのキーワード

• 変数• 代入• 条件文• 繰り返し

41

この用語の意味と実際の書き方を学ぶことで

ブログラムは記述できるよ。

今回は,この2つが最も大切

Page 42: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

1~5までの和を求めるプログラムの例( C言語)

main( ) { int A  = 0; int k = 0; for( k = 1; k <=5; k++ ){ A = A + k; } printf(“1+2+3+4+5 = %d\n”, A );}

42

Page 43: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

第3部後半

• 簡単なゲームを作ってみましょう!

43

Page 44: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

まとめ

• ソフトウェアの重要性• 実践的エンジニアが求められている

• プログラマ ≠ ソフトウェアエンジニア

• コンピュータの基本構成要素• コンピュータのモデル• 変数・代入・条件文・繰り返し文• Greenfoot

44

Page 45: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

学びの方法は, PBL で

• 今回のサイエンスキャンプでは, PBL 形式で行います。

45

Page 46: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

目的達成のための方法論

• Virtual Company (VC) を立ち上げ、体験的かつ主体的に実践的な知識・スキルを身につけよう!

PBL(Problem Based Learning) による主体的学びで実践力を培う

Page 47: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

PBL とは…

• Project Based Learning のこと

• 従来の勉強方法–座学– 演習– 実習・実験

Page 48: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

従来の勉強方法

1. 座学  先生の話をみんなが聴いて、ノートにメモを取ったりしながら学ぶ。途中で質疑討論することもある。

2. 演習  座学で教わったものを練習問題を解くことで確認する学習形態。例えば、 Java のfor 文を座学で教わったら、 for 文を使う練習問題を解いてみるなど。

3. 実習・実験 事前に用意されたテキストなどに従って、体験的に学ぶ。座学で教わったものの応用練習などが目的。 

Page 49: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

これからの学び  PBL

• 手引書のない実習・実験に相当。より実践的な状況での主体的な学び。

• 例えば、座学で電気回路を学んだとする。その後、電気回路の問題集を解くのは演習授業。どのような知識を使って解けばいいのか分かっている。

• 一方、 PBL では 「いまここに電機系が故障しているトースタがある。

  原因を追求し、使えるようにしなさい。」となる。電気関係の知識を使えばいいのだろうが、どの知識をつかえばいいのかは自分で考える。必要ならば役に立ちそうな新しい知識を自分で学ぶ。

Page 50: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

PBL の実施方法

1. グループに分かれる2. Vurtual (VC) を立ち上げる。

Page 51: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

チームシート

• 会社名• 業務内容・規模• チーム構成• 提案先• 課題• チームの目的・行動指針• 活動に関しての留意点

Page 52: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

52

Page 53: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

The 2nd Day

53

Page 54: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

これからの作業内容

1. ゲーム制作– ゲームプランニング– 企画書作成– (要件定義)– 設計(外部設計など)– コーディング– 試験(テスト)– プレゼンテーション

54

Page 55: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

企画書作成1. 提案先が抱えている問題・利用者の不満2. 経営課題を解決するための方法3. システム化の範囲4. 機能概要・前提条件・制約条件5. 情報の流れ6. 想定する利用者7. システムのハードウェア・ソフトウェア構成

8. システム化にかかる費用とそれによる効果

9. 提案システムのアピールポイント

55

Page 56: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

企画書

1. ゲームコンセプト(ゲームの概要)– タイトル– ジャンル– 想定される利用者– 面白さの根拠

2. システム化にかかる費用と効果3. アピールポイント(何が凄い?)

56

Page 57: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

費用対効果

1. 必要なハードウェア2. 既存のソフトウェア3. ソフトウェア開発費

– 人件費など4. 維持管理費(開発費用の約 10% )5. 売上予想6. 総合的な費用対効果

57

Page 58: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

大事なこと

• ホウレンソウ– 報告(ほうこく)– 連絡(れんらく)– 相談(そうだん)

• ほんの少しの勇気と思いやり

Page 59: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

まとめ• ソフトウェア開発には手順(工程)があ

る。– すぐプログラミングをはじめるのは間違い!

(なぜ? その理由を考えてみなさい。)• 要求分析に基づき企画書(システム提案

書)を作成する。– 企画書が没になると開発できない!

(企画書には何をどのように書くべきか? それはなぜか?)

• 企画が通ったら外部設計、内部設計を行い、それに基づきコーディングをする。 59

Page 60: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

進んだアドバイス

• ソフトウェア開発の現場では,学術的な意味での“正解”は存在しません。関係当事者間の“合意”があるだけです。

• 詳しくは,ソフトウェア工学やソフトウェア開発論などを将来勉強してください。

60

Page 61: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

The 3rd Day

61

Page 62: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プレゼンテーション

• 表紙:ゲームタイトルとチーム名・メンバー名

• 内容:– ジャンル–利用者–面白さ–苦労した点・工夫したところ– アピールポイント など

62

各グループ 5分程度

Page 63: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

総合的まとめ

63

Page 64: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラム名

• ゲームソフトウェア創りを楽しもう~体験的ソフトウェア開発入門~

64

Page 65: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラムの概要

• プログラミング導入教育のために開発された Greenfoot という開発環境を用い、ソフトウェア開発を実際に体験します。まず、プログラム開発環境の操作方法とそれを利用した Java言語による簡単なプログラミングに慣れる。その後、少人数からなるゲーム開発会社を仮想的に設立し、ゲームソフトウェアの開発(提案・設計・実装・プレゼンテーション)をグループで実際に行います。

65

Page 66: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

プログラムの概要(続き)

• P B L(Project-Based Learning) という手法に基づき指導しますので、作成するゲームは各グループが自由に決定するなど、参加者の主体性を重視します。なお、プログラミングに関する知識等はていねいに説明しますので、プログラミング初心者とともにプログラミング経験者も歓迎です。

66

Page 67: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

何をやってきたか• 知る

– プログラミングとはどのようなものかまずは体験することが大切!

–新しいプログラミング開発環境(学習環境 , Greenfoot )使って慣れることが大切!

–新しいプログラミング学習法 (ClassFirst)–新しいソフトウェア開発学習法

( PBL;   Project-Based Learning )– ソフトウェア開発とはどのようなことをする

のか67

Page 68: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

• 知る(自分自身)– 自分の知識・技能(スキル)

自分の特技・長所の確認(気付き)自分の足りない点・短所の確認(気付き)

68

Page 69: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

今後どうするのか

• 学びたいこと、自分のすすむべき道を明確に定める

• 自分の長所を知る(気付く)–長所は徹底的に伸ばす個性の確立

• 自分の短所(足りない点)を知る(気付く)–不足部分は人並みに「飽きず・焦らず・諦めず」の精神で

69

Page 70: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

キーワード• プログラミング• ソフトウェア開発• ソフトウェア開発工程(段取り)

(作るものを明確に定義してから実現する)

• ゲームコンセプトの提案、企画書作成、プログラミング、テスト、納品

• Java言語、クラス、インスタンス(オブジェクト)

• オブジェクト指向分析・設計• クラス図( UML図)• プロジェクトマネジメント( PM)

70

Page 71: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

最後に

 本資料は,サイエンスキャンプにおいて直接お見せしていないものも入っておりますが,高校生のみ何にお役に立つことを願って削除しませんでした。ご了承ください。

71

平成 26年 8月 25 日(月)東京工科大学コンピュータサイエンス学部亀田弘之  ([email protected])

Page 72: 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~

おわりに

• 3日間ご苦労様でした。今回の経験をこれからの人生に役立ててください。どうもありがとうございました。

72