More Related Content
PDF
実装して理解するLINE LoginとOpenID Connect入門 PDF
PDF
PDF
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム PDF
PDF
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話 PDF
PDF
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜 What's hot
PDF
Unity開発で使える設計の話+Zenjectの紹介 PDF
Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~ PDF
PPTX
PDF
PDF
スマホ(Android・iPhone)でWebRTC PPTX
PPTX
「NIST SP 800-204C サービスメッシュを利用したマイクロサービスベースのアプリケーション向けDevSecOpsの展開」概説 PDF
PDF
PDF
エンジニアから飛んでくるマサカリを受け止める心得 PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay PDF
PDF
PDF
データベース屋がHyperledger Fabricを検証してみた PDF
マイクロサービスにおけるテスト自動化 with Karate PDF
[Node-RED] ファンクションノードのデバッグどうしてる? PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜 PDF
Node-REDなら、DIYで産業用センサ・コントローラを繋いで見える化 PDF
ゲームの仕様書を書こう2 仕様書に記載する機能内容 Viewers also liked
PPTX
PPT
Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む) PDF
PDF
Base DDD(ドメイン駆動設計) 参考文献を巡る旅 PDF
DDD読書会@大阪(最終回)のLT資料「ドメイン駆動設計で気づいたこと~権利の概念とERP分析への適用」 #dddosaka PPTX
PPTX
20151110 ドメイン駆動設計によるサービス開発 PDF
PDF
PDF
PDF
PDF
PPTX
Swift3とObjective-Cのブリッジでハマったこと PPTX
PDF
モダンな開発現場になるためのお作法としてのツール活用 PDF
PDF
PPTX
クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」 PPTX
PDF
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく! Similar to Swiftにおけるclassとstructの使い分けをDDDから考える
PDF
SwiftにおけるClassとStructの使い分け PDF
PDF
PDF
20140822 Swift 勉強会 vol.3 - はぢめての Swift PPTX
【Swift】 それ、enumとstructでやってみましょう!! PDF
PDF
Swift 2.0 で変わったところ「後編」 #cswift PPTX
PDF
PDF
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか PDF
PDF
Swift事情2014夏 ~ Swift入門 beta6対応 PDF
20141220_iOS8マルチデバイス対応(Size Classes編) PDF
Swift 3 その基本ルールを眺める #cswift More from Takuya Kitamura
PDF
アジャイルの手法を取り入れたプロジェクトマネジメントの実例 PDF
大手ユーザー企業に入ってマネジメントでやってみたこと PPTX
グローバル空調メーカーによるIoTプラットフォームへの挑戦 PDF
サーバーレスアーキテクチャで実現するグローバル空調IoTプラットフォームへの挑戦 PDF
PDF
AngularJSとバックエンドサービスAppPotで作る業務システムハンズオン PDF
PDF
スマートデバイスSIの落とし穴と適した開発手法とは? PDF
PDF
Swiftにおけるclassとstructの使い分けをDDDから考える
- 1.
- 2.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
自己紹介
北村 拓也
@chipstar_light
NCデザイン&コンサルティング株式会社
• 東京4名、関西3名の全員が在宅勤務
• 滋賀でリモートワークやってます!
• 企業向けアプリ開発・UXデザイン
コミュニティ活動
• 京都でドメイン駆動設計やエッセンシャルスク
ラムの読書会などを開催してました
• 京都アジャイル勉強会(#京アジャ)のお手伝
いしてます
2
- 3.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved. 3
Swiftではclassとstructって
どう使い分けるのがいいの?
何かstructがいいみたいな話も聞くけど…
- 4.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
Swiftのclass
参照型(reference type)
可変(mutable)
1箇所での変更を、全ての同一参照オブジェクトに反映
させる事ができる
状態が変化しても同じものだと認識したいものには便
利
4
- 5.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
Swiftのstruct
値型(value type)
不変(immutable)
一度生成すると値は基本的に変えられない
値を変更する場合は、コピーして別のオブジェクトを
作る
参照を共有しても値を勝手に変えらる心配が無いため
副作用の心配が減る
5
- 6.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
ドメイン駆動設計(DDD)とは
話すと長くなるので割愛
参考程度にこちらを見てください。
• ドメイン駆動設計入門
http://www.slideshare.net/TakuyaKitamura1/ddd-29003356
または懇親会で聞いてください。
6
- 7.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
DDDにおけるモデルを表現する要素
Entity
Value Object
Service
7
今日の話題から
は外す
- 8.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
Entity
抽象的な連続性と同一性
• 固有のIDを持ち、実装をまたいだとしても追跡されるような連続性を持
つオブジェクト
• 分散環境下でも、永続化前後でも追跡できないといけない
属性(状態)に左右されない同一性
• 連続性を保証するIDは、オブジェクトの属性値に左右されない
• 属性値が全て同じでもIDが異なれば別もの
属性値が異なっていてもIDが同じであれば同じもの
• 同一性の判断とライフサイクルは、モデル毎に個別に設計する
具体例
• 顧客、口座、注文、在庫、etc...
8
- 9.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
Value Object
連続性と同一性が不要なオブジェクト
• 属性がどんな値であるかに焦点が置かれるもの
• 一過性のことも多く、操作のために生成されては破棄される
• 状態を変更できないもの(immutable)として扱う
他の何かの状態を記述する属性となる
• 「何」であるかだけが問題となり、「誰」であるか、あるいは「どれ」
であるかは問われないような設計の要素
• エンティティの属性としても使用される
具体例
• 色、量、地域、経路、etc...
9
- 10.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved. 10
Entityはclass
Value Objectはstruct
で実装するのが自然じゃない?
- 11.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved. 11
実装の段階でclassかstructか
を判断するのではなく、
設計(モデリング)の段階で意
図して識別できるのでは?
- 12.
Copyright ©2016, NCDesign & Consulting Co., Ltd. All rights reserved.
まとめ
OOP vs FP、class vs struct といろいろあるけど…
コンテキストを絞って目的に応じた使い分けが良さそう
特にDDDというコンテキストではうまく使い分けられそう
Swiftだからではなく、設計時に意識するのが良さそう
DDDをちょっとだけ入門してみたい人は
• ドメイン駆動設計入門
http://www.slideshare.net/TakuyaKitamura1/ddd-29003356
12
- 13.