Download - 初めてのソフトウェア開発 体験 ~ オブジェクト指向でゲーム開発に挑戦 ~
初めてのソフトウェア開発体験~オブジェクト指向でゲーム開発に挑
戦~東京工科大学
コンピュータサイエンス学部亀田弘之
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
産業界からの要望
7
• 即戦力型 ICT エンジニア• 実用システム開発ができるエンジニア
高校生のレベル
産業界からの要望
プロジェクトマネジメント
ソフトウェア開発プロセスプログラミング
RP演習システム教材開発
8
大学
講 義 概 要
今日からプログラマーへの第一歩を踏み出そう! プログラミング初心者でも OK 。まずは簡単なゲームプログラミングから始めてみよう!
9
まずは予備知識から
10
焦らずに、まずはゆっく
りと
第1部
1. ハードウェアとソフトウェア2. ソフトウェア開発とその手順
– ソフトウェアの開発ってどんなことをするの?
3. プログラマーとは4. ゲーム制作に関わる人たち
– 誰がどんなことをするの?
11
ハードウェアとソフトウェア
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).
英語の文を解析する人工知能プログラム
ソフトウェア開発
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
30
プログラミング言語は少なくとも約8000種類あると言われています。
東京工科大学で学ぶ言語
1. 必須言語– Java
2. 第2言語– C言語
3. その他の言語– C++– Prolog– Php, Ruby など
31
第3部
• いよいよ本題です!
32
今日の目標
• 簡単なソフトウェアゲームを作ろう!
33
今日の内容
• プログラミング基礎の基礎変数、代入、条件文、繰り返し文
• コンピュータの計算モデル• Greenfoot の紹介• ゲーム作成のデモ
34
行動指針
1. サイエンスキャンプを楽しむ2. お互いに教え合う(他利的に行動する)3. 主体的に行動する
(考える・質問する・教える)
35
(注) 他利的 (altruistic) 利己的(egoistic)
プログラミングの基礎の基礎
• その前に
36
コンピュータ= ソフトウェア + ハードウェア
37
プログラム main ( ) { int i, n = 10; double mean = 0; for ( i = 0; i < n; i++) { mean += I; } mean = means / n; printf(“mean=%lf”, mean); }
コンピュータの基本構成要素
1. 入力装置2. 出力装置3. CPU (中央演算装置)4. 記憶装置5. 制御装置
38
コンピュータの基本構成図(出典) http://www.infonet.co.jp/ueyama/ip/ concept/composition.html
• ハードウェア– メモリ
• 箱(複数個)• 作業台(1つ)
– 作業者 (CPU+ 制御 + バス )
39
プログラミング入門
• (各自図書あるいは Web で勉強してください。1つの言語をしっかりと学ぶことから始めてください。英語の勉強,古典(日本語)の勉強など,自分の過去の経験も活用してください。
学び方を学ぶためにも,知っている学び方を応用してみよう!)
40
本サイエンスキャンプでのキーワード
• 変数• 代入• 条件文• 繰り返し
文
41
この用語の意味と実際の書き方を学ぶことで
ブログラムは記述できるよ。
今回は,この2つが最も大切
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 2nd 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 3rd Day
61
プレゼンテーション
• 表紙:ゲームタイトルとチーム名・メンバー名
• 内容:– ジャンル–利用者–面白さ–苦労した点・工夫したところ– アピールポイント など
62
各グループ 5分程度
総合的まとめ
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
最後に
本資料は,サイエンスキャンプにおいて直接お見せしていないものも入っておりますが,高校生のみ何にお役に立つことを願って削除しませんでした。ご了承ください。
71
平成 26年 8月 25 日(月)東京工科大学コンピュータサイエンス学部亀田弘之 ([email protected])
おわりに
• 3日間ご苦労様でした。今回の経験をこれからの人生に役立ててください。どうもありがとうございました。
72