SlideShare a Scribd company logo
1 of 40
Download to read offline
Goroutineと
Channelから
はじめるGo言語
2013/9/28(土)
@初心者向けgolang勉強会
自己紹介
上田拓也
KLab株式会社
仕事:
 ・サーバサイド(PHP)
 ・フロントエンド(JS)
学生のころ:
 ・セルオートマトン
 ・複雑系
twitter : @tenntenn
アジェンダ
● Go言語とは
● GorotuineとChannel
Go言語とは?
Go言語ってなに?
● え?Go言語知らない?
● ビッグウェーブに乗り遅れてますよ!
Googleトレンド
Go言語とは?
● Googleが開発したコンパイラ言語
○ その他のGoogleが開発した言語
■ Dart : JSの代替
■ noop : JavaVMで動く言語(忘却のかなた)
● 設計者:
Robert Grisemer, Rob Pike, Ken Thompson
Go言語の特徴
● シンプルな文法/設計
○ 曖昧さを排除した設計
○ 強い静的型付け
○ 型推論ができるので、型を省略できる
○ ポインタはあるがポインタ演算はなし
○ 複数の戻り値を返す関数
○ ダックタイピング
○ ゼロ値初期化
● ゴールーチンとチャネル
● 豊富なライブラリ群
○ goツールは最強
○ Web系パッケージの豊富さ
○ Google App Engine for go
主なGo言語の勉強会@東京
● GoCon spring, autumn
○ Go言語の勉強会では一番規模の大きい
○ Go言語の中の人が来る
● 質実Go研
○ 標準ライブラリを中心にソースを読む会
○ 少人数で濃い話をする
● 電車でGo!
○ 電車に乗りながらGo言語をする
● Go羅温泉
○ 強羅温泉でGo言語をする
私とGo言語
● 研究で使うために始める
○ セルオートマトンシミュレータを作るため
● 主にGDG名古屋で活動していた
○ スタートGo #0, #1
● CodeIQにて問題を出題
● 社内でGo会を開催している
初心者向けの情報
● Tour of Go
○ Web上でGo言語の一通りいじれる
● Go言語の初心者が見ると幸せになれる場所
○ http://qiita.
com/tenntenn/items/0e33a4959250d1a55
045
Gorotuine
と
Channel
Concurrency is not Parallelism
● ConcurrencyとParallelismは違う by Rob Pike
○ Concurrency=並行?
○ Parallelism=並列?
● Concurrency
○ 同時にいくつかの事を扱う事
● Parallelism
○ 同時にいくつかの計算を行なう事
Concurrency is... by Rob Pike
Rob Pike氏のプレゼンのまとめでは、
○ Concurrency is powerful.
○ Concurrency is not parallelism.
○ Concurrency enables parallelism.
○ Concurrency makes parallelism (and scaling
and everything else) easy.
とある。
Gorotuineとは?
● Go言語ではゴールーチンを用いてConcurrencyを実
現している
● スレッドに似ている...
○ しかし、もっとCheap(=コストが低い)
○ LinuxやUnixのスレッドとは違う
■ スレッドの上にいくつも乗っている
● 簡単に作成できる
○ 関数呼び出しの前にgoキーワードを付ける
■ go f()
go + クロージャ
package main
import "fmt"
func main() {
go func() {
fmt.Println("別のゴールーチン")
}()
fmt.Println("mainゴールーチン")
}
並列度
● 並列度:GOMAXPROCS
○ 同時に最大で実行可能なCPU数
● デフォルトでは並列度は1になっている
○ runtime.NumCPU()で利用可能なCPU数が取得
できる
○ runtime.GOMAXPROCS()で並列度を設定する
【例】
runtime.GOMAXPROCS(runtime.NumCPU())
● 指定した並列度でゴールーチンを動かす
○ あまり増やしても意味がない
Goroutine間のデータのやりとりは?
Goroutine-1 Goroutine-2
go f1() go f2()
共有の変数を使う?
Goroutine-1 Goroutine-2
go f1() go f2()
変数v v = 100fmt.Println(v)
Goroutine間のデータのやりとり
● 共有の変数を使う?
func main() {
done := false
go func() {
time.Sleep(time.Second * 3)
done = true
}()
for !done {
time.Sleep(time.Millisecond)
}
}
競合が起きますよね!
Goroutine-1 Goroutine-2
go f1() go f2()
変数v v = 100v = 200
競合
Goroutine間のデータの競合
// これはダメ!!
package main
import "fmt"
import "time"
func main() {
n := 1
go func() {
for i := 2; i <= 5; i++ {
fmt.Println(n, "*", i)
n *= i
}
}()
// 続く
// 続き
for i := 1; i <= 10; i++ {
fmt.Println(n, "+", i)
n += 1
time.Sleep(500)
}
}
だめ!!
何が問題なのか?どう解決するの?
【問題】
● 同時に複数のGoroutineからアクセス
● 競合が起きる
【解決方法】
● 1つのGoroutineからのみアクセスする
● Channelを使う!
Channelを使う
Goroutine-1 Goroutine-2
go f1() go f2()
ch <- 100
Channel
<-ch
100
● Goroutine間でデータをやりとりするパイプ?のような
もの
Channelの特徴
● 送受信するデータの型が決まっている
○ 型を指定してChannelを作る
● 一度に保持できる容量がある
○ 初期化の際に容量を指定、デフォルトは0
● 送受信の際に相手の応答を待つ
○ 容量が0になると、受信元が受け取るまでブロックされる
送信のブロック
Goroutine-1 Goroutine-2
go f1() go f2()
ch <- 100
Channel
100
ブロック
● 相手が受信(<-ch)してくれるまで、次に進めない
受信のブロック
Goroutine-1 Goroutine-2
go f1() go f2()
Channel
100
ブロック
● 相手が送信(ch<-100)してくれるまで、次に進めない
<-ch
Channelの宣言方法と使い方
● 宣言
○ ch := make(chan 型) // 容量0
○ ch := make(chan 型, 容量)
● 送信
○ ch <- 100
○ ch <- "hoge"
■ 容量いっぱいであれば取り出されるの待機する
■ 容量0の場合は常に待つ
● 受信
○ n := <- ch
■ 送られてくるまで待機する
Channelの宣言方法と使い方
func main() {
done := make(chan bool) // 容量0
go func() {
time.Sleep(time.Second * 3)
done <- true
}()
<-done // 待つ
fmt.Println("done")
}
こういう場合はどうするの?
Goroutine-1
Goroutine-2
go f1() go f2()
Channel-1
● ブロックするなら複数のChannelからデータを受け取
れない!?
Goroutine-3
<-ch1
Channel-2
go f3()
<-ch2
ch1 <- 100
ch2 <- "hoge"
selectを使う
Goroutine-1
Goroutine-2
go f1() go f2()
Channel-1
● selectを使えば、同時に複数のchannelから受信でき
る
Goroutine-3Channel-2
go f3()
<-ch2
ch1 <- 100
ch2 <- "hoge"
select
<-ch1
selectを使う
● 先に受信可能になったcaseを実行する
// Goroutine-1にて
select {
case v1 := <-ch1:
// Goroutine-2から ch1 <- 100
case v2 := <-ch2:
// Goroutine-3から ch2 <- "hoge"
}
※Channelがnilだとそのcaseは無視:nil
channel
ReadOnlyとWriteOnly
● 通常のチャネルは双方向
○ 引数や戻り値で渡す場合は困る
func hoge(in chan int) {
n := <-in // 入力として使うのが正解!
in <- 100 // 間違った使い方ができる!
}
ReadOnlyとWriteOnly
● ReadOnly
○ in := make(<-chan int)
● WriteOnly
○ out := make(chan<- int)
● キャスト
○ 双方向チャネルはキャストでReadOnlyまたは
WriteOnlyに変化できる
○ ch := make(chan int)
○ in := (<-chan int)(ch)
○ out := (chan<- int)(ch)
ファーストクラスオブジェクト
● Channelはファーストクラスオブジェクト
○ 変数に入れれる
○ 引数に渡せる
○ 戻り値に取れる
○ ChannelのChannel
● 戻り値として、チャネルを返す関数は多用される
○ timeパッケージ
○ 5分間待つ
<-time.After(5 * time.Minute)
range
● for文のrangeで送られてくるデータを次々に取
り出せる
// 1分ごとに現在時間を出す
for now := range time.Tick(1 * time.Minute) {
fmt.Println(now)
}
どう使って行くのか?
● 沢山の独立したゴールーチンがチャネルを使っ
てやり取りをする!
○ Concurrencyになる
● ゴールーチンのコストは安いので、沢山作って
もそんなに問題ない
○ ※コストが0ではない
● for - selectパターン
for - selectパターン
Goroutine-1
Channel-1
Channel-2
select
for{}
Goroutine-2
for{}
Goroutine-3
for{}
● 各Goroutineが無限ループになっており、イベントリス
ナー的にChannelを使うパターン
Gopher君で表すとこんな感じ!
ひたすら本を入れる
ひたすら本を運ぶ
ひたすら台車を運ぶ
ひたすら本を燃やす
構成要素の局所的な振る舞いが
相互作用する事によって
複雑な現象を作り出す
複雑系みたいで楽しい!
まとめ
● GoroutineはConcurrencyを実現する機構
○ go f() で簡単に作れる
● ChannelはGoroutine間のデータのやり取りに
使う
○ 送受信のブロック
○ select〜case文
○ ファーストクラスオブジェクト
○ select - forパターン

More Related Content

What's hot

Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Yuji Otani
 
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす Akihiro Suda
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフローadd20
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選Takuya Ueda
 
golang_getting_started.pptx
golang_getting_started.pptxgolang_getting_started.pptx
golang_getting_started.pptxGuy Komari
 
Go言語でBot開発やってみた
Go言語でBot開発やってみたGo言語でBot開発やってみた
Go言語でBot開発やってみたAkihiko Horiuchi
 
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語Takuya Ueda
 
Golang 101
Golang 101Golang 101
Golang 101宇 傅
 
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかなおき きしだ
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#Yoshifumi Kawai
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Noa Harel
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門Shuji Yamada
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 

What's hot (20)

Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
 
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
 
Go. Why it goes
Go. Why it goesGo. Why it goes
Go. Why it goes
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフロー
 
gRPC入門
gRPC入門gRPC入門
gRPC入門
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選
 
golang_getting_started.pptx
golang_getting_started.pptxgolang_getting_started.pptx
golang_getting_started.pptx
 
Go言語でBot開発やってみた
Go言語でBot開発やってみたGo言語でBot開発やってみた
Go言語でBot開発やってみた
 
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語
 
Go Language presentation
Go Language presentationGo Language presentation
Go Language presentation
 
Golang 101
Golang 101Golang 101
Golang 101
 
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
Golang
GolangGolang
Golang
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
New VIdeo CODEC AV1
New VIdeo CODEC AV1 New VIdeo CODEC AV1
New VIdeo CODEC AV1
 
網路非常概論
網路非常概論網路非常概論
網路非常概論
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 

Similar to Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会

Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Takuya Ueda
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋Takuya Ueda
 
Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドGo言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドAtsushi Yasuda
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Takuya Ueda
 

Similar to Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会 (6)

Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
 
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作るGoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
 
Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドGo言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンド
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
Golang入門
Golang入門Golang入門
Golang入門
 

More from Takuya Ueda

Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −Takuya Ueda
 
WebAssembly with Go
WebAssembly with GoWebAssembly with Go
WebAssembly with GoTakuya Ueda
 
GAE/Goとsyncパッケージ
GAE/GoとsyncパッケージGAE/Goとsyncパッケージ
GAE/GoとsyncパッケージTakuya Ueda
 
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発Takuya Ueda
 
そうだ、Goを始めよう
そうだ、Goを始めようそうだ、Goを始めよう
そうだ、Goを始めようTakuya Ueda
 
マスター・オブ・goパッケージ
マスター・オブ・goパッケージマスター・オブ・goパッケージ
マスター・オブ・goパッケージTakuya Ueda
 
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新Takuya Ueda
 
Go1.8 for Google App Engine
Go1.8 for Google App EngineGo1.8 for Google App Engine
Go1.8 for Google App EngineTakuya Ueda
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発Takuya Ueda
 
Static Analysis in Go
Static Analysis in GoStatic Analysis in Go
Static Analysis in GoTakuya Ueda
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話Takuya Ueda
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGoTakuya Ueda
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオンTakuya Ueda
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Takuya Ueda
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
 
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポートGopher Fest 2017参加レポート
Gopher Fest 2017参加レポートTakuya Ueda
 
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめGoogle Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめTakuya Ueda
 
Cloud functionsの紹介
Cloud functionsの紹介Cloud functionsの紹介
Cloud functionsの紹介Takuya Ueda
 
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するTakuya Ueda
 

More from Takuya Ueda (20)

Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
 
WebAssembly with Go
WebAssembly with GoWebAssembly with Go
WebAssembly with Go
 
GAE/Goとsyncパッケージ
GAE/GoとsyncパッケージGAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
 
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
 
そうだ、Goを始めよう
そうだ、Goを始めようそうだ、Goを始めよう
そうだ、Goを始めよう
 
マスター・オブ・goパッケージ
マスター・オブ・goパッケージマスター・オブ・goパッケージ
マスター・オブ・goパッケージ
 
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
 
Go1.8 for Google App Engine
Go1.8 for Google App EngineGo1.8 for Google App Engine
Go1.8 for Google App Engine
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
 
Static Analysis in Go
Static Analysis in GoStatic Analysis in Go
Static Analysis in Go
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGo
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポートGopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
 
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめGoogle Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
 
Cloud functionsの紹介
Cloud functionsの紹介Cloud functionsの紹介
Cloud functionsの紹介
 
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
 

Recently uploaded

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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介: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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
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
 
論文紹介: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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (9)

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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介: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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
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
 
論文紹介: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...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会