SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Java SE 8 lambdaで変わる
プログラミングスタイル
2013/11/15 きしだなおき
ラムダがきたよ
●
●
●

匿名関数
関数型スタイルには必須
流行!
JavaOneでのラムダ
●
●
●

関連セッションが大人気!!
どのセッションも行列!!
人数オーバーで入れない!!
ラムダの目的
●
●

建前:並列化
本音:Cool!!
ラムダ構文
●
●
●
●

関数型インタフェース
ラムダ記法
メソッド参照
interfaceのデフォルトメソッド
関数型インタフェース
●

実装すべきメソッドがひとつだけのインタフェース
–

Runnable
●

–

ActionListener
●

●

実装すべきメソッド:run()
実装すべきメソッド:actionPerformed(ActionEvent)

@FuncationalInterfaceで検査可能
用意された関数型インタフェース

http://d.hatena.ne.jp/nowokay/20130824#1377300917
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};
インタフェース名やメソッド名は推論される
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};
引数とメソッド本体の間に「->」が入る

->
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};

ActionListener al = (ActionEvent e) -> {
taOutput.append(txtMessage.getText() + "n");
};

->
ラムダ構文の基礎
●

IDEで変換
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};

ActionListener al = (ActionEvent e) -> {
taOutput.append(txtMessage.getText() + "n");
};
引数の型も省略できる

->
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};

ActionListener al = (ActionEvent e) -> {
taOutput.append(txtMessage.getText() + "n");
};
引数がひとつならカッコが省略できる

->
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};

ActionListener al = (ActionEvent e) -> {
taOutput.append(txtMessage.getText() + "n");
};
本文が一行ならカッコとセミコロンが省略できる
(return文のときはreturnも省略)

->
ラムダ構文の基礎
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
taOutput.append(txtMessage.getText() + "n");
}
};

ActionListener al = e ->taOutput.append(txtMessage.getText() + "n");

->
メソッド参照
●

引数ひとつのインスタンスメソッド
–

●

インスタンス::メソッド

引数ひとつのstaticメソッド
引数なしのインスタンスメソッド
–

クラス::メソッド
public void init() {
btnInput.addActionListener(this::inputClicked);
}
public void inputClicked(ActionEvent ae){
taOutput.append(txtMessage.getText() + "n");
}
デフォルトメソッド
●

Listなどへのラムダ対応が必要

●

interfaceがメソッドをもてる

●

ついでに多重継承もできる
@FunctionalInterface
interface Hoge{
String foo();
default void bar(){
System.out.println(foo() + "ですってバー");
}
}
void proc(){
Hoge h = () -> "やあ";
h.bar();
}
Stream
●

外部イテレーションから内部イテレーションへ
–

外部イテレーション(for)

–

内部イテレーション(Stream)
Stream
外部イテレーション
for(String s : strs){
if(!s.startsWith("h")){
continue;
}
String u = s.toUpperCase();
System.out.println(u);
}

内部イテレーション

strs.stream()
.filter(s -> s.startsWith("h"))
.map(s -> s.toUpperCase())
.forEach(System.out::println);
操作種別
●

ソース
–

●

中間操作
–

●

操作対象になる
他のStreamを生成する

終端操作
–

結果の実行
ソース
ソース

並列性

特徴

ArrayList、配列

良い

SIZED, ORDERED

LinkedList

悪い

SIZED, ORDERED

HashSet

まあまあ

SIZED, DISTINCT

TreeSet

まあまあ

SIZED, DISTINCT, SORTED, ORDERED

IntStream.range

良い

SIZED, DISTINCT, SORTED, ORDERED

BufferedReader.lines

悪い

ORDERED

特徴

説明

SIZED

サイズが決まっている

DISTINCT

重複なし

ORDERED

順番つき

SORTED

整列済
中間操作
操作

効果

追記

fiter()

SIZEDがはずれる

map()

DISTINCT, SORTEDがはずれる

sorted()

SORTED, ORDEREDが追加

SORTEDならなにもしない

distinct()

DISTINCTが追加

DISTINCTならなにもしない

limit()

すべてそのまま
終端操作
集計

toArray
reduce
collect
sum,min,max,count
anyMatch, allMatch

イテレーション

forEach

検索

findFirst
findAny
プログラムモデルの変化
●
●
●
●
●
●

リダクション(畳み込み)
並列処理
遅延実行
無限ストリーム
メモ化(実行結果キャッシュ)
null排除
リダクション(畳み込み)
●

ストリームの値をひとつにまとめる

3

5

3

8

6

1

3

9

38

int s = IntStream.of(3, 5, 3, 8, 6, 1, 3, 9)
.sum();
リダクション:集計
int[] ar = {3, 5, 3, 8, 6, 1, 3, 9};
int total = 0;
for(int i : ar){
total += i;
}
System.out.println(total);

int[] ar = {3, 5, 3, 8, 6, 1, 3, 9};
System.out.println(Arrays.stream(ar).sum());
リダクションリスト変換
List<Integer> al = Arrays.asList(3, 5, 3, 8, 6, 1, 3, 9);
List<Integer> pows = new ArrayList<>();
for(int i : al){
if(i >= 5){
continue;
}
int pow = i * i;
pows.add(pow);
}

List<Integer> al = Arrays.asList(3, 5, 3, 8, 6, 1, 3, 9);
List<Integer> pows = al.stream()
.filter(i -> i < 5)
.map(i -> i * i)
.collect(Collectors.toList());
リダクション:判定
List<Integer> al = Arrays.asList(3, 5, 3, 8, 6, 1, 3, 9);
boolean flag = true;
for(int i : al){
if(i >= 10){
flag = false;
}
}

List<Integer> al = Arrays.asList(3, 5, 3, 8, 6, 1, 3, 9);
boolean flag = al.stream()
.allMatch(i -> i < 10);
リダクション:グループ化
List<String> strs = Arrays.asList("hello", "paul", "heaven", "tatsuro");
Map<String, List<String>> result = new HashMap<>();
for(String s : strs){
String head = s.substring(0, 1);
List<String> list = result.get(head);
if(list == null){
list = new ArrayList<>();
result.put(head, list);
}
list.add(s);
}
for(Map.Entry<String, List<String>> me : result.entrySet()){
System.out.println(me.getKey() + ":" + me.getValue());
}

List<String> strs = Arrays.asList("hello", "paul", "heaven", "tatsuro");
Map<String, List<String>> result = strs.stream()
.collect(Collectors.groupingBy(s -> s.substring(0, 1)));
result.forEach((k, v) -> System.out.println(k + ": " + v));
リダクション:reduce
●

例:合計
–

(((0 + a1) + a2) + a3)

–

.sum() ⇒.reduce(0, (s, e) -> s + e)

–

.count() ⇒.map(e -> 1).sum()
リダクション:reduce
●

reduce(単位元, (s, e) -> s * e)
–

–

●

s * e:結合則のある2項演算
結合則:(s1 * s2) * s3=s1 * (s2 * s3)
単位元:zを単位元とすると、
s*z=z*s=s

例:
–

a + b[単位元0]

–

a × b[単位元1]

–

a and b[単位元 true]

–

list.add(b)[単位元 new ArrayList()]
リダクション(畳み込み)で何が変わるか
●
●
●

中間状態の隠蔽
中間状態の管理が不要になる
畳み込み操作でのバグは中間状態の操作ミスが
多かった
並列処理
●

stream()の代わりにparallelStream()にするだけ
–

もしくはparallel()の呼び出し
3

5

3

38
8

8

6

38
11

1

3

38
7

9

12
38
19
38

19

38
int s = IntStream.of(3, 5, 3, 8, 6, 1, 3, 9)
.parallel()
.sum();
遅延実行
●
●

●

Javaは即時評価の言語
メソッド内で使われない値でも引数に渡すときに計
算が必要だった
ほとんどの場合に表示されないログやエラーでの
メッセージ生成が無駄
logger.info(objWithManyFields.toString());

Objects.requireNonNull(objWithManyFields.getHoge(),
objWithManyFields.toString());
遅延実行
●
●

ラムダ式を渡すことで、必要なときに式を評価
LoggerやObjects.requireNonNullは対応
logger.info(() -> objWithManyFields.toString());
Objects.requireNonNull(objWithManyFields.getHoge(),
() -> objWithManyFields.toString());
遅延実行:Stream Pipeline
●

Streamの中間操作は、終端操作のときに実行され
る
無限ストリーム
無限ストリーム(リスト)
●

Hondaストリームの無限チューンではありません

●

終端の決まらないストリーム
初期値

次の値を求める処理

IntStream.iterate(0, i -> i + 1)
.limit(10)
.forEach(System.out::println);

IntStream.iterate(321, i -> (i * 211 + 2111) % 1999)
.limit(10)
.forEach(System.out::println);
メモ化
●
●

実行結果キャッシュ
ex:再帰フィボナッチ
public static void main(String... args){
LongStream.iterate(1, i -> i + 1)
.map(i -> fib(i))
.forEach(System.out::println);
}
public static long fib(long x){
if(x <= 2) return 1;
return fib(x - 1) + fib(x - 2);
}
メモ化:再帰フィボナッチ
●

1回ごとに2回の呼び出し
–

●

O(2^n)

なかなか進まない!
run:
1
1
2
3
5
8
13
・
・
・
1836311903
2971215073
4807526976←このあたりで止まる
メモ化:メモ化再帰フィボナッチ
●
●
●

同じパラメータで何度も呼び出される
結果キャッシュ⇒メモ化!
computeIfAbsentが便利
static Map<Long, Long> cache = new HashMap<>();
public static long fib(long i){
return cache.computeIfAbsent(i, x -> {
if(x <= 2) return 1L;
return fib(x - 1) + fib(x - 2);
});
}
あっという間にlongも桁あふれ
-415292901391291839
-7413871255405604094
-7829164156796895933
3203708661507051589
-4625455495289844344
null排除
●

みんな大好きNullPointerException!
static String foo(int x){
return x > 0 && x < 10
? IntStream.range(0, x)
.mapToObj(c -> (char)('a' + c) + "")
.collect(Collectors.joining())
: null;
}
static String bar(String s){
return s.chars().max().orElse(0) % 2 == 0
? null : s;
}
public static void main(String... args){
for(int i = 0; i < 20; ++i){
String s = bar(foo(i)).toUpperCase();
System.out.println(s);
}
}

nullを返す可能性

nullを返す可能性

NullPointerException
の可能性
null排除:確実なnullチェックは面倒
for(int i = 0; i < 20; ++i){
String s = bar(foo(i)).toUpperCase();
System.out.println(s);
}

IntStream.range(0, 20)
.mapToObj(MyClass::foo)
.map(MyClass::bar)
.map(String::toUpperCase)
.forEach(System.out::println);

要nullチェック
呼び出しの分
解も必要

Streamでも要
nullチェック

for(int i = 0; i < 20; ++i){
String s = foo(i);
if(s == null) continue;
String s2 = bar(s);
if(s2 == null) continue;
String up = s2.toUpperCase();
System.out.println(up);
}

IntStream.range(0, 20)
.mapToObj(MyClass::foo)
.filter(Objects::nonNull)
.map(MyClass::bar)
.filter(Objects::nonNull)
.map(String::toUpperCase)
.forEach(System.out::println);
null排除:Optional
●
●

型としてnullの可能性を示せる
nullへの対処が
書きやすい

Optionalが返る
一度Optionalにくるまれると
nullが返っても気にならない

static Optional<String> foo(int x){
return x > 0 && x < 10
? Optional.of(IntStream.range(0, x)
.mapToObj(c -> (char)('a' + c) + "")
.collect(Collectors.joining()))
: Optional.empty();
}
static String bar(String s){
return s.chars().max().orElse(0) % 2 == 0
? null : s;
}
public static void main(String... args){
for(int i = 0; i < 20; ++i){
foo(i)
.map(MyClass::bar)
.map(String::toUpperCase)
.ifPresent(System.out::println);
}
}
null排除:Optional#flatMap
static Optional<String> foo(int x){
return x > 0 && x < 10
? Optional.of(IntStream.range(0, x)
.mapToObj(c -> (char)('a' + c) + "")
.collect(Collectors.joining()))
: Optional.empty();
}
static Optional<String> bar(String s){
return s.chars().max().orElse(0) % 2 == 0
? Optional.empty() : Optional.of(s);
}
public static void main(String... args){
for(int i = 0; i < 20; ++i){
foo(i)
.flatMap(MyClass::bar)
.map(String::toUpperCase)
.ifPresent(System.out::println);
}
}

Optionalが返るものを
はさむならflagMap
null排除:Streamだとちょっと面倒かも
IntStream.range(0, 20)
.mapToObj(MyClass::foo)
.forEach(op -> {
op.flatMap(MyClass::bar)
.map(String::toUpperCase)
.ifPresent(System.out::println);
});
null排除:完璧ではない
●

Optional自体がnullだとNullPointerException
static Optional<String> foo(int x){
return x > 0 && x < 10
? Optional.of(IntStream.range(0, x)
.mapToObj(c -> (char)('a' + c) + "")
.collect(Collectors.joining()))
: null;
}
static Optional<String> bar(String s){
return s.chars().max().orElse(0) % 2 == 0
? null : Optional.of(s);
}
public static void main(String... args){
for(int i = 0; i < 20; ++i){
foo(i)
.flatMap(MyClass::bar)
.map(String::toUpperCase)
.ifPresent(System.out::println);
}
}

nullを返してしまっている

NullPointerException!

Mais conteúdo relacionado

Mais procurados

ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発慎一 古賀
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編なべ
 
今こそStream API入門
今こそStream API入門今こそStream API入門
今こそStream API入門Yuichi Sakuraba
 
Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#3 Item 15Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#3 Item 15Mitsuru Kariya
 
Json型の使い方
Json型の使い方Json型の使い方
Json型の使い方tsudaa
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよkoji lin
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 
Electron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリElectron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリ祐磨 堀
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版信之 岩永
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!Ra Zon
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency APITaku Miyakawa
 
Spectacular Future with clojure.spec
Spectacular Future with clojure.specSpectacular Future with clojure.spec
Spectacular Future with clojure.specKent Ohashi
 
scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)RKX1209
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングLINE Corporation
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 

Mais procurados (20)

ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
Java8勉強会
Java8勉強会Java8勉強会
Java8勉強会
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編
 
今こそStream API入門
今こそStream API入門今こそStream API入門
今こそStream API入門
 
Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#3 Item 15Effective Modern C++ 勉強会#3 Item 15
Effective Modern C++ 勉強会#3 Item 15
 
RESTfulとは
RESTfulとはRESTfulとは
RESTfulとは
 
Json型の使い方
Json型の使い方Json型の使い方
Json型の使い方
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよ
 
BrowserMob-Proxyのお話
BrowserMob-Proxyのお話BrowserMob-Proxyのお話
BrowserMob-Proxyのお話
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
Electron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリElectron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリ
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
 
Spectacular Future with clojure.spec
Spectacular Future with clojure.specSpectacular Future with clojure.spec
Spectacular Future with clojure.spec
 
scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)scryptos onsite(plaid CTF)
scryptos onsite(plaid CTF)
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 

Destaque

ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)Yuuki Fukuda
 
勉強会に参加しないと不幸になる話
勉強会に参加しないと不幸になる話勉強会に参加しないと不幸になる話
勉強会に参加しないと不幸になる話なおき きしだ
 
ぼくの実装した最弱のディープラーニング
ぼくの実装した最弱のディープラーニングぼくの実装した最弱のディープラーニング
ぼくの実装した最弱のディープラーニングなおき きしだ
 
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。なおき きしだ
 
Java9新機能概要
Java9新機能概要Java9新機能概要
Java9新機能概要HonMarkHunt
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!bitter_fox
 
JJUG CCC 2014 fall Javaが見るニュータイプの夢
JJUG CCC 2014 fall Javaが見るニュータイプの夢JJUG CCC 2014 fall Javaが見るニュータイプの夢
JJUG CCC 2014 fall Javaが見るニュータイプの夢なおき きしだ
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するなおき きしだ
 
そろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでそろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでなおき きしだ
 
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31Appresso Engineering Team
 
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34Appresso Engineering Team
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallなおき きしだ
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaなおき きしだ
 
Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜eiryu
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道なおき きしだ
 
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来Preferred Networks
 

Destaque (20)

ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
 
勉強会に参加しないと不幸になる話
勉強会に参加しないと不幸になる話勉強会に参加しないと不幸になる話
勉強会に参加しないと不幸になる話
 
ぼくの実装した最弱のディープラーニング
ぼくの実装した最弱のディープラーニングぼくの実装した最弱のディープラーニング
ぼくの実装した最弱のディープラーニング
 
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
 
乱数のたのしい話
乱数のたのしい話乱数のたのしい話
乱数のたのしい話
 
Java9新機能概要
Java9新機能概要Java9新機能概要
Java9新機能概要
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
 
JavaOne2016報告
JavaOne2016報告JavaOne2016報告
JavaOne2016報告
 
JJUG CCC 2014 fall Javaが見るニュータイプの夢
JJUG CCC 2014 fall Javaが見るニュータイプの夢JJUG CCC 2014 fall Javaが見るニュータイプの夢
JJUG CCC 2014 fall Javaが見るニュータイプの夢
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
 
Javaプログラミング入門
Javaプログラミング入門Javaプログラミング入門
Javaプログラミング入門
 
そろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでそろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやで
 
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31
 
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34
 
職業人講和20140403
職業人講和20140403職業人講和20140403
職業人講和20140403
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
 
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
 

Semelhante a Java SE 8 lambdaで変わる プログラミングスタイル

Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCamlHaruka Oikawa
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミングOuka Yuka
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
Java8から始める関数型プログラミング
Java8から始める関数型プログラミングJava8から始める関数型プログラミング
Java8から始める関数型プログラミングstylefreeslide
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめSatoshi imai
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門SatoYu1ro
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)noldor
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Uehara Junji
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java心 谷本
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールNobuhisa Koizumi
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)Satoshi Yamada
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターsohta
 
Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Yoshio Terada
 

Semelhante a Java SE 8 lambdaで変わる プログラミングスタイル (20)

Rの高速化
Rの高速化Rの高速化
Rの高速化
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
Java8から始める関数型プログラミング
Java8から始める関数型プログラミングJava8から始める関数型プログラミング
Java8から始める関数型プログラミング
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
Project lambda
Project lambdaProject lambda
Project lambda
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
 
Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016
 

Mais de なおき きしだ

GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話なおき きしだ
 
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8なおき きしだ
 
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話なおき きしだ
 
Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナーJava新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナーなおき きしだ
 
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会なおき きしだ
 
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島なおき きしだ
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11なおき きしだ
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11なおき きしだ
 
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 SprJava10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Sprなおき きしだ
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowなおき きしだ
 
Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)なおき きしだ
 
これからのJava言語と実行環境
これからのJava言語と実行環境これからのJava言語と実行環境
これからのJava言語と実行環境なおき きしだ
 
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪なおき きしだ
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...なおき きしだ
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないかなおき きしだ
 

Mais de なおき きしだ (20)

GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
 
GraalVM at Fukuoka LT
GraalVM at Fukuoka LTGraalVM at Fukuoka LT
GraalVM at Fukuoka LT
 
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
 
GraalVMについて
GraalVMについてGraalVMについて
GraalVMについて
 
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話
 
最近のJava事情
最近のJava事情最近のJava事情
最近のJava事情
 
怖いコードの話 2018/7/18
怖いコードの話 2018/7/18怖いコードの話 2018/7/18
怖いコードの話 2018/7/18
 
Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナーJava新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナー
 
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
 
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
 
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 SprJava10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Spr
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should know
 
Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)
 
これからのJava言語と実行環境
これからのJava言語と実行環境これからのJava言語と実行環境
これからのJava言語と実行環境
 
JavaOne報告2017
JavaOne報告2017JavaOne報告2017
JavaOne報告2017
 
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないか
 

Último

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Último (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Java SE 8 lambdaで変わる プログラミングスタイル