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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
92
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
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
190
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
共通化で考えるべきは、実装より公開する型だった
codeegg
0
220
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
110
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
えっ!!コードを読まずに開発を!?
hananouchi
0
200
Claude Team Plan導入・ガイド
tk3fftk
0
190
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.6k
継続モナドとリアクティブプログラミング
yukikurage
3
590
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.4k
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
Featured
See All Featured
HDC tutorial
michielstock
2
740
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
For a Future-Friendly Web
brad_frost
183
10k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
630
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
330
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.6k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
260
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Faster Mobile Websites
deanohume
310
32k
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 再入門!
ありがとうございました!!