rubyの次に個人的にやりたい言語

33
Shinjuku.rb #2 @Aiming Inc. 20120222 Uchio KONDO

Upload: uchio-kondo

Post on 29-Jul-2015

1.588 views

Category:

Documents


1 download

DESCRIPTION

shinjuku.rb #2 でやった小話

TRANSCRIPT

Page 1: Rubyの次に個人的にやりたい言語

Shinjuku.rb  #2

@Aiming  Inc.  2012-­‐02-­‐22  Uchio  KONDO

Page 2: Rubyの次に個人的にやりたい言語

@udzura

•  Uchio  KONDO  •  Aiming  Inc.  でブラウザゲーム作ってます(new!)  

•  Sinatra  好き、rack  大事だよ派  •  2012年は割と書き物するかも。  •  詳細coming  soon  

Page 3: Rubyの次に個人的にやりたい言語

テーマ

 脱・Ruby

Page 4: Rubyの次に個人的にやりたい言語

釣り気味ですが

•  はい……  •  最近、ちゃんとほかの言語やらないとな〜  という個人的動機から色々考えてみました  

Page 5: Rubyの次に個人的にやりたい言語

!!注意!!

•  技術的な話をあまりしません  •  Tipsありません  •  Railsそこまで関係ないです  •  感極まることはありませんでした  

•  何というか、、、、好き勝手話します  •  思考実験的な要素を多分に含みます

Page 6: Rubyの次に個人的にやりたい言語

最近興味のある言語

•  Elixir  •  hOps://github.com/josevalim/elixir  

Page 7: Rubyの次に個人的にやりたい言語

Elixir

•  Erlang  上のVM(BEAM)で動く言語  

Page 8: Rubyの次に個人的にやりたい言語

特徴

•  Ruby  にクリソツ

if 1 + 1 == 3 do IO.puts "Impossible" elsif: 1 + 1 == 2 IO.puts "This will match" elsif: true IO.puts "This won't because the one above matched" else: IO.puts "This won't" end

Page 9: Rubyの次に個人的にやりたい言語

パターンマッチ

case { 1, 2, 3 } do match: { 4, 5, 6 } IO.puts "This won't match" match: { 1, x, 3 } IO.puts "This will match and assign x" else: IO.puts "No match" end

Page 10: Rubyの次に個人的にやりたい言語

アクター

# Get the current process id iex> current_pid = self() # Spawn another process that will send a message to current_pid iex> spawn fn(do: current_pid <- { :hello, self() }) <0.36.0> # Collect the message iex> receive do ...> match: { :hello, pid } ...> IO.puts "Hello from #{pid}" ...> end Hello from <0.36.0>

Page 11: Rubyの次に個人的にやりたい言語

あと

•  Erlangにない例外処理(もどき)とかもあって便利そう  

•  全体にRubyリスペクト  •  IO.puts(!!!)

Page 12: Rubyの次に個人的にやりたい言語

Elixirについて

•  詳細は、この場にもいらっしゃるであろう  @tsuka  さんもしくは  @toshiwo  さんが  詳しいはず!!!  

•  Shinjuku.ex  やってます  •  第0回は昨日でした

Page 13: Rubyの次に個人的にやりたい言語

無茶ぶりすいません。。。

Page 14: Rubyの次に個人的にやりたい言語

ここからが本題

•  Elixirの紹介、というよりは。

Page 15: Rubyの次に個人的にやりたい言語

7つの言語、7つの世界

•  Matz監訳  •  Erlangもある

Page 16: Rubyの次に個人的にやりたい言語

読んでみて

•  やっぱ、いろんな言語のことを知るのは  必要かつ有益  

•  でも、いろんな言語を「使う」のは???

Page 17: Rubyの次に個人的にやりたい言語

たとえば

•  Scala  – LiWでも使ってみるか〜  – でも、サーバサイドのWebフレームワークとしては、すでにRailsを覚えている。。。  

– LiW  の良さに到達する前に。。。  – なんか「あと一歩」のモチベーションが続かない

Page 18: Rubyの次に個人的にやりたい言語

ドメインの違い

•  サーバサイドウェブフレームワーク  – Ruby  /  Python  /  Perl    /  PHP  

•  クライアントサイド(ブラウザ  –  JavaScript  /  CoffeeScript  

•  スマフォ〜なクライアント  – Objec^ve-­‐C  /  Java(Dalvik)  

•  非同期なサーバーサイド  – Node.js  /  Erlang  /Haskell  その他関数型?

Page 19: Rubyの次に個人的にやりたい言語

Rubyistが

•  ドメインの壁を越えるには?  

Page 20: Rubyの次に個人的にやりたい言語

案その1

•  Rubyでがんばる  •  非同期系なら、Cool.io/EventMachine?  •  Rubyで書いてJavaScriptに変換?

Page 21: Rubyの次に個人的にやりたい言語

案その2

•  おとなしくそのドメインで一番使われている  言語をやる

Page 22: Rubyの次に個人的にやりたい言語

案その2#

•  そのドメインで使われている言語をやる、  •  ただしRubyから得られた考え方を捨てない

Page 23: Rubyの次に個人的にやりたい言語

Ruby  way  を捨てない、とは

•  Ruby  way  – DRY  とかCoC  from  Rails  – 「かっこよく」「短く」書く  – 名前重要  – 問題の解決のためにDSLを作る  – テストを書く。それも、楽しく書く  

•  ※個人差はあります  

Page 24: Rubyの次に個人的にやりたい言語

捨てないために

•  「Rubyテイスト」を持った言語を選んでみる  

Page 25: Rubyの次に個人的にやりたい言語

たとえばCoffeeScript

•  大胆に短く書ける  •  Jasmineやばい

Page 26: Rubyの次に個人的にやりたい言語

たとえばGroovy

•  Androidのテストだけでも簡単に  •  hOp://d.hatena.ne.jp/kyon_mm/20110915/1316050128   

•  Spock  •  Gradle  •  JRubyよりガッツリJava寄りなので、  よりエコシステムが近く、結果ツールが多い  

Page 27: Rubyの次に個人的にやりたい言語

さっきのErlang

•  CoffeeScript  +  Node.js  でもいいけど!  •  非同期サーバをかっこよく書けない?

Page 28: Rubyの次に個人的にやりたい言語

David  Thomas  said:

 

•  hOp://togeOer.com/li/261705    •  (引用は  @igaiga555  さんの孫引きです

「Rubyプログラマというラベルを自分に貼るのは止めよう。  ラベルは静的なもので、それはあなたの可能性を狭めてしまう。  大事なのは、あなたが何をするかだ。  名詞ではなく動詞。あなたがどう振る舞うかだ。」

Page 29: Rubyの次に個人的にやりたい言語

そうは言っても

•  Rubyから得られたコーディングプラクティスを  捨てることは無い  

•  というか、Rubyに慣れているのなら  そうしたほうが効率よく覚えられるのでは  ないだろうか?

Page 30: Rubyの次に個人的にやりたい言語

そうは言っても

•  謙虚さ大事  •  「その言語でのプラクティス」も重要、  どんどん吸収しないとせっかく「殻から出た」  メリットが無いよ!

Page 31: Rubyの次に個人的にやりたい言語

まとめ

•  Ruby「だけ」から脱しよう!  •  そうは言っても、二つのコツ  – ドメインの違う言語を狙う  – Rubyの哲学を踏まえて書いていく  

•  たとえば、「Elixir、クール」から始まる  他言語探訪もよいのでは  

•  いいところはどんどん吸収しよう

Page 32: Rubyの次に個人的にやりたい言語

まとめ2

•  Shinjuku.ex  わりとやりたい  •  毎週水曜に

Page 33: Rubyの次に個人的にやりたい言語

__END__

•  ご清聴ありがとうございました!