SlideShare a Scribd company logo
PgDay2012 LightningTalk
SQL上級者にこそ知って欲しい


なぜ
O/Rマッパー
             が重要か?
      makoto kuwata <kwa@kuwata-lab.com>
                 http://www.kuwata-lab.com/
問:次のSQLは
何が問題でしょう?



 copyright© 2012 kuwata-lab.com all rights reserved
SQL
--	 販売成績上位10コを抽出
select	 *	 from	 sales
where	 deleted	 =	 false
order	 by	 amount	 desc
limit	 10

                                 文法的には正しいけど…




        copyright© 2012 kuwata-lab.com all rights reserved
話は変わって、
他のプログラミング言語



  copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 販売実績上位Nコを抽出
def	 sales_top(n,	 rows)
	 	 xs	 =	 rows.map	 {|row|	 Sale.new(*row)	 }
	 	 xs	 =	 xs.select	 {|x|	 !	 x.deleted_at	 }
	 	 xs	 =	 xs.sort_by	 {|x|	 -	 x.amount	 }
	 	 xs	 =	 xs[0,	 10]
	 	 return	 xs
end




            copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 販売実績上位Nコを抽出
def	 sales_top(n,	 rows)
	 	 xs	 =	 rows.map	 {|row|	 Sale.new(*row)	 }
	 	 xs	 =	 xs.select	 {|x|	 !	 x.deleted_at	 }
	 	 xs	 =	 xs.sort_by	 {|x|	 -	 x.amount	 }
	 	 xs	 =	 xs[0,	 10]          select from相当
	 	 return	 xs
end




            copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 販売実績上位Nコを抽出
def	 sales_top(n,	 rows)
	 	 xs	 =	 rows.map	 {|row|	 Sale.new(*row)	 }
	 	 xs	 =	 xs.select	 {|x|	 !	 x.deleted_at	 }
	 	 xs	 =	 xs.sort_by	 {|x|	 -	 x.amount	 }
	 	 xs	 =	 xs[0,	 10]
	 	 return	 xs            where相当
end




            copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 販売実績上位Nコを抽出
def	 sales_top(n,	 rows)
	 	 xs	 =	 rows.map	 {|row|	 Sale.new(*row)	 }
	 	 xs	 =	 xs.select	 {|x|	 !	 x.deleted_at	 }
	 	 xs	 =	 xs.sort_by	 {|x|	 -	 x.amount	 }
	 	 xs	 =	 xs[0,	 10]
	 	 return	 xs         order by相当
end




            copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 販売実績上位Nコを抽出
def	 sales_top(n,	 rows)
	 	 xs	 =	 rows.map	 {|row|	 Sale.new(*row)	 }
	 	 xs	 =	 xs.select	 {|x|	 !	 x.deleted_at	 }
	 	 xs	 =	 xs.sort_by	 {|x|	 -	 x.amount	 }
	 	 xs	 =	 xs[0,	 10]
	 	 return	 xs
                        limit相当
end




            copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 販売実績上位Nコを抽出
def	 sales_top(n,	 rows)
	 	 xs	 =	 rows.map	 {|row|	 Sale.new(*row)	 }
	 	 xs	 =	 xs.select	 {|x|	 !	 x.deleted_at	 }
	 	 xs	 =	 xs.sort_by	 {|x|	 -	 x.amount	 }
	 	 xs	 =	 xs[0,	 10]
	 	 return	 xs
end                       1つの関数でいろんな
                                      ことをやりすぎている




            copyright© 2012 kuwata-lab.com all rights reserved
複数の関数に分解
(リファクタリング)




 copyright© 2012 kuwata-lab.com all rights reserved
Ruby
def	 to_sales(rows)
	 	 rows.map	 {|row|	 Sale.new(*row)	 }
end

def	 active(sales)
	 	 sales.select	 {|x|	 !	 x.deleted_at	 }
end

def	 top(n,	 sales)
	 	 sales	 =	 sales.sort_by	 {|x|	 -	 x.amount	 }
	 	 return	 sales[0,	 10]
end


            copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 使い方
def	 sales_top(n,	 rows)
	 	 return	 top(n,	 active(to_sales(rows)))
end
                                           分解した関数を
                                            組み合わせる




           copyright© 2012 kuwata-lab.com all rights reserved
専用のクラスを定義
 (オブジェクト指向)




 copyright© 2012 kuwata-lab.com all rights reserved
Ruby
clas	 Sales
	 	 def	 initialize(rows)
	 	 	 	 @all	 =	 rows.map	 {|row|	 Sales.new(*row)	 }
	 	 end
	 	 attr_reader	 :all
	 	 def	 active
	 	 	 	 @all	 =	 @all.select	 {|x|	 !	 x.deleted	 }
	 	 	 	 return	 self
	 	 end
	 	 def	 top(n)
	 	 	 	 @all	 =	 @all.sort_by	 {|x|	 -	 x.amount	 }
	 	 	 	 @all	 =	 @all[0,	 n]
	 	 	 	 return	 self
	 	 end
end

              copyright© 2012 kuwata-lab.com all rights reserved
Ruby
##	 使い方
Sales.new(rows).active().top(10).all()


                                      分解したメソッドを
                                        組み合わせる




          copyright© 2012 kuwata-lab.com all rights reserved
プログラミング言語が
持っている基本機能



  copyright© 2012 kuwata-lab.com all rights reserved
• 「全体」 「部分」
      を    に分解する機能

• 「部分」 「全体」
      から   を構築する機能

• 「部分」に名前をつけて抽象化する機能




     copyright© 2012 kuwata-lab.com all rights reserved
改めて、次のSQLは
何が問題でしょう?



 copyright© 2012 kuwata-lab.com all rights reserved
SQL
--	 販売成績上位10コを抽出
select	 *	 from	 sales
where	 deleted	 =	 false
order	 by	 amount	 desc
limit	 10




        copyright© 2012 kuwata-lab.com all rights reserved
SQLは、分解・構築・
抽象化の機能が弱っちい!



  copyright© 2012 kuwata-lab.com all rights reserved
そこで
O/R Mapper!!

  copyright© 2012 kuwata-lab.com all rights reserved
ORMを使うことで、

•SQLを小さい部品に分解
• 部品からSQL全体を構築
• 部品に名前をつけて抽象化
できるようになる!

   copyright© 2012 kuwata-lab.com all rights reserved
サンプルコード:

ActiveRecord (Rails3)

     copyright© 2012 kuwata-lab.com all rights reserved
Ruby
                             where deleted = false
class	 Sales	 <	 ActiveReocrd::Base
                                                  に相当する「部分」
	 	 named_scope	 :active,	 
	 	 	 	 {:conditions=>"deleted	 =	 false"}

	 	 named_scope	 :top,	 lambda	 do	 |n|
	 	 	 	 {:order=>"amount	 desc",	 :limit=>n}
	 	 end
                            order by amount desc limit n
end                         に相当する「部分」




            copyright© 2012 kuwata-lab.com all rights reserved
「部分」を組み合わせて                                              Ruby
          「全体」を構築

Sales.active().top(10).all()

##	 これは
##	 	 select	 *	 from	 sales
##	 	 where	 deleted	 =	 false
##	 	 order	 by	 amount	 desc	 limit	 10
##	 を生成して実行する




        ※(2012-12-19) 「と同じ」を「を生成して実行する」に修正

            copyright© 2012 kuwata-lab.com all rights reserved
サンプルコード:

DataMapper

 copyright© 2012 kuwata-lab.com all rights reserved
Ruby
class	 Sales
                          where deleted = false
	 	 include	 DataMapper::Resource
                                          に相当する「部分」
	 	 def	 self.active
	 	 	 	 where(:deleted	 =>	 false)
	 	 end

	 	 def	 self.top(n)
	 	 	 	 order(:amount.desc).limit(n)
	 	 end
end                 order by amount desc limit n
                          に相当する「部分」



             copyright© 2012 kuwata-lab.com all rights reserved
「部分」を組み合わせて                                              Ruby
          「全体」を構築

Sales.active().top(10).all()

##	 これも
##	 	 select	 *	 from	 sales
##	 	 where	 deleted	 =	 false
##	 	 order	 by	 amount	 desc	 limit	 10
##	 を生成して実行する




        ※(2012-12-19) 「と同じ」を「を生成して実行する」に修正

            copyright© 2012 kuwata-lab.com all rights reserved
別のサンプル:

副問い合わせ


copyright© 2012 kuwata-lab.com all rights reserved
SQL
--	 年齢が20歳の社員が所属する部署一覧
select	 *	 from	 departments
where	 id	 in
	 	 (select	 dept_id	 from	 employees
	 	 	 where	 age	 =	 20)
order	 by	 name
                              SQLに「部品化」の機能が
                              ないことを示す典型例




                ※(2012-12-13) "select id" を "select dept_id" に修正

         copyright© 2012 kuwata-lab.com all rights reserved
サンプルコード:

      Sequel

copyright© 2012 kuwata-lab.com all rights reserved
副問い合わせを切り出して
     名前を付ける
                                                        Ruby
dept_ids	 =	 Employee.select(:dept_id)	 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 .filter(:age=>20)
Department.filter(:id=>dept_ids).all()
            SQL構築が簡潔になる
                                                                   SQL
select	 *	 from	 departments
where	 id	 in
	 	 (select	 dept_id	 from	 employees
	 	 	 where	 age	 =	 20)


              copyright© 2012 kuwata-lab.com all rights reserved
Ruby
dept_ids	 =	 Employee.select(:dept_id)	 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 .filter(:age=>20)
Department.filter(:id=>dept_ids).all()
Budget.filter(:dept_id=>dept_ids).all()


         部品化した副問い合わせを複数の
         SQLで共用できる(with句より便利)




              copyright© 2012 kuwata-lab.com all rights reserved
別のサンプル:

重複した式


copyright© 2012 kuwata-lab.com all rights reserved
SQL
--	 誕生日をもとに年齢を計算
select	 date_part('year',	 age(birth))	 	 	 
	 	 	 	 	 	 	 as	 age,	 count(*)
from	 users
where	 date_part('year',	 age(birth))	 <	 20
group	 by	 date_part('year',	 age(birth))
order	 by	 age
                               同じ式が重複して出現




           copyright© 2012 kuwata-lab.com all rights reserved
サンプルコード:

SQLAlchemy

 copyright© 2012 kuwata-lab.com all rights reserved
年齢の計算式を表す構文木を作り、                                       Python
from	 sqlalchemy.sql	 import	 func	 as	 fn
age	 =	 fn.date_part('year',	 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 fn.age(User.birth))
rows	 =	 DBSession	 
	 	 	 	 	 	 	 .query(age,	 fn.count('*'))	 
	 	 	 	 	 	 	 .select_from(User)	 
	 	 	 	 	 	 	 .filter(age	 <	 20)	 
	 	 	 	 	 	 	 .group_by(age)	 
	 	 	 	 	 	 	 .order_by(age)	 
	 	 	 	 	 	 	 .all()
                             それを複数箇所で使用できる



              copyright© 2012 kuwata-lab.com all rights reserved
つまり



copyright© 2012 kuwata-lab.com all rights reserved
• SQLには部品化の機能がない
 → SQLが長くなる・わかりにくい
 → 複数のSQLで要素の重複が多い

• ORMはSQL要素の部品化ができる
 → SQL構築が簡潔・わかりやすい
 → 複数のSQLで部品を共用できる


    copyright© 2012 kuwata-lab.com all rights reserved
• SQLには部品化の機能がない
 → SQLが長くなる・わかりにくい
 → 複数のSQLで要素の重複が多い

• ORMはSQL要素の部品化ができる
 → SQL構築が簡潔・わかりやすい
 → 複数のSQLで部品を共用できる


    copyright© 2012 kuwata-lab.com all rights reserved
たとえるなら



copyright© 2012 kuwata-lab.com all rights reserved
まだ進化の途中な
               高水準へと進化                                  ので暖かい目を!

Lisp, Ruby                                     Modern ORM



C, Pascal                                         JDBC, DBI



Assembler                                               SQL
                   低水準から


        copyright© 2012 kuwata-lab.com all rights reserved
まとめ



copyright© 2012 kuwata-lab.com all rights reserved
• 一般のプログラミング言語には
 「分解」「構築」「抽象化」
 の機能がある

• SQLはそれらが弱っちい
• モダンなORMなら、それらの機能
 をSQLに提供できる

    ORMはSQLの高水準言語 or DSL!



    copyright© 2012 kuwata-lab.com all rights reserved
おしまい
copyright© 2012 kuwata-lab.com all rights reserved

More Related Content

What's hot (20)

AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
yoku0825
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
yoku0825
 

Viewers also liked (6)

よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
Narami Kiyokura
 
テスト自動化の現場から~落とし穴に気を付けよう~
テスト自動化の現場から~落とし穴に気を付けよう~テスト自動化の現場から~落とし穴に気を付けよう~
テスト自動化の現場から~落とし穴に気を付けよう~
Satsuki Urayama
 
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
kyon mm
 
3000社の業務データ絞り込みを支える技術
3000社の業務データ絞り込みを支える技術3000社の業務データ絞り込みを支える技術
3000社の業務データ絞り込みを支える技術
Ryo Mitoma
 
WalB: Real-time and Incremental Backup System for Block Devices
WalB: Real-time and Incremental Backup System for Block DevicesWalB: Real-time and Incremental Backup System for Block Devices
WalB: Real-time and Incremental Backup System for Block Devices
uchan_nos
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jumpei Miyata
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
Narami Kiyokura
 
テスト自動化の現場から~落とし穴に気を付けよう~
テスト自動化の現場から~落とし穴に気を付けよう~テスト自動化の現場から~落とし穴に気を付けよう~
テスト自動化の現場から~落とし穴に気を付けよう~
Satsuki Urayama
 
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
kyon mm
 
3000社の業務データ絞り込みを支える技術
3000社の業務データ絞り込みを支える技術3000社の業務データ絞り込みを支える技術
3000社の業務データ絞り込みを支える技術
Ryo Mitoma
 
WalB: Real-time and Incremental Backup System for Block Devices
WalB: Real-time and Incremental Backup System for Block DevicesWalB: Real-time and Incremental Backup System for Block Devices
WalB: Real-time and Incremental Backup System for Block Devices
uchan_nos
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jumpei Miyata
 

Similar to SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か? (20)

HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
Hadoop / Spark Conference Japan
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
ericsagnes
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
sairoutine
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
 
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
オラクルユニバーシティ
 
activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介
Kevin Toyoda
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
Sho A
 
20110820 metaprogramming
20110820 metaprogramming20110820 metaprogramming
20110820 metaprogramming
Masanori Kado
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
Shogo Sensui
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1
Noriyoshi Shinoda
 
Web技術勉強会 第25回
Web技術勉強会 第25回Web技術勉強会 第25回
Web技術勉強会 第25回
龍一 田中
 
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
Masanori Machii
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
Shigeru UCHIYAMA
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
だいすけ さとう
 
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
Hadoop / Spark Conference Japan
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
ericsagnes
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
sairoutine
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
 
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
20170428_【事前課題あり】ORACLE MASTER Bronze Oracle Database 12c 「12c SQL基礎[12c SQL]...
オラクルユニバーシティ
 
activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介
Kevin Toyoda
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
Sho A
 
20110820 metaprogramming
20110820 metaprogramming20110820 metaprogramming
20110820 metaprogramming
Masanori Kado
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
Shogo Sensui
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1
Noriyoshi Shinoda
 
Web技術勉強会 第25回
Web技術勉強会 第25回Web技術勉強会 第25回
Web技術勉強会 第25回
龍一 田中
 
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
Masanori Machii
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
Shigeru UCHIYAMA
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
だいすけ さとう
 

More from kwatch (20)

How to make the fastest Router in Python
How to make the fastest Router in PythonHow to make the fastest Router in Python
How to make the fastest Router in Python
kwatch
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
kwatch
 
なんでもID
なんでもIDなんでもID
なんでもID
kwatch
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
kwatch
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?
kwatch
 
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
kwatch
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
kwatch
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
kwatch
 
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
kwatch
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurial
kwatch
 
Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -
kwatch
 
文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた
kwatch
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"
kwatch
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラム
kwatch
 
Javaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンJavaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジン
kwatch
 
Underlaying Technology of Modern O/R Mapper
Underlaying Technology of Modern O/R MapperUnderlaying Technology of Modern O/R Mapper
Underlaying Technology of Modern O/R Mapper
kwatch
 
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
kwatch
 
How to make the fastest Router in Python
How to make the fastest Router in PythonHow to make the fastest Router in Python
How to make the fastest Router in Python
kwatch
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
kwatch
 
なんでもID
なんでもIDなんでもID
なんでもID
kwatch
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
kwatch
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?
kwatch
 
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
kwatch
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
kwatch
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
kwatch
 
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
kwatch
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurial
kwatch
 
Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -
kwatch
 
文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた
kwatch
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"
kwatch
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラム
kwatch
 
Javaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンJavaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジン
kwatch
 
Underlaying Technology of Modern O/R Mapper
Underlaying Technology of Modern O/R MapperUnderlaying Technology of Modern O/R Mapper
Underlaying Technology of Modern O/R Mapper
kwatch
 
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
kwatch
 

Recently uploaded (9)

IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
 
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptxドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ssuserfcafd1
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
Ayachika Kitazaki
 
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
 
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
harmonylab
 
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdfIchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
Matsushita Laboratory
 
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
harmonylab
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
 
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptxドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ssuserfcafd1
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
Ayachika Kitazaki
 
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
 
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
harmonylab
 
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdfIchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
Matsushita Laboratory
 
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
harmonylab
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 

SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?