講義用パワーポイント

Download Report

Transcript 講義用パワーポイント

Summer Science Camp 2014 Aug. 21-23
東京工科大学 コンピュータサイエンス学部
初めてのソフトウェア開発体験
~オブジェクト指向でゲーム開発に挑戦~
東京工科大学
コンピュータサイエンス学部
亀田弘之
スケジュール(1日目)
14:00-14:20 スケジュール確認、自己紹介、
開始時アンケート等
14:20-14:30 課題ゲームGreepsの紹介
14:30-16:00 Greenfootの体験
・開発環境操作法とプログラミングの基礎
・講義付き演習および相互教え合い
16:00-16:20 チームビルディング
16:20-17:00 施設見学(各種デモゲーム体験)
2
スケジュール(2日目)
9:30-10:00 ソフトウェア工学入門(講義)
(ソフトウェア開発の現状と開発プロセスについて)
10:00-10:10 ゲーム大会の説明
(チャレンジ内容の説明・確認)
10:10-12:00 Greenfootでゲームプログラミング
(一部講義・対話形式)
13:00-16:00 Greepsゲームの作成(実習)
16:00-17:00 ファイナルゲーム大会と
成果発表会
3
スケジュール(3日目)
9:30-10:00 ソフトウェア開発と
プロジェクトマネジメント(講義)
10:00-11:00 RPG型プロジェクトマネジメント
教育システムによるPM体験
11:00-12:00 自作ゲームの開発企画書作成
(講義付き演習)
13:00-14:30 ゲーム作りに役立つ関連知識の
紹介(既存のツールなど)
14:30-15:00 最終アンケート、表彰式、閉会式
4
ソフトウェアの現状
社会基盤
大規模化
複雑化
安心・安全
変更
高度なソフトウェア
エンジニアが必要
5
産業界からの要望
6
産業界からの要望
•即戦力型ICTエンジニア
•実用システム開発ができるエンジニア
7
産業界からの要望
大学
プロジェクトマネジメント
ソフトウェア開発プロセス
プログラミング
RP演習
システム
教材開発
高校生のレベル
8
講義概要
今日からプログラマーへの第一歩
を踏み出そう! プログラミング初
心者でもOK。まずは簡単なゲーム
プログラミングから始めてみよう!
9
まずは予備知識から
焦らずに、
まずはゆっくりと
10
第1部
1. ハードウェアとソフトウェア
2. ソフトウェア開発とその手順
– ソフトウェアの開発ってどんなことをするの?
3. プログラマーとは
4. ゲーム制作に関わる人たち
– 誰がどんなことをするの?
11
ハードウェアとソフトウェア
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).
英語の文を解析する
人工知能プログラム
12
ソフトウェア開発
ゲーム、知的情報検索システム、
携帯電話システムなどに関する
ソフトウェアを開発すること。
(注) ソフトウェア開発 ≠ プログラミング
13
プログラマー
≠
ソフトウェア開発者
14
ソフトウェア開発プロセス
15
ソフトウェア開発プロセス(1)
1.
2.
3.
4.
5.
6.
要求分析
設計
プログラミング
デバッグ
テスト
運用
⇒再び1へ戻る
ソフトウェア開発プロセス(2)
1.
2.
3.
4.
5.
6.
何(どんなもの)を作ればいいの?
どう作ればいの?
作成作業そのもの(デバッグもやりながら)
本当にちゃんとできたのかな?
実際に使おう!
ちょっと変更したいな。
プログラマーとは
• ソフトウェアの設計図に基づき、ソースコード
を作成する人たち
18
ゲーム作成に関わる人たち
1.
2.
3.
4.
ゲームクリエータ
アーティスト
レベルデザイナ
ゲームプログラマ
19
第2部
1. プログラミングに必要なものとは...
2. プログラミング言語とは
20
プログラミングに必要な知識・技能
• PCの基本的操作(ITリテラシー)
• プログラミング言語
• プログラム開発ツール
21
プログラミングに必要な知識・技能
• PCの基本的操作
– ウィンドウズの操作方法
• プログラミング言語
– Java言語やC言語
• プログラム開発ツール
– エディタや統合開発環境ツール
• (ソフトウェア開発プロセス)
• (プロジェクトマネジメント)
22
PCの基本操作は
知っているものとしましょう。
23
プログラミング言語とは
• プログラムを作成するための言語。
• プログラムとは、コンピュータに行ってもらい
たい仕事(の手順)を書いたもの。
24
豆知識
25
プログラミング言語の種類
•
•
•
•
手続き型言語
関数型言語
論理型言語
オブジェクト指向型言語
26
手続き型言語
•
•
•
•
•
BASIC言語
C言語
Fortran言語
Pascal言語
Cobol言語
27
関数型言語
• ML
• Haskell
• Lisp
28
論理型言語
• Prolog
29
オブジェクト指向型言語
•
•
•
•
•
Smalltalk
C++
C#
Java
Eiffel
プログラミング言語は少なくとも
約8000種類あると言われています。
30
東京工科大学で学ぶ言語
1. 必須言語
– Java
2. 第2言語
– C言語
3. その他の言語
– C++
– Prolog
– Php, Ruby など
31
第3部
• いよいよ本題です!
32
今日の目標
• 簡単なソフトウェアゲームを作ろう!
33
今日の内容
• プログラミング基礎の基礎
変数、代入、条件文、繰り返し文
• コンピュータの計算モデル
• Greenfootの紹介
• ゲーム作成のデモ
34
行動指針
1. サイエンスキャンプを楽しむ
2. お互いに教え合う(他利的に行動する)
3. 主体的に行動する
(考える・質問する・教える)
(注) 他利的(altruistic)  利己的(egoistic)
35
プログラミングの基礎の基礎
• その前に
36
コンピュータ
= ソフトウェア + ハードウェア
プログラム
main ( ) {
int i, n = 10; double mean = 0;
for ( i = 0; i < n; i++) {
mean += I;
}
mean = means / n;
printf(“mean=%lf”, mean);
}
37
コンピュータの基本構成要素
1.
2.
3.
4.
5.
入力装置
出力装置
CPU(中央演算装置)
記憶装置
制御装置
コンピュータの基本構成図
(出典) http://www.infonet.co.jp/ueyama/ip/
concept/composition.html
38
• ハードウェア
– メモリ
• 箱(複数個)
• 作業台(1つ)
– 作業者(CPU+制御+バス)
39
プログラミング入門
• (各自図書あるいはWebで勉強してください。
1つの言語をしっかりと学ぶことから始めてく
ださい。英語の勉強,古典(日本語)の勉強な
ど,自分の過去の経験も活用してください。
学び方を学ぶためにも,知っている学び
方を応用してみよう!)
40
本サイエンスキャンプでの
キーワード
•
•
•
•
変数
代入
条件文
繰り返し文
今回は,この2つが最も大切
この用語の意味と実際の
書き方を学ぶことで
ブログラムは記述できるよ。
41
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
第3部後半
• 簡単なゲームを作ってみましょう!
43
まとめ
• ソフトウェアの重要性
• 実践的エンジニアが求められている
• プログラマ
•
•
•
•
≠
ソフトウェアエンジニア
コンピュータの基本構成要素
コンピュータのモデル
変数・代入・条件文・繰り返し文
Greenfoot
44
学びの方法は,PBLで
• 今回のサイエンスキャンプでは,PBL形式で行
います。
45
目的達成のための方法論
• Virtual Company (VC) を立ち上げ、
体験的かつ主体的に
実践的な知識・スキルを身につけよう!
 PBL(Problem Based Learning) による主体的学び
で実践力を培う
PBLとは…
• Project Based Learning のこと
• 従来の勉強方法
– 座学
– 演習
– 実習・実験
従来の勉強方法
1. 座学 先生の話をみんなが聴いて、ノートにメ
モを取ったりしながら学ぶ。途中で質疑討論す
ることもある。
2. 演習 座学で教わったものを練習問題を解く
ことで確認する学習形態。例えば、Javaのfor文
を座学で教わったら、for文を使う練習問題を解
いてみるなど。
3. 実習・実験 事前に用意されたテキストなどに
従って、体験的に学ぶ。座学で教わったものの
応用練習などが目的。
これからの学び PBL
• 手引書のない実習・実験に相当。より実践的な状況で
の主体的な学び。
• 例えば、座学で電気回路を学んだとする。その後、電
気回路の問題集を解くのは演習授業。どのような知識
を使って解けばいいのか分かっている。
• 一方、PBLでは
「いまここに電機系が故障しているトースタがある。
原因を追求し、使えるようにしなさい。」
となる。電気関係の知識を使えばいいのだろうが、ど
の知識をつかえばいいのかは自分で考える。必要な
らば役に立ちそうな新しい知識を自分で学ぶ。
PBLの実施方法
1. グループに分かれる
2. Vurtual (VC)を立ち上げる。
チームシート
•
•
•
•
•
•
•
会社名
業務内容・規模
チーム構成
提案先
課題
チームの目的・行動指針
活動に関しての留意点
52
The
nd
2
Day
53
これからの作業内容
1. ゲーム制作
–
–
–
–
–
–
–
ゲームプランニング
企画書作成
(要件定義)
設計(外部設計など)
コーディング
試験(テスト)
プレゼンテーション
54
企画書作成
1.
2.
3.
4.
5.
6.
7.
8.
9.
提案先が抱えている問題・利用者の不満
経営課題を解決するための方法
システム化の範囲
機能概要・前提条件・制約条件
情報の流れ
想定する利用者
システムのハードウェア・ソフトウェア構成
システム化にかかる費用とそれによる効果
提案システムのアピールポイント
55
企画書
1. ゲームコンセプト(ゲームの概要)
–
–
–
–
タイトル
ジャンル
想定される利用者
面白さの根拠
2. システム化にかかる費用と効果
3. アピールポイント(何が凄い?)
56
費用対効果
1. 必要なハードウェア
2. 既存のソフトウェア
3. ソフトウェア開発費
– 人件費など
4. 維持管理費(開発費用の約10%)
5. 売上予想
6. 総合的な費用対効果
57
大事なこと
• ホウレンソウ
– 報告(ほうこく)
– 連絡(れんらく)
– 相談(そうだん)
• ほんの少しの勇気と思いやり
まとめ
• ソフトウェア開発には手順(工程)がある。
– すぐプログラミングをはじめるのは間違い!
(なぜ? その理由を考えてみなさい。)
• 要求分析に基づき企画書(システム提案書)
を作成する。
– 企画書が没になると開発できない!
(企画書には何をどのように書くべきか? それ
はなぜか?)
• 企画が通ったら外部設計、内部設計を行い、
それに基づきコーディングをする。
59
進んだアドバイス
• ソフトウェア開発の現場では,学術的な意味
での“正解”は存在しません。関係当事者間
の“合意”があるだけです。
• 詳しくは,ソフトウェア工学やソフトウェア開発
論などを将来勉強してください。
60
The
rd
3
Day
61
プレゼンテーション
• 表紙:ゲームタイトルとチーム名・メンバー名
• 内容:
– ジャンル
– 利用者
– 面白さ
– 苦労した点・工夫したところ
– アピールポイント など
各グループ 5分程度
62
総合的まとめ
63
プログラム名
• ゲームソフトウェア創りを楽しもう
~体験的ソフトウェア開発入門~
64
プログラムの概要
• プログラミング導入教育のために開発された
Greenfootという開発環境を用い、ソフトウェア
開発を実際に体験します。まず、プログラム
開発環境の操作方法とそれを利用したJava言
語による簡単なプログラミングに慣れる。その
後、少人数からなるゲーム開発会社を仮想
的に設立し、ゲームソフトウェアの開発(提案
・設計・実装・プレゼンテーション)をグループ
で実際に行います。
65
プログラムの概要(続き)
• P B L(Project-Based Learning)という手法に基
づき指導しますので、作成するゲームは各グ
ループが自由に決定するなど、参加者の主
体性を重視します。なお、プログラミングに関
する知識等はていねいに説明しますので、プ
ログラミング初心者とともにプログラミング経
験者も歓迎です。
66
何をやってきたか
• 知る
– プログラミングとはどのようなものか
まずは体験することが大切!
– 新しいプログラミング開発環境
(学習環境, Greenfoot)
使って慣れることが大切!
– 新しいプログラミング学習法(ClassFirst)
– 新しいソフトウェア開発学習法
(PBL; Project-Based Learning)
– ソフトウェア開発とはどのようなことをするのか
67
• 知る(自分自身)
– 自分の知識・技能(スキル)
自分の特技・長所の確認(気付き)
自分の足りない点・短所の確認(気付き)
68
今後どうするのか
• 学びたいこと、自分のすすむべき道を明確に
定める
• 自分の長所を知る(気付く)
– 長所は徹底的に伸ばす
個性の確立
• 自分の短所(足りない点)を知る(気付く)
– 不足部分は人並みに
「飽きず・焦らず・諦めず」の精神で
69
キーワード
• プログラミング
• ソフトウェア開発
• ソフトウェア開発工程(段取り)
(作るものを明確に定義してから実現する)
• ゲームコンセプトの提案、企画書作成、
プログラミング、テスト、納品
• Java言語、クラス、インスタンス(オブジェクト)
• オブジェクト指向分析・設計
• クラス図(UML図)
• プロジェクトマネジメント(PM)
70
最後に
本資料は,サイエンスキャンプにおいて直接
お見せしていないものも入っておりますが,高
校生のみ何にお役に立つことを願って削除し
ませんでした。ご了承ください。
平成26年8月25日(月)
東京工科大学
コンピュータサイエンス学部
亀田弘之 ([email protected])
71
おわりに
• 3日間ご苦労様でした。今回の経験をこれか
らの人生に役立ててください。
どうもありがとうございました。
72