SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
2017年11月20日
ヤフー株式会社 クエリエンジンチーム 曾臻
sso@yahoo-corp.jp
Design patterns
in presto
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Agenda
2
• 自己紹介
• Presto紹介
• Design Patterns in presto
• Template Method
• Visitor
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
自己紹介
名前 : 曾 臻
所属 :ヤフー株式会社 D&Sソリューション
統括本部 クエリエンジン
経歴 :
Presto開発・運用
広告システム開発
SIer
3
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Agenda
4
• 自己紹介
• Presto紹介
• Design Patterns in presto
• Template Method
• Visitor
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Presto紹介
• 100% オープンソースの分散式ANSI SQL クエリエン
ジン
• Facebookが公開した
• パフォーマンス&スケーラブル
• Hadoopだけではなく、違うプラットフォームのデー
タもアクセス可能
• Apache licensed, hosted on GitHub
5
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Agenda
6
• 自己紹介
• Presto紹介
• Design Patterns in presto
• Template Method
• Visitor
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Design Patterns in presto
PrestoはBuilder、Factory、Iterator、
Singletonなどのパターンを活用してい
る。
今回は主にTemplate Methodと
Visitorパターンを紹介したい。
7
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Design Patterns in presto
8
Source:[Head First Design Patterns] - O'Reilly Media
オブジェクトの生成に関するパターン
プログラムの構造に関するパターン
オブジェクトの振る舞いに関するパターン
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Agenda
9
• 自己紹介
• Presto紹介
• Design Patterns in presto
• Template Method
• Visitor
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Methodとは何?
定義:
ある処理のおおまかなアルゴリズムをあ
らかじめ決めておいて、そのアルゴリズ
ムの具体的な設計をサブクラスに任せる
ことである。
10 Source : https://ja.wikipedia.org/wiki/Template_Method_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method例1
Template Method パターンの目的は、ある
処理のおおまかなアルゴリズムをあらかじ
め決めておいて、そのアルゴリズムの具体
的な設計をサブクラスに任せることである。
11
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method例1
12
https://gist.github.com/zz22394/1e5a097253db10f606dbbed8075c00f5
具象クラスは複数個作って良い
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Presto
• Prestoソースコードの中のTemplate Method
パターンを分析してみる。
• AbstractOperatorBenchmark
• AbstractArrayBlock
13
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Presto
14
AbstractOperatorBenchmark
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Presto
15
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Presto
16
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Presto
17
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Presto
18
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Presto
19
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Java
• JavaのTemplate Methodの実例を話す
• HttpServlet
• JUnit
20
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Java
21
http://www.codejava.net/java-ee/servlet/uml-class-diagram-of-httpservlet-api
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Java
22
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Java
23
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Java
24
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Java
25
• Junit
http://junit.sourceforge.net/doc/cookstour/cookstour.htm
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method in Java
26
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Template Method のまとめ
27
• 抽象クラスのテンプレートでアルゴリズム
の不変な部分を実装し、具象クラス内で
可変な部分を実装。
• 共通処理は抽象クラスに集約されるので、
ソースコードが再利用される
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Agenda
28
• 自己紹介
• Presto紹介
• Design Patterns in presto
• Template Method
• Visitor
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンとは?
29
Visitor パターンは、オブジェクト指向プログラミング およびソフトウェ
ア工学 において、 アルゴリズムをオブジェクトの構造から分離するための
デザインパターンである。分離による実用的な結果として、既存のオブ
ジェクトに対する新たな操作を構造を変更せずに追加することができる。
基本的には Visitor パターンは一群のクラスに対して新たな仮想関数をク
ラス自体を変更せずに追加できるようにする。そのために、全ての仮想関
数を適切に特化させた Visitor クラスを作成する。Visitor はインスタンス
への参照を入力として受け取り、ダブルディスパッチを用いて目的を達す
る。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンクラス図
30
https://ja.wikipedia.org/wiki/Visitor_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンの例1
31
Visitor:アルゴリズムをオブジェクトの構造か
ら分離する
練習問題:
車Objectがある。車の運転と検査仕組みを
それぞれ書く。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンの例1
32
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンの例1
33
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンの例1
34
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンの例1
35
InspectVisitor/DriveVisitorがそれぞれの形で
visitXXXメソッドを実装した
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンの例1
36
InspectVisitor/DriveVisitorがそれぞれの形で
visitXXXメソッドを実装した
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンの例1
37
メリット:データ構造と処理が分離された。
ある日「洗車機能を追加したい」
と言われたら、新しいVisitorで簡単に対応できる。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
38
• Visitor パターン例
• Visitor in presto
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
39
• Prestoの実行計画生成の流れ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
40
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
41
背景:NodeのAST(抽象文法木)はどうやっ
て作られた?
例:あるSQL文
SELECT ROW_NO,START_TIME FROM TBL_01
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
42
ANTLR4
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
43
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
44
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
45
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
46
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
47
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
48
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor in presto
49
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Visitor パターンのまとめ
50
• 複雑なパターン
• 利用のハードルは比較的に高い
• 向いているユースケース:データオブジェ
クト構成が大きく変わらない、且つデータ
オブジェクトに対しての操作がよく変わる
(あるいは複数パターンの操作がある)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
EOP

Weitere ähnliche Inhalte

Was ist angesagt?

Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingDataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingYahoo!デベロッパーネットワーク
 
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!デベロッパーネットワーク
 
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_bYahoo!デベロッパーネットワーク
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話Yahoo!デベロッパーネットワーク
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Yahoo!デベロッパーネットワーク
 
データの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiCデータの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiCYahoo!デベロッパーネットワーク
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みYahoo!デベロッパーネットワーク
 
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpKafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpYahoo!デベロッパーネットワーク
 

Was ist angesagt? (20)

Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版
 
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingDataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
 
広告における機械学習の適用例とシステムについて
広告における機械学習の適用例とシステムについて広告における機械学習の適用例とシステムについて
広告における機械学習の適用例とシステムについて
 
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjugJavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
 
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
 
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreadingApache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
 
Storm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreadingStorm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreading
 
AMPと広告とOpenRTBと #yjmu
AMPと広告とOpenRTBと #yjmuAMPと広告とOpenRTBと #yjmu
AMPと広告とOpenRTBと #yjmu
 
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
 
Presto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnightPresto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnight
 
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjpElasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
 
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
Yahoo! JAPANのOSS Cassandra貢献の今までとこれからYahoo! JAPANのOSS Cassandra貢献の今までとこれから
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
データの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiCデータの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiC
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
 
絶対にタダでは転ばない広告エンジニア #yjmu
絶対にタダでは転ばない広告エンジニア #yjmu絶対にタダでは転ばない広告エンジニア #yjmu
絶対にタダでは転ばない広告エンジニア #yjmu
 
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpKafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
 

Andere mochten auch

グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかグロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかYahoo!デベロッパーネットワーク
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...Yahoo!デベロッパーネットワーク
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Kohei Saito
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017Carol Smith
 

Andere mochten auch (10)

ICML2017 参加報告会 山本康生
ICML2017 参加報告会 山本康生ICML2017 参加報告会 山本康生
ICML2017 参加報告会 山本康生
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
#ibis2017 Description: IBIS2017の企画セッションでの発表資料
#ibis2017 Description: IBIS2017の企画セッションでの発表資料#ibis2017 Description: IBIS2017の企画セッションでの発表資料
#ibis2017 Description: IBIS2017の企画セッションでの発表資料
 
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
 
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかグロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのか
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
 
第4回 NIPS+読み会・関西 発表資料 山本
第4回 NIPS+読み会・関西 発表資料 山本第4回 NIPS+読み会・関西 発表資料 山本
第4回 NIPS+読み会・関西 発表資料 山本
 
Cassandra: Now and the Future @ Yahoo! JAPAN
Cassandra: Now and the Future @ Yahoo! JAPANCassandra: Now and the Future @ Yahoo! JAPAN
Cassandra: Now and the Future @ Yahoo! JAPAN
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
 

Ähnlich wie Design pattern in presto source code

決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニーTokuhiro Eto
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
 
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術Yahoo!デベロッパーネットワーク
 
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったことMasayuki Ueda
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来Masayuki Ueda
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo!デベロッパーネットワーク
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorpMasatomo Ito
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4Yahoo!デベロッパーネットワーク
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]David Buck
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe MagentoHirokazu Nishi
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackMasatomo Ito
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfesYahoo!デベロッパーネットワーク
 

Ähnlich wie Design pattern in presto source code (20)

決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
 
Prestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnightPrestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnight
 
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
 
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~ Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stack
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
 

Mehr von Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Mehr von Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Kürzlich hochgeladen

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

Kürzlich hochgeladen (9)

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

Design pattern in presto source code

  • 1. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 2017年11月20日 ヤフー株式会社 クエリエンジンチーム 曾臻 sso@yahoo-corp.jp Design patterns in presto
  • 2. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Agenda 2 • 自己紹介 • Presto紹介 • Design Patterns in presto • Template Method • Visitor
  • 3. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 自己紹介 名前 : 曾 臻 所属 :ヤフー株式会社 D&Sソリューション 統括本部 クエリエンジン 経歴 : Presto開発・運用 広告システム開発 SIer 3
  • 4. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Agenda 4 • 自己紹介 • Presto紹介 • Design Patterns in presto • Template Method • Visitor
  • 5. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Presto紹介 • 100% オープンソースの分散式ANSI SQL クエリエン ジン • Facebookが公開した • パフォーマンス&スケーラブル • Hadoopだけではなく、違うプラットフォームのデー タもアクセス可能 • Apache licensed, hosted on GitHub 5
  • 6. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Agenda 6 • 自己紹介 • Presto紹介 • Design Patterns in presto • Template Method • Visitor
  • 7. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Design Patterns in presto PrestoはBuilder、Factory、Iterator、 Singletonなどのパターンを活用してい る。 今回は主にTemplate Methodと Visitorパターンを紹介したい。 7
  • 8. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Design Patterns in presto 8 Source:[Head First Design Patterns] - O'Reilly Media オブジェクトの生成に関するパターン プログラムの構造に関するパターン オブジェクトの振る舞いに関するパターン
  • 9. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Agenda 9 • 自己紹介 • Presto紹介 • Design Patterns in presto • Template Method • Visitor
  • 10. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Methodとは何? 定義: ある処理のおおまかなアルゴリズムをあ らかじめ決めておいて、そのアルゴリズ ムの具体的な設計をサブクラスに任せる ことである。 10 Source : https://ja.wikipedia.org/wiki/Template_Method_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
  • 11. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method例1 Template Method パターンの目的は、ある 処理のおおまかなアルゴリズムをあらかじ め決めておいて、そのアルゴリズムの具体 的な設計をサブクラスに任せることである。 11
  • 12. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method例1 12 https://gist.github.com/zz22394/1e5a097253db10f606dbbed8075c00f5 具象クラスは複数個作って良い
  • 13. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Presto • Prestoソースコードの中のTemplate Method パターンを分析してみる。 • AbstractOperatorBenchmark • AbstractArrayBlock 13
  • 14. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Presto 14 AbstractOperatorBenchmark
  • 15. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Presto 15
  • 16. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Presto 16
  • 17. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Presto 17
  • 18. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Presto 18
  • 19. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Presto 19
  • 20. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Java • JavaのTemplate Methodの実例を話す • HttpServlet • JUnit 20
  • 21. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Java 21 http://www.codejava.net/java-ee/servlet/uml-class-diagram-of-httpservlet-api
  • 22. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Java 22
  • 23. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Java 23
  • 24. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Java 24
  • 25. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Java 25 • Junit http://junit.sourceforge.net/doc/cookstour/cookstour.htm
  • 26. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method in Java 26
  • 27. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Template Method のまとめ 27 • 抽象クラスのテンプレートでアルゴリズム の不変な部分を実装し、具象クラス内で 可変な部分を実装。 • 共通処理は抽象クラスに集約されるので、 ソースコードが再利用される
  • 28. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Agenda 28 • 自己紹介 • Presto紹介 • Design Patterns in presto • Template Method • Visitor
  • 29. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンとは? 29 Visitor パターンは、オブジェクト指向プログラミング およびソフトウェ ア工学 において、 アルゴリズムをオブジェクトの構造から分離するための デザインパターンである。分離による実用的な結果として、既存のオブ ジェクトに対する新たな操作を構造を変更せずに追加することができる。 基本的には Visitor パターンは一群のクラスに対して新たな仮想関数をク ラス自体を変更せずに追加できるようにする。そのために、全ての仮想関 数を適切に特化させた Visitor クラスを作成する。Visitor はインスタンス への参照を入力として受け取り、ダブルディスパッチを用いて目的を達す る。
  • 30. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンクラス図 30 https://ja.wikipedia.org/wiki/Visitor_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
  • 31. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンの例1 31 Visitor:アルゴリズムをオブジェクトの構造か ら分離する 練習問題: 車Objectがある。車の運転と検査仕組みを それぞれ書く。
  • 32. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンの例1 32
  • 33. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンの例1 33
  • 34. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンの例1 34
  • 35. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンの例1 35 InspectVisitor/DriveVisitorがそれぞれの形で visitXXXメソッドを実装した
  • 36. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンの例1 36 InspectVisitor/DriveVisitorがそれぞれの形で visitXXXメソッドを実装した
  • 37. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンの例1 37 メリット:データ構造と処理が分離された。 ある日「洗車機能を追加したい」 と言われたら、新しいVisitorで簡単に対応できる。
  • 38. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 38 • Visitor パターン例 • Visitor in presto
  • 39. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 39 • Prestoの実行計画生成の流れ
  • 40. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 40
  • 41. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 41 背景:NodeのAST(抽象文法木)はどうやっ て作られた? 例:あるSQL文 SELECT ROW_NO,START_TIME FROM TBL_01
  • 42. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 42 ANTLR4
  • 43. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 43
  • 44. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 44
  • 45. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 45
  • 46. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 46
  • 47. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 47
  • 48. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 48
  • 49. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor in presto 49
  • 50. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Visitor パターンのまとめ 50 • 複雑なパターン • 利用のハードルは比較的に高い • 向いているユースケース:データオブジェ クト構成が大きく変わらない、且つデータ オブジェクトに対しての操作がよく変わる (あるいは複数パターンの操作がある)
  • 51. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. EOP