SlideShare a Scribd company logo
1 of 64
Download to read offline
iOSエンジニアのための
Scala入門
(あるいはScalaエンジニア
のためのSwift入門)
株式会社セプテーニ・オリジナル
嶽 雅也
アジェンダ
• 自己紹介
• はじめに
• 言語の概要
• 言語共通の特徴/文法
• 自分がどちらの言語も使っていて思うこと
• 今後の学習を続けるために
• 最後に
• 引用元及び参考書籍
自己紹介 #1
• 株式会社セプテーニ・オリジナルの嶽 雅也(だけ
まさや)です。Twitterアカウントは
@masayadk1229です。
• 昨年の8月に転職して、「GANMA!」というオリジ
ナル漫画配信アプリの開発に携わっています。
• 転職前はJavaで4年間開発していて、転職してから
Scalaで開発しており、最近ではSwiftでも開発する
ようになりました。
自己紹介 #2
• 先日の「JJUG 2017 Spring」では、「グラフデータベース入門」と
いうテーマで発表しました。
• グラフデータベース入門
• 9/16(土)には、「iOSDC JAPAN 2017」で次のテーマで発表します。
「動画コンテンツにおいて、バックグラウンドの音声との制御でつま
づいたところ 」
• 本日、皆さんのお手元にあるセプテーニ・オリジナルの技術読本でも
次の内容で記事を書いているので、お時間ある際にご覧下さい。
「末尾再帰の呼び出し最適化の有無によるScalaコンパイラの挙動」
弊社のカフェスペースを利用して、お酒や食事をし
ながら行う勉強会を継続的に実施するコミュニティ
Scala, DDD, Android, iOS, アーキテクチャetc…
第2回が今週終わり、再来週に
第3回があります!
• 第2回は元Lightbendで現在スターバックス社のJamie
Allenさんや書籍「DeepLearning4j」の著者のAdamさ
んなどに発表していただきました!
• 参加レポートはこちら
• 第3回は、9/19(火)に分析基盤 Meetupを予定していま
すので、東京にお越しの際はぜひご参加ください。
• 新宿Geek Lounge#3 分析基盤 Meetup
はじめに
• 「Swift実践入門」という書籍をベースにiOSエン
ジニアの方が理解しやすい形でScalaを初心者向
けに紹介していきます。
• わかりやすさを優先するため、厳密な定義に則
っていない説明の仕方にしている箇所がありま
す。
• 内容的にはクイックツアー的に文法を横断して
いきます。
まず、最初に質問させ
てください。
この中でSwiftで開発を
行ったことある方?
この中でScalaで開発
を行ったことある方?
この中でSwiftとScala両方
で開発を行ったことある方
?
言語の概要
Swiftの概要
• Swiftは、iOS、macOS向けアプリケーションの
開発言語としてAppleが 2014 年に発表したプロ
グラミング言語です。
• 2015年12月にオープンソース化され、Linuxでの
実行環境も提供されました。
• 2017年9月現在ではバージョンは3.1になってお
り、本資料ではこちらを用います。
Scalaの概要
• Scalaは2003年にスイス連邦工科大学ローザンヌ
校(EPFL)のMartin Odersky教授によって開発
されたプログラミング言語です。
• 処理系はJVM上で動作します。
• 2017年9月現在ではバージョンは2.12.3になって
おり、本資料ではこちらを用います。
言語共通の特徴/文法
Scala/Swift 共通の特徴
• 静的型付き言語
• nilの許容性をコントロール可能
• 型推論による簡潔な記述
Scala/Swift 共通の特徴
• 静的型付き言語
• nilの許容性をコントロール可能
• 型推論による簡潔な記述
静的型付き言語 #1
• 静的型付き言語は、すべての変数と定数の型は
コンパイル時に決定されます。
• 一度決定された変数の型は変更できず、ほかの
型の値を代入することはできません。
静的型付き言語 #2
• 変数定義はSwift、Scalaともにvar宣言で
す。
//Swift
var a: Int = 456
a = “abc”//コンパイルエラー
//Scala
var a: Int = 456
a = "abc"//コンパイルエラー
Scala/Swift 共通の特徴
• 静的型付き言語
• nilの許容性をコントロール可能
• 型推論による簡潔な記述
nilの許容性をコントロール可能 #1
• Swiftではnil、ScalaではNoneが値が存在しないことを示すものです
。
• 多くのプログラミング言語で、変数や定数の初期化が済んでいない
状態や、参照先が存在しない状態を表す値として活用されてきまし
た。
• 一方で、初期化されていない値や参照先が存在しない値へのアクセ
スによる実行時エラーを招いてしまうという問題もありました
• そのような問題を回避するため、基本的な型では変数や定数にSwift
ではnil、ScalaではNoneが代入できない仕様となっています。
nilの許容性をコントロール可能 #2
• Swiftでnilを許容する型は Optional<Wrapped>型、ScalaではNoneを許容
する型はOption型です
• Optional<Wrapped>型はWrappedにIntなどの具体的な型を入れて
Optional<Int>のようにして使用します。Option型も同様です
• SwiftはInt型がnilを許容しない型であるのに対し、Optional<Int>型はnilと
Int型の値の両方を許容する型となっています。
• Optional<Int>型はシンタックスシュガーであるInt?と書く方が一般的です
。
• ScalaはInt型がNoneを許容しない型であるのに対し、Option[Int]型はNone
を許容する型となっており、Int型は代入できません。
nilの許容性をコントロール可能 #3
• 定数定義はSwiftだとlet、Scalaだとval宣言です。
//Scala
val a: Option[Int] = None
val b: Option[Int] = 3 //コンパイルエラー
val c: Int = None //コンパイルエラー
//Swift
let a: Int? = nil
let b: Int? = 3
let c: Int = nil //コンパイルエラー
Scala/Swift 共通の特徴
• 静的型付き言語
• nilの許容性をコントロール可能
• 型推論による簡潔な記述
型推論による簡潔な記述
#1
• ScalaやSwiftには型推論というしくみ
が導入されているため、代入する値な
どからコンパイラが型を推測できる場
合は、宣言時にその型を明示する必要
はありません。
型推論による簡潔な記述
#2
//Swift
let a = 123 //Int型
let b = "abc" //String型
//Scala
val a = 123 //Int型
val b = "abc" //String型
言語共通の文法を紹介してい
きますが、少し記法が違うも
のを中心に取り扱っていきま
す。
言語共通の特徴/文法
Scala/Swift 共通の文法
• 関数の定義
• 文字列埋め込み
• 範囲型
• Option型/Optional型からの値の取り出し
• プレースホルダー
Scala/Swift 共通の文法
• 関数の定義
• 文字列埋め込み
• 範囲型
• Option型/Optional型からの値の取り出し
• プレースホルダー
関数の定義 #1
//Swift
//Scala
関数の定義 #2
//Swift
func plus(x: Int, y: Int) -> Int {
return x + y
}//returnが必要
plus(x: 1, y: 2)
//呼び出す際に引数名を記述する必要があります。
//Scala
def plus(x: Int, y: Int): Int = x + y
//returnが不要
plus(1, 2)
Scala/Swift 共通の文法
• 関数の定義
• 文字列埋め込み
• 範囲型
• Option型/Optional型からの値の取り出し
• プレースホルダー
文字列埋め込み
//Swift
let name = "James"
print("Hello, (name)")
// Hello, James
//Scala
val name = "James"
println(s"Hello, $name")
// Hello, James
Scala/Swift 共通の文法
• 関数の定義
• 文字列埋め込み
• 範囲型
• Option型/Optional型からの値の取り出し
• プレースホルダー
範囲型
Swift #1
• Swiftでは 範囲型には、Range<Bound> 型、CountableRange<Bound> 型、
ClosedRange <Bound> 型、CountableClosedRange<Bound> 型の4種があ
ります。
• これら4つの型は、半開区間か閉区間かと、カウント可能か不可能かの組み
合わせに応じて使い分けられており、組み合わせと型の対応関係は以下の表
のようになっています。
範囲型 区間 カウント可能
Range<Bound> 半開区間 不可能
CountableRange<Bound> 半開区間 可能
ClosedRange<Bound> 閉区間 不可能
CountableClosedRange<Bound> 閉区間 可能
範囲型
Swift #2
let range1:CountableRange = 1..<4
//半開区間
for value in range1 {
print(value)
}//1,2,3
let range2:CountableClosedRange = 1...4
//閉区間
for value in range2 {
print(value)
}//1,2,3,4
範囲型
Swift #3
let range3:Range = 1.1..<4.0
let range4:ClosedRange
= 1.1…4.0
//Coutableではない
for value in range3 {
print(value)
}//コンパイルエラー
範囲型
Scala #1
• Scalaでは 範囲型には、Range<T> 型、Range.Inclusive<T> 型、
Range.Partial<T, NumericRange[T]> 型の3種があります
• これら3つの型は、Swiftの時と同様に分類すると、以下のように
なります。
範囲型 区間 カウント可能
Range.Partial<T, NumericRange[T]> 半開区間 不可能
Range<T> 半開区間 可能
Range.Partial<T, NumericRange[T]> 閉区間 不可能
Range.Inclusive<T> 閉区間 可能
範囲型
Scala #2
val range1:Range = 1 until 4
//半開区間
for (i <- range1) {
println(i)
}//1,2,3
val range2:Range.Inclusive = 1 to 4
//閉区間
for (i <- range2) {
println(i)
}//1,2,3,4
範囲型
Scala #3
val range3
:Range.Partial[Double,scala.colle
ction.immutable.NumericRange[Doub
le]]
= 1.1 until 4.0
//Coutableではない
for (i <- range3) {
println(i)
}//コンパイルエラー
Scala/Swift 共通の文法
• 関数の定義
• 文字列埋め込み
• 範囲型
• Option型/Optional型からの値の取り出し
• プレースホルダー
Option型/Optional型からの値の取り出し
Swift #1
• SwiftではOptionからの値の取り出し方に
は以下の3つの代表的なものがあります。
• オプショナルバインディング
• ??演算子
• 強制アンラップ
Option型/Optional型からの値の取り出し
Swift #2
//オプショナルバインディング
//値が存在すれば、ブロック内で値を取り出せる
let optionalStr: String? = Optional("Hello")
if let a = optionalStr { print(a) }
//Hello
let optionalStr2: String? = nil
if let b = optionalStr2 { print(b) }
//表示されない
Option型/Optional型からの値の取り出し
Swift #3
//??演算子
//(Optional ?? default値)
let optionalInt: Int? = 1
print(optionalInt ?? 3) // 1
let optionalInt2: Int? = nil
print(optionalInt2 ?? 3) // 3
Option型/Optional型からの値の取り出し
Swift #4
//強制アンラップ
//変数の後ろに!マークをつける
let a: Int? = 1
let b: Int? = 1
let c: Int? = nil
print(a + b) //コンパイルエラー
print(a! + b!) // 2
print(c!) //実行時エラー
Option型/Optional型からの値の取り出し
Scala #1
• Scalaでもいくつか値の取り出し方法はあるので
すが、Swiftの例に合わせると以下のようになるか
と思います。
• オプショナルバインディング→Option.foreach
• ??演算子→Option.getOrElse
• 強制アンラップ→Option.get
Option型/Optional型からの値の取り出し
Scala #2
//Option.foreach
//値が存在すれば、ブロック内で値を取り出せる
val optionalStr: Option[String] =
Some("Hello")
optionalStr.foreach(x => println(x))
//Hello
val optionalStr2: Option[String] = None
optionalStr2.foreach(x => println(x))
//表示されない
Option型/Optional型からの値の取り出し
Scala #3
//Option.getOrElse
//getOrElse(デフォルト値)
val optionalInt: Option[Int] =
Some(1)
print(optionalInt.getOrElse(3))//1
val optionalInt2: Option[Int] = None
print(optionalInt2.getOrElse(3))//3
Option型/Optional型からの値の取り出し
Scala #4
//Option.get
val a: Option[Int] = Some(1)
val b: Option[Int] = Some(1)
val c: Option[Int] = None
print(a + b) //コンパイルエラー
print(a.get + b.get) // 2
print(c.get) //実行時エラー
Scala/Swift 共通の文法
• 関数の定義
• 文字列埋め込み
• 範囲型
• Option型/Optional型からの値の取り出し
• プレースホルダー
プレースホルダー
//Swift
[1,2,3].map{$0+1}
//2,3,4
//Scala
List(1,2,3).map(_+1)
//2,3,4
自分がどちらの言語も
使っていて思うこと
Swiftの好きなところ
• guard構文便利!
• プロパティ監視便利!
• プロトコル指向によって、クラス
階層が深くならない!
Swiftの辛いところ
• Scalaに比べて、Swiftにコレクショ
ンメソッド少なくてしんどい
• Xcode問題(リファクタリング機能な
い、コンパイル遅い etc)でしんどい
• 文字列APIが扱いづらくてしんどい
Swiftの辛いところ
• Scalaに比べて、Swiftにコレクションメソッド少な
くてしんどい→Swiftのコレクションを拡張する。
• Xcode問題(リファクタリング機能ない、コンパイ
ル遅い etc)でしんどい
→補助的にAppCodeを使用。
• 文字列APIが扱いづらくてしんどい
→なぜSwiftの文字列APIは難しいのか
Scalaの好きなところ
• 非同期処理でFuture便利!
• コレクションメソッドが多く、直
感的に記述しやすい!
• パターンマッチが強力で扱いやす
い!
Scalaの辛いところ
• 書くときに型合わせがしんどい
• 省略ルールなどがたくさんあり、
理解しづらい時があってしんどい
• FPの知識がないと読めなくてしん
どい
Scalaの辛いところ
• 書くときに型合わせがしんどい
→精進あるのみ
• 省略ルールなどがたくさんあり、理解しづらい時
があってしんどい
→少しずつ経験値を高めていくのみ
• FPの知識がないと読めない時があってしんどい
→FPの知識を身につけていくことで簡潔な記述が
できるようになるので、チャレンジしていきたい
!
今後の学習を続けるために
まずは触ってみるために
• Swift(というかiOS開発)
• 株式会社はてな様の研修用教科書
• Swift
• iOSアプリ開発
• 株式会社ミクシィ様のエンジニア向け資料
• Scala
• 株式会社はてな様の研修用教科書
• 株式会社ドワンゴ様の新卒エンジニア向け資料
最後に
最後に
• 時間の関係上、あまり深くまでは触れられませ
んでしたが、Scala、Swiftが比較した上で最初の
入門はできたかと思います。
• この資料が少しでも皆さんの学びの第一歩とな
れば幸いです。
引用元及び参考書籍
• Scalaスケーラブルプログラミング第3版
• Swift実践入門 直感的な文法と安全性を兼ね備え
た言語

More Related Content

What's hot

PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編Asami Abe
 
Scalaはじめました!
Scalaはじめました!Scalaはじめました!
Scalaはじめました!Asami Abe
 
ScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでAsami Abe
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scalatakezoe
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning TipsKota Mizushima
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Kota Mizushima
 
BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話hirotakanosato
 
Contributing to Scala OSS from East Asia #ScalaMatsuri
 Contributing to Scala OSS from East Asia #ScalaMatsuri Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuriKazuhiro Sera
 
[事例紹介]Scalaで物流倉庫システム作ったよ
[事例紹介]Scalaで物流倉庫システム作ったよ [事例紹介]Scalaで物流倉庫システム作ったよ
[事例紹介]Scalaで物流倉庫システム作ったよ Tomokazu Matsushita
 
SIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたことSIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたことtakezoe
 
Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Jiro Hiraiwa
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 
Scala超入門 - 2014/12/13 Scala関西勉強会
Scala超入門 - 2014/12/13 Scala関西勉強会Scala超入門 - 2014/12/13 Scala関西勉強会
Scala超入門 - 2014/12/13 Scala関西勉強会Asami Abe
 
Amebaアプリ QAの歴史(サイバーエージェント関根様)
Amebaアプリ QAの歴史(サイバーエージェント関根様)Amebaアプリ QAの歴史(サイバーエージェント関根様)
Amebaアプリ QAの歴史(サイバーエージェント関根様)ques_staff
 
Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫furusin
 
[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティhirotakanosato
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話Yosuke Mizutani
 
Do you like scala
Do you like scalaDo you like scala
Do you like scalaYuto Suzuki
 

What's hot (20)

PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
Scalaはじめました!
Scalaはじめました!Scalaはじめました!
Scalaはじめました!
 
ScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったで
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
 
とりあえず使えるSBT
とりあえず使えるSBTとりあえず使えるSBT
とりあえず使えるSBT
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
 
BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話
 
Contributing to Scala OSS from East Asia #ScalaMatsuri
 Contributing to Scala OSS from East Asia #ScalaMatsuri Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuri
 
[事例紹介]Scalaで物流倉庫システム作ったよ
[事例紹介]Scalaで物流倉庫システム作ったよ [事例紹介]Scalaで物流倉庫システム作ったよ
[事例紹介]Scalaで物流倉庫システム作ったよ
 
SIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたことSIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたこと
 
Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
Scala超入門 - 2014/12/13 Scala関西勉強会
Scala超入門 - 2014/12/13 Scala関西勉強会Scala超入門 - 2014/12/13 Scala関西勉強会
Scala超入門 - 2014/12/13 Scala関西勉強会
 
Amebaアプリ QAの歴史(サイバーエージェント関根様)
Amebaアプリ QAの歴史(サイバーエージェント関根様)Amebaアプリ QAの歴史(サイバーエージェント関根様)
Amebaアプリ QAの歴史(サイバーエージェント関根様)
 
Atami
AtamiAtami
Atami
 
Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫
 
[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
 
Do you like scala
Do you like scalaDo you like scala
Do you like scala
 

Viewers also liked

Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Naoki Aoyama
 
今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/PrismNaoki Aoyama
 
What Dotty fixes @ Scala関西サミット
What Dotty fixes @ Scala関西サミットWhat Dotty fixes @ Scala関西サミット
What Dotty fixes @ Scala関西サミットTaisuke Oe
 
Real world android akka
Real world android akkaReal world android akka
Real world android akkaTaisuke Oe
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦Koichi Hamada
 
Deep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the BayDeep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the BayAdam Gibson
 
20170721 future of reactive architectures
20170721 future of reactive architectures20170721 future of reactive architectures
20170721 future of reactive architecturesJamie Allen
 
バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係Kento Tajiri
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjpcocodrips
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなすUnity Technologies Japan K.K.
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…Hiromu Yakura
 
TensorFlow XLAの可能性
TensorFlow XLAの可能性 TensorFlow XLAの可能性
TensorFlow XLAの可能性 Mr. Vengineer
 
Using Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNNUsing Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNNnotogawa
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化Yusuke Uchida
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術Unity Technologies Japan K.K.
 

Viewers also liked (16)

Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術
 
今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/Prism
 
What Dotty fixes @ Scala関西サミット
What Dotty fixes @ Scala関西サミットWhat Dotty fixes @ Scala関西サミット
What Dotty fixes @ Scala関西サミット
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦
 
Deep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the BayDeep Learning with GPUs in Production - AI By the Bay
Deep Learning with GPUs in Production - AI By the Bay
 
20170721 future of reactive architectures
20170721 future of reactive architectures20170721 future of reactive architectures
20170721 future of reactive architectures
 
バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係バイナリニューラルネットとハードウェアの関係
バイナリニューラルネットとハードウェアの関係
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
 
Go入門
Go入門Go入門
Go入門
 
TensorFlow XLAの可能性
TensorFlow XLAの可能性 TensorFlow XLAの可能性
TensorFlow XLAの可能性
 
Using Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNNUsing Raspberry Pi GPU for DNN
Using Raspberry Pi GPU for DNN
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
 

Similar to iOSエンジニアのためのScala入門

Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Tomoki Hasegawa
 
Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門Yuichiro Takahashi
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Ra Zon
 
1年目でgolangとscalaを触った話
1年目でgolangとscalaを触った話1年目でgolangとscalaを触った話
1年目でgolangとscalaを触った話yoshito oe
 
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてKota Mizushima
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
こわくないScala
こわくないScalaこわくないScala
こわくないScalaFScoward
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Shuya Tsukamoto
 
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行monglee
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き土岐 孝平
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトTaketo Sano
 

Similar to iOSエンジニアのためのScala入門 (18)

こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scala is-unscared
Scala is-unscaredScala is-unscared
Scala is-unscared
 
Start Concurrent
Start ConcurrentStart Concurrent
Start Concurrent
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
 
Scalaノススメ
ScalaノススメScalaノススメ
Scalaノススメ
 
Recommend scala
Recommend scalaRecommend scala
Recommend scala
 
Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
 
1年目でgolangとscalaを触った話
1年目でgolangとscalaを触った話1年目でgolangとscalaを触った話
1年目でgolangとscalaを触った話
 
Scala conf2013
Scala conf2013Scala conf2013
Scala conf2013
 
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
HiroshimaR5_Intro
HiroshimaR5_IntroHiroshimaR5_Intro
HiroshimaR5_Intro
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 

iOSエンジニアのためのScala入門