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
kawagoo
October 27, 2024
730
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
290
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Skip the Path - Find Your Career Trail
mkilby
1
230
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
500
[SF Ruby Conf 2025] Rails X
palkan
2
1.4k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
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で関数型プログラミングやりたい人は 使ってみてください!