Submit Search
Upload
3月度定例会プレゼン資料 張田浩明 最新
•
Download as PPTX, PDF
•
0 likes
•
187 views
H
hharita
Follow
パワポサイズを4:3に変更で再度アップ
Read less
Read more
Business
Report
Share
Report
Share
1 of 43
Download now
Recommended
HDCLT
HDCLT
Daigaku Ando
Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料
techscore
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
Shuyo Nakatani
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
ao27
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
An engineer uses monads
An engineer uses monads
Kousuke Ruichi
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
Shuyo Nakatani
Web本文抽出 using crf
Web本文抽出 using crf
Shuyo Nakatani
Recommended
HDCLT
HDCLT
Daigaku Ando
Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料
techscore
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
Shuyo Nakatani
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
ao27
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
An engineer uses monads
An engineer uses monads
Kousuke Ruichi
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
Shuyo Nakatani
Web本文抽出 using crf
Web本文抽出 using crf
Shuyo Nakatani
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
Shin Matsumoto
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
Masatoshi Tada
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
bitter_fox
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ohtsuchi
Atc15_reading_networking_session
Atc15_reading_networking_session
紘也 金子
Spring3.1概要x di
Spring3.1概要x di
Yuichi Hasegawa
性能測定道 事始め編
性能測定道 事始め編
Yuto Hayamizu
Fundamentals of Relational Database Management Systems chapter19
Fundamentals of Relational Database Management Systems chapter19
Keisuke Suzuki
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
shingo suzuki
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
shingo suzuki
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
sakaik
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
研究生のためのC++ no.7
研究生のためのC++ no.7
Tomohiro Namba
Open棟梁と、さまざまな開発標準とのフィッティング案
Open棟梁と、さまざまな開発標準とのフィッティング案
Daisuke Nishino
StreamGraph
StreamGraph
Altech Takeno
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
akira6592
LDA入門
LDA入門
正志 坪坂
JAPAN WEB3.0 AWARD 2023 ブロックチェーン(NFT)技術を活用したアイディア 優秀賞作品 遺3.0相続
JAPAN WEB3.0 AWARD 2023 ブロックチェーン(NFT)技術を活用したアイディア 優秀賞作品 遺3.0相続
Yusuke Katsuma
company profile
company profile
keiibayashi
More Related Content
Similar to 3月度定例会プレゼン資料 張田浩明 最新
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
Shin Matsumoto
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
Masatoshi Tada
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
bitter_fox
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ohtsuchi
Atc15_reading_networking_session
Atc15_reading_networking_session
紘也 金子
Spring3.1概要x di
Spring3.1概要x di
Yuichi Hasegawa
性能測定道 事始め編
性能測定道 事始め編
Yuto Hayamizu
Fundamentals of Relational Database Management Systems chapter19
Fundamentals of Relational Database Management Systems chapter19
Keisuke Suzuki
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
shingo suzuki
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
shingo suzuki
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
sakaik
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
研究生のためのC++ no.7
研究生のためのC++ no.7
Tomohiro Namba
Open棟梁と、さまざまな開発標準とのフィッティング案
Open棟梁と、さまざまな開発標準とのフィッティング案
Daisuke Nishino
StreamGraph
StreamGraph
Altech Takeno
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
akira6592
LDA入門
LDA入門
正志 坪坂
Similar to 3月度定例会プレゼン資料 張田浩明 最新
(20)
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
Atc15_reading_networking_session
Atc15_reading_networking_session
Spring3.1概要x di
Spring3.1概要x di
性能測定道 事始め編
性能測定道 事始め編
Fundamentals of Relational Database Management Systems chapter19
Fundamentals of Relational Database Management Systems chapter19
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
研究生のためのC++ no.7
研究生のためのC++ no.7
Open棟梁と、さまざまな開発標準とのフィッティング案
Open棟梁と、さまざまな開発標準とのフィッティング案
StreamGraph
StreamGraph
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
LDA入門
LDA入門
Recently uploaded
JAPAN WEB3.0 AWARD 2023 ブロックチェーン(NFT)技術を活用したアイディア 優秀賞作品 遺3.0相続
JAPAN WEB3.0 AWARD 2023 ブロックチェーン(NFT)技術を活用したアイディア 優秀賞作品 遺3.0相続
Yusuke Katsuma
company profile
company profile
keiibayashi
コダワリ抜いた経営指南書(概要版) - コダワリ・ビジネス・コンサルティング株式会社
コダワリ抜いた経営指南書(概要版) - コダワリ・ビジネス・コンサルティング株式会社
hmoriyama
第15回販促コンペ 審査員個人賞(林 知幸 氏) アルカナ? アディダスジャパン
第15回販促コンペ 審査員個人賞(林 知幸 氏) アルカナ? アディダスジャパン
Yusuke Katsuma
答えのないコンセンサスゲーム「無人島での出来事」運営用パワーポイントスライド説明資料
答えのないコンセンサスゲーム「無人島での出来事」運営用パワーポイントスライド説明資料
Jun Chiba
HCCソフト株式会社 2025年新卒採用向け 会社紹介・採用情報資料------
HCCソフト株式会社 2025年新卒採用向け 会社紹介・採用情報資料------
ssusercbaf23
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
ssuserfb441f
KestrelPro Flyer Japan IT Week 2024 (Japanese)
KestrelPro Flyer Japan IT Week 2024 (Japanese)
Data Analytics Company - 47Billion Inc.
Recently uploaded
(8)
JAPAN WEB3.0 AWARD 2023 ブロックチェーン(NFT)技術を活用したアイディア 優秀賞作品 遺3.0相続
JAPAN WEB3.0 AWARD 2023 ブロックチェーン(NFT)技術を活用したアイディア 優秀賞作品 遺3.0相続
company profile
company profile
コダワリ抜いた経営指南書(概要版) - コダワリ・ビジネス・コンサルティング株式会社
コダワリ抜いた経営指南書(概要版) - コダワリ・ビジネス・コンサルティング株式会社
第15回販促コンペ 審査員個人賞(林 知幸 氏) アルカナ? アディダスジャパン
第15回販促コンペ 審査員個人賞(林 知幸 氏) アルカナ? アディダスジャパン
答えのないコンセンサスゲーム「無人島での出来事」運営用パワーポイントスライド説明資料
答えのないコンセンサスゲーム「無人島での出来事」運営用パワーポイントスライド説明資料
HCCソフト株式会社 2025年新卒採用向け 会社紹介・採用情報資料------
HCCソフト株式会社 2025年新卒採用向け 会社紹介・採用情報資料------
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
KestrelPro Flyer Japan IT Week 2024 (Japanese)
KestrelPro Flyer Japan IT Week 2024 (Japanese)
3月度定例会プレゼン資料 張田浩明 最新
1.
Java8新機能 ラムダ式とストリーム API 2016年3月度定例会 張田浩明 全43枚 1
2.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 2
3.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 3
4.
Java8使うならJava8らしく描こうよ!! 4
5.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 5
6.
ラムダ式とストリームAPI ラムダ式とは関数を簡便に表現するための記法。 ストリームAPIは、ラムダ式を利用したコレクション操作用の API 6
7.
7 1. フルーツの一覧の中から 2. 名前が”りんご“で始まり 3.
値段が100円以上のものを、 4. 値段順で並び替えたものを 5. 名前だけ取り出して、 6. リスト作成する 簡単なサンプル
8.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 8
9.
9
10.
なぜラムダ式が必要になったのか • 並列処理が当たり前に使われるようになり、ラムダ 式の必要性が高まった。 Microsoftの提案を受け入れていれば、ラムダ式が もっと早く入っていたかもしれない。。 10
11.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 11
12.
ラムダ式使用例 • リストの中身を1つずつ取り出して処理するためforEachというメソッ ドが 追加されている。 • list.forEach(中身を1つずつ取り出してそれぞれに対してした いこと
); • 「リストの中身を1つずつ取り出してそれぞれに対してしたいこと」を、 Javaのコードとしてどう書くのか? • forEach メソッドのシグネチャを見てみると、Consumer クラスを引 数に取るらしい。 12
13.
ラムダ式使用例 • Consumerクラスの実装はこんな感じ 13
14.
ラムダ式使用例 • つまり forEach
メソッドを使って、リストの中身を1つず つ取り出して出力したいとなると、下記のような Consumer オブジェクトを引数に渡す必要がある。 14
15.
15 『なにこれJavaうざい。。 めんどくさい』 とモダンな方々なら思うよね絶対
16.
16 ここでラムダ式の出番!!!
17.
17 ここでラムダ式の出番!!! そもそもラムダ式ってなんだ??
18.
ラムダ式とは、 • 関数を第一級オブジェクトとして扱えるようにしたもの • JVMで関数を直接扱えるようになったわけではなく、内 部的にはクラスのインスタンスを使って表現している。 •
ラムダ式で記述すると自動的に並列処理化される! 18
19.
ラムダ式使用例 19 アロー演算子 (ハイフン( - )
+大なり( > ))
20.
ラムダ式書き方 (引数) -> 引数に対して行いたい処理 ___________________________________________________________________________________________________ //引数が一つ (x)
-> x * x x -> x <= 10 ________________________________________________ //引数が二つ ( int x , int y )-> { return x + y; } ( x , y ) -> x + y 20 メソッドとして考えれば イメージ湧きやすい!!!
21.
使い方:メソッド参照 • ラムダ式だけでなく、既存のメソッドも関数型インタフェースで受け取ることが可能。 //ラムダ式を使った場合 list.forEach(x ->
System.out.println(x)); //メソッド参照を使った場合 list.forEach(System.out :: println); 21 //複数行処理も可能 list.forEach(x -> { System.out.println(x); System.out.println(x); });
22.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 22
23.
ストリームAPIとは • パイプライン型のデータ処理のAPI • 絞り込み、データ変換、グループ化、集計など の操作をそれぞれ分離した形で記述できる。 •
絞り込みの条件や、加工方法などをラムダ式で指定 する。 • メソッドチェーン形式で記述できる。 • Listや配列などの集合要素に対して、逐次的もしくは並 行的に処理を提供するクラス 23
24.
ストリームパイプライン • 処理をメソッドチェーンで記述する • ソース
( Source ) • 中間操作 ( Intermediate Operation ) • 終端操作 ( Terminal Operation ) • ストリームパイプラインは、1つ以上のソース、0個以上の 中間操作、1つの終端操作から構成される。 • 終端操作の結果をソースとして処理を継続させることも 可能。 (終端操作の後にメソッドチェイン可能) 24
25.
サンプル 25 1行目がソース 2~5行目までが中間操作 6行目が終端操作
26.
ストリームパイプラインの挙動 26
27.
ソース • 既存のデータからStream型のオブジェクトを作る。 • Streamの種類 Stream<T> IntStream
, LongStream , DoubleStream • つくりかた Collection.stream() Arrays.stream() Stream.of(Object…) 27 bufferReader.lines() IntStream.range(int,int)
28.
中間操作 • 絞り込みや写像などの操作を指定して、新しいStreamを返 す。 • 遅延実行 処理方法を指定するだけで、実際には処理しない。 中間操作を呼び出すたびにループしてたら効率が悪い。 終端操作が呼ばれた時に、複数の中間操作をまとめてルー プ処理 •
処理の種類 ・絞り込み : filter ・オブジェクト変換 : map,flatMap ・並び替え : sorted 28 ・数の制御 : limit , skip ・同一要素除外 : distinct Etc…
29.
終端操作 • ストリームパイプラインを実行して、何らかの結果を取得する処 理。 forEachだけは戻り値を返さない。 • 処理の種類 •
畳み込み : collect , reduce • 集計: min , max , average , sum , count • 単一の値の取得: findFirst , findAny • 要素の検証: allMatch , anyMatch , noneMatch • 繰り返し: forEach , forEachOrdered 29 Etc…
30.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 30
31.
中間操作使用方法 : filter,
map 31 • Filter • Map __________________________ _________________________ //結果 : 300 400 500 //結果 : ”100” ”200” “300” “400” “500”
32.
中間操作使用方法 : distinct,
sored 32 • Distinct _____________ • Sorted __________ ※ List#sortメソッドが追加されている為、Streamに変換しなくても ソートすることは可能 ※ .reverse()を追加することで降順でソートが可能になる。 //結果 : 100 200 300 //結果 : 100 200 300 400 500
33.
終端操作使用方法 :anyMatch 33 • AnyMatch,
AllMatch, NoneMatch ___________________________________________ 結果 : b = true;
34.
ショートカットサーキット評価の終 端操作 • 例えば、Stream#countは全要素をループで回す ので時間がかかるが、Stream#findAnyはショート サーキット評価なので,1つ目の要素が見つかれば すぐに終わる。 34
35.
終端操作使用方法 :collect 35 • ToList _______________________________________________
36.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 36
37.
メリット パイプライン記述だから処理内容が見やすい ・保守性の向上 ・可読性の向上 簡単に並列実行できるようになる。 ->ラムダ式を用いることで自動的に並列処理 lists.stream().parallel() -> 使ったことないから詳しいこ とは説明できません。。 37
38.
保守性が向上する…? 処理の追加・削除・順番の入れ替えなどがやりやすい 再利用性やテスタビリティも向上するかも。 38
39.
39 可読性は..? • 野球選手の一覧から、チームごとの投手の平均年俸を取得する処理の例 • 気をつけないとすぐに読みにくくなる •
stream()とかstream()とかstream()とかノイズが多い。
40.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • メリットは? • まとめ • 質疑応答 40
41.
まとめ • ラムダ式 • 慣れたらラムダ式以外で書く術が考えられなくなる・・ •
デメリットも少ないし使わない手はないよね • ストリームAPI • 慣れるまでは読み書きも難しいし、バグを生みやすいかもしれない。 • でも慣れると少ない記述で複雑な処理が実行できる。 そして何より書いていて楽しい! (java7以前をバリバリ書いていた人なら絶対思っているはず。。) • しかし、標準で用意されてる機能が少ない気がします。。。。。 • 今後は独自で拡張する輩が出てきてオレオレコードが拡散するか も??? 41
42.
目次 • 本日のテーマ • ラムダ式とは?StreamAPIとは? •
ラムダ式基礎 • ラムダ式使用例 • ストリームAPIの基礎 • ストリームAPIの使用例 • まとめ • メリットは? • 質疑応答 42
43.
43 ご静聴ありがとうございました。
Editor's Notes
パラダイムシフト -> 革命
Download now