SlideShare a Scribd company logo
1 of 12
Download to read offline
社会人プログラマが覚えておきたい

抽象化と具体化の事例
木を見て森も見よう
akiraak
目次
1. 抽象化と具体化
2. 抽象化のメリット
3. 例
3-1. 文章における目次の例
3-2. プログラムのクラス継承の例
3-3. プロジェクトでの視点の例
4. まとめ
5. 今日からできること
1. 抽象化と具体化とは
抽象化とは複数の事象から共通点を取り出す事です。具体化はその
逆で、1つの事象に共通する複数の事象を出す事です。
2. 抽象化のメリット
抽象化と具体化は両方とも重要です。時には抽象的なレイヤーで物事を考えたり、ま
た時には具体的なレイヤーで物事を考えたりする事によって、効率のよい作業が行え
るようになります。抽象化は体感に落ちにくいためメリットを上げます。

全体を把握する事で無駄な作業がなくなる
鮮度が落ちた不要な作業をやらないという判断ができる
クラスに共通コードをまとめて重複コードを無くす

階層化する事で全体を把握しやすくなる
読みやすい資料が書ける
同じ内容の文章がまとまってるので効率的に内容を把握できる
3-1. 文章と目次の例
「ビジネス文章の書き方」という書籍があるとして、
「取引先に仕様を提案するメール書く」
「顧客に新商品を提案する」
という内容に対して、どのような大見出しを付けれ
ば良いのか考えてみましょう。
3-1. 文章と目次の例
第1章 ビジネス文章の基本
第2章 ビジネス文章の敬語・表現・マナー
第3章 社外文章の書き方
依頼する
案内する
交渉する
取引先に仕様を提案するメール書く
勧誘する
顧客に新商品を提案する
第4章 社内文章の書き方
複数の具体的な内容に抽象的な見出しを付けると、全体が把握しやすくなります。こ
れにより現在読んでいる自分の位置もわかりやすくなります。また、共通した内容が章
のなかに全て含まれるので、具体的な内容を把握しやすくもなります。
3-2. プログラムのクラス継承の例
「シューティングゲーム」のプログラムがあると
して、
「Player(自キャラ)」
「Enemy(敵キャラ)」
というクラスに対して、どのような抽象化されたクラス
があるのか考えてみましょう。
3-2. プログラムのクラス継承の例
Object(アプリ内に存在する物)
Sprite(表示物)
Character(キャラクター)
Player(操作キャラ)
Enemy(敵)
Zako(ザコ敵)
Boss(ボス)
Shot(弾)
PlayerShot
EnemyShot
Stage(背景)
Score
Menu
共通処理を1つのクラスにまとめる事で、重複した無駄なコードを書く事がなくなります。
3-3. プロジェクトでの視点の例
「小学生を対象にした格闘ゲーム開発のプロジェク
ト」があるとして、
「キャラクター描画の実装」
「ゴジラAIプログラムの実装」
という内容に対して、どのような抽象化された作業
があるのか考えてみましょう。
3-3. プロジェクトでの視点の例
ゲーム開発プロジェクト(小学生を対象にした格闘ゲーム)
開発期間12ヶ月
プログラム
タイトル画面
キャラクター選択画面
戦闘画面
ステージ
キャラクター
キャラクター描画の実装
モーション
当たり判定
敵AI
ゴジラ
範馬勇次郎
パラメーター表示
デザイン
宣伝
実作業では具体化されたタスクをこなす事になりますが、その時は抽象化された事は頭から忘れた方が作業効率がよいです。た
とえば、敵AIの実装中に戦闘画面全体の事に思いをはせるのは意味がありません。しかし、定期的に立ち止まって「現在の作業
は抽象的な事から外れていないだろうか?」と考える時間は必要です。そうしないと「小学生を対象にした格闘ゲーム」ではなく
なってしまう可能性があります。また開発期間も守れなくなってしまうかもしれません。
4. まとめ
抽象化と具体化を意識し
時には全体を見て道を間違わないようにし
時には全体を忘れ目の前の作業に没頭する事で
最善なプログラムを創りだそう。
5. 今日からできること
日報を書いたあとに
共通した見出しを付けれないか考える
チケットに取りかかる前に
プロジェクト全体を見回してみる
作業中は他の事を忘れておく

More Related Content

Viewers also liked

初心を思いだしてみよう
初心を思いだしてみよう初心を思いだしてみよう
初心を思いだしてみようSayaka Nakano
 
文章を書く上で必要な考え方(基礎)
文章を書く上で必要な考え方(基礎)文章を書く上で必要な考え方(基礎)
文章を書く上で必要な考え方(基礎)Jo Hattori
 
IT系メディアのライティング手法 紙からWebへ
IT系メディアのライティング手法 紙からWebへIT系メディアのライティング手法 紙からWebへ
IT系メディアのライティング手法 紙からWebへNobuyori Takahashi
 
【Schoo web campus】「相手に伝わる」文章を書く技術 2限目
【Schoo web campus】「相手に伝わる」文章を書く技術 2限目【Schoo web campus】「相手に伝わる」文章を書く技術 2限目
【Schoo web campus】「相手に伝わる」文章を書く技術 2限目schoowebcampus
 
新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話
新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話
新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話Yamamoto Masahira
 
パターン・ランゲージ研究の最新事例(Pattern Language 3.0)
パターン・ランゲージ研究の最新事例(Pattern Language 3.0)パターン・ランゲージ研究の最新事例(Pattern Language 3.0)
パターン・ランゲージ研究の最新事例(Pattern Language 3.0)Takashi Iba
 
文章力を高める
文章力を高める文章力を高める
文章力を高めるCourslide
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!Kanu orz
 
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-Asuka Nakajima
 
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題Aki Ariga
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Soudai Sone
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosqlSoudai Sone
 
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageekJava エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageekKazuhiro Sera
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmMinero Aoki
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24Kazuhiro Sera
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaKazuhiro Sera
 
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study nightDMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night石橋 啓太
 
プレゼンテーション資料作成講座第2部
プレゼンテーション資料作成講座第2部プレゼンテーション資料作成講座第2部
プレゼンテーション資料作成講座第2部Miho Yamahashi
 
power pointで誰でもイラストレーター
power pointで誰でもイラストレーターpower pointで誰でもイラストレーター
power pointで誰でもイラストレーターMiho Yamahashi
 

Viewers also liked (20)

初心を思いだしてみよう
初心を思いだしてみよう初心を思いだしてみよう
初心を思いだしてみよう
 
文章を書く上で必要な考え方(基礎)
文章を書く上で必要な考え方(基礎)文章を書く上で必要な考え方(基礎)
文章を書く上で必要な考え方(基礎)
 
IT系メディアのライティング手法 紙からWebへ
IT系メディアのライティング手法 紙からWebへIT系メディアのライティング手法 紙からWebへ
IT系メディアのライティング手法 紙からWebへ
 
【Schoo web campus】「相手に伝わる」文章を書く技術 2限目
【Schoo web campus】「相手に伝わる」文章を書く技術 2限目【Schoo web campus】「相手に伝わる」文章を書く技術 2限目
【Schoo web campus】「相手に伝わる」文章を書く技術 2限目
 
新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話
新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話
新人がアジャイル開発の現場で、朝会とか振り返りとかを任せられて実践している話
 
パターン・ランゲージ研究の最新事例(Pattern Language 3.0)
パターン・ランゲージ研究の最新事例(Pattern Language 3.0)パターン・ランゲージ研究の最新事例(Pattern Language 3.0)
パターン・ランゲージ研究の最新事例(Pattern Language 3.0)
 
文章力を高める
文章力を高める文章力を高める
文章力を高める
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!
 
CVR200%改善メソッド
CVR200%改善メソッドCVR200%改善メソッド
CVR200%改善メソッド
 
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
 
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題
クックパッドサマーインターン2015 機械学習・自然言語処理 実習課題
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosql
 
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageekJava エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
 
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study nightDMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
 
プレゼンテーション資料作成講座第2部
プレゼンテーション資料作成講座第2部プレゼンテーション資料作成講座第2部
プレゼンテーション資料作成講座第2部
 
power pointで誰でもイラストレーター
power pointで誰でもイラストレーターpower pointで誰でもイラストレーター
power pointで誰でもイラストレーター
 

社会人プログラマが覚えておきたい 抽象化と具体化の事例