SlideShare a Scribd company logo
1 of 60
Download to read offline
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Sequelのすすめ
〜私がSQLを嫌いな理由〜
とみたまさひろ
RubyHiroba 2013
2013-06-02
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
自己紹介
とみた まさひろ
長野県北部在住
プログラマー (Ruby & C)
http://tmtms.hatenablog.com
http://twitter.com/tmtms
好きなもの
Ruby, MySQL, Linux Mint, Emacs, Git
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
OSS貢献者賞
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
諸君、私はSQLが嫌いだ
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
select name from users
where loginid = 'tmtms'
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
英語っぽい
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
どれが予約語やねん
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
select name from users
where loginid = 'tmtms'
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
予約語が多い
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
カラム名にgroupが
使えなくて死ぬ
まぁクォートすればいいんだけども…
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
余計な単語
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
insert into tblname〜
select〜group by col
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
insert into tblname〜
select〜group by col
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
構文解析上なくてもいい
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
英語っぽくするため(?)
RSpecのようなキモさ
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
insertとupdateの
構文の非対称
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
insert into tbl (col1,col2)
values (val1,val2)
update tbl set
col1=val1,col2=val2
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
全然違う
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
MySQLはこれも可能
insert tbl set
col1=val1,col2=val2
さすが変態
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
集約関数
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
select length(id) from tbl
select count(id) from tbl
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
select length(id) from tbl
→結果件数はレコード数
select count(id) from tbl
→結果件数は1
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
同じ構文なのに
関数によって結果が異なる
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
そんなこんなでSQL嫌い
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
SQLを書かずにRDBを使うには
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Rubyで書けばいいじゃない
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
そこでSequel
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
テーブルの操作
SELECT col2 FROM tbl WHERE col1=1
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
条件で行の絞り込み
SELECT col2 FROM tbl WHERE col1=1
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
その中の列を選択
SELECT col2 FROM tbl WHERE col1=1
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Sequelで
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Sequel 初期化
require 'sequel'
DB = Sequel.connect(
'mysql://user:passwd@hostname:3306/dbname'
)
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
コマンドラインから
% sequel mysql://user:passwd@hostname:3306/dbname
Your database is stored in DB...
irb(main):001:0>
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
テーブルの操作
DB[:tbl]
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
条件で行の絞り込み
DB[:tbl].where(col1: 1)
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
その中の列を選択
DB[:tbl].where(col1: 1).select(:col2)
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
とても自然!
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Select/Update/Delete/Insert
DB[:tbl].where(col1: 1).select(:col2)
DB[:tbl].where(col1: 1).update(col2: 3)
DB[:tbl].where(col1: 1).delete
DB[:tbl].insert(col1: 1, col2: 2)
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Select は実行遅延
ds = DB[:tbl].where(col1: 1).select(:col2)
# まだ実行されない
ds.first
# ここで実行される
#=> {:col2=>'value'}
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
関数
DB[:tbl].select(Sequel.function(:length, :col))
#=> SELECT length(col) FROM tbl
DB[:tbl].select{length(col)}
#=> SELECT length(col) FROM tbl
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
集約関数
DB[:tbl].count
#=> SELECT COUNT(*) FROM tbl
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
条件いろいろ
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
比較
where(id: 123)
#=> WHERE id=123
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
配列
where(id: [123, 456])
#=> WHERE id IN (123, 456)
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Range
where(id: 123..456)
#=> WHERE id >= 123 AND id <= 456
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
nil, true, false
where(id: nil)
#=> WHERE id is NULL
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
データセット
where(id: DB[:tbl2].select(:id))
#=> WHERE id IN (SELECT id FROM tbl2)
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
正規表現
where(id: /abc/)
#=> WHERE id REGEXP BINARY 'abc'
where(id: /abc/i)
#=> WHERE id REGEXP 'abc'
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
複数
where(id: 123, name:'hoge')
#=> WHERE id=123 AND name='hoge'
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
不等号
where(Sequel.expr(:id) > 123)
#=> WHERE id > 123
where{id > 123}
#=> WHERE id > 123
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
JOIN
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
JOIN
DB[:posts].left_join(:users, :id=>:users_id)
#=> SELECT * FROM posts LEFT JOIN users
# ON users.id=posts.users_id
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
自己結合
DB[:hoge].left_join(:hoge.as(:fuga), :x=>:y).
select(:hoge__id)
#=> SELECT hoge.id FROM hoge
# LEFT JOIN hoge AS fuga
# ON fuga.x=hoge.y
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
FAQ
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Q. ActiveRecord じゃだめなん?
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
A1. Active Record は RDB にデー
タ置いて読み書きしてるだけで、
RDB として使ってるわけじゃないん
でちょっと…
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
A2. ActiveRecord は
Ruby/MySQL で動かないし…
そういえば activerecord-ruby_mysql-adapter ってのを
作ったような気もする
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
A3. でも Active Record 便利です
よね。Sequel でも使えるよ!
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
Sequel::Model
class User < Sequel::Model
plugin :validation_helpers
def validate
super
validates_unique :loginid
validates_presence :name
end
end
Sequelのすすめ - 〜私がSQLを嫌いな理由〜 Powered by Rabbit 2.0.7
まとめ
SQL の構文はイケてない(個人の感想です)
Sequel で Ruby っぽくクエリを書ける
Sequel は Active Record パターンも使える
SQL を「シークエル」と発音する人は混乱す
るがいいさ

More Related Content

What's hot

1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41Kazumune Katagiri
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール真乙 九龍
 
Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Shinji Tanaka
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
MAASで管理するBaremetal server
MAASで管理するBaremetal serverMAASで管理するBaremetal server
MAASで管理するBaremetal serverYuki Yamashita
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからTakeshi Kuramochi
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)hiboma
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Kamimura Taichi
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいKazuhiro Oinuma
 
Deep Dive into Modules
Deep Dive into ModulesDeep Dive into Modules
Deep Dive into ModulesHideki Saito
 
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテストServerspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテストKen Sawada
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingGosuke Miyashita
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門辰徳 斎藤
 

What's hot (20)

Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール
 
Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形Mackerelによる
簡単サーバー管理入門と発展形
Mackerelによる
簡単サーバー管理入門と発展形
 
ZabbixとAWS
ZabbixとAWSZabbixとAWS
ZabbixとAWS
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
MAASで管理するBaremetal server
MAASで管理するBaremetal serverMAASで管理するBaremetal server
MAASで管理するBaremetal server
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)
 
Apache Module
Apache ModuleApache Module
Apache Module
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたい
 
Deep Dive into Modules
Deep Dive into ModulesDeep Dive into Modules
Deep Dive into Modules
 
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテストServerspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework Meeting
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門
 

More from Masahiro Tomita

More from Masahiro Tomita (20)

お前の罪を数えろ
お前の罪を数えろお前の罪を数えろ
お前の罪を数えろ
 
Ruby 2.5
Ruby 2.5Ruby 2.5
Ruby 2.5
 
本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル
 
ネットワークこわい
ネットワークこわいネットワークこわい
ネットワークこわい
 
CSV
CSVCSV
CSV
 
MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版
 
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
 
Ruby24
Ruby24Ruby24
Ruby24
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
進捗と品質
進捗と品質進捗と品質
進捗と品質
 
MySQLを拡張する
MySQLを拡張するMySQLを拡張する
MySQLを拡張する
 
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル
 
MyNAができるまで
MyNAができるまでMyNAができるまで
MyNAができるまで
 
文字化け
文字化け文字化け
文字化け
 
Crystal
CrystalCrystal
Crystal
 
メールの暗号化
メールの暗号化メールの暗号化
メールの暗号化
 
文字化け
文字化け文字化け
文字化け
 
進捗と品質
進捗と品質進捗と品質
進捗と品質
 
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライトアジャイルジャパン長野サテライト
アジャイルジャパン長野サテライト
 
🍣=🍺
🍣=🍺🍣=🍺
🍣=🍺
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (8)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Sequelのすすめ