SlideShare a Scribd company logo
1 of 14
Download to read offline
Copyright(c) ETロボコン実行委員会 All rights reserved.
ETロボコン技術教育1
北海道地区
1
Copyright(c) ETロボコン実行委員会 All rights reserved.
要素技術とモデルを開発に使おう
はじめに(※このスライド)
コードとモデル図を対応づけてみよう
要素技術をシステムに組込もう
倒立振子ライブラリをモデルに組込もう
2
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 今日のトレーニングで伝えたいこと
 ソースコードとモデル図を対応付けて考える
 モデル図を使って検討し、ソースコードを変更する
 ソースコードの分け方を考えるのにモデル図を使う
・・・なぜソースコードを分けるのか?
3
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 なぜソースコード(ソースファイル)を分けるのか
4
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 なぜソースコード(ソースファイル)を分けるのか
 ソースファイルが一つだけだと、どこに何があるか分かりづらい
5
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 なぜソースコード(ソースファイル)を分けるのか
 ソースファイルが一つだけだと、どこに何があるか分かりづらい
 分かれていないと、他の人と手分けして作るのが難しい
・・・どう分けるのがよいか?
6
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 どう分けるのがよいか
7
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 どう分けるのがよいか
 「関数」で分ける
8
× 小さ過ぎて、却って面倒
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 どう分けるのがよいか
 「関数」で分ける
 機能で分ける
9
× 小さ過ぎて、却って面倒
?
違う機能同士で、
同じ処理を行う
ことは多い!
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 どう分けるのがよいか
 「関数」で分ける
 機能で分ける
 役割(機能を実現するもの)で分ける
 まとまりがよい(関連するものが集まっている)
 それぞれの役割が、互いに独立している
 役割の間の責任分担(依頼関係)を分かりやすく
・・・モデル図とは?
10
× 小さ過ぎて、却って面倒
?
違う機能同士で、
同じ処理を行う
ことは多い!
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに
 モデル図とは
 ソースコードの内容を表した「設計図」
 ブロック図、人物相関図
 どんな役割があるか
 役割と役割の繋がり(依頼関係)がどうなっているか
 何を実現するのか(提供する機能)
・・・プログラムを作る時に、ソースコードを分けて考える道具
11
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに(まとめ)
 なぜソースコードを分けるのか
 ソースファイルが一つだけだと、どこに何があるか分かりづらい
 分かれていないと、他の人と手分けして作るのが難しい
 どう分けるのか
 機能を実現するための役割(「責務」)で分ける
12
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに(まとめ)
 なぜソースコードを分けるのか
 ソースファイルが一つだけだと、どこに何があるか分かりづらい
 分かれていないと、他の人と手分けして作るのが難しい
 難しい問題を、一つ一つは考えやすい問題に分けて解く
 どう分けるのか
 機能を実現するための役割(「責務」)で分ける
13
Copyright(c) ETロボコン実行委員会 All rights reserved.
はじめに(まとめ)
 なぜソースコードを分けるのか
 ソースファイルが一つだけだと、どこに何があるか分かりづらい
 分かれていないと、他の人と手分けして作るのが難しい
 難しい問題を、一つ一つは考えやすい問題に分けて解く
 生産性の向上(定時で帰りましょう)
 労働集約よりも知識集約に
 どう分けるのか
 機能を実現するための役割(「責務」)で分ける
14
ET ロボコンを、練習台にして下さい 

More Related Content

What's hot

「LED点滅用のLSIをつくって Lチカをやってみた」のココロ
「LED点滅用のLSIをつくってLチカをやってみた」のココロ「LED点滅用のLSIをつくってLチカをやってみた」のココロ
「LED点滅用のLSIをつくって Lチカをやってみた」のココロJunichi Akita
 
実践コンピュータビジョン 9章 画像の領域分割
実践コンピュータビジョン 9章 画像の領域分割実践コンピュータビジョン 9章 画像の領域分割
実践コンピュータビジョン 9章 画像の領域分割yaju88
 
ストリーム処理とSensorBee
ストリーム処理とSensorBeeストリーム処理とSensorBee
ストリーム処理とSensorBeeDaisuke Tanaka
 
画像処理でのPythonの利用
画像処理でのPythonの利用画像処理でのPythonの利用
画像処理でのPythonの利用Yasutomo Kawanishi
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3tak9029
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能Yuya Unno
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみたJunichi Akita
 

What's hot (9)

「LED点滅用のLSIをつくって Lチカをやってみた」のココロ
「LED点滅用のLSIをつくってLチカをやってみた」のココロ「LED点滅用のLSIをつくってLチカをやってみた」のココロ
「LED点滅用のLSIをつくって Lチカをやってみた」のココロ
 
SensorBeeのご紹介
SensorBeeのご紹介SensorBeeのご紹介
SensorBeeのご紹介
 
実践コンピュータビジョン 9章 画像の領域分割
実践コンピュータビジョン 9章 画像の領域分割実践コンピュータビジョン 9章 画像の領域分割
実践コンピュータビジョン 9章 画像の領域分割
 
ストリーム処理とSensorBee
ストリーム処理とSensorBeeストリーム処理とSensorBee
ストリーム処理とSensorBee
 
画像処理でのPythonの利用
画像処理でのPythonの利用画像処理でのPythonの利用
画像処理でのPythonの利用
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能
 
Make @ Osaka
Make @ OsakaMake @ Osaka
Make @ Osaka
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみた
 

Similar to 2019 05-19.overview

パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理Kouji Matsui
 
技術勉強会(Solr入門編)
技術勉強会(Solr入門編)技術勉強会(Solr入門編)
技術勉強会(Solr入門編)Atsushi Takayasu
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
PSpiceの活用方法 (2005年)
PSpiceの活用方法 (2005年)PSpiceの活用方法 (2005年)
PSpiceの活用方法 (2005年)Tsuyoshi Horigome
 
Bee Style:vol.020
Bee Style:vol.020Bee Style:vol.020
Bee Style:vol.020spicepark
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方KLab Inc. / Tech
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルRecruit Technologies
 
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界Shingo Kitayama
 
Machine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubMachine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubJunya Kamura
 
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテックGTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテックGame Tools & Middleware Forum
 
Neo4jrbにおけるOGM
Neo4jrbにおけるOGMNeo4jrbにおけるOGM
Neo4jrbにおけるOGMtakabes00
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
モーターのアプリケーション回路シミュレーションのソリューション
モーターのアプリケーション回路シミュレーションのソリューションモーターのアプリケーション回路シミュレーションのソリューション
モーターのアプリケーション回路シミュレーションのソリューションTsuyoshi Horigome
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編株式会社 NTTテクノクロス
 

Similar to 2019 05-19.overview (20)

Bee Style:vol021
Bee Style:vol021Bee Style:vol021
Bee Style:vol021
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
技術勉強会(Solr入門編)
技術勉強会(Solr入門編)技術勉強会(Solr入門編)
技術勉強会(Solr入門編)
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
PSpiceの活用方法 (2005年)
PSpiceの活用方法 (2005年)PSpiceの活用方法 (2005年)
PSpiceの活用方法 (2005年)
 
Bee Style:vol.020
Bee Style:vol.020Bee Style:vol.020
Bee Style:vol.020
 
鹿駆動
鹿駆動鹿駆動
鹿駆動
 
Bee Style:vol.026
Bee Style:vol.026Bee Style:vol.026
Bee Style:vol.026
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
 
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
 
Machine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubMachine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hub
 
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテックGTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
 
Neo4jrbにおけるOGM
Neo4jrbにおけるOGMNeo4jrbにおけるOGM
Neo4jrbにおけるOGM
 
Angularを利用したシステム開発事例
Angularを利用したシステム開発事例Angularを利用したシステム開発事例
Angularを利用したシステム開発事例
 
Bee Style:vol.042
Bee Style:vol.042Bee Style:vol.042
Bee Style:vol.042
 
14対話bot発表資料
14対話bot発表資料14対話bot発表資料
14対話bot発表資料
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
モーターのアプリケーション回路シミュレーションのソリューション
モーターのアプリケーション回路シミュレーションのソリューションモーターのアプリケーション回路シミュレーションのソリューション
モーターのアプリケーション回路シミュレーションのソリューション
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編
 

More from Shin-ya Koga

2022-09-15.studyMeeting.pdf
2022-09-15.studyMeeting.pdf2022-09-15.studyMeeting.pdf
2022-09-15.studyMeeting.pdfShin-ya Koga
 
2021 12-02.koga.lecture note-revised
2021 12-02.koga.lecture note-revised2021 12-02.koga.lecture note-revised
2021 12-02.koga.lecture note-revisedShin-ya Koga
 
2021 10-12.linx device-tree
2021 10-12.linx device-tree2021 10-12.linx device-tree
2021 10-12.linx device-treeShin-ya Koga
 
品質管理グループ Linux 勉強会
品質管理グループ Linux 勉強会品質管理グループ Linux 勉強会
品質管理グループ Linux 勉強会Shin-ya Koga
 
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)Shin-ya Koga
 
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)Shin-ya Koga
 
2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)Shin-ya Koga
 
2018 08-31.946oss revised
2018 08-31.946oss revised2018 08-31.946oss revised
2018 08-31.946oss revisedShin-ya Koga
 
2017 06-04.overview
2017 06-04.overview2017 06-04.overview
2017 06-04.overviewShin-ya Koga
 
2017 05-21.overview
2017 05-21.overview2017 05-21.overview
2017 05-21.overviewShin-ya Koga
 
正解は一つじゃない: 選択肢と最適解
正解は一つじゃない:選択肢と最適解正解は一つじゃない:選択肢と最適解
正解は一つじゃない: 選択肢と最適解Shin-ya Koga
 
C#/Java & Linux で始める ET ロボコン
C#/Java & Linux で始める ET ロボコンC#/Java & Linux で始める ET ロボコン
C#/Java & Linux で始める ET ロボコンShin-ya Koga
 
Universal Apps (UWP)
Universal Apps (UWP)Universal Apps (UWP)
Universal Apps (UWP)Shin-ya Koga
 
IoT あるじゃん北海道支部勉強会
IoT あるじゃん北海道支部勉強会IoT あるじゃん北海道支部勉強会
IoT あるじゃん北海道支部勉強会Shin-ya Koga
 
組み込みから IoT へ
組み込みから IoT へ組み込みから IoT へ
組み込みから IoT へShin-ya Koga
 
コードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めようコードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めようShin-ya Koga
 
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoTデバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoTShin-ya Koga
 
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~自律走行ロボットをプログラミングするということ ~ETロボコンの場合~
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~Shin-ya Koga
 
組み込みでもマルチコア。WEC2013での対応
組み込みでもマルチコア。WEC2013での対応組み込みでもマルチコア。WEC2013での対応
組み込みでもマルチコア。WEC2013での対応Shin-ya Koga
 
CLR/H 第 79 回勉強会での LT
CLR/H 第 79 回勉強会での LTCLR/H 第 79 回勉強会での LT
CLR/H 第 79 回勉強会での LTShin-ya Koga
 

More from Shin-ya Koga (20)

2022-09-15.studyMeeting.pdf
2022-09-15.studyMeeting.pdf2022-09-15.studyMeeting.pdf
2022-09-15.studyMeeting.pdf
 
2021 12-02.koga.lecture note-revised
2021 12-02.koga.lecture note-revised2021 12-02.koga.lecture note-revised
2021 12-02.koga.lecture note-revised
 
2021 10-12.linx device-tree
2021 10-12.linx device-tree2021 10-12.linx device-tree
2021 10-12.linx device-tree
 
品質管理グループ Linux 勉強会
品質管理グループ Linux 勉強会品質管理グループ Linux 勉強会
品質管理グループ Linux 勉強会
 
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
 
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
 
2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)
 
2018 08-31.946oss revised
2018 08-31.946oss revised2018 08-31.946oss revised
2018 08-31.946oss revised
 
2017 06-04.overview
2017 06-04.overview2017 06-04.overview
2017 06-04.overview
 
2017 05-21.overview
2017 05-21.overview2017 05-21.overview
2017 05-21.overview
 
正解は一つじゃない: 選択肢と最適解
正解は一つじゃない:選択肢と最適解正解は一つじゃない:選択肢と最適解
正解は一つじゃない: 選択肢と最適解
 
C#/Java & Linux で始める ET ロボコン
C#/Java & Linux で始める ET ロボコンC#/Java & Linux で始める ET ロボコン
C#/Java & Linux で始める ET ロボコン
 
Universal Apps (UWP)
Universal Apps (UWP)Universal Apps (UWP)
Universal Apps (UWP)
 
IoT あるじゃん北海道支部勉強会
IoT あるじゃん北海道支部勉強会IoT あるじゃん北海道支部勉強会
IoT あるじゃん北海道支部勉強会
 
組み込みから IoT へ
組み込みから IoT へ組み込みから IoT へ
組み込みから IoT へ
 
コードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めようコードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めよう
 
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoTデバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
 
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~自律走行ロボットをプログラミングするということ ~ETロボコンの場合~
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~
 
組み込みでもマルチコア。WEC2013での対応
組み込みでもマルチコア。WEC2013での対応組み込みでもマルチコア。WEC2013での対応
組み込みでもマルチコア。WEC2013での対応
 
CLR/H 第 79 回勉強会での LT
CLR/H 第 79 回勉強会での LTCLR/H 第 79 回勉強会での LT
CLR/H 第 79 回勉強会での LT
 

2019 05-19.overview

  • 1. Copyright(c) ETロボコン実行委員会 All rights reserved. ETロボコン技術教育1 北海道地区 1
  • 2. Copyright(c) ETロボコン実行委員会 All rights reserved. 要素技術とモデルを開発に使おう はじめに(※このスライド) コードとモデル図を対応づけてみよう 要素技術をシステムに組込もう 倒立振子ライブラリをモデルに組込もう 2
  • 3. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  今日のトレーニングで伝えたいこと  ソースコードとモデル図を対応付けて考える  モデル図を使って検討し、ソースコードを変更する  ソースコードの分け方を考えるのにモデル図を使う ・・・なぜソースコードを分けるのか? 3
  • 4. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  なぜソースコード(ソースファイル)を分けるのか 4
  • 5. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  なぜソースコード(ソースファイル)を分けるのか  ソースファイルが一つだけだと、どこに何があるか分かりづらい 5
  • 6. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  なぜソースコード(ソースファイル)を分けるのか  ソースファイルが一つだけだと、どこに何があるか分かりづらい  分かれていないと、他の人と手分けして作るのが難しい ・・・どう分けるのがよいか? 6
  • 7. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  どう分けるのがよいか 7
  • 8. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  どう分けるのがよいか  「関数」で分ける 8 × 小さ過ぎて、却って面倒
  • 9. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  どう分けるのがよいか  「関数」で分ける  機能で分ける 9 × 小さ過ぎて、却って面倒 ? 違う機能同士で、 同じ処理を行う ことは多い!
  • 10. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  どう分けるのがよいか  「関数」で分ける  機能で分ける  役割(機能を実現するもの)で分ける  まとまりがよい(関連するものが集まっている)  それぞれの役割が、互いに独立している  役割の間の責任分担(依頼関係)を分かりやすく ・・・モデル図とは? 10 × 小さ過ぎて、却って面倒 ? 違う機能同士で、 同じ処理を行う ことは多い!
  • 11. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに  モデル図とは  ソースコードの内容を表した「設計図」  ブロック図、人物相関図  どんな役割があるか  役割と役割の繋がり(依頼関係)がどうなっているか  何を実現するのか(提供する機能) ・・・プログラムを作る時に、ソースコードを分けて考える道具 11
  • 12. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに(まとめ)  なぜソースコードを分けるのか  ソースファイルが一つだけだと、どこに何があるか分かりづらい  分かれていないと、他の人と手分けして作るのが難しい  どう分けるのか  機能を実現するための役割(「責務」)で分ける 12
  • 13. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに(まとめ)  なぜソースコードを分けるのか  ソースファイルが一つだけだと、どこに何があるか分かりづらい  分かれていないと、他の人と手分けして作るのが難しい  難しい問題を、一つ一つは考えやすい問題に分けて解く  どう分けるのか  機能を実現するための役割(「責務」)で分ける 13
  • 14. Copyright(c) ETロボコン実行委員会 All rights reserved. はじめに(まとめ)  なぜソースコードを分けるのか  ソースファイルが一つだけだと、どこに何があるか分かりづらい  分かれていないと、他の人と手分けして作るのが難しい  難しい問題を、一つ一つは考えやすい問題に分けて解く  生産性の向上(定時で帰りましょう)  労働集約よりも知識集約に  どう分けるのか  機能を実現するための役割(「責務」)で分ける 14 ET ロボコンを、練習台にして下さい 