Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
JavaScript と Ruby の違い (Function 編) We Are JavaScripters! @33rd【初心者歓迎・LT会】 @t0yohei
Slide 2
Slide 2 text
自己紹介 @t0yohei ● Rails エンジニア ● 10ヶ月前に転職 ● JS 歴は約10ヶ月 ● 最近は Rails + Vue.js
Slide 3
Slide 3 text
We Are JavaScripters! 初参加
Slide 4
Slide 4 text
今日のテーマ
Slide 5
Slide 5 text
JavaScript と Ruby の違い (Function 編)
Slide 6
Slide 6 text
Function に馴染みがなかったので 色々調べて見た
Slide 7
Slide 7 text
そもそも Function (関数) って何?
Slide 8
Slide 8 text
Function (関数)とは(IT用語辞典) 関数とは、コンピュータプログラム上で定義されるサブルーチンの 一種で、数学の関数のように与えられた値(引数)を元に何らかの 計算や処理を行い、結果を呼び出し元に返すもののこと。
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
JavaScript における Function (関数) を調べてみた 正方形の計算関数(MDNのドキュメントから) https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Functions#Function_declarations
Slide 11
Slide 11 text
もう一度関数の説明を見てみると
Slide 12
Slide 12 text
関数とは(IT用語辞典) 関数とは、コンピュータプログラム上で定義されるサブルーチンの 一種で、数学の関数のように与えられた値(引数)を元に何らかの 計算や処理を行い、結果を呼び出し元に返すもののこと。
Slide 13
Slide 13 text
JavaScript における Function (関数) を調べてみた 正方形の計算関数(MDNのドキュメントから) https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Functions#Function_declarations
Slide 14
Slide 14 text
何となくわかったような...
Slide 15
Slide 15 text
そういえば関数 (Function) と メソッド (Method) の違いって?
Slide 16
Slide 16 text
メソッドとは(JavaScript | MDN) メソッドとはあるオブジェクトに結びつけられた関数 のことです。
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
実際にどういうものか調べて見た
Slide 19
Slide 19 text
JavaScript における Method (メソッド) 1
Slide 20
Slide 20 text
JavaScript における Method (メソッド) 2
Slide 21
Slide 21 text
JavaScript における Method (メソッド) 3
Slide 22
Slide 22 text
確かに、オブジェクトに 紐づけられた関数だった
Slide 23
Slide 23 text
まとめると
Slide 24
Slide 24 text
● Function (関数) ○ 与えられた値(引数)を元に何らかの計算や処理を行い、 結果を呼び出し元に返すもの ● メソッド ○ あるオブジェクトに結びつけられた関数
Slide 25
Slide 25 text
ふむふむ
Slide 26
Slide 26 text
Function 完全に理解した!!
Slide 27
Slide 27 text
そういえば
Slide 28
Slide 28 text
Ruby だと Function って どうなってるんだろう?
Slide 29
Slide 29 text
ここから Ruby の話
Slide 30
Slide 30 text
Ruby では Function って単語に ほとんど出会わない
Slide 31
Slide 31 text
一旦先にメソッドを見て行ってみる
Slide 32
Slide 32 text
メソッドとは(JavaScript | MDN) メソッドとはあるオブジェクトに結びつけられた関数 のことです。
Slide 33
Slide 33 text
とりあえずオブジェクトを作ろう
Slide 34
Slide 34 text
Ruby では JS の ような オブジェクト生成ができない
Slide 35
Slide 35 text
let object = {}; とかできない
Slide 36
Slide 36 text
どうするのか
Slide 37
Slide 37 text
一般的にはクラスから (インスタンス)オブジェクトを生成する
Slide 38
Slide 38 text
こんな感じ
Slide 39
Slide 39 text
メソッドは、クラス内で 定義しておくする
Slide 40
Slide 40 text
Ruby における method (メソッド)
Slide 41
Slide 41 text
余談: ちなみに同じことをJSで書くと(ES6)
Slide 42
Slide 42 text
なるほど、メソッドはわかった
Slide 43
Slide 43 text
じゃあ Ruby で Function ってどうやんの?
Slide 44
Slide 44 text
A: 書けない
Slide 45
Slide 45 text
No content
Slide 46
Slide 46 text
なぜか
Slide 47
Slide 47 text
Ruby (Wikipedia) Ruby においては整数や文字列なども含めデータ型はすべてが オブジェクトであり、純粋なオブジェクト指向言語といえる。
Slide 48
Slide 48 text
Ruby の世界ではすべてがオブジェクト
Slide 49
Slide 49 text
そのためすべてがメソッドになる
Slide 50
Slide 50 text
まじかよ
Slide 51
Slide 51 text
実際に動かしてみると確かに全てがオブジェクトになってる
Slide 52
Slide 52 text
Ruby の世界に関数は存在しない
Slide 53
Slide 53 text
そのため、 JS でできることが Ruby では簡 単にはできないことがある
Slide 54
Slide 54 text
変数に関数を代入
Slide 55
Slide 55 text
JSで言うこれ
Slide 56
Slide 56 text
Ruby で書こうとすると sample_function の返り 値が入ってる
Slide 57
Slide 57 text
なぜそうなるのか sample_function の実行結果が入ってる sample_function の実行結果が入ってる ruby では、メソッドの呼び出しで括弧を省略できる
Slide 58
Slide 58 text
ただ、変数にメソッドを 代入できないこともない
Slide 59
Slide 59 text
こう書く
Slide 60
Slide 60 text
なにこのメタプログラミング感
Slide 61
Slide 61 text
No content
Slide 62
Slide 62 text
メタプログラミングがしたかったら Ruby を書こう
Slide 63
Slide 63 text
最後に
Slide 64
Slide 64 text
個人的に JS と Ruby で手触りが違うなと 思ったところを話してみた
Slide 65
Slide 65 text
Ruby は クラスがわかれば理解が進むけ ど、JSの場合は何なんだろう??
Slide 66
Slide 66 text
参考 ● Procを制する者がRubyを制す(嘘) ● Re: Rubyの関数とメソッドの違いってなんだろ! ● JSのクラスについて ● ES6はクラスベース?プロトタイプベース? ● Javascriptでオブジェクト指向するときに覚えておくべきこと ● 最強オブジェクト指向言語 JavaScript 再入門!
Slide 67
Slide 67 text
ありがとうございました!!