Suche senden
Hochladen
Rubyのクラスとメソッド_エスキュービズム勉強会0530
•
0 gefällt mir
•
726 views
エンジニア勉強会 エスキュービズム
Folgen
5月30日に開催されたエスキュービズム社内勉強会での資料になります。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 24
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
第23回目
第23回目
XMLProJ2014
Javascript3
Javascript3
Kiminari Homma
サーバサイドNodeの使い道
サーバサイドNodeの使い道
pospome
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
Nobuhiro Nakashima
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
エンジニア勉強会 エスキュービズム
Empfohlen
第23回目
第23回目
XMLProJ2014
Javascript3
Javascript3
Kiminari Homma
サーバサイドNodeの使い道
サーバサイドNodeの使い道
pospome
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
Nobuhiro Nakashima
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
エンジニア勉強会 エスキュービズム
小売りにおけるAIの可能性
小売りにおけるAIの可能性
エンジニア勉強会 エスキュービズム
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
エンジニア勉強会 エスキュービズム
はじめての品質
はじめての品質
エンジニア勉強会 エスキュービズム
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
エンジニア勉強会 エスキュービズム
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
エンジニア勉強会 エスキュービズム
ほんのりTDD
ほんのりTDD
エンジニア勉強会 エスキュービズム
IoTで何をやったか
IoTで何をやったか
エンジニア勉強会 エスキュービズム
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
エンジニア勉強会 エスキュービズム
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
エンジニア勉強会 エスキュービズム
VRのコンテンツ
VRのコンテンツ
エンジニア勉強会 エスキュービズム
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
エンジニア勉強会 エスキュービズム
レイアウトについて
レイアウトについて
エンジニア勉強会 エスキュービズム
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
エンジニア勉強会 エスキュービズム
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
エンジニア勉強会 エスキュービズム
IoTのIを考えてみる話
IoTのIを考えてみる話
エンジニア勉強会 エスキュービズム
AzureのIaaSとかの話
AzureのIaaSとかの話
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
エンジニア勉強会 エスキュービズム
Weitere ähnliche Inhalte
Mehr von エンジニア勉強会 エスキュービズム
小売りにおけるAIの可能性
小売りにおけるAIの可能性
エンジニア勉強会 エスキュービズム
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
エンジニア勉強会 エスキュービズム
はじめての品質
はじめての品質
エンジニア勉強会 エスキュービズム
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
エンジニア勉強会 エスキュービズム
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
エンジニア勉強会 エスキュービズム
ほんのりTDD
ほんのりTDD
エンジニア勉強会 エスキュービズム
IoTで何をやったか
IoTで何をやったか
エンジニア勉強会 エスキュービズム
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
エンジニア勉強会 エスキュービズム
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
エンジニア勉強会 エスキュービズム
VRのコンテンツ
VRのコンテンツ
エンジニア勉強会 エスキュービズム
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
エンジニア勉強会 エスキュービズム
レイアウトについて
レイアウトについて
エンジニア勉強会 エスキュービズム
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
エンジニア勉強会 エスキュービズム
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
エンジニア勉強会 エスキュービズム
IoTのIを考えてみる話
IoTのIを考えてみる話
エンジニア勉強会 エスキュービズム
AzureのIaaSとかの話
AzureのIaaSとかの話
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
エンジニア勉強会 エスキュービズム
Mehr von エンジニア勉強会 エスキュービズム
(20)
小売りにおけるAIの可能性
小売りにおけるAIの可能性
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
はじめての品質
はじめての品質
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
ほんのりTDD
ほんのりTDD
IoTで何をやったか
IoTで何をやったか
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
VRのコンテンツ
VRのコンテンツ
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
レイアウトについて
レイアウトについて
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
IoTのIを考えてみる話
IoTのIを考えてみる話
AzureのIaaSとかの話
AzureのIaaSとかの話
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
Rubyのクラスとメソッド_エスキュービズム勉強会0530
1.
Rubyのクラスとメソッド
2.
目次 クラス定義 メソッド探索 Mix-in 特異クラス クラスメソッド
3.
クラス定義
4.
Rubyのオブジェクト指向 Rubyはオブジェクト指向型言語 クラス、継承、モジュール等を使用出来る Rubyは全てがオブジェクトで出来ている 例:クラス = Classクラスのオブジェクト
5.
Classもオブジェクト クラスもオブジェクトなので、変数へ格納出来る class Foo end a =
Foo # Fooクラスを変数へ格納 a.new(1) # Foo.newと同じように使用出来る
6.
依存クラスの参照 インスタンスから生成元のクラスオブジェクトを参 照出来る クラスオブジェクトから親クラスを参照出来る class Foo end foo1 =
Foo.new() # Fooのインスタンスを作成 foo2 = foo1.class.new() # foo1.classからインスタンスを作成 puts foo1.class == foo2.class #=> true class FooExt < Foo end puts FooExt.superclass == Foo #=> true
7.
メソッド探索
8.
メソッド Rubyのメソッドは大きく2つ インスタンスメソッド クラスメソッド
9.
インスタンスメソッド インスタンスをレシーバとするメソッド instance_methodsメソッドから一覧を取得可能 スーパークラスで定義されたインスタンスメソッド も使用可能
10.
Rubyの継承チェーン ancestorsメソッドから継承チェーンを確認出来る BasicObjectクラスは全てのクラスのスーパークラス ほとんどのクラスはObjectクラス、Kernelモジュー ルを継承 String Comparable Object
Kernel BasicObject Integer Numeric Comparable Object Kenerl BasicObject Objectクラス・Kernelモジュール・Basic Objectクラスの メソッドは、ほとんどのクラスで使用可能。
11.
メソッド探索 インスタンスは、呼び出されたメソッドが見つかるまで、 継承元クラスのインスタンスメソッドを探す。 最終的に見つからない場合、 BasicObject#method_missingメソッドを呼び出す。 Foo Object Kernel BasicObjec t Foo インスタンス
12.
Mix-InMix-InMix-InMix-In
13.
Mix-in クラスにモジュールをincludeする事 Rubyの継承は単一継承のみ許されている 複数の機能を継承したい時にMix-inを使用する。
14.
モジュール 定義はクラスコードとほぼ同じで、class文の代わり にmodule文を使う クラスとの相違点 単独ではインスタンス化できない クラスや他のモジュールにincludeできる 複数のクラスで適用したい機能をモジュールで定義 する
15.
モジュールの継承チェーン モジュールをincludeした場合、オブジェクトの継承 チェーンに無名クラスとして追加される。 この無名クラスはsuperclassメソッドからは参照出 来ない。 FooExt Bar Foo class
Foo end module Bar end class FooExt < Foo include Bar end puts FooExt.superclass #=> Foo FooExt.superclass
16.
特異クラス
17.
特異クラス 特定のインスタンスからのみ参照される特別なクラ ス foo1 = Foo.new def
foo1.hoge # fooの特異クラスにhogeメソッドを定義 puts “hoge” end foo2 = Foo.new foo1.hoge #=> “hoge” foo2.hoge #=> NoMethodError
18.
特異クラスの継承チェーン メソッドを定義した際、元のクラスを継承した特異 クラスが生成される。 インスタンスは特異クラスのインスタンスのように なる。 classメソッドからは特異クラスは参照出来ず、元の クラスが返される。 #foo1 Foo foo2foo1
19.
再オープン 再オープン式 foo1 = Foo.new class
<< foo1 # foo1を再オープン def hoge end end 再オープン式を使って特異クラスを定義する事も出来る
20.
extendメソッド 再オープンを使用して特異クラスへモジュールを Mix-inする事が出来る。 特異クラスへのMix-inはよく使用する為、同じ動作をするextendメ ソッドが用意されている。 foo1 = Foo.new(1) class
<< foo1 include Bar end foo1 = Foo.new(1) foo1.extend(Bar)
21.
クラスメソッド
22.
Classクラス Ruby内でクラスを表すクラス クラスはClassクラスのインスタンス class Foo end Foo.class #=>
Class Foo = Class.new Foo.class #=> Class
23.
クラスメソッド クラスオブジェクトをレシーバとするメソッド クラスの特異クラスのメソッドとして定義 Foo = Class.new def
Foo.hoge end class Foo def self.hoge end end foo1 = Foo.new def foo1.hoge end class << foo1 def hoge end end クラスメソッドの定義例: 特異クラスの定義例:
24.
まとめ Rubyはメソッドチェーンが大事。 オブジェクトモデルの解釈は多くある 他の解説も読んでみると理解が増す 参考・出典:Ruby 公式資格教科書、
Jetzt herunterladen