狠狠撸

狠狠撸Share a Scribd company logo
インターフェイスによる
  オブジェクト指向プログラ
           ミング



            株式会社Aiming
        ソフトウェアエンジニア
               清水 聡
アジェンダ
?   インターフェイスとは
?   各言语のインターフェイス
?   ゲームにおけるインターフェイス活用
?   実务でのバランスの取り方
?   オブジェクト指向プログラミングに
          おけるインターフェイス
インターフェイスとは
インターフェイスとは
? ハードウェアインターフェイス
 – コネクタの形状やそこを流れるものの取り決
   め
インターフェイスとは
? ソフトウェアインターフェイス
 – ソフトウェア間の通信を行う際の
    メッセージの渡し方などを決めたもの

 – 複数のオブジェクトに関して共通する機能を
    実装する為のメッセージの規格を定義した
   もの
インターフェイスとは
描画する人

        描画する




               形状
インターフェイスとは
? 描画する人(Drawer)が最初は
   一人で良かったんだけど複数必要に
  なった
 – 例えば、描画対象がiPhone?Android?HTMLと
   か


? でも描画するという振る舞いと
   必要な情報(Figure)は変わらない
インターフェイスとは
描画する人というインターフェ
      イス


                  描画する




                 形状
インターフェイスとは
? iPhone版の描画する人
インターフェイスとは
? Android版の描画する人
各言语のインターフェイス
各言语のインターフェイス
? C#
各言语のインターフェイス
? Java
各言语のインターフェイス
? ActionScript
各言语のインターフェイス
? C++
ゲームにおける
インターフェイス活用
ゲームにおけるインターフェイス
      活用


          敵

      倒       落とす
  自   す


              アイテ
              ム
ゲームにおけるインターフェイス
      活用




  自



      近づいて拾うと   アイテ
                ム
        アイテムを
      入手
ゲームにおけるインターフェイス
      活用




   Money   Item   Exp
ゲームにおけるインターフェイス
      活用
? インターフェイスを使わない実装1




     突然の位置情報
ゲームにおけるインターフェイス
      活用
? インターフェイスを使わない実装2
ゲームにおけるインターフェイス
      活用
? インターフェイスを使わない実装3
ゲームにおけるインターフェイス
      活用
? インターフェイスを使わない実装4
ゲームにおけるインターフェイス
      活用


         経験値
                HP回復


      突然の仕様変更
  自               お金



                アイテ
                ム
ゲームにおけるインターフェイス
      活用
? 対策1
ゲームにおけるインターフェイス
      活用
? 対策2
ゲームにおけるインターフェイス
      活用
? 対策3
ゲームにおけるインターフェイス
      活用


         経験値
                HP回復




  自               お金



                アイテ
                ム
      落ちているもの
ゲームにおけるインターフェイス
      活用
ゲームにおけるインターフェイス
      活用
ゲームにおけるインターフェイス
      活用
ゲームにおけるインターフェイス
      活用
ゲームにおけるインターフェイス
      活用
実务でのバランスの取り方
実务でのバランスの取り方
? 実務に置いてはいろいろな要因があり
   バランスが大切だけど難しいですよね
 – 時間
  ? 完璧を求めて時間をかけ過ぎたり
 – 必要なインターフェイス
  ? 必要だと思って作ったけど逆に負債となったり
 – 仕様変更
  ? もう全てがどんでん返し\(^o^)/
実务でのバランスの取り方
? YAGNI
  – “You ain‘t gonna need it”
           そんなの必要ないって
    ? あとで使うだろうとの予測の元に作ったものは、
              実際には10%程度しか使われな
      い
    ? 不要な機能にも維持コストがあり、リソースを浪
      費する
    ? 設計をシンプルにすることが
        予期しない変更に対しての備えとなる
実务でのバランスの取り方
? ケース1
 – 最初はアイテムしかドロップしなかった
    →あとでお金とかが追加された

 1. DropItemとして実装する
 2. 仕様変更で必要になれば
      インターフェイスを考え適用する
実务でのバランスの取り方
? ケース2
 – 最初からアイテム?お金?経験値がドロップ
   する

 1. 共通するインターフェイスを考え適用する
 2. さらに追加があれば
     インターフェイスを実装したクラスを追
    加する
オブジェクト指向プログラミン
グに
おけるインターフェイス
OOPにおけるインターフェイス
? ここまでは言語の機能である
   インターフェイスに焦点をあて説明し
  ました
? この考え自体はプログラミング自体、
   オブジェクト指向プログラミング
  (OOP)の
    考えで言語問わず適用できます
? この考えを支援する為に
   言語毎に機能があったりなかったりし
  ます
OOPにおけるインターフェイス
? C++での別解
OOPにおけるインターフェイス
? Pythonでの一例
OOPにおけるインターフェイス
? このように言語にインターフェイスとい
  う
   機能がないからと言ってインターフェ
  イスの
    考えが使えないというわけではあり
  ません
? 言語毎に思想が異なり実現方法が違いま
  す
? 基盤となるオブジェクト指向プログラミ
  ングを
参考書籍
? デザインパターンとともに学ぶ
      オブジェクト指向のこころ
 – http://amzn.to/Z8dE6z
? パターン指向リファクタリング入門
 – http://amzn.to/UlhkuB
? オブジェクト指向における
   再利用のためのデザインパターン
 – http://amzn.to/VI3524
质疑応答
ご清聴ありがとうございましたm(_ _)m
Ad

Recommended

キャラサミ「渚の妖精ぎばさちゃん」20141124
キャラサミ「渚の妖精ぎばさちゃん」20141124
Katsushiro Koizumi
?
関数型厂飞颈蹿迟
関数型厂飞颈蹿迟
S_Shimotori
?
厂肠丑别尘别で驳颈尘辫を动かしてみる
厂肠丑别尘别で驳颈尘辫を动かしてみる
twinkfrag
?
东京駅周辺の魅力向上サービス创造ハッカソン成果「まるじいとやえ坊」
东京駅周辺の魅力向上サービス创造ハッカソン成果「まるじいとやえ坊」
Masaki Ito
?
早朝コーディングしてみた
早朝コーディングしてみた
Riou Tomita
?
纸と铅笔で设计しよう
纸と铅笔で设计しよう
Makoto Henmi
?
惭惭翱を作る
惭惭翱を作る
Akineko Shimizu
?
颁++でテスト駆动开発
颁++でテスト駆动开発
Akineko Shimizu
?
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
?
インターフェイス実装の活用例 AS編
インターフェイス実装の活用例 AS編
Yoshitaka Kimisaki
?
情报理工础苍诲谤辞颈诲勉强会第一回大将笔补谤迟
情报理工础苍诲谤辞颈诲勉强会第一回大将笔补谤迟
Hiroki Sakamoto
?
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実现
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実现
gree_tech
?
Developers Summit 2013【14-E-4】デザインをするときにデザイナーが考えること?デザイナーの頭の中?
Developers Summit 2013【14-E-4】デザインをするときにデザイナーが考えること?デザイナーの頭の中?
Chihiro Tomita
?
はじめての「搁」
はじめての「搁」
Masahiro Hayashi
?
[141004] cedec 2014 ??? & ?? ?? #1
[141004] cedec 2014 ??? & ?? ?? #1
MinGeun Park
?
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet
将 高野
?
WEB業界でほしい人材とは? そしてWEB業界の実際
WEB業界でほしい人材とは? そしてWEB業界の実際
Hiroyuki Yamaoka
?
邪道闯别苍办颈苍蝉
邪道闯别苍办颈苍蝉
hazisarashi
?
Microsoft Conversational AI_20191030
Microsoft Conversational AI_20191030
Ayako Omori
?
议论を描く技术「ファシリテーショングラフィック」
议论を描く技术「ファシリテーショングラフィック」
nishikawa_makoto7
?
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
Yuki Tanaka
?
Xp Terakoya No04
Xp Terakoya No04
takepu
?
コンヒ?ュータをもっと使おう
コンヒ?ュータをもっと使おう
Tomohiko Himura
?
第3回 IT講座 ゲームを作ってみよう! 基礎編
第3回 IT講座 ゲームを作ってみよう! 基礎編
Shunya Komori
?
いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介
Kouji Hosoda
?
惭惭翱骋开発について~クライアントサイド~
惭惭翱骋开発について~クライアントサイド~
Akineko Shimizu
?
学生时代からの変化
学生时代からの変化
Akineko Shimizu
?

More Related Content

Similar to インターフェイスによるオブジェクト指向设计 (20)

Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
?
インターフェイス実装の活用例 AS編
インターフェイス実装の活用例 AS編
Yoshitaka Kimisaki
?
情报理工础苍诲谤辞颈诲勉强会第一回大将笔补谤迟
情报理工础苍诲谤辞颈诲勉强会第一回大将笔补谤迟
Hiroki Sakamoto
?
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実现
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実现
gree_tech
?
Developers Summit 2013【14-E-4】デザインをするときにデザイナーが考えること?デザイナーの頭の中?
Developers Summit 2013【14-E-4】デザインをするときにデザイナーが考えること?デザイナーの頭の中?
Chihiro Tomita
?
はじめての「搁」
はじめての「搁」
Masahiro Hayashi
?
[141004] cedec 2014 ??? & ?? ?? #1
[141004] cedec 2014 ??? & ?? ?? #1
MinGeun Park
?
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet
将 高野
?
WEB業界でほしい人材とは? そしてWEB業界の実際
WEB業界でほしい人材とは? そしてWEB業界の実際
Hiroyuki Yamaoka
?
邪道闯别苍办颈苍蝉
邪道闯别苍办颈苍蝉
hazisarashi
?
Microsoft Conversational AI_20191030
Microsoft Conversational AI_20191030
Ayako Omori
?
议论を描く技术「ファシリテーショングラフィック」
议论を描く技术「ファシリテーショングラフィック」
nishikawa_makoto7
?
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
Yuki Tanaka
?
Xp Terakoya No04
Xp Terakoya No04
takepu
?
コンヒ?ュータをもっと使おう
コンヒ?ュータをもっと使おう
Tomohiko Himura
?
第3回 IT講座 ゲームを作ってみよう! 基礎編
第3回 IT講座 ゲームを作ってみよう! 基礎編
Shunya Komori
?
いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介
Kouji Hosoda
?
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
?
インターフェイス実装の活用例 AS編
インターフェイス実装の活用例 AS編
Yoshitaka Kimisaki
?
情报理工础苍诲谤辞颈诲勉强会第一回大将笔补谤迟
情报理工础苍诲谤辞颈诲勉强会第一回大将笔补谤迟
Hiroki Sakamoto
?
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実现
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実现
gree_tech
?
Developers Summit 2013【14-E-4】デザインをするときにデザイナーが考えること?デザイナーの頭の中?
Developers Summit 2013【14-E-4】デザインをするときにデザイナーが考えること?デザイナーの頭の中?
Chihiro Tomita
?
[141004] cedec 2014 ??? & ?? ?? #1
[141004] cedec 2014 ??? & ?? ?? #1
MinGeun Park
?
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet
将 高野
?
WEB業界でほしい人材とは? そしてWEB業界の実際
WEB業界でほしい人材とは? そしてWEB業界の実際
Hiroyuki Yamaoka
?
邪道闯别苍办颈苍蝉
邪道闯别苍办颈苍蝉
hazisarashi
?
Microsoft Conversational AI_20191030
Microsoft Conversational AI_20191030
Ayako Omori
?
议论を描く技术「ファシリテーショングラフィック」
议论を描く技术「ファシリテーショングラフィック」
nishikawa_makoto7
?
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
别苍肠丑补苍迟.箩蝉を使った子ども向けプログラミングワークショップ讲义内容
Yuki Tanaka
?
Xp Terakoya No04
Xp Terakoya No04
takepu
?
コンヒ?ュータをもっと使おう
コンヒ?ュータをもっと使おう
Tomohiko Himura
?
第3回 IT講座 ゲームを作ってみよう! 基礎編
第3回 IT講座 ゲームを作ってみよう! 基礎編
Shunya Komori
?
いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介
Kouji Hosoda
?

More from Akineko Shimizu (6)

惭惭翱骋开発について~クライアントサイド~
惭惭翱骋开発について~クライアントサイド~
Akineko Shimizu
?
学生时代からの変化
学生时代からの変化
Akineko Shimizu
?
新规プロジェクトに関わって感じた事
新规プロジェクトに関わって感じた事
Akineko Shimizu
?
オンラインゲーム开発の楽しさ
オンラインゲーム开発の楽しさ
Akineko Shimizu
?
翱狈贰-鲍笔の绍介
翱狈贰-鲍笔の绍介
Akineko Shimizu
?
とある贵濒补蝉丑の自动生成
とある贵濒补蝉丑の自动生成
Akineko Shimizu
?
惭惭翱骋开発について~クライアントサイド~
惭惭翱骋开発について~クライアントサイド~
Akineko Shimizu
?
学生时代からの変化
学生时代からの変化
Akineko Shimizu
?
新规プロジェクトに関わって感じた事
新规プロジェクトに関わって感じた事
Akineko Shimizu
?
オンラインゲーム开発の楽しさ
オンラインゲーム开発の楽しさ
Akineko Shimizu
?
とある贵濒补蝉丑の自动生成
とある贵濒补蝉丑の自动生成
Akineko Shimizu
?
Ad

インターフェイスによるオブジェクト指向设计