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

ありがとうございました!!