SlideShare a Scribd company logo
1 of 18
仕様立ちぬ
「キレイに書かねば」
僕らがコードをキレイに書かないといけない理由
~DDDの適用話~
© 2015 gloops inc.
菊池 翔(Kikuchi Kakeru)[左の写真はFaceBookから]
1989/05/26(age 25)
社会人3年目(でもgloopsは2社目)
開発ではこんなのと関わってます
・C# ・Javascript ・Resharper ・Git(bitbucket)
・SqlServer ・Redis ・IIS ・Jenkins ・Qiita ・JIRA etc…
Native開発では
・Unity とか (Webの部署なので詳しくは知らない…)
ソーシャルゲーム開発を行ってます
あれやこれや
やりたい仕様が山積みです…。
いろんな人が絡みます。
急な変更よくあります。
変更をミスるとトラブル…。
企画
デザイン
開発
イラスト
テスター
カスタマーサポート
インタラクティブデザイン
~とてもじゃないが触りたくない実装例~
とあるゲームで似たようなことありました事件簿
ではライトニングトークの本題に入ろう
ちょっと攻撃できるようにしたいんだけど
ほーい
あ、会心の一撃とゆらぎが欲しい
おう
魔法攻撃もいけるよね?
おう?
魔法攻撃は会心とかゆらぎ無いけど
おう…
魔法攻撃は属性あって弱点とかね!
What’s?!
スキルの効果で威力が上がるでしょ!
敵もある程度の耐性がつくからね♪
コンボで徐々にダメージが増えていくだー
強すぎるとまずいから、一部の魔法は下方修正するように…
回復も同じロジックでやってよ
Oh!Jesus!
企画者は無理難題をおっしゃる
本当にそうなのか?
開発者が無理というとそこで進化が止
まります。
なるべくたゆまない仕様変更には耐え
られるように!
そうだ!キレイに書いてみよう!
単一責任の原則:
オブジェクトは1つの責任(役割)のみを持つ
⇒ やることは一つのほうが迷わないよね
クラス、メソッドのスリムアップ!
オープン・クローズドの原則:
拡張に対して開いていて、修正に対して閉じている
⇒ 追加はしやすく、追加しても他に影響がない
リスコフの置換原則:
派生型はその基本型と置換可能でなければならない。
⇒ 代替的に使われるオブジェクトの振る舞いが変わらない
オープン・クローズドに親しい関係ですね
依存関係逆転の法則:
上位のモジュールは下位のモジュールに依存してはならない。
どちらのモジュールも「抽象」に依存すべきである。
⇒ 具体的なクラスに依存してはいけないよってことです
一例として「Layered Architecture(層状アーキテクチャ)パターン」
DDD(ドメイン駆動設計)
UI(ユーザ・インターフェース)・プレゼンテーション層
アプリケーション層
ドメイン層
インフラストラクチャ層
Htmlなどユーザと触れ合う画面
[MVCでいうところのView]
ドメインの作業を調整するだけ
[MVCでいうところのController]
ルールの層。さっきの攻撃計算Coreはここ
[MVCでいうところのModel]
上位レイヤを支える一般的な技術。
C#とかSqlServerとか。
やることがはっきりしてる!
⇒ UIは表示等、インフラストラクチャはテクノロジー
ユーザに見せる方法が変わるならUI層を新規構築
例)WebじゃなくてNativeでゲーム出したいんだけど。
テクノロジーを変えたいときはインフラストラクチャを修正
例)SqlServerだったけどMysqlに乗り換えるよ。
修正・変更に対して強い実装を!
なんてことを日々考えながら仕事してます。
もちろんゲームに対しての議論なんかも盛んです。
エンジニアとして働くにはなかなかよい環境が整っています。
参考[HRナビさん]:http://hrnabi.com/2014/08/25/3100/
開発・ゲームが好きな人は是非是非!
http://gloops.com/recruit/

More Related Content

Similar to ギブリーLt大会用プレゼン資料

[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」de:code 2017
 
de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」Takashi Takebayashi
 
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24俊仁 小林
 
会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピング会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピングMasaru Nagaku
 
楽しいゲーム開発管理
楽しいゲーム開発管理楽しいゲーム開発管理
楽しいゲーム開発管理Maki Koiwa
 
Kyash Androidで 新しい画面を作る時の コードの書き順
Kyash Androidで 新しい画面を作る時の コードの書き順Kyash Androidで 新しい画面を作る時の コードの書き順
Kyash Androidで 新しい画面を作る時の コードの書き順Yusuke Konishi
 
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用kimukou_26 Kimukou
 
System.Drawing 周りの話
System.Drawing 周りの話System.Drawing 周りの話
System.Drawing 周りの話Satoru Fujimori
 
息抜きにUnityであそぼう(3D Game Kit Liteの話)
息抜きにUnityであそぼう(3D Game Kit Liteの話)息抜きにUnityであそぼう(3D Game Kit Liteの話)
息抜きにUnityであそぼう(3D Game Kit Liteの話)Hiromichi Yamada
 
Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Naoki Aso
 
WebGLことはじめ
WebGLことはじめWebGLことはじめ
WebGLことはじめKazuya Hiruma
 
UXMILKallnight_システム開発でデザイナーは何をすればいい?
UXMILKallnight_システム開発でデザイナーは何をすればいい?UXMILKallnight_システム開発でデザイナーは何をすればいい?
UXMILKallnight_システム開発でデザイナーは何をすればいい?Takami Yusuke
 
20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門Mizuki Ugajin
 
デザイナーにGitは必要?
デザイナーにGitは必要?デザイナーにGitは必要?
デザイナーにGitは必要?Yumi uniq Ishizaki
 
ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容Sugimoto Chizuru
 
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89hiyohiyo
 
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~Yoshitaka Kawashima
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainerYuta Matsumura
 
ゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみたゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみた秀和 福永
 

Similar to ギブリーLt大会用プレゼン資料 (20)

[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
[TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
 
de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
de:code 2017 [TL12] "炎上案件ストッパー"はかく語りき 「プロジェクトの成果をあげるために意識した一つの事」
 
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
 
会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピング会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピング
 
楽しいゲーム開発管理
楽しいゲーム開発管理楽しいゲーム開発管理
楽しいゲーム開発管理
 
Kyash Androidで 新しい画面を作る時の コードの書き順
Kyash Androidで 新しい画面を作る時の コードの書き順Kyash Androidで 新しい画面を作る時の コードの書き順
Kyash Androidで 新しい画面を作る時の コードの書き順
 
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用
 
System.Drawing 周りの話
System.Drawing 周りの話System.Drawing 周りの話
System.Drawing 周りの話
 
息抜きにUnityであそぼう(3D Game Kit Liteの話)
息抜きにUnityであそぼう(3D Game Kit Liteの話)息抜きにUnityであそぼう(3D Game Kit Liteの話)
息抜きにUnityであそぼう(3D Game Kit Liteの話)
 
Live2Dの描画の裏側の話
Live2Dの描画の裏側の話Live2Dの描画の裏側の話
Live2Dの描画の裏側の話
 
WebGLことはじめ
WebGLことはじめWebGLことはじめ
WebGLことはじめ
 
UXMILKallnight_システム開発でデザイナーは何をすればいい?
UXMILKallnight_システム開発でデザイナーは何をすればいい?UXMILKallnight_システム開発でデザイナーは何をすればいい?
UXMILKallnight_システム開発でデザイナーは何をすればいい?
 
20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門
 
デザイナーにGitは必要?
デザイナーにGitは必要?デザイナーにGitは必要?
デザイナーにGitは必要?
 
Lt41
Lt41Lt41
Lt41
 
ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容ゲームの仕様書を書こう2 仕様書に記載する機能内容
ゲームの仕様書を書こう2 仕様書に記載する機能内容
 
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
 
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 
ゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみたゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみた
 

Recently uploaded

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (9)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

ギブリーLt大会用プレゼン資料