Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby と JavaScript の違い( Function 編)
Search
t0yohei
June 28, 2019
Programming
1
270
Ruby と JavaScript の違い( Function 編)
サンプルコートはこちらに記載しています。
https://github.com/t0yohei/wejs33
t0yohei
June 28, 2019
Tweet
Share
More Decks by t0yohei
See All by t0yohei
Vue の Input における State は親で持つべきか子で持つべきか
t0yohei
0
2
Vue.js を使って Grid System を実装した話
t0yohei
2
6.5k
負債が溜まったレガシーフロントエンド画面を Vue.js でリプレイスした話
t0yohei
0
1.9k
プログラミング入門に失敗した話
t0yohei
0
150
【ITエンジニアが怪我で労災!?】 仕事中に足の小指が骨折したら起きること
t0yohei
0
310
Protocol Buffers で Web APIのスキーマ駆動開発がしたい
t0yohei
0
160
副業のノウハウ
t0yohei
0
170
ちょっとしたRubyの話
t0yohei
1
430
自作キーボード入門してみた
t0yohei
0
120
Other Decks in Programming
See All in Programming
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
140
return文におけるstd::moveについて
onihusube
1
750
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
130
急成長期の品質とスピードを両立するフロントエンド技術基盤
soarteclab
0
920
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
命名をリントする
chiroruxx
1
380
Refactor your code - refactor yourself
xosofox
1
260
テスト自動化失敗から再挑戦しチームにオーナーシップを委譲した話/STAC2024 macho
ma_cho29
1
1.3k
Full stack testing :: basic to basic
up1
1
930
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
200
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
We Have a Design System, Now What?
morganepeng
51
7.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
How to Ace a Technical Interview
jacobian
276
23k
The Cult of Friendly URLs
andyhume
78
6.1k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
The Invisible Side of Design
smashingmag
298
50k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
KATA
mclloyd
29
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Transcript
JavaScript と Ruby の違い (Function 編) We Are JavaScripters! @33rd【初心者歓迎・LT会】
@t0yohei
自己紹介 @t0yohei • Rails エンジニア • 10ヶ月前に転職 • JS 歴は約10ヶ月
• 最近は Rails + Vue.js
We Are JavaScripters! 初参加
今日のテーマ
JavaScript と Ruby の違い (Function 編)
Function に馴染みがなかったので 色々調べて見た
そもそも Function (関数) って何?
Function (関数)とは(IT用語辞典) 関数とは、コンピュータプログラム上で定義されるサブルーチンの 一種で、数学の関数のように与えられた値(引数)を元に何らかの 計算や処理を行い、結果を呼び出し元に返すもののこと。
None
JavaScript における Function (関数) を調べてみた 正方形の計算関数(MDNのドキュメントから) https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Functions#Function_declarations
もう一度関数の説明を見てみると
関数とは(IT用語辞典) 関数とは、コンピュータプログラム上で定義されるサブルーチンの 一種で、数学の関数のように与えられた値(引数)を元に何らかの 計算や処理を行い、結果を呼び出し元に返すもののこと。
JavaScript における Function (関数) を調べてみた 正方形の計算関数(MDNのドキュメントから) https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Functions#Function_declarations
何となくわかったような...
そういえば関数 (Function) と メソッド (Method) の違いって?
メソッドとは(JavaScript | MDN) メソッドとはあるオブジェクトに結びつけられた関数 のことです。
None
実際にどういうものか調べて見た
JavaScript における Method (メソッド) 1
JavaScript における Method (メソッド) 2
JavaScript における Method (メソッド) 3
確かに、オブジェクトに 紐づけられた関数だった
まとめると
• Function (関数) ◦ 与えられた値(引数)を元に何らかの計算や処理を行い、 結果を呼び出し元に返すもの • メソッド ◦ あるオブジェクトに結びつけられた関数
ふむふむ
Function 完全に理解した!!
そういえば
Ruby だと Function って どうなってるんだろう?
ここから Ruby の話
Ruby では Function って単語に ほとんど出会わない
一旦先にメソッドを見て行ってみる
メソッドとは(JavaScript | MDN) メソッドとはあるオブジェクトに結びつけられた関数 のことです。
とりあえずオブジェクトを作ろう
Ruby では JS の ような オブジェクト生成ができない
let object = {}; とかできない
どうするのか
一般的にはクラスから (インスタンス)オブジェクトを生成する
こんな感じ
メソッドは、クラス内で 定義しておくする
Ruby における method (メソッド)
余談: ちなみに同じことをJSで書くと(ES6)
なるほど、メソッドはわかった
じゃあ Ruby で Function ってどうやんの?
A: 書けない
None
なぜか
Ruby (Wikipedia) Ruby においては整数や文字列なども含めデータ型はすべてが オブジェクトであり、純粋なオブジェクト指向言語といえる。
Ruby の世界ではすべてがオブジェクト
そのためすべてがメソッドになる
まじかよ
実際に動かしてみると確かに全てがオブジェクトになってる
Ruby の世界に関数は存在しない
そのため、 JS でできることが Ruby では簡 単にはできないことがある
変数に関数を代入
JSで言うこれ
Ruby で書こうとすると sample_function の返り 値が入ってる
なぜそうなるのか sample_function の実行結果が入ってる sample_function の実行結果が入ってる ruby では、メソッドの呼び出しで括弧を省略できる
ただ、変数にメソッドを 代入できないこともない
こう書く
なにこのメタプログラミング感
None
メタプログラミングがしたかったら Ruby を書こう
最後に
個人的に JS と Ruby で手触りが違うなと 思ったところを話してみた
Ruby は クラスがわかれば理解が進むけ ど、JSの場合は何なんだろう??
参考 • Procを制する者がRubyを制す(嘘) • Re: Rubyの関数とメソッドの違いってなんだろ! • JSのクラスについて • ES6はクラスベース?プロトタイプベース?
• Javascriptでオブジェクト指向するときに覚えておくべきこと • 最強オブジェクト指向言語 JavaScript 再入門!
ありがとうございました!!