SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
よろしい、ならばMicro-ORMだ
きよくら ならみ
第二回 中国地方DB勉強会
2013/10/05
自己紹介
• きよくら ならみ
– @kiyokura / id:kiyokura
• 岡山生まれ岡山育ちのプログラマー
– 現在は県内の某製造業で社内SE
• NET系の開発やWebアプリ開発
– Microsoft MVP for ASP.NET/IIS
ORMとSQLと
ORM派 vs SQL派(?)
• よく論争になってる(?)
• でも今日はそんな話はしません
• (そもそも個人的には対立軸ではないと思って
ます)
先に私の個人的結論を言うと
• ORM使えばいい
• むしろどんどん使うべき
ただし銀の弾丸じゃない
• コンテキスト次第
– 「デメリットが勝つ」というべきか、
「メリットが有効に働かない」というべきか
– そういうことはある
でも面倒なのは避けたいです
• ORMが使えなくても
– なるべくならば
今日のお話の流れ
• ORMについて
• ORMがあんまり有効でないケース
• Micro-ORMについて
ORMとは
ORMの代表的な機能
• クエリの自動生成
• データ(値)のマッピング
• DB操作のラッピング
• ソースコード自動生成
• もちろん実装によっては無い機能もある
"面倒くさい"ところを便利に
• SQL
• エンティティになるクラス
• DB操作をいちいち書かなくていい
• 単体テストが必要な個所が削れる
• 実装によって異なる場合があります
便利なのでどんどん使えばいいよ
• そう思います
ORMが有効じゃないケースとは
ORMが有効でないケースもある
• 往々にして"銀の弾丸"は無いです
• 幾つかあると思いますが、もっとも根本
的なお話をしたいと思います
DB設計がORMに適さないケース
• 例えばデータが単一のアプリケーション
内に閉じないケース
こんな感じとか
販売データ
労務データ
製造データ
研究開発
データ
顧客データ
販売管理システム 生産管理システム
賞与計算システム 製造品質管理
システム
データベース ">" アプリケーション
• 何が「>」?
– 利用範囲や権限、寿命等
• データが横断的に利用される
– 例えば基幹系システムでは良くありますよね
• キーワード:
データ中心アプローチ(DOA)
その他ORMが使いにくいと思われるケース
• DB設計がイケてない!
– パフォーマンスが出ない
– 適切にリレーションが貼られていない
– もちろん私にそれを変更する権限は(
• ドライバ・プロバイダが使いたいORMに
対応してない
– たまにある
ORMが使えないならどうするか
• もちろん、使わずに書くしかない
• SQL組み立てて...
• DBの接続情報を読み込んで...
• DBに接続して...
• おっと、例外時の処理もしっかりしとか
ないと
• パラメータをバインドして…
• クエリを実行!
そして…
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット、
• レコードの値を変数にセット
決まりきったことは書きたくない
• 生産効率云々...
• Lazinessはプログラマの三大美徳の一つ
• どうにかズル出来ないものか
真面目な話、
• 自力でコードを書く量が少ないに越した
ことはない
– 仮に実装にかかる時間が同じとしても
– バグを積み込む可能性は減る
• テストするべき個所が減る
そこで、今日の本題です
Micro-ORMってなに??
大体こんなもの
• 軽量で
• 高速な
• プチORM…とでも言うもの
"プチ”故に...
クエリの
自動生成
データ
(値)の
マッピング
DB操作の
ラッピング
ソース
コード自
動生成
☆物によってはある程度するものも
このあたりを面倒見てくれる
• DB操作のラッピング
– クエリ実行は面倒見てくれる
– 接続やトランザクション制御は
"ある程度"は自動でやってくれる
• 値のマッピング
– クエリの結果セットの取得とマッピング
– クエリのパラメータへのマッピング
軽量で早い
• ソースコード1~2ファイルとかの実装が
多い
• あんまり複雑なことしない分早い
• クエリの実行速度は
"あなたが組んだSQLに依存する"
Micro-ORMの実装例の紹介
実装例
• 代表的な実装例
– dappar dot net
– Massive
– PetaPoco
• あれ?なんか.NETの実装ばっかりだ:p
• dapper dot netを例に少しだけ紹介
おことわり
• .NETの実装ですのでコードも.NETです
• 今日はざっくりとさらっと
• 詳しいコード例やデモ、他のORMとの比
較などは…
来週(10/12)のヒーロー島で!
• 「ヒーロー島 秋の収穫祭 2013」
• こちらでは、よりコード例や機能の紹介など
を行いたいと思います
• 10/12(日)、八丁堀のMS中四国支店
– 八丁堀電停から徒歩3分
• 詳細とお申し込みはこちら
– http://heroshima.jp/EventInfo/autumn2013
dapper dot net
• .NET向けのMicro-ORM
– Dapper.NETとも書かれる
• オープンソース
– ApachとMITのデュアルライセンス
• サイトはこの辺
– https://code.google.com/p/dapper-dot-net/
– https://github.com/SamSaffron/dapper-dot-
net
dapper dot net
• 対象データベース
– たいがい行ける気がします
• ADO.NETに準拠したプロバイダがあれば
• SQL Server / Oracle / MySQL / PostgreSQL
• 最悪ODBCあれば行ける気がする
導入は簡単
• NuGetで一発インストール
実際の使用例
• 実際にdapperを使った例をお見せします
...とその前に
• dapperやORMを使わずに書いた
DBアクセスの例
public IList<EmployeeEntity> FindAll()
{
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee;"
var cmd = new SqlCeCommand(sql , cn);
var result = new List<EmployeeEntity>();
using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
result.Add(new EmployeeEntity()
{
ID = (int)dr["ID"],
Name = (string)dr["Name"],
Age = (int)dr["Age"],
Email = (string)dr["Email"]
});
}
}
return result;
}
}
var cmd = new SqlCeCommand(sql , cn);
var result = new List<EmployeeEntity>();
using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
result.Add(new EmployeeEntity()
{
ID = (int)dr["ID"],
Name = (string)dr["Name"],
Age = (int)dr["Age"],
Email = (string)dr["Email"]
});
}
}
①実行の下準備(コマンドオブジェクト作成)
②実行して
③型変換とかしながらクエリの結果をオブジェクトにマッピング
カ
ラ
ム
が
増
え
る
と
も
っ
と
面
倒
に
!
dapperを使うとどうなるか
public IList<EmployeeEntity> FindAll()
{
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee;"
return cn.Query<EmployeeEntity>(sql).ToList();
}
}
return cn.Query<EmployeeEntity>(sql).ToList();
この一行で、実行結果のマッピングまですべて完了!
ポイントはQuery拡張メソッド
• コネクションオブジェクトの拡張メソッ
ドとして実装
• Query拡張メソッドの各種オーバーロード
デモ
もう一つ、例
• パラメータをバインドしてみます
こちらも非dapperから
public EmployeeEntity FindByID(int id)
{
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee where ID = @ID;"
var cmd = new SqlCeCommand(sql, cn);
var param = cmd.CreateParameter();
param.ParameterName = "ID";
param.SqlDbType = System.Data.SqlDbType.Int;
param.Direction = System.Data.ParameterDirection.Input;
param.Value = id;
cmd.Parameters.Add(param);
var result = new List<EmployeeEntity>();
using (var dr = cmd.ExecuteReader())
{
if (dr.Read())
{
return new EmployeeEntity()
{
ID = (int)dr["ID"],
Name = (string)dr["Name"],
Age = (int)dr["Age"],
Email = (string)dr["Email"]
};
}
else
{
return null;
}
}
}
}
var sql =
"select ID, Name , Age , Email From Employee where ID = @ID;"
var cmd = new SqlCeCommand(sql, cn);
var param = cmd.CreateParameter();
param.ParameterName = "ID";
param.SqlDbType = System.Data.SqlDbType.Int;
param.Direction = System.Data.ParameterDirection.Input;
param.Value = id;
cmd.Parameters.Add(param);
①Parameterオブジェクトを作成して
②Parameterオブジェクトに値その他を設定
③Commandオブジェクトにパラメータをセット
パラメータの数だけ、
これをやらないといけない!!!
これがdapperだと…
public EmployeeEntity FindByID(int id)
{
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee where ID = @ID;"
return cn.Query<EmployeeEntity>( sql , new { ID = id }).SingleOrDefault();
}
}
return cn.Query<EmployeeEntity>( sql ,
new { ID = id })
.SingleOrDefault();
Queryメソッドの第二引数に、
パラメータと名前の一致するプロパティを持ったオ
ブジェクトを渡してやるだけ
(匿名クラスでもOK)
パラメータが増えたら…
new {
ID = id,
Name = "ほげほげ",
Age = 17
}
もっといろいろな機能があります
• 詳細は公式のGithub等にあるサンプルを
見てみてください
– 私もblogで書こうとしてるけど下書きだけ溜
まっててまだ公開出来てません...
想定FAQ:1
• Q:実績あるの?
• A:結構いろいろあるらしい
– IT技術者的には「Stack Overflowで使われて
いる」といえば納得できるかな?
– そもそも作者がStack Overflowの中の人
– Stack Overflowのパフォーマンス改善のため
に作られたらしい
想定FAQ:2
• Q:実際、パフォーマンスどうなの?
• A:相当早いよ
– 詳しくは公式サイトにベンチマークあるので
参照
想定FAQ:3
• Q:PHPで普通に書くのと一緒じゃね?
• A:静的型付けなのに同じってすごくね?
– コンパイラの恩恵
– IDEのサポート
• インテリセンス
• リアルタイムにコンパイルエラー
まとめ
ORMは便利な道具
• 有効に使えるところではどんどん使おう
• でも使えないケースもある
– 設計思想やスケールのアンマッチ
– 銀の弾丸は無い
Micro-ORMという選択肢
• 軽量高速、省力プログラミング
• ORMとSQLのいいところどりも可能
ご清聴ありがとうございました
and , Question?

Mais conteúdo relacionado

Mais procurados

C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
 

Mais procurados (20)

100%Kotlin ORM Ktormを試してみた
100%Kotlin ORM Ktormを試してみた100%Kotlin ORM Ktormを試してみた
100%Kotlin ORM Ktormを試してみた
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 
キメるClojure
キメるClojureキメるClojure
キメるClojure
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
 
PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 
llvm入門
llvm入門llvm入門
llvm入門
 
Java8でRDBMS作ったよ
Java8でRDBMS作ったよJava8でRDBMS作ったよ
Java8でRDBMS作ったよ
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 

Semelhante a よろしい、ならばMicro-ORMだ

モテる JavaScript
モテる JavaScriptモテる JavaScript
モテる JavaScript
Osamu Monoe
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
 

Semelhante a よろしい、ならばMicro-ORMだ (20)

TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
 
モテる JavaScript
モテる JavaScriptモテる JavaScript
モテる JavaScript
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
Azure Machine Learning Services 概要 - 2019年3月版
Azure Machine Learning Services 概要 - 2019年3月版Azure Machine Learning Services 概要 - 2019年3月版
Azure Machine Learning Services 概要 - 2019年3月版
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
 
Haikara
HaikaraHaikara
Haikara
 
今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010
 
もっと早く知りたかったプログラミング技法9選
もっと早く知りたかったプログラミング技法9選もっと早く知りたかったプログラミング技法9選
もっと早く知りたかったプログラミング技法9選
 
DeclarativeSql
DeclarativeSqlDeclarativeSql
DeclarativeSql
 

Mais de Narami Kiyokura

Mais de Narami Kiyokura (17)

SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
 
どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後
 
How do you like knockout?
How do you like knockout?How do you like knockout?
How do you like knockout?
 
Windows ストアアプリを HTMLで作成する
Windows ストアアプリをHTMLで作成するWindows ストアアプリをHTMLで作成する
Windows ストアアプリを HTMLで作成する
 
ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"
 
無償版Visual StudioでいろいろWeb開発
無償版Visual StudioでいろいろWeb開発無償版Visual StudioでいろいろWeb開発
無償版Visual StudioでいろいろWeb開発
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
 
最近、リアルタイムWebが面白い
最近、リアルタイムWebが面白い最近、リアルタイムWebが面白い
最近、リアルタイムWebが面白い
 
脱・Excelホーガンシのために、その1
脱・Excelホーガンシのために、その1脱・Excelホーガンシのために、その1
脱・Excelホーガンシのために、その1
 
最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
 
WebMatrixで遊ぶ-ゆるふわGitHubページ
WebMatrixで遊ぶ-ゆるふわGitHubページWebMatrixで遊ぶ-ゆるふわGitHubページ
WebMatrixで遊ぶ-ゆるふわGitHubページ
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
 
使ってみよう、WebMatrix3
使ってみよう、WebMatrix3使ってみよう、WebMatrix3
使ってみよう、WebMatrix3
 
NuGetの社内利用のススメ
NuGetの社内利用のススメNuGetの社内利用のススメ
NuGetの社内利用のススメ
 
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
 

Último

Último (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

よろしい、ならばMicro-ORMだ