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
360
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby と JavaScript の違い( Function 編)
サンプルコートはこちらに記載しています。
https://github.com/t0yohei/wejs33
t0yohei
June 28, 2019
More Decks by t0yohei
See All by t0yohei
Vue の Input における State は親で持つべきか子で持つべきか
t0yohei
0
88
Vue.js を使って Grid System を実装した話
t0yohei
2
7.8k
負債が溜まったレガシーフロントエンド画面を Vue.js でリプレイスした話
t0yohei
0
2.3k
プログラミング入門に失敗した話
t0yohei
0
230
【ITエンジニアが怪我で労災!?】 仕事中に足の小指が骨折したら起きること
t0yohei
0
460
Protocol Buffers で Web APIのスキーマ駆動開発がしたい
t0yohei
0
230
副業のノウハウ
t0yohei
0
210
ちょっとしたRubyの話
t0yohei
1
530
自作キーボード入門してみた
t0yohei
0
190
Other Decks in Programming
See All in Programming
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
290
dRuby over BLE
makicamel
2
380
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
590
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
210
Contextとはなにか
chiroruxx
1
350
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
270
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
550
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
6k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
200
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
The Cost Of JavaScript in 2023
addyosmani
55
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Leo the Paperboy
mayatellez
7
1.9k
Designing for humans not robots
tammielis
254
26k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Automating Front-end Workflow
addyosmani
1370
210k
Technical Leadership for Architectural Decision Making
baasie
3
420
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
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 再入門!
ありがとうございました!!