SlideShare a Scribd company logo
1 of 20
Download to read offline
Objective-Cではじまるオブジェクト指向入門! 
田島 優也
田島 優也 
プライム・ストラテジー株式会社 チーフエンジニア 
おもにHTML、Sass、JavaScript、PHP、Linuxを扱い、フロントエンドか らサーバーサイドまで一通り担当。 
デザイナーをやっていた時期もありました。 
WordPressを中心として講演活動も行っています。 
自己紹介
オブジェクト指向とは?
独立したものが 
互いにメッセージを送りあって 
何かを構成するという考え方
オブジェクト指向は日常的な感覚 
私達は何かを認識するときそれが他のものと 違うと区別しています。 
そしてそれに対して何かメッセージを送り、 反応した結果を受け取っています。
カプセル化 
オブジェクト指向で不可欠な概念
どうやって実現しているか全くわからないけど、 
特定のことを頼めば 
確実にそれを実現してくれるもの を作ること
カプセル化のメリット 
使う側 
・その機能を使いたいときに、何度も再利用。 
また、使いたい機能以外隠蔽されているので何かに 依存した使い方をしないですむ 
使われる側 
・実現すべき結果の為により良い方法があったらそっ ちの実装に変更。また、その変更が他に影響しない。 
修正・変更・拡張が容易!
モジュール 
他のものと独立していて、何らかの役割をも ち、交換による影響が出ないようなものをモ ジュールといいます。 
オブジェクト指向は、カプセル化の原則に よって作成されたモジュールを組み合わせて 問題をとらえる手法と言い換えることもでき ます。
何故オブジェクト指向なのか? 
システムが複雑かつ大規模になるにつれ、 
オブジェクト指向は力を発揮します。
例えば社員10人の規模の会社と 
社員10000人規模の会社の 
仕事の進め方を考えてみて下さい。
社員数が増えれば増えるほどフローの標準化、 明確な役割分担(独立性とカプセル化)が必要不 可欠になるのと同じです。 
役割が明確でなければ、 
・どこに何を頼んだらいいのか、わからない。 
・頼んだ結果何をしてくれるのか、わからない。 
カプセル化がなければ、 
・ある役割の内部の実現方法をかえたら他の役割が機 能しなくなった。あるいは、提供されるものが変 わってしまった。
社員数が増えれば増えるほどフローの標準化、 明確な役割分担(独立性とカプセル化)が必要不 可欠になるのと同じです。 
役割が明確でなければ、 
・どこに何を頼んだらいいのか、わからない。 
・頼んだ結果何をしてくれるのか、わからない。 
カプセル化がなければ、 
・ある役割の内部の実現方法をかえたら他の役割が機 能しなくなった。あるいは、提供されるものが変 わってしまった。 
悲劇!
役割が明確でなければ、 
・何の関数を使ったらいいのか、何のデータを引き数 として渡せばいいのかわからない。 
・処理した結果何を返してくれるのか、わからない。 
カプセル化がなければ、 
・ある関数の内部の実現方法をかえたら他の関数が機 能しなくなった。あるいは、返されるものが変わっ てしまった。 
ソフトウェア開発も同じ
ソフトウェア開発も同じ 
モジュールの組み合わせでソフトウェア開発 をしよう!(という視点にたった場合) 
モジュールはできるだけ独立性の高いもので 構成しよう! 
オブジェクト指向で開発しよう!
Objective-Cにおける 
オブジェクト指向
Objective-Cにおいては 
クラスがモジュールの単位です
@interface(インターフェース部) 
・外部に公開される情報 
・どんなインスタンス変数、メソッドが定義 されているか定義 
@implementation(実装部) 
・外部に公開しない情報 
・実装に依存するコード、データ構造を記述 
カプセル化
まとめ 
・オブジェクト指向において核となる概念は モジュールのカプセル化。 
・オブジェクト指向に基づいた設計を行うと、 複雑かつ大規模なシステムが構築しやすい。 
・ Objective-Cにおいてはインターフェース部 と実装部にわけることでカプセル化をはか り、モジュールとしての独立性を高めてい る。
ご清聴ありがとうございました!

More Related Content

Similar to Objective-Cではじまるオブジェクト指向入門

だから、Webディレクターはやめられない Z
だから、Webディレクターはやめられない Zだから、Webディレクターはやめられない Z
だから、Webディレクターはやめられない ZYasufumi Nishiyama
 
Rubyを使ったオブジェクト指向デザイン実践:第一章発表
Rubyを使ったオブジェクト指向デザイン実践:第一章発表Rubyを使ったオブジェクト指向デザイン実践:第一章発表
Rubyを使ったオブジェクト指向デザイン実践:第一章発表Yuta Okazaki
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
TypeScript でオブジェクト指向プログラミング
TypeScript でオブジェクト指向プログラミングTypeScript でオブジェクト指向プログラミング
TypeScript でオブジェクト指向プログラミングkoji kobayashi
 
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由Kohei Taniguchi
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数Satoru Kodaira
 
フロントエンドというカオスな世界について
フロントエンドというカオスな世界についてフロントエンドというカオスな世界について
フロントエンドというカオスな世界についてmikakane
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成ssuser331f24
 
エンジニアがとるべき8つの行動
エンジニアがとるべき8つの行動エンジニアがとるべき8つの行動
エンジニアがとるべき8つの行動Hiroshi Ogino
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Roy Kim
 
複数人でSwift開発を行うには
複数人でSwift開発を行うには複数人でSwift開発を行うには
複数人でSwift開発を行うにはYuya Fujiwara
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃Teruo Adachi
 
Re:Cre Vol.14 | Web design process for the future
Re:Cre Vol.14 | Web design process for the futureRe:Cre Vol.14 | Web design process for the future
Re:Cre Vol.14 | Web design process for the futuremasaaki komori
 
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツフルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツTomoyuki Sugita
 

Similar to Objective-Cではじまるオブジェクト指向入門 (15)

だから、Webディレクターはやめられない Z
だから、Webディレクターはやめられない Zだから、Webディレクターはやめられない Z
だから、Webディレクターはやめられない Z
 
Rubyを使ったオブジェクト指向デザイン実践:第一章発表
Rubyを使ったオブジェクト指向デザイン実践:第一章発表Rubyを使ったオブジェクト指向デザイン実践:第一章発表
Rubyを使ったオブジェクト指向デザイン実践:第一章発表
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
TypeScript でオブジェクト指向プログラミング
TypeScript でオブジェクト指向プログラミングTypeScript でオブジェクト指向プログラミング
TypeScript でオブジェクト指向プログラミング
 
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
 
フロントエンドというカオスな世界について
フロントエンドというカオスな世界についてフロントエンドというカオスな世界について
フロントエンドというカオスな世界について
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成
 
エンジニアがとるべき8つの行動
エンジニアがとるべき8つの行動エンジニアがとるべき8つの行動
エンジニアがとるべき8つの行動
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
 
複数人でSwift開発を行うには
複数人でSwift開発を行うには複数人でSwift開発を行うには
複数人でSwift開発を行うには
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
Re:Cre Vol.14 | Web design process for the future
Re:Cre Vol.14 | Web design process for the futureRe:Cre Vol.14 | Web design process for the future
Re:Cre Vol.14 | Web design process for the future
 
Proposal
ProposalProposal
Proposal
 
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツフルリモート2ヶ月 やって編み出した コミュニケーションのコツ
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
 

Objective-Cではじまるオブジェクト指向入門