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
250
Ruby と JavaScript の違い( Function 編)
サンプルコートはこちらに記載しています。
https://github.com/t0yohei/wejs33
t0yohei
June 28, 2019
Tweet
Share
More Decks by t0yohei
See All by t0yohei
Vue.js を使って Grid System を実装した話
t0yohei
2
6k
負債が溜まったレガシーフロントエンド画面を Vue.js でリプレイスした話
t0yohei
0
1.8k
プログラミング入門に失敗した話
t0yohei
0
140
【ITエンジニアが怪我で労災!?】 仕事中に足の小指が骨折したら起きること
t0yohei
0
300
Protocol Buffers で Web APIのスキーマ駆動開発がしたい
t0yohei
0
140
副業のノウハウ
t0yohei
0
160
ちょっとしたRubyの話
t0yohei
1
400
自作キーボード入門してみた
t0yohei
0
110
Other Decks in Programming
See All in Programming
Amazon BedrockでサーバレスなAIお料理ボットを作成する!!
tosuri13
0
220
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
130
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
110
XStateでReactに秩序を与えたい
gizm000
0
720
メモリ最適化を究める!iOSアプリ開発における5つの重要なポイント
yhirakawa333
0
410
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
410
Amebaチョイス立ち上げの裏側 ~依存システムとの闘い~
daichi_igarashi
0
230
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
140
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
140
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
0
300
Rubyとクリエイティブコーディングの輪の広がり / The Growing Circle of Ruby and Creative Coding
chobishiba
1
260
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
800
Featured
See All Featured
BBQ
matthewcrist
83
9.1k
Robots, Beer and Maslow
schacon
PRO
157
8.2k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.6k
Web development in the modern age
philhawksworth
204
10k
RailsConf 2023
tenderlove
28
810
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
Art, The Web, and Tiny UX
lynnandtonic
294
20k
How to Think Like a Performance Engineer
csswizardry
16
950
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
The Language of Interfaces
destraynor
153
23k
Statistics for Hackers
jakevdp
793
220k
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 再入門!
ありがとうございました!!