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
Vavrのすすめ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kawagoo
October 27, 2024
740
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vavrのすすめ
kawagoo
October 27, 2024
More Decks by kawagoo
See All by kawagoo
docker-compose.yml から Helm Chartに 変換してくれるツール Katenary を試してみた
eterny13
0
690
ECS の IPv6 がムズカシイ
eterny13
0
2.8k
固定回線にNAT64/DNS64を導入して
eterny13
0
300
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Typedesign – Prime Four
hannesfritz
42
3.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
The agentic SEO stack - context over prompts
schlessera
0
970
Building Applications with DynamoDB
mza
96
7.2k
Transcript
1 @Copyright BIGLOBE inc. 2024. All rights reserved Vavrのすすめ ビッグローブ株式会社
川口永一郎
2 @Copyright BIGLOBE inc. 2024. All rights reserved Vavrとは? •
Javaの関数型プログラミングライブラリ ◦ https://vavr.io/ ◦ https://github.com/vavr-io/vavr ◦ JAVAをひっくり返すとVAVr • Java標準にないイミュータブルなデータ構造を利用できる • 所属しているチームでJavaを使用する際はマストで採用
3 @Copyright BIGLOBE inc. 2024. All rights reserved Vavrが用意しているデータ構造(一部) •
Tuple ◦ いくつかの値(異なる型でも良い)の組を保持する型 • Functions ◦ Function0〜Function8 といった標準にはない3引数以上のものが ある • Values ◦ 1つの型の値を0個以上持つようなオブジェクトを抽象化した インターフェース ▪ Option • ある型の値を持つか持たないかどちらかを表現できる ▪ Try • 例外を戻り値のように扱うことができる ▪ Either • 2つの型のうちどちらか一方だけを持つ型 • 2つの型は Left, Right と呼ばれ、成功時の値とエラー値を保持できる
4 @Copyright BIGLOBE inc. 2024. All rights reserved 例 files
= sftp.getFiles("test.csv"); // sftpでファイル取得 if (files.isEmpty()) { throw new RuntimeException("No file found"); } String csvContent; try { csvContent = CSVParser.parse(files.get(0)); // ファイルをCSVにパース } catch (IOException e) { throw new RuntimeException("CSV parse failed", e); } return new XXXReader(csvContent);
5 @Copyright BIGLOBE inc. 2024. All rights reserved 例 files
= sftp.getFiles("test.csv"); if (files.isEmpty()) { throw new RuntimeException("No file found"); } String csvContent; try { csvContent = CSVParser.parse(files.get(0)); } catch (IOException e) { throw new RuntimeException("CSV parse failed", e); } return new XXXReader(csvContent); return Try.of(() -> sftp.getFiles("test.csv") ) .filter( f -> !f.isEmpty(), f -> new RuntimeException("No file found") ) .mapTry( f -> CSVParser.parse(f.get(0)) ) .recoverWith( IOException.class, e -> Try.failure( new RuntimeException("CSV parse failed", e)) ) .map(XXXReader::new) .get();
6 @Copyright BIGLOBE inc. 2024. All rights reserved ちゃんとメンテされてるん? •
2021年7月に0.10.4がリリースされて以来、アップデートがなかったが、 今月0.10.5にアップデート ◦ 新しい maintainer に変わったとのこと
7 @Copyright BIGLOBE inc. 2024. All rights reserved Javaで関数型プログラミングやりたい人は 使ってみてください!