Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction to Scala
Search
Yukiyan
April 21, 2020
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to Scala
2020/04/21 社内LT
Scala入門
Yukiyan
April 21, 2020
More Decks by Yukiyan
See All by Yukiyan
Introduction to Scala about type parameter
yukiyan
0
180
digdagで支えるデータパイプライン / Building a data pipeline with digdag
yukiyan
1
5.9k
機械学習基盤を一人で構築するということ / Hitori ml team
yukiyan
3
3.7k
ECSのデプロイツールを試している話
yukiyan
0
2.5k
Replace a batch application to ECS
yukiyan
1
1.6k
Introduction to Docker
yukiyan
0
5.8k
Other Decks in Technology
See All in Technology
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
270
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
190
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
Screen Lens - 今見てる画面を翻訳する
komagata
0
310
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
2
2.1k
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
29
24k
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2k
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
130
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
160
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
0
2.6k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.5k
Unsuck your backbone
ammeep
672
58k
Exploring anti-patterns in Rails
aemeredith
4
510
Making Projects Easy
brettharned
120
6.8k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Building the Perfect Custom Keyboard
takai
2
870
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
Transcript
Scala 入門 ゆきやん
教材
Scala をやる動機 データエンジニアリングをしていると Scala や Java 製のプロダクトを利用することが多い • 大規模分散処理系のプロダクトで採用事例が多い ◦
apache/spark ◦ apache/kafka ◦ apache/flink ◦ apache/beam • データ処理に便利 ◦ NULL 安全なエラーハンドリング (大規模データ処理で数時間待ってヌルポはきつい ) ◦ 型を生かした豊富なコレクションライブラリ ◦ 柔軟な非同期処理 • Java の資産を利用できる ◦ treasure-data/digdag, embulk/embulk のプラグインを Scala で書ける ◦ spotify/scio
• jenv/jenv • scalaenv/scalaenv • Language Server ◦ scalameta/metals ◦
R.I.P ENSIME IDE は必ずしも必要ではない REPL もちゃんとある (sbt console) 環境構築
基本的な文法
面白かった機能 • ケースクラス • トレイト • 高階関数 • implicit parameter
• パターンマッチ • Option, Either, Try • コレクション(for 内包表記)
ケースクラス • Value Object 使うときに役立つ
トレイト • Java のインターフェースみたいなやつ • 複数のトレイトを 1つのクラスやトレイトにミックスインできる • 直接インスタンス化できない
トレイト
高階関数
高階関数
implicit parameter メタ情報のような使うか使わないか分からん情報を、引数でひたすら引き回す手間を省ける (DBコネクションとか) 「引数の省略ができる」というメリットはあるけど、場合によっては可読性が下がるので次スライドの活用法のほ うが多用される
implicit parameter リファクタリング前
implicit parameter まずは trait でリファクタリング 要素の型で自明なのに HogeAddr 書くのが無駄
implicit parameter さらに implicit parameter で リファクタリング
型クラス(≒implicit parameter)は、うまく使うと、後付けのデータ型に対して既存のアルゴリズムを型安全に 適用するのに使うことができます。 この特徴は、特にライブラリ設計のときに重要になってきます。 ライブラリ設計時点で定義されていないデータ型に対していかにしてライブラリのアルゴリズムを適用する か、つまり、拡張性が高いように作るかというのは、なかなか難しい問題です。 簡潔に書けることを重視すると、拡張性が狭まりがちですし、拡張性が高いように作ると、デフォルトの動作で いいところを毎回書かなくてはいけなくて利用者にとって不便です。 型クラスを使ったライブラリを提供することによって、この問題をある程度緩和することができます。 皆さんも、型クラスを使って、既存の問題をより簡潔に、拡張性が高く解決できないか考えてみてください。
型クラスへの誘い · Scala研修テキスト implicit parameter
パターンマッチ
パターンマッチ
パターンマッチ
パターンマッチ
Option, Either, Try
Option, Either, Try
Option, Either, Try
Option, Either, Try
コレクション(for 内包表記) for 内包表記が便利
コレクション(for 内包表記)
• ジェネリクス ◦ class Foo[A] • 変位指定 ◦ class Foo[+A]
◦ class Foo[-A] • 型境界 ◦ class Foo[A <: B] ◦ class Foo[A >: B] • Future ◦ andThen ◦ recover, recoverWith ◦ result, ready ...etc 次回予告