Slide 1

Slide 1 text

1 @Copyright BIGLOBE inc. 2024. All rights reserved  Vavrのすすめ ビッグローブ株式会社 川口永一郎

Slide 2

Slide 2 text

2 @Copyright BIGLOBE inc. 2024. All rights reserved  Vavrとは? ● Javaの関数型プログラミングライブラリ ○ https://vavr.io/ ○ https://github.com/vavr-io/vavr ○ JAVAをひっくり返すとVAVr ● Java標準にないイミュータブルなデータ構造を利用できる ● 所属しているチームでJavaを使用する際はマストで採用

Slide 3

Slide 3 text

3 @Copyright BIGLOBE inc. 2024. All rights reserved  Vavrが用意しているデータ構造(一部) ● Tuple ○ いくつかの値(異なる型でも良い)の組を保持する型 ● Functions ○ Function0〜Function8 といった標準にはない3引数以上のものが ある ● Values ○ 1つの型の値を0個以上持つようなオブジェクトを抽象化した インターフェース ■ Option ● ある型の値を持つか持たないかどちらかを表現できる ■ Try ● 例外を戻り値のように扱うことができる ■ Either ● 2つの型のうちどちらか一方だけを持つ型 ● 2つの型は Left, Right と呼ばれ、成功時の値とエラー値を保持できる

Slide 4

Slide 4 text

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);

Slide 5

Slide 5 text

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();

Slide 6

Slide 6 text

6 @Copyright BIGLOBE inc. 2024. All rights reserved  ちゃんとメンテされてるん? ● 2021年7月に0.10.4がリリースされて以来、アップデートがなかったが、 今月0.10.5にアップデート ○ 新しい maintainer に変わったとのこと

Slide 7

Slide 7 text

7 @Copyright BIGLOBE inc. 2024. All rights reserved  Javaで関数型プログラミングやりたい人は 使ってみてください!