SlideShare a Scribd company logo
Overview of Scala
~Scalaひとめぐり~
2015年9月26日Hacker Tackle
id:daiksy
本日の内容
• Scalaの周辺状況
• 採用事例(海外・国内)
• はてなインターンの様子
• Scalaの特徴
粕谷 大輔
id:daiksy (@daiksy)
株式会社 はてな
Overview of Scala ~ Hacker Tackle
Overview of Scala ~ Hacker Tackle
Overview of Scala ~ Hacker Tackle
• スイス連邦工科大学 (EPFL)のMartin
Odersky(小田好)教授によって設計
• JVMで動作(古の時代は .net Frameworkでも動
いた)
• オブジェクト指向と関数型言語のパラダイム
daiksyのScala歴
• 2011年 くらいからちょっと触りだす
• 2012年 ~ 2014年 フリュー株式会社
• 2015年 ~ 現在 株式会社 はてな
日本でも規模の大きな
カンファレンス
• 2013年 Scala Conference in Japan
• 2014年 ScalaMatsuri 2014
• 2015年 Scala関西Summit
Overview of Scala ~ Hacker Tackle
採用事例 (海外)
• Twitter
「Scalaで日本のバルスに耐えた」
(ScalaMatsuri2014にて)
• Linkedin
• Netflix
(はてな京都でミートアップ開催)
採用事例 (国内)
• ドワンゴ
• サイバーエージェント
• スマートニュース
• TIS (Typesafeとパートナー契約)
• LINE
• ヌーラボ
• はてな
Scala != Better Java
LLからの移行事例が増加
• チャットワーク PHP -> Scala
• はてなブックマーク Perl -> Scala
利用できる主なフレームワーク
• Lift
• Play Framework
• Scalatra
• Skinny Framework
はてなサマーインターン 2015
今年からScalaコースを新設
はてなサマーインターン
Scalaコースのカリキュラム
• 1日目 Scalaの言語基礎 & 課題(講師 id:daiksy)
• 2日目 DB講義 & 課題(講師 id:mechairoi)
• 3日目 HTTP, WAF講義 & 課題(講師 id:Songmu)
• 最後の3週間 Mackerelチームでプロダクト開発
他にもJavaScriptやインフラの講義も
Scalaの特徴
• JVM上で動作
• 静的な型付けと型推論
• オブジェクト指向
• 関数プログラミング
静的な型付けと型推論
静的な型付けと型推論
多態性 (オブジェクト指向)
多態性 (オブジェクト指向)
• trait を使って実現
• trait は複数mixinできる
• trait に実装することもできる
関数プログラミング
• 関数が第一級オブジェクト
• 副作用を伴わない実装のための機能
• if 式
• for 式
• 抱負なコレクションメソッド
関数が第一級オブジェクト
副作用とは
• 変数の値を変更する
• オブジェクトのフィールドを変更する(Javaの
setterとかC# のプロパティとか)
• ファイルやデータベースなどに対する入出力
副作用のない宣言(immutable)
副作用のない宣言(immutable)
• var で宣言すると再代入できる
• val で宣言すると再代入できない
• Scalaはコードスタイルや状況に応じてmutable
とimmutableを使い分けられる
• いわゆる「非純粋関数型言語」
if 式
if 式
for 式
コレクション
• List/Array/Map/Set いろいろある
• コレクションには便利なメソッドが山程ある
• map/filter/flatMap/find/findAll/reduce
• take/drop/exists/sort/sortBy/zip/partition
• grouped/groupBy
FizzBazzを実装してみよう
副作用のない実装まとめ
• val で宣言することで変数が再代入できなくなる
• if式 for式 コレクション操作 などを駆使すると、
val だけでプログラミングできるようになる
• 慣れるとvar を使わざるを得ない局面で悔しみを
感じる
Scalaではnullも使わない
• 言語仕様的にはnullは存在する
• Scalaではnullを使わずOption型を使う
Option型
• あるかないかわからない値を表現できる型
• Someの中身を使うには明示的に取り出す操作
が必要 (ぬるぽに悩まずにすむ)
Option型
• 値があるときはSomeでくるむ
• 値がないときはNone
Option型
• Optionは型なので、そのまま使おうとすると
コンパイルで怒られる
Option型のいろいろな
取り出し方
Option型
• 要素が0または1のコレクションとみなせる
• flatMap, foreachなどのコレクションのメソッ
ドを持っている
Option型同士の計算
今日ご紹介しきれない
いろいろな機能
• case class
• 強力なパターンマッチ
• 暗黙の変換 (implicit)
無限に勉強できる
Scalaは難しい?
• 言語仕様が多いので学習コストは低くない
• 表現力が抱負なので、Better Javaとして書いて
もよい (最初はvar使ってもいいのでは)
• 関数プログラミングが難しい? -> 新しいパラダ
イムの学習は難しい。オブジェクト指向もそれ
は一緒
Enjoy Scala!!
ご清聴ありがとうございました

More Related Content

What's hot (20)

PDF
ScalaにまつわるNewsな話
Yosuke Mizutani
 
PDF
JavaからScalaへ
takezoe
 
PDF
Scala勉強会_2014_11_18
Shuya Tsukamoto
 
PDF
関西Java女子部とScala関西勉強会のご紹介
Asami Abe
 
PDF
20140208 jaws hokuriku-intro
Kazuki Ueki
 
PDF
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Asami Abe
 
PDF
Scala×silverlight
terurou
 
PPTX
オイシックスxAWS導入事例
Saori Tanaka
 
PDF
Scalaの現状と課題
Kota Mizushima
 
PDF
AWS re:invent2019 内部勉強会
KEISUKE KONISHI
 
PPTX
元インフラエンジニアが
Scalaを触ってつまづいたところ。
takako onoue
 
PDF
DOO-001_Azure を利用したエンタープライズ Java アプリケーション開発の今とこれから!!
decode2016
 
PPT
Swiftを迷わず選んだ理由
zuckerburg
 
PDF
逆引きクイックセミナー
Koichiro Ohba
 
PDF
Swift Library
Kosuke Usami
 
PDF
20141202 jaws ug
Shinya Yamada
 
PDF
20141216 CM re:Growth Previewが通りにくい“Aurora”を ガッツリ触ってみた! #cmdevio
宗 大栗
 
PPTX
ScalaでASICやFPGA用の回路を設計するChisel
Kei Nakazawa
 
PDF
BigDLでScala × DeepLearning に入門した話
hirotakanosato
 
PDF
Non-Functional Programming in Scala
takezoe
 
ScalaにまつわるNewsな話
Yosuke Mizutani
 
JavaからScalaへ
takezoe
 
Scala勉強会_2014_11_18
Shuya Tsukamoto
 
関西Java女子部とScala関西勉強会のご紹介
Asami Abe
 
20140208 jaws hokuriku-intro
Kazuki Ueki
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Asami Abe
 
Scala×silverlight
terurou
 
オイシックスxAWS導入事例
Saori Tanaka
 
Scalaの現状と課題
Kota Mizushima
 
AWS re:invent2019 内部勉強会
KEISUKE KONISHI
 
元インフラエンジニアが
Scalaを触ってつまづいたところ。
takako onoue
 
DOO-001_Azure を利用したエンタープライズ Java アプリケーション開発の今とこれから!!
decode2016
 
Swiftを迷わず選んだ理由
zuckerburg
 
逆引きクイックセミナー
Koichiro Ohba
 
Swift Library
Kosuke Usami
 
20141202 jaws ug
Shinya Yamada
 
20141216 CM re:Growth Previewが通りにくい“Aurora”を ガッツリ触ってみた! #cmdevio
宗 大栗
 
ScalaでASICやFPGA用の回路を設計するChisel
Kei Nakazawa
 
BigDLでScala × DeepLearning に入門した話
hirotakanosato
 
Non-Functional Programming in Scala
takezoe
 

Viewers also liked (7)

PPTX
Plasticity Investor Pitch
Jim Moss
 
PPTX
Seleccion de bandas
Martin Canibulin
 
PDF
大人の自動販売機を復活せよ!
stucon
 
PDF
Educación inclusiva, el camino hacia el futuro.
José María
 
PDF
I Want My MVP (Digital Project Management Summit 2014)
Anthony Armendariz
 
DOC
A project report on hdfc standard life insurance
Projects Kart
 
PDF
Ejemplo de primaria
Editorial MD
 
Plasticity Investor Pitch
Jim Moss
 
Seleccion de bandas
Martin Canibulin
 
大人の自動販売機を復活せよ!
stucon
 
Educación inclusiva, el camino hacia el futuro.
José María
 
I Want My MVP (Digital Project Management Summit 2014)
Anthony Armendariz
 
A project report on hdfc standard life insurance
Projects Kart
 
Ejemplo de primaria
Editorial MD
 

Similar to Overview of Scala ~ Hacker Tackle (20)

PPTX
Futureのおまじないを理解する(LT)
Hideaki Tarumi
 
PDF
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
 
PDF
Scalaで萌える関数型プログラミング[エッセンシャル版]
Ra Zon
 
PDF
Scalaでのプログラム開発
Kota Mizushima
 
PPT
Scala Daysに行ってみて
Kota Mizushima
 
PDF
Scalaと過ごした5ヶ月間
Haruki Okada
 
PDF
20160127三木会 RDB経験者のためのspark
Ryuji Tamagawa
 
PPTX
Scala採用の背景とその後 @ hitomedia night #5
Jiro Hiraiwa
 
PDF
Scalaによるドメイン特化言語を使ったソフトウェアの動作解析
Yamagata Yoriyuki
 
PDF
日本Scalaユーザーズグループ発足
Kota Mizushima
 
KEY
Beginners Scala in FAN 20121009
Taisuke Shiratori
 
PDF
Skinny Framework で始めた Scala
Ryuji Yamashita
 
PDF
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
 
PPTX
Scala.jsはじめました!
K Kinzal
 
PDF
Scala開発チームの挑戦-技術編-@DevLove2014
Kiyotaka Kunihira
 
KEY
Beginners scala 20121113
Taisuke Shiratori
 
PDF
ユーザーデータ基盤を1からScalaでつくった話し
Hideaki Tarumi
 
PDF
Dark vol4 for_slideshare
ara_ta3
 
PDF
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Kazuhiro Sera
 
PDF
Asakusa Framework 勉強会 2014 夏
鉄平 土佐
 
Futureのおまじないを理解する(LT)
Hideaki Tarumi
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Ra Zon
 
Scalaでのプログラム開発
Kota Mizushima
 
Scala Daysに行ってみて
Kota Mizushima
 
Scalaと過ごした5ヶ月間
Haruki Okada
 
20160127三木会 RDB経験者のためのspark
Ryuji Tamagawa
 
Scala採用の背景とその後 @ hitomedia night #5
Jiro Hiraiwa
 
Scalaによるドメイン特化言語を使ったソフトウェアの動作解析
Yamagata Yoriyuki
 
日本Scalaユーザーズグループ発足
Kota Mizushima
 
Beginners Scala in FAN 20121009
Taisuke Shiratori
 
Skinny Framework で始めた Scala
Ryuji Yamashita
 
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
 
Scala.jsはじめました!
K Kinzal
 
Scala開発チームの挑戦-技術編-@DevLove2014
Kiyotaka Kunihira
 
Beginners scala 20121113
Taisuke Shiratori
 
ユーザーデータ基盤を1からScalaでつくった話し
Hideaki Tarumi
 
Dark vol4 for_slideshare
ara_ta3
 
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Kazuhiro Sera
 
Asakusa Framework 勉強会 2014 夏
鉄平 土佐
 

More from Daisuke Kasuya (20)

PDF
Devlove mackerel
Daisuke Kasuya
 
PDF
PHPカンファレンス2015
Daisuke Kasuya
 
PDF
Api meetup LT
Daisuke Kasuya
 
PDF
中国地方Db勉強会
Daisuke Kasuya
 
PDF
トイレに閉じ込められた心情をMackerelで可視化してみる
Daisuke Kasuya
 
PDF
システムをダイナミックに運用する from DevLove関西
Daisuke Kasuya
 
PDF
ScalaMatsuri 2014 LT
Daisuke Kasuya
 
PDF
DevLOVE甲子園 西日本
Daisuke Kasuya
 
PDF
Scala関西ビギナーズ
Daisuke Kasuya
 
PDF
RxTStudy- git gitにされた俺の屍を越えて行け -
Daisuke Kasuya
 
PDF
こわくないScala
Daisuke Kasuya
 
PDF
デブサミ関西 自分戦略 2013
Daisuke Kasuya
 
PDF
Scala conf2013
Daisuke Kasuya
 
PDF
ペアプロ
Daisuke Kasuya
 
KEY
Dev love関西 forslideshare
Daisuke Kasuya
 
KEY
git gitにされたオレの屍を超えていけ
Daisuke Kasuya
 
KEY
Play勉強会 第3回
Daisuke Kasuya
 
KEY
Techreaders3
Daisuke Kasuya
 
KEY
鹿駆動勉強会ポスター2
Daisuke Kasuya
 
KEY
鹿駆動勉強会ポスター
Daisuke Kasuya
 
Devlove mackerel
Daisuke Kasuya
 
PHPカンファレンス2015
Daisuke Kasuya
 
Api meetup LT
Daisuke Kasuya
 
中国地方Db勉強会
Daisuke Kasuya
 
トイレに閉じ込められた心情をMackerelで可視化してみる
Daisuke Kasuya
 
システムをダイナミックに運用する from DevLove関西
Daisuke Kasuya
 
ScalaMatsuri 2014 LT
Daisuke Kasuya
 
DevLOVE甲子園 西日本
Daisuke Kasuya
 
Scala関西ビギナーズ
Daisuke Kasuya
 
RxTStudy- git gitにされた俺の屍を越えて行け -
Daisuke Kasuya
 
こわくないScala
Daisuke Kasuya
 
デブサミ関西 自分戦略 2013
Daisuke Kasuya
 
Scala conf2013
Daisuke Kasuya
 
ペアプロ
Daisuke Kasuya
 
Dev love関西 forslideshare
Daisuke Kasuya
 
git gitにされたオレの屍を超えていけ
Daisuke Kasuya
 
Play勉強会 第3回
Daisuke Kasuya
 
Techreaders3
Daisuke Kasuya
 
鹿駆動勉強会ポスター2
Daisuke Kasuya
 
鹿駆動勉強会ポスター
Daisuke Kasuya
 

Recently uploaded (8)

PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 

Overview of Scala ~ Hacker Tackle