狠狠撸

狠狠撸Share a Scribd company logo
搁耻产测使いのための



      Scalaのススメ

      Presented by おおかゆか
自己紹介:
おおかゆか (id: oukayuka)
フリーランスのWebプログラマ。
元々はPHPerでしたが、最近はもっぱらRails案件
を生業に活動中。
最近、エンジニアがお金について考えるための
rake:money という勉強会を始めました。
10/15に第2回をやるのでATND見てね。
      http://atnd.org/events/1626
What's Scala?
Scalaって何それおいしいの?
Scalable Language
が、その名前の由来。
ただしここで言う「スケーラブル」とは、簡単な
         スケーラブル
スクリプトから大規模な基幹システムまで同じ
ように書けるという意味らしい。
JVM上で動く関数型言語で、初版リリースが
2003年とプログラム言語としては最後発の部
類。作者はスイス連邦工科大学のMartin
Odersky(マーティン?オダースキー)教授。
Odersky
Scalaはいいとこ取りの言語(1)
最後発であるのをいいことに、Scalaは既存の
言語をいいとこ取りし放題なのが特徴。

まずはJavaからいいとこ取り。
コンパイルするとJavaとまったく同じJVM用の
バイトコードになるため、Javaの高度なGCや最
適化されまくりのパフォーマンス、そして膨大な
ライブラリ群をそのまま利用することが可能。
Scalaはいいとこ取りの言語(2)
その他の言語からも、
 Ruby の Mix-in のような Trait、DSLフレンド
 リーなゆるい文法
 OCaml によく似た型推論
 Haskell ばりのパターンマッチ、パーサーコン
 ビネータ
 Erlang からまんまパクリのアクターモデル
等がいいとこ取りされている。
Scalaはハイブリッド言語(1)
Scalaはハイブリッド言語である。
Java以上に徹底したオブジェクト指向言語であ
           オブジェクト指向言語
ると同時に、関数型言語でもある。
       関数型言語
これは作者のOdersky教授の信念で、OOPと
関数型の設計が高度に融合したところに真の
スケーラビリティがあるというもの。
Pizza(言語) → Generic Java(コンパイラ) →
Scala と一貫してきた彼の思想である。
Scalaはハイブリッド言語(2)
Scalaはハイブリッド言語である。
Javaと同様のバイトコードにコンパイルできる
コンパイラ言語であると同時に、逐次実行可能
コンパイラ言語
なインタプリタ言語でもある。
  インタプリタ言語
scalaコマンドを単独で実行すれば対話型イン
タプリタ(Rubyでいうirb)が起動し、他のLLのよ
うに随時動作を確認しつつコーディングすると
いう開発スタイルも可能。
私に言わせるなら…

ScalaはJavaと同等のパフォー
マンスと堅牢性、それにRuby
マンス 堅牢性
並みの開発効率を兼ね備えた
      開発効率
言語である。
Why Scala?
そこでScalaですよ
Ruby使いこそScalaを学ぶべき
現状、Scalaを学ぶプログラマはJava使い
が圧倒的に多い。しかし私はRuby使いこ
そScalaを学ぶべきだと思う。
ScalaをマスターしてしまったJava使いは、
積極的にJavaを使う理由がなくなる。(そ
の生まれからして“Better Java”だから)
                Java”
だがRubyの場合は必ずしもそうではない。
Ruby使いがScalaを学ぶべき理由(1)
ScalaはRubyよりもパフォーマンス?堅牢性
ともに上であるが、やはりフットワークの軽
さにおいては一歩譲る。
JVM言語であるがゆえに起動が遅
い、Java文化を引きずった冗長さ、型推論
があるとはいえ基本は静的型付け言語な
ので面倒な記述を強いられることがある
等。
Ruby使いがScalaを学ぶべき理由(2)
負荷の高い内部処理をScalaで、頻繁に変
更が発生するインターフェース部分を
Ruby(Rails)で実装するという使い分けを
しているサービスも存在する。
これなどはScalaとRuby双方の利点を活用
している事例だろう。
Ruby使いがScalaを学ぶべき理由(3)
一撃必殺だが直線的で射程の短い八極拳と、威力
                   八極拳
は譲るが曲線的で予測しづらく遠距離戦を得意と
する劈掛掌を共に学ぶことで「八極に劈掛を加え
  劈掛掌
れば、鬼神も恐れる」と言われるほどの無敵さを誇
れば、鬼神も恐れる」
ると言う。(※『拳児』少年サンデーコミックス参照)
Ruby使いがScalaを学ぶことで死角がなくなり、八
極拳×劈掛掌の使い手のように並のプログラマー
が束になってかかってもかなわないほどのパワー
を手に入れられるのではないだろうか。
Scala, Famous
Hackers tell about
    教えてエロい人
“If I were to pick a language to
use today other than Java, it
would be Scala”
                     James Gosling


「今日、もしJava以外に自分で使いたい言語が
あるとすれば、それはScalaだろう」
       ジェームズ?ゴスリン(=Javaの生みの親)
“Scala, it must be stated, is the current heir
apparent to the Java throne. No other language
on the JVM seems as capable of being a
‘replacement for Java’ as Scala, and the
momentum behind Scala is now unquestionable”
                               Charles Nutter

「はっきり述べておきたいのは、Scalaが現時点での最も有力なJava
の王位継承者候補だということだ。JVM上で動く他の言語には『Java
の代替』になれるような器を持ったものは見当たらず、Scalaの勢い
にはすでに疑う余地がない」
        チャールズ?ナター(=JRubyプロジェクトのリーダー)
“I can honestly say if someone had shown me
the Programming in Scala book by by Martin
Odersky, Lex Spoon & Bill Venners back in
2003 I'd probably have never created Groovy”
                             James Strachan


「2003年(註:Groovyの開発が開始された年)当時、Martin
Oderskyの『Programming in Scala(邦題:Scalaスケーラブルプ
ログラミング)』を誰かに見せてもらっていたなら、正直なところ
Groovyは作らなかっただろうと思う」
              ジェームズ?ストラッチャン(=Groovyの作者)
「面白い。いろんな点でGroovyを思い出させるが、もっ
とずっと革新的かも」
「Rubyに似たところがあるなあ、と思ってたんだけど、
多重継承を廃止しMix-inを持つなど、新しくなってより
似てきた感じ」
「Erlangとは違う形で(分かりやすい/扱いやすい)並
列プログラミングを提供する言語になる、かも」
「ScalaのActorはJVMのスレッドプールを使って実現さ
れているそうだけど、十分な性能が出るなら(これが難
しい)、ErlangではなくScalaが次世代を席巻するかも」
                    まつもとゆきひろ
“Scala is the Java
 of the future”
           Martin Odersky

「Scalaは未来のJavaだ」
          マーティン?オダースキー
Who uses Scala?
 あらこんなところにも厂肠补濒补が
みんな大好きTwitter
現状、Twitterのメッセージキュー、およびミドルウェアと
APIのほとんどは、Scalaで実装されている。(ちなみに
Twitterのアクセスの80%がAPI経由とのこと)
最初、TwitterはRubyベースのメッセージキューを使用
していたが、すぐにパフォーマンスの壁に突き当たって
しまった。
色々検討した結果Scalaを採用することとなり、その結
果それまで2時間半かかっていた処理が20秒で済むよ
うになったという。
その他の事例
求人特化型SNSのLinkedInが以前からScalaを
使っているのは有名。Odersky教授を招いて技
術セッションを行っている様子をYouTubeで見る
ことができる。
あとSony ImageworksがDBミグレーションライブ
ラリをScalaで開発してオープンソースで公開す
るなど、社内での開発にScalaを使用している様
子。
Let's Scala!
Scala使いたくなったでしょ?

More Related Content

搁耻产测使いのための厂肠补濒补のススメ