rubyの次に個人的にやりたい言語
DESCRIPTION
shinjuku.rb #2 でやった小話TRANSCRIPT
Shinjuku.rb #2
@Aiming Inc. 2012-‐02-‐22 Uchio KONDO
@udzura
• Uchio KONDO • Aiming Inc. でブラウザゲーム作ってます(new!)
• Sinatra 好き、rack 大事だよ派 • 2012年は割と書き物するかも。 • 詳細coming soon
テーマ
脱・Ruby
釣り気味ですが
• はい…… • 最近、ちゃんとほかの言語やらないとな〜 という個人的動機から色々考えてみました
!!注意!!
• 技術的な話をあまりしません • Tipsありません • Railsそこまで関係ないです • 感極まることはありませんでした
• 何というか、、、、好き勝手話します • 思考実験的な要素を多分に含みます
最近興味のある言語
• Elixir • hOps://github.com/josevalim/elixir
Elixir
• Erlang 上のVM(BEAM)で動く言語
特徴
• 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
パターンマッチ
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
アクター
# 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>
あと
• Erlangにない例外処理(もどき)とかもあって便利そう
• 全体にRubyリスペクト • IO.puts(!!!)
Elixirについて
• 詳細は、この場にもいらっしゃるであろう @tsuka さんもしくは @toshiwo さんが 詳しいはず!!!
• Shinjuku.ex やってます • 第0回は昨日でした
無茶ぶりすいません。。。
ここからが本題
• Elixirの紹介、というよりは。
7つの言語、7つの世界
• Matz監訳 • Erlangもある
読んでみて
• やっぱ、いろんな言語のことを知るのは 必要かつ有益
• でも、いろんな言語を「使う」のは???
たとえば
• Scala – LiWでも使ってみるか〜 – でも、サーバサイドのWebフレームワークとしては、すでにRailsを覚えている。。。
– LiW の良さに到達する前に。。。 – なんか「あと一歩」のモチベーションが続かない
ドメインの違い
• サーバサイドウェブフレームワーク – Ruby / Python / Perl / PHP
• クライアントサイド(ブラウザ – JavaScript / CoffeeScript
• スマフォ〜なクライアント – Objec^ve-‐C / Java(Dalvik)
• 非同期なサーバーサイド – Node.js / Erlang /Haskell その他関数型?
Rubyistが
• ドメインの壁を越えるには?
案その1
• Rubyでがんばる • 非同期系なら、Cool.io/EventMachine? • Rubyで書いてJavaScriptに変換?
案その2
• おとなしくそのドメインで一番使われている 言語をやる
案その2#
• そのドメインで使われている言語をやる、 • ただしRubyから得られた考え方を捨てない
Ruby way を捨てない、とは
• Ruby way – DRY とかCoC from Rails – 「かっこよく」「短く」書く – 名前重要 – 問題の解決のためにDSLを作る – テストを書く。それも、楽しく書く
• ※個人差はあります
捨てないために
• 「Rubyテイスト」を持った言語を選んでみる
たとえばCoffeeScript
• 大胆に短く書ける • Jasmineやばい
たとえばGroovy
• Androidのテストだけでも簡単に • hOp://d.hatena.ne.jp/kyon_mm/20110915/1316050128
• Spock • Gradle • JRubyよりガッツリJava寄りなので、 よりエコシステムが近く、結果ツールが多い
さっきのErlang
• CoffeeScript + Node.js でもいいけど! • 非同期サーバをかっこよく書けない?
David Thomas said:
• hOp://togeOer.com/li/261705 • (引用は @igaiga555 さんの孫引きです
「Rubyプログラマというラベルを自分に貼るのは止めよう。 ラベルは静的なもので、それはあなたの可能性を狭めてしまう。 大事なのは、あなたが何をするかだ。 名詞ではなく動詞。あなたがどう振る舞うかだ。」
そうは言っても
• Rubyから得られたコーディングプラクティスを 捨てることは無い
• というか、Rubyに慣れているのなら そうしたほうが効率よく覚えられるのでは ないだろうか?
そうは言っても
• 謙虚さ大事 • 「その言語でのプラクティス」も重要、 どんどん吸収しないとせっかく「殻から出た」 メリットが無いよ!
まとめ
• Ruby「だけ」から脱しよう! • そうは言っても、二つのコツ – ドメインの違う言語を狙う – Rubyの哲学を踏まえて書いていく
• たとえば、「Elixir、クール」から始まる 他言語探訪もよいのでは
• いいところはどんどん吸収しよう
まとめ2
• Shinjuku.ex わりとやりたい • 毎週水曜に
__END__
• ご清聴ありがとうございました!