SlideShare a Scribd company logo
Swiftで微妙に!
型クラスの実現
@nobkz
自己紹介
Technial Rockstars CTO!
Swift/Obj-C/Haskell/Erlang!
趣味でShen/Clojure/Lisp Favored Erlang!
@nobkz
型クラスの話をします!
今日の話
型クラスを説明する!
型クラス自体は分かんなくても良い!
いろんな言語機能が出てくるので、Swiftの言
語多機能さと微妙さを伝えたい
Swiftの型についての!
前提知識
Swift型について
列挙型(enum)!
Genericと型制約!
Protocol!
typealias!
extension
列挙型(enum)
Swiftでは列挙型がある。!
Associated Valueができる。!
再帰的データ構造を作れないバグ
列挙型の宣言
enum Color{
case Red
case Blue
case Green
func print() -> Void {
switch self{
case .Red:
println("red")
case .Blue:
println("blue")
case .Green:
println("green")
}
}
}
列挙型のコンストラクタ
let red = Color.Red
let blue = Color.Blue
!
red.print()
// -> red
!
blue.print()
// -> blue
!
Color.Green.print()
// -> green
Associated Value
enumに関連の値を与えることができる!
再帰的構造はできない
enum Shape {
case Circle(Double)
case Rect(Double,Double)
case Triangle(Double,Double,Double)
func area() -> Float{
switch self{
case let .Circle(r):
return r * r * 3.14
case let .Rect(w, h):
return w * h
case let .Triagnle(x, y, z):
let s = (x + y + z)/2
return sqrt(s * (s - x) * (s - y) * (s - z))
}
}
}
let rect = Shape.Rect(10, 20)
let circle = Shape.Circle(10)
let triangle = Shape.Triangle(3,4,5)
!
!
let rectArea = rect.area()
let circleArea = circle.area()
let triangleArea = triangle.area()
!
!
println("(rectArea)")
println("(circleArea)")
println("(triangleArea)")
再帰的データ….
enum Rec{
case Item(Rec)
} enum ConsList{
case Nil
case Cons(Any, ConsList)
}
enum Tree{
case Empty
case Leaf
case Node
}
こういう風に書きたかった
unimplemented IRGen feature!
recursive enum layout
こうする?
protocol ConsLike {}
enum ConsList<T>:ConsLike {
case Nil
case Cons(T, ConsLike)
func car () -> T? {
switch self {
case .Cons(let x, let y):
return x
case .Nil:
return nil
}
}
func cdr() -> ConsList? {
switch self {
case .Cons(let x,let y):
return y as ConsList
case .Nil:
return nil
}
}
}
!
typealias IntCons = ConsList<Int>
let list = IntCons.Cons(1, IntCons.Cons(2, IntCons.Nil))
list.cdr()?.car()
うーん微妙….
ダウンキャストが発生する…
ジェネリックス
他の言語(Java,C#)などと、ほとんど同じ!
パラメータ多相型を作るためのもの!
Stack<A>みたいなもの。
class Stack<T>{
var stack : Array<T> = Array<T>()
func push(x:T) -> Void {
stack.append(x)
}
func pop() -> T{
return stack.removeLast()
}
}
!
let s = Stack<Int>()
s.push(10)
s.push(20)
s.push(30)
println("(s.pop())")
println("(s.pop())")
println("(s.pop())")
Protocol
インターフェースやら、traitのようなもの!
型のふるまいを記述するもの!
クラス以外でも適用できる!
型パラメータを定義できない
extension
Protocolsを用いて型を拡張する!
クラス以外(struct、enumなど…)も適用でき
る
protocol Iterator{
func hasNext() -> Bool
func next() -> Self?
}
!
enum Cards{
case Num(Int)
case Jack
case Queen
case King
}
extension Cards : Iterator{
func hasNext() -> Bool {
switch self{
case .King:
return false
default:
return true
}
}
func next() -> Cards? {
switch self{
case .Num(let i):
if i == 10 {
return Jack
}else{
return Num(i + 1)
}
case .Jack:
return Queen
case .Queen:
return King
case .King:
return nil
}
}
}
型制約
パラメトリックの型を制限することができる。
クラスやプロトコルの制限することができる
typealias
型に別名をつけることができる。!
具体型でないと別名を付けることができない
型クラスとは?
型クラス
Haskellerとかが何か行ってるアレ!
型を振舞いで定義する!
アドホック多相を実現する
例題:(合計する函数)
Arrayを与え合計する函数を書くとしよう!
この函数の型はなんだろう?
合計する函数の型
Array<Int> -> Int ? だと狭すぎる!
Array<A> -> A だと広すぎる
加算できる型がほしい
sumは、加算できる型がほしいはず!!
こういうことをSwiftは記述できる!!
この機能は型クラスと言う。
型の振る舞いを記述する
protocol Add {
typealias N
class func Add(N,N) -> N
}
加算するprotocolを定義
具体型を記述する
protocolを実装する
extension Int : Add {
typealias N = Int
static func add(x : N,y : N) -> N { return x + y }
}
!
extension String : Add {
typealias N = String
static func add(x : N,y : N) -> N { return x + y }
}
!
!
extension Bool : Add{
typealias N = Bool
static func add(x : N,y : N) -> N { return x || y }
}
sum函数を実装する
func sum<A:Add where A.N == A >(l : Array<A>) -> A {
return l.reduce(l[0], combine: { A.add($0, y : $1) })
}
ジェネリクス、型制約、typealias,!
protocol, extension全部使ったお!
Showと、モナドreturn
モナドのreturnも実装してみるお!!
Haskellerなら知っている!
とりあえず、型クラス記述
protocol Rtn {
typealias F
class func rtn(F) -> Self
}
protocol Show{
func show() -> String
}
新しい型を作る
enum Option<A>{
case Some(A)
case None
}
enum List<A>{
case Nil
case Cons(A, Any)
}
実装
extension Option : Rtn {
typealias F = A
static func rtn(x:F) -> Option {
return .Some(x)
}
}
!
extension List : Rtn {
typealias F = A
static func rtn(x:F) -> List {
return .Cons(x, Nil)
}
}
return!
!
func rtn<A, N:Rtn where N.F == A>(x:A) -> N {
return N.rtn(x)
}
!
let x : Option<Int> = rtn(10)
let y : List<Int> = rtn(20)
微妙な点
typealias!
protocolが型パラメータを持てれば楽だった
のに!
Functorの実装
まとめ
型クラスを記述するのにSwiftのいろんな言語
機能を利用する!
Generic、型制約、typealias,
protocol,extension…!
他にもinfixや、subscriptingを利用できるか
も
ありがとうございました!

More Related Content

What's hot

Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
yujiro_t
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
Yasuyuki Maeda
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
Shinichi Kozake
 
詳解! Decimal
詳解! Decimal詳解! Decimal
詳解! Decimal
Tadashi Saito
 
変数の基本型と参照型について|プログラミング入門書の落とし穴
変数の基本型と参照型について|プログラミング入門書の落とし穴変数の基本型と参照型について|プログラミング入門書の落とし穴
変数の基本型と参照型について|プログラミング入門書の落とし穴
ぬにふちさか
 
こわくないScala
こわくないScalaこわくないScala
こわくないScala
Kota Mizushima
 
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
gypsygypsy
 
Chapter5.3
Chapter5.3Chapter5.3
Chapter5.3
Kenji Doi
 
Elm overview
Elm overviewElm overview
Elm overview
dsuke Takaoka
 
Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)
universato
 
Swift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについてSwift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについて
Nobukazu Hanada
 

What's hot (14)

Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
Haxe
HaxeHaxe
Haxe
 
詳解! Decimal
詳解! Decimal詳解! Decimal
詳解! Decimal
 
変数の基本型と参照型について|プログラミング入門書の落とし穴
変数の基本型と参照型について|プログラミング入門書の落とし穴変数の基本型と参照型について|プログラミング入門書の落とし穴
変数の基本型と参照型について|プログラミング入門書の落とし穴
 
こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scala is-unscared
Scala is-unscaredScala is-unscared
Scala is-unscared
 
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
 
Chapter5.3
Chapter5.3Chapter5.3
Chapter5.3
 
Elm overview
Elm overviewElm overview
Elm overview
 
Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)
 
Clojure
ClojureClojure
Clojure
 
Swift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについてSwift勉強会。はてなとかclosuresについて
Swift勉強会。はてなとかclosuresについて
 

Viewers also liked

JSerのためのHaxe入門
JSerのためのHaxe入門JSerのためのHaxe入門
JSerのためのHaxe入門
Nobukazu Hanada
 
Callback DSL on Haxe
Callback DSL on HaxeCallback DSL on Haxe
Callback DSL on Haxe
Nobukazu Hanada
 
Unity3dにおけるus c# boo比較
Unity3dにおけるus c# boo比較Unity3dにおけるus c# boo比較
Unity3dにおけるus c# boo比較
Nobukazu Hanada
 
Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識Nobukazu Hanada
 
こわくない型クラス
こわくない型クラスこわくない型クラス
こわくない型クラスKota Mizushima
 
Jenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけJenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけ
Nobukazu Hanada
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについてNobukazu Hanada
 
Scalaで型クラス入門
Scalaで型クラス入門Scalaで型クラス入門
Scalaで型クラス入門
Makoto Fukuhara
 
AndroidLint #DroidKaigi
AndroidLint #DroidKaigiAndroidLint #DroidKaigi
AndroidLint #DroidKaigi
Yukiya Nakagawa
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
 

Viewers also liked (10)

JSerのためのHaxe入門
JSerのためのHaxe入門JSerのためのHaxe入門
JSerのためのHaxe入門
 
Callback DSL on Haxe
Callback DSL on HaxeCallback DSL on Haxe
Callback DSL on Haxe
 
Unity3dにおけるus c# boo比較
Unity3dにおけるus c# boo比較Unity3dにおけるus c# boo比較
Unity3dにおけるus c# boo比較
 
Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識Asset bundleなどの、Unity3d基礎知識
Asset bundleなどの、Unity3d基礎知識
 
こわくない型クラス
こわくない型クラスこわくない型クラス
こわくない型クラス
 
Jenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけJenkinsのおっさんを眺めるだけ
Jenkinsのおっさんを眺めるだけ
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
 
Scalaで型クラス入門
Scalaで型クラス入門Scalaで型クラス入門
Scalaで型クラス入門
 
AndroidLint #DroidKaigi
AndroidLint #DroidKaigiAndroidLint #DroidKaigi
AndroidLint #DroidKaigi
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
 

Similar to Swiftで、かなり微妙な型クラス

BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
bleis tift
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
 
Vim scriptとJavaとHaskell
Vim scriptとJavaとHaskellVim scriptとJavaとHaskell
Vim scriptとJavaとHaskell
aiya000
 
ゆるふわScalaコップ本読書会 第7章
ゆるふわScalaコップ本読書会 第7章ゆるふわScalaコップ本読書会 第7章
ゆるふわScalaコップ本読書会 第7章
Yuta Yokoi
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
 
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
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
Yukiko Kato
 
大人のお型付け
大人のお型付け大人のお型付け
大人のお型付け
Nobuhisa Koizumi
 

Similar to Swiftで、かなり微妙な型クラス (12)

BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
Vim scriptとJavaとHaskell
Vim scriptとJavaとHaskellVim scriptとJavaとHaskell
Vim scriptとJavaとHaskell
 
ゆるふわScalaコップ本読書会 第7章
ゆるふわScalaコップ本読書会 第7章ゆるふわScalaコップ本読書会 第7章
ゆるふわScalaコップ本読書会 第7章
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
 
大人のお型付け
大人のお型付け大人のお型付け
大人のお型付け
 

Recently uploaded

FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 

Recently uploaded (14)

FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 

Swiftで、かなり微妙な型クラス