Submit Search
Upload
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
•
1 like
•
2,243 views
耕
耕平 谷口
Follow
2016/02/12にe-ZUKA Rails拡大号で使った資料です。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 37
Download now
Download to read offline
Recommended
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラス
Nobukazu Hanada
Start!! Ruby
Start!! Ruby
mitim
Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)
universato
詳解! Decimal
詳解! Decimal
Tadashi Saito
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
Koichiro Ohba
JavascriptでRubyの作り方
JavascriptでRubyの作り方
Shuyo Nakatani
すいすいSwift
すいすいSwift
karupanerura
とあるFlashの自動生成
とあるFlashの自動生成
Akineko Shimizu
Recommended
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラス
Nobukazu Hanada
Start!! Ruby
Start!! Ruby
mitim
Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)
universato
詳解! Decimal
詳解! Decimal
Tadashi Saito
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
Koichiro Ohba
JavascriptでRubyの作り方
JavascriptでRubyの作り方
Shuyo Nakatani
すいすいSwift
すいすいSwift
karupanerura
とあるFlashの自動生成
とあるFlashの自動生成
Akineko Shimizu
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
Takayuki Kurosawa
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
Shigeru UCHIYAMA
Clojure
Clojure
Uehara Junji
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
LINE Corporation
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
こわくないScala
こわくないScala
Kota Mizushima
Scala is-unscared
Scala is-unscared
Kota Mizushima
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
tsudaa
AWS Amplify XRを動かしてみたら、、、
AWS Amplify XRを動かしてみたら、、、
Tsuyoshi Yamamoto
Ruby でつくる型付き Ruby
Ruby でつくる型付き Ruby
mametter
app-c.odp
app-c.odp
Makoto Kishimoto
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
Jjug ナイト・セミナー くわっちょ 20140822
Jjug ナイト・セミナー くわっちょ 20140822
くわっ ちょ
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介
mametter
ゴースト・と・で・の・お話
ゴースト・と・で・の・お話
wizstargaer
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
parrotstudio
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
信之 岩永
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Shin Sekaryo
No skk, no life.
No skk, no life.
digitalghost
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
Amazon Web Services Japan
More Related Content
What's hot
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
Takayuki Kurosawa
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
Shigeru UCHIYAMA
Clojure
Clojure
Uehara Junji
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
LINE Corporation
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
こわくないScala
こわくないScala
Kota Mizushima
Scala is-unscared
Scala is-unscared
Kota Mizushima
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
tsudaa
AWS Amplify XRを動かしてみたら、、、
AWS Amplify XRを動かしてみたら、、、
Tsuyoshi Yamamoto
Ruby でつくる型付き Ruby
Ruby でつくる型付き Ruby
mametter
app-c.odp
app-c.odp
Makoto Kishimoto
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
Jjug ナイト・セミナー くわっちょ 20140822
Jjug ナイト・セミナー くわっちょ 20140822
くわっ ちょ
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介
mametter
ゴースト・と・で・の・お話
ゴースト・と・で・の・お話
wizstargaer
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
parrotstudio
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
信之 岩永
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Shin Sekaryo
No skk, no life.
No skk, no life.
digitalghost
What's hot
(20)
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
Clojure
Clojure
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
リテラル文字列型までの道
リテラル文字列型までの道
こわくないScala
こわくないScala
Scala is-unscared
Scala is-unscared
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
AWS Amplify XRを動かしてみたら、、、
AWS Amplify XRを動かしてみたら、、、
Ruby でつくる型付き Ruby
Ruby でつくる型付き Ruby
app-c.odp
app-c.odp
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Jjug ナイト・セミナー くわっちょ 20140822
Jjug ナイト・セミナー くわっちょ 20140822
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介
ゴースト・と・で・の・お話
ゴースト・と・で・の・お話
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
No skk, no life.
No skk, no life.
Viewers also liked
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
Amazon Web Services Japan
スタートアップのエンジニアに求められる 働き方・マインドとそれを支える会社の取り組み
スタートアップのエンジニアに求められる 働き方・マインドとそれを支える会社の取り組み
Yasuhiro Horiuchi
AWS OpsWorksのご紹介
AWS OpsWorksのご紹介
Amazon Web Services Japan
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
ToshiakiArai
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
Amazon Web Services Japan
AWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorks
Amazon Web Services Japan
DevOps Practices:Configuration as Code
DevOps Practices:Configuration as Code
Doug Seven
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
【AWS初心者向けWebinar】AWSのプロビジョニングからデプロイまで
【AWS初心者向けWebinar】AWSのプロビジョニングからデプロイまで
Amazon Web Services Japan
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Justin Ryan
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Viewers also liked
(14)
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
スタートアップのエンジニアに求められる 働き方・マインドとそれを支える会社の取り組み
スタートアップのエンジニアに求められる 働き方・マインドとそれを支える会社の取り組み
AWS OpsWorksのご紹介
AWS OpsWorksのご紹介
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorks
DevOps Practices:Configuration as Code
DevOps Practices:Configuration as Code
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
【AWS初心者向けWebinar】AWSのプロビジョニングからデプロイまで
【AWS初心者向けWebinar】AWSのプロビジョニングからデプロイまで
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Similar to C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
第1部「一時間で覚えるruby」
第1部「一時間で覚えるruby」
Hiromu Shioya
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R について
tnoda
JavaとRubyのすてきな関係
JavaとRubyのすてきな関係
garden_tree
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005
gotohayato
ソフトウェア工学2023 12 コードフォーマット
ソフトウェア工学2023 12 コードフォーマット
Toru Tamaki
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
Mikiya Okuno
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Taketo Sano
Rubyの話を少し
Rubyの話を少し
Fumitake Taniguchi
ラボユース 最終成果報告会
ラボユース 最終成果報告会
shiftky
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
sn_monochr
Reudy on Ruby1.9
Reudy on Ruby1.9
Glass_saga
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会
悠平 鎌田
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ransui Iso
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについて
Tomoya Kawanishi
Numeric クラスについて
Numeric クラスについて
Tomoya Kawanishi
Ruby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
Kanako Kobayashi
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Scheme Interpreter in Ruby
Scheme Interpreter in Ruby
Masato HORINOUCHI
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
monglee
Similar to C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
(20)
第1部「一時間で覚えるruby」
第1部「一時間で覚えるruby」
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R について
JavaとRubyのすてきな関係
JavaとRubyのすてきな関係
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005
ソフトウェア工学2023 12 コードフォーマット
ソフトウェア工学2023 12 コードフォーマット
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Rubyの話を少し
Rubyの話を少し
ラボユース 最終成果報告会
ラボユース 最終成果報告会
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
Reudy on Ruby1.9
Reudy on Ruby1.9
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについて
Numeric クラスについて
Numeric クラスについて
Ruby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Scheme Interpreter in Ruby
Scheme Interpreter in Ruby
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
1.
Ruby入門
2.
谷口耕平 @ran_tan ハウインターナショナル でRuby on
Railsを使って 大学向けの教育サービスを 作ってます。 自己紹介
3.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。
4.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。
5.
!Rubyとは? • 島根県松江市在住の まつもとゆきひろ
さん (通称 Matz)を中心に開発されているOSSのプ ログラミング言語 • Rubyは今年で23歳くらい • 最新バージョンは v2.3.0 • 日本人のコミッターが多く、国内のRubyコ ミュニティは非常に活発。
6.
Rubyを動かそう! • RubyInstallerを使う (僕が普段windows使ってないので、詳しいことはわかりません><) •
RubyInstaller http://rubyinstaller.org/ • 自分でビルドする場合は以下の電子書籍が参考になるらしい。 • Ruby環境構築講座 Windows編 http://tatsu-zine.com/books/winrubybuild " $ Windows OS X Linux • 最初から入ってる。 • 本格的に使うなら rvm や rbenv の様な Ruby のバージョン管理ツールを使ってインストールす るのがオススメ。複数バージョンの Ruby をインストールし、切り替え可能。 • 日本だと rbenv の方がよく使われている印象。僕も rbenv 使ってます。 • rbenv https://github.com/rbenv/rbenv • rvm https://rvm.io/ • OS X と同様に rbenv や rvm を使ってインストールするのがオススメ。 参考: Rubyist Magazine - Rubyの歩き方 http://magazine.rubyist.net/?FirstStepRuby
7.
Rubyのここが好き Rubyは楽しい!
8.
Rubyは 「読みやすい」かつ 「書きやすい」ので 「作りたいものに集中出来る」 そして、作る事は楽しい。 短く言うと「Rubyは楽しい」
9.
「Rubyは楽しい!」を支えるもの • 全てが「オブジェクト」である • 充実した組み込みライブラリ •
ブロック構文 • 黒魔術(メタプログラミング)
10.
全てが「オブジェクト」である • 数値も文字列も配列もオブジェクトなので直感 的なコードが書ける 10.times do puts
'Hello, World!' end 'Hello, World!'.upcase # => "HELLO, WORLD!" # 1文字ずらすシーザー暗号の例 'Hello, World!'.each_char.map {|c| c.next }.join # => Ifmmp-!Xpsme" ['Ruby', 'Matz', 'eZUKA Rails'].select do |i| i.include?('R') end # => ["Ruby", "eZUKA Rails"]
11.
充実した組み込みライブラリ • ドキュメント http://docs.ruby-lang.org/ja/ •
特に、String, Array, Hashなどよく使うクラ スのメソッドが充実しているので、いろんな処 理がさくっと書ける。
12.
Rubyで使えるライブラリ ! Ruby 組み込みライブラリ 標準添付ライブラリ Rubyをインストールすると入るもの + + RubyGems OSSの
gem を gem コマンドでインストール可能 RubyGems.org には様々なライブラリ( gem )がある z z 沢山ある https://rubygems.org/ で探せる。 https://www.ruby-toolbox.com/ で探すのもオススメ。
13.
ブロック構文 • こういうの。 • メソッドの引数に処理の固まりを渡すことが出 来る。 •
Cだと関数ポインタ使うと似たような事できる けど、冗長になる。JavaでもLambda使うと 良いけど、比べると若干冗長。 10.times do puts 'Hello, World!' end
14.
Cの例 #include <stdio.h> void times(int
times , void (*func)(int)); void myfunc(int i); int main() { times(10, &myfunc); return 0; } void times(int times , void (*func)(int)) { for(int i = 0; i < times; i++) { func(i); } } void myfunc(int i) { printf("%i: Hello, World!n", i); }
15.
Javaの例
16.
黒魔術(メタプログラミング) • 下手に使うとダークサイドに落ちてしまうので、 通常の構文に慣れるまでは置いておきましょう。 • Rubyに新しい仕様を追加しているかのように 見えるほどの、非常に強い拡張性をRubyに与 えている。便利な分、使い方を誤ると暗黒面に 堕ちてしまう。 •
DSLの作成にもよく使われるテクニック
17.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。 done!
18.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。 done!
19.
ここからはRubyの基本構文 を見ていきましょう。
20.
Hello, World! class Hello
{ public static void main(String[] args) { System.out.println("Hello, World!"); } } #include <stdio.h> int main() { printf("Hello, World!n"); return 0; } puts 'Hello, World!'
21.
変数宣言 int num =
1; num = 1 • Rubyの変数には型がない。整数を入れた変数 に、後から文字列を代入することも出来る。
22.
条件分岐 # if if num.even? puts
'偶数だよ' elsif num.odd? puts '奇数だよ' else puts 'ほげー' end # unless unless num.even? puts '奇数だよ' else puts '偶数だよ' end # 後置 puts '偶数だよ' if num.even? puts '奇数だよ' unless num.even? if (num % 2 == 0) { printf("偶数だよn"); } else if (num % 2 != 0) { printf("奇数だよn"); } JavaはCとほとんど同じなので省略
23.
ループ array = [1,
2, 3, 4, 5] array.each do |i| puts i end int array[] = {1, 2, 3, 4, 5}; for(int i : array) { System.out.println(i); } int array[] = {1, 2, 3, 4, 5}; int array_length = sizeof array /sizeof array[0]; for(int i = 0; i < array_length; i++) { printf("%in", array[i]); }
24.
Rubyのループ • while, for,
loopといった構文もあるが、余り 使われない。 • eachメソッドを使うのが基本。 • Arrayなどの繰り返し処理の対象となるクラス はEnumerableモジュールがmixinされており、 mapやreduceと言ったメソッドも使える。 (長くなるので、割愛)
25.
ここからはOOPに関して、 RubyとJavaを比較していきます。 RubyとJavaはどちらもオブジェクト指向プログラ ミング(OOP)言語だけど、微妙に違ったアプローチ を取っている。
26.
型へのアプローチ ここにRubyとJavaの思想の違いが現れている。 Rubyはプログラマの書きやすさを壊さない範囲で性能面の最適化をやっている。 Javaははじめからパフォーマンスを考慮して、プリミティブ型を導入し、オブ ジェクト指向の世界を歪めている。 ! % 純粋なオブジェクト指向言語とは言いがたい • 全てがオブジェクトというわけではない • プリミティブ型がある Ruby Java 純粋なオブジェクト指向言語 •
全てがオブジェクト
27.
型付けへのアプローチ ! % 静的型付け • 変数やメソッドの宣言時に型を宣言する Ruby Java 動的型付け •
変数やメソッド作成時に型を宣言しない。 • ダックタイピング • 外から見た振る舞いが同じなら、同じ型と 見なす
28.
多重継承へのアプローチ ! % Interface • APIが宣言された Interface
をクラスに追加 し実装することで、クラスを拡張する。 • Java8からインターフェースが実装を持てる ようになったため、RubyのMixinと同じこ とが出来るようになった?? • 参考: http://equj65.net/tech/java8mixin/ Ruby Java Mixin • 機能が定義されたそれだけではインスタンス を生成できないModuleをクラスに追加し、 拡張する。
29.
private, protectedの違い ! % • クラス内のみアクセス可能 •
クラス内、同一パッケージ、サブクラスから アクセス可 Ruby Java • レシーバ無しでしか呼び出せない • そのメソッドを持つオブジェクトが self である コンテキスト(メソッド定義式や instance_eval )でのみ呼び出せる 参考: Ruby ¦ Ruby の private と protected 。歴史と使い分け - Qiita http://qiita.com/tbpgr/items/6f1c0c7b77218f74c63e 違うと言う事だけは覚えておきましょう。
30.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。 done! done!
31.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。 done! done!
32.
Ruby入門書籍 たのしいRuby • 他のプログラミング言語の経験やOOPへの理解 に自身が無い方にオススメ。 • 丁寧な説明でじっくり学べます。 初めてのRuby •
他の言語の経験があり、OOPも理解されている 方にオススメ。 • 簡潔な説明で、厚みも薄いので読みやすい。 パーフェクトRuby • 網羅的で良いらしいです。(僕は読んでないです、、) • rubyの構文や組み込みライブラリはもちろんメタプログラ ミングからgemの作り方までおさえてあります。
33.
もっとRubyを使いこなすための書籍 まつもとゆきひろコードの世界 • Rubyの思想的なところが理解できます。 • オブジェクト指向の話も多い。 プログラミング言語Ruby •
Rubyの仕様がわかる本。詳細に書いてある。 • 手元に1冊あると心強い。 メタプログラミングRuby • メタプログラミングの理解は脱Ruby初心者の条件!? • 1週間でメタプログラミングをマスター出来る構成になって ます。Rails内部のメタプログラミングについての解説もあ ります。
34.
もっとRubyを使いこなすための書籍 Effective Ruby • Rubyをもっと効果的に、効率的に使うための ノウハウが詰まってます。良書。 •
こちらも脱初心者のための必読書。 Rubyのしくみ • Rubyの中身が解説してある数少ない内の1冊 • 知的好奇心を満足させるためにも良い本。 (僕はまだ読めてないんですが、、)
35.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。 done! done! done!
36.
発表の内容 • CやJavaと比較しながらRubyを紹介します。 • 前提:どの言語を使うかは適材適所。利用シー ンの定義無しに言語の優劣は語れない。 •
最初にざっくりとRubyの特徴を説明します。 • 次にC、Javaと比較しながら基本的な構文を紹 介します。 • 最後にRubyの書籍を紹介します。 done! done! done!
37.
楽しいRubyistライフを お過ごしください!
Download now