Implicit Explicit Scala

Kota Mizushima
Kota Mizushimaソフトウェアエンジニア en 株式会社ユビレジ
Implicit Explicit Scala

       水島 宏太
       (@kmizu)
自己紹介
の前にお約束
JIT(Just In Tsukkomi)歓迎
@kmizu http://twitter.com/kmizu
    @ktmizushima (English)
  http://twitter.com/ktmizushima
          id:kmizushima
http://d.hatena.ne.jp/kmizushima
      Scala辻斬り ヒーラー
Continuation Workshop 2011 (2011/09/24)
限定継続の人(Tiark Rompf)が来てた
       あ、ありのまま(ry
ちなみにこの自己紹介は(ry
今回説明すること
その前にQuiz * 3
ルール:-Xprint:typer禁止
Q.1 A1-A3, B1-B3 を埋めてください
val m = Map("A" -> 1, "B" -> 2)

m.map{case (x, y) => (y, x)}
m.map{case (x, y) => x}



m.map[A1, A2]({case (x, y) => (y, x) })(?:A3)
m.map[B1, B2]{case (x, y) => x })(?:B3)
A.1
val m = Map("A" -> 1, "B" -> 2)

m.map{case (x, y) => (y, x)}
m.map{case (x, y) => x}



m.map[(Int, String), Map[Int, String]]{ case (x, y) => (y,
   x) }(?:CanBuildFrom[Map[String, Int], String,
          Map[Int, String])
m.map[String, Iterable[String]]({ case (x, y) => x })
(?:CanBuildFrom[Map[String, Int], String, Iterable[String]]
Why ?
Q.2 A1, A2, B1, B2 を埋めてください
val l1 = List(1, 2, 3)
val l2 = List(1.5, 2.5, 3.5)
l1.sum
l2.sum



l1.sum[A1](?:A2)
l2.sum[B2](?:B2)
A.2
val l1 = List(1, 2, 3)
val l2 = List(1.5, 2.5, 3.5)
l1.sum
l2.sum



l1.sum[Int](?:Numeric[Int])
l2.sum[Double](?:Numeric[Double])
Why ?
Q.3 A1-A3, B1-B3 を埋めてください
val l1 = List("A" -> 1, "B" -> 2)
val l2 = List(1, 2, 3)
l1.toMap
l2.toMap




l1.toMap[A1, A2](?:A3)
l2.toMap[B1, B2](?:B3)
A.3
val l1 = List("A" -> 1, "B" -> 2)
val l2 = List(1, 2, 3)
l1.toMap
l2.toMap




l1.toMap[String, Int](?: (String, Int) <:< (String, Int))
l2.toMap[B1, B2](?:B3)
→ error: Cannot prove that Int <:< (T, U).
Why ?
3つに共通するもの
それは
Implicit Parameter
Implicit Parameter
最も誤解されてきた機能
実はとても強力な機能
implicit parameter=省略可能引数
とりあえず
implicit parameter
が今回のメイン
A.1~A.3の意味がわかる
   ようになる(はず)
基本
def hoge(implicit x: Int) = x + 3

implicit val INT: Int = 3

println(hoge) → println(hoge(INT)) → 6
間違いではないが
全然嬉しくない
基本
trait Addible[A] {
  def plus(x: A, y: A): A
  def zero: A
}
implicit object IntAddible extends Addible[Int] {
  def plus(x: Int, y: Int): Int = x + y
  def zero: Int = 0
}

def sum[A](nums: List[A])(implicit addible: Addible[A]): A = {
  nums.foldLeft(addible.zero)((x, y) => addible.plus(x, y))
}

println(sum(List(1, 2, 3, 4, 5)))
→ println(sum(List(1, 2, 3, 4, 5))(IntAddible))
implicit宣言された型に適合する
  implicitな値を拾ってくれる
implicit探索規則
基本:静的スコープで決まる
メソッド呼び出し時に「直接参
 照可能な」implicitな値が対象
「直接参照可能な」の意味

1. 同一スコープにimplicitな値が定義されている
2. importによってimplicitな値が導入されている
例外規則
implicit parameterの型に「関連付けられ
  たクラス/トレイト」のコンパニオンオ
           ブジェクトも探索対象
「関連付けられたクラス/トレイト」
trait G[A, B, C] の場合:

G, A, B, C のコンパニオンオブジェクトを探索
trait Addible[A] {
  def plus(x: A, y: A): A
  def zero: A
}
object Addible { //companion object
  implicit object IntAddible extends Addible[Int] {
    def plus(x: Int, y: Int): Int = x + y
    def zero: Int = 0
  }
}

def sum[A](nums: List[A])(implicit addible: Addible[A]): A = {
  nums.foldLeft(addible.zero)((x, y) => addible.plus(x, y))
}

println(sum(List(1, 2, 3, 4, 5)))
→ println(sum(List(1, 2, 3, 4, 5))(IntAddible)) // OK
デフォルトで探索対象にして欲しい
implicitな値をコンパニオンオブジェクト
           に入れると便利
何が嬉しい?
Doubleもsumしたくなった
implicit object DoubleAddible extends Addible[Int] {
  def plus(x: Double, y: Double): Double = x + y
  def zero: Double = 0.0
}

println(sum(List(1.0, 2.0, 3.0)))
→ println(sum(List(1.0, 2.0, 3.0))(DoubleAddible))
元のデータ型に変更を加えずに
データ型の性質を新しく定義
特殊:implicit推論規則
implicitな値から型パラメータを
      「逆向きに」推論可能
Scala 2.8で導入
implicit val tupleA: (Int, String) = (1, "A")
implicit val tupleB: (Double, String) = (1.5, "B")

def useImplicitTuple2[A, B](value: A)(implicit tuple:
   (A, B)): B = {
  tuple._2
}
println(useImplicitTuple2(100)) // A
println(useImplicitTuple2(1.5)) // B
Aに応じて推論されるBが変わる
2.8コレクションには不可欠
A.1 ~ A.3の定義を
もう一度見てみる
A.1
val m = Map("A" -> 1, "B" -> 2)
// def map [B, That] (f: ((A, B)) ⇒ B)
(implicit bf: CanBuildFrom[Map[A, B], B, That]): That
m.map{case (x, y) => (y, x)}
m.map{case (x, y) => x}




m.map[(Int, String), Map[Int, String]]{ case (x, y) => (y,
   x) }(?:CanBuildFrom[Map[String, Int],
                        String, Map[Int, String])
m.map[String, Iterable[String]]({ case (x, y) => x })
(?:CanBuildFrom[Map[Int, String], String, Iterable[String]])
引数の型情報から順方向に推論
 したのではThatはわからない



implicit推論規則による解決
scala.collection.immutable.Map
 のコンパニオンオブジェクト
package scala.collection
package immutable
object Map ... {
  ..
  //Coll = Map[_, _]
  implicit def canBuildFrom[A, B]:
     CanBuildFrom[Coll, (A, B), Map[A, B]] =
      new MapCanBuildFrom[A, B]
}
(1) 任意の型A, B について
 CanBuildFrom[Map[_, _], (A, B), Map[A, B]]

型のimplicitな値を生成可能
scala.collection.Iterable
のコンパニオンオブジェクト
package scala.collection
...
object Iterable ... {
  ..
  //Coll = Iterable[A]
  implicit def canBuildFrom[A]:
     CanBuildFrom[Coll, (A), Iterable[A]] =
      new GenericCanBuildFrom[A]
}
(2) 任意の型A, B について
 CanBuildFrom[Iterable[_, _], (A), Iterable[A]]

型のimplicitな値を生成可能
適用優先度: (1) > (2)
(1)が適合していなくても
   (2)が適合すればOK
A.2
val l1 = List(1, 2, 3)
val l2 = List(1.5, 2.5, 3.5)
l1.sum
l2.sum



// def sum [B >: A] (implicit num: Numeric[B]): B
l1.sum[Int](?:Numeric[Int])
l2.sum[Double](?:Numeric[Double])
package scala.math
...
object Numeric {
  trait IntIsIntegral extends Integral[Int] {
     def plus(x: Int, y: Int): Int = x + y
     def minus(x: Int, y: Int): Int = x - y
     def times(x: Int, y: Int): Int = x * y
     def quot(x: Int, y: Int): Int = x / y
     def rem(x: Int, y: Int): Int = x % y
     def negate(x: Int): Int = -x
     def fromInt(x: Int): Int = x
     def toInt(x: Int): Int = x.toInt
     def toLong(x: Int): Long = x
     def toFloat(x: Int): Float = x
     def toDouble(x: Int): Double = x
  }
  ..
  // Integeral[T] <: Numeric[T] なので、 Numeric[Int]のimplicitな値も同時に定義
  // していることになる
  implicit object IntIsIntegral extends IntIsIntegral with
    Ordering.IntOrdering
}
A.3
val l1 = List("A" -> 1, "B" -> 2)
val l2 = List(1, 2, 3)
l1.toMap
l2.toMap                          名状し難い型




l1.toMap[String, Int](?: (String, Int) <:< (String, Int))
l2.toMap[B1, B2](?:B3)
→ error: Cannot prove that Int <:< (T, U).
答えはPredefの中に
package scala.math
...
object Predef ... {
  @implicitNotFound(msg = "Cannot prove that ${From} <:< ${To}.")
  sealed abstract class <:<[-From, +To] extends (From => To) with
     Serializable                                  名状し難い型の定義
  private[this] final val singleton_<:< = new <:<[Any,Any] {
    def apply(x: Any): Any = x }
  // not in the <:< companion object because it is also
  // intended to subsume identity (which is no longer implicit)
  implicit def conforms[A]: A <:< A = singleton_<:<.asInstanceOf[A <:< A]
}
ポイント
sealed abstract class <:<[-From, +To]
implicit def conforms[A]: A <:< A = singleton_<:<.asInstanceOf[A <:< A]
任意の型Aについて
A <: A 型のimplicitな値を生成
    可能(多相的なimplicit)
名状し難い <:< の
左辺:contravariant (-)
 右辺: covariant(+)
def fun[A, B](a: A, b: B)(implicit ev: A <:< B)
A = Int, B = Any
       つまり A <: B のとき
(Int <:< Any) なimplicitな値が必要
(Int <:< Int) <: (Int <:< Any) なので
      (<:< の右辺はcovariant)
conforms[Int]: Int <: Int で適合する
A = Any, B = Int
      つまり A <: B のとき
(Any <:< Int) なimplicitな値が必要
(Any <:< Any) <: (Any <: Int) かつ
    (Int <:< Int) <: (Any <: Int)
   (<:< の左辺はcontravariant)
       →コンパイルエラー
implicit parameterを使った
ライブラリ/フレームワーク
Scala標準ライブラリ
      Scalaz
       sjson
    ScalaCheck
       spray
       Akka
      Squeryl
         ...
たくさんある
implicit parameterを
活用してみてください
通称コップ本 第二版 好評発売中
Scala 2.8対応+付録Scala 2.9記事(by @kmizu)
宣伝(2)
こんなキーワードにピンと来たら(ry
 Cakeパターン, CONCEPTパターン, 限定継続
 現場でのScala, Javaとの連携
1 de 90

Recomendados

Implicit Implicit Scala por
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit ScalaKota Mizushima
1.4K vistas39 diapositivas
モナドハンズオン前座 por
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座bleis tift
5.7K vistas60 diapositivas
yieldとreturnの話 por
yieldとreturnの話yieldとreturnの話
yieldとreturnの話bleis tift
7.4K vistas72 diapositivas
圏論とプログラミング読書会#2 資料 por
圏論とプログラミング読書会#2 資料圏論とプログラミング読書会#2 資料
圏論とプログラミング読書会#2 資料53ningen
3K vistas48 diapositivas
C言語講習会3 por
C言語講習会3C言語講習会3
C言語講習会3odenhadengaku
2K vistas61 diapositivas
C++ tips2 インクリメント編 por
C++ tips2 インクリメント編C++ tips2 インクリメント編
C++ tips2 インクリメント編道化師 堂華
3.3K vistas16 diapositivas

Más contenido relacionado

La actualidad más candente

Emcjp item21 por
Emcjp item21Emcjp item21
Emcjp item21MITSUNARI Shigeo
2.3K vistas12 diapositivas
C++ tips4 cv修飾編 por
C++ tips4 cv修飾編C++ tips4 cv修飾編
C++ tips4 cv修飾編道化師 堂華
4K vistas48 diapositivas
Scala 初心者が米田の補題を Scala で考えてみた por
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたKazuyuki TAKASE
5.7K vistas64 diapositivas
C言語講習会4 por
C言語講習会4C言語講習会4
C言語講習会4odenhadengaku
2.2K vistas49 diapositivas
F#入門 ~関数プログラミングとは何か~ por
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
3.6K vistas79 diapositivas
Ekmett勉強会発表資料 por
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
16.7K vistas77 diapositivas

La actualidad más candente(20)

Scala 初心者が米田の補題を Scala で考えてみた por Kazuyuki TAKASE
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE5.7K vistas
F#入門 ~関数プログラミングとは何か~ por Nobuhisa Koizumi
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi3.6K vistas
Ekmett勉強会発表資料 por 時響 逢坂
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂16.7K vistas
Control.Arrow por haru haru
Control.ArrowControl.Arrow
Control.Arrow
haru haru134 vistas
Scala 初心者が Hom 函手を Scala で考えてみた por Kazuyuki TAKASE
Scala 初心者が Hom 函手を Scala で考えてみたScala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
Kazuyuki TAKASE487 vistas
C++コンパイラ GCCとClangからのメッセージをお読みください por digitalghost
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost4.7K vistas
並行プログラミングと継続モナド por Kousuke Ruichi
並行プログラミングと継続モナド並行プログラミングと継続モナド
並行プログラミングと継続モナド
Kousuke Ruichi9K vistas
Ekmett勉強会発表資料 por 時響 逢坂
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂948 vistas
(define)なしで再帰関数を定義する por blackenedgold
(define)なしで再帰関数を定義する(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold2.4K vistas
やさしく知りたいC言語 por uru nru
やさしく知りたいC言語やさしく知りたいC言語
やさしく知りたいC言語
uru nru44.4K vistas
Real World OCamlを読んでLispと協調してみた por blackenedgold
Real World OCamlを読んでLispと協調してみたReal World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
blackenedgold4K vistas

Similar a Implicit Explicit Scala

Pythonintro por
PythonintroPythonintro
PythonintroMikio Kubo
548 vistas45 diapositivas
20141128 iOSチーム勉強会 My Sweet Swift por
20141128 iOSチーム勉強会 My Sweet Swift20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swiftnecocen
2.2K vistas97 diapositivas
Introduction to Categorical Programming por
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical ProgrammingMasahiro Sakai
1.7K vistas33 diapositivas
Deep Learning を実装する por
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装するShuhei Iitsuka
75.3K vistas26 diapositivas
Incanterの紹介 por
Incanterの紹介Incanterの紹介
Incanterの紹介mozk_
1.7K vistas24 diapositivas
Introduction to Categorical Programming (Revised) por
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Masahiro Sakai
6.4K vistas53 diapositivas

Similar a Implicit Explicit Scala(20)

Pythonintro por Mikio Kubo
PythonintroPythonintro
Pythonintro
Mikio Kubo548 vistas
20141128 iOSチーム勉強会 My Sweet Swift por necocen
20141128 iOSチーム勉強会 My Sweet Swift20141128 iOSチーム勉強会 My Sweet Swift
20141128 iOSチーム勉強会 My Sweet Swift
necocen2.2K vistas
Introduction to Categorical Programming por Masahiro Sakai
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical Programming
Masahiro Sakai1.7K vistas
Deep Learning を実装する por Shuhei Iitsuka
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装する
Shuhei Iitsuka75.3K vistas
Incanterの紹介 por mozk_
Incanterの紹介Incanterの紹介
Incanterの紹介
mozk_1.7K vistas
Introduction to Categorical Programming (Revised) por Masahiro Sakai
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
Masahiro Sakai6.4K vistas
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編) por Nozomu Kaneko
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
Nozomu Kaneko4.6K vistas
こわくない型クラス por Kota Mizushima
こわくない型クラスこわくない型クラス
こわくない型クラス
Kota Mizushima7.6K vistas
関数プログラミング入門 por Hideyuki Tanaka
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka21.8K vistas
命令プログラミングから関数プログラミングへ por Naoki Kitora
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
Naoki Kitora3.8K vistas
Clojure por yshigeru
ClojureClojure
Clojure
yshigeru1.3K vistas
パターン認識と機械学習6章(カーネル法) por Yukara Ikemiya
パターン認識と機械学習6章(カーネル法)パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)
Yukara Ikemiya29.4K vistas
C++11概要 ライブラリ編 por egtra
C++11概要 ライブラリ編C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra3K vistas
すごいHaskell楽しく学ぼう-第12章モノイド- por Hiromasa Ohashi
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-
Hiromasa Ohashi1.6K vistas
虚数は作れる!Swift で学ぶ複素数 por Taketo Sano
虚数は作れる!Swift で学ぶ複素数虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数
Taketo Sano42.2K vistas

Más de Kota Mizushima

ドワンゴにおける新卒エンジニア向けScala研修について por
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてKota Mizushima
3.1K vistas17 diapositivas
kollectionの紹介 por
kollectionの紹介kollectionの紹介
kollectionの紹介Kota Mizushima
2.3K vistas20 diapositivas
株式会社ドワンゴにおけるScala教育の現状 por
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状Kota Mizushima
6.9K vistas8 diapositivas
Macros in nemerle por
Macros in nemerleMacros in nemerle
Macros in nemerleKota Mizushima
1.7K vistas18 diapositivas
Scala Daysに行ってみて - あるいはスイス旅行記 - por
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Kota Mizushima
1.5K vistas59 diapositivas
Introduction to PEG por
Introduction to PEGIntroduction to PEG
Introduction to PEGKota Mizushima
12.2K vistas37 diapositivas

Más de Kota Mizushima(20)

ドワンゴにおける新卒エンジニア向けScala研修について por Kota Mizushima
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
Kota Mizushima3.1K vistas
株式会社ドワンゴにおけるScala教育の現状 por Kota Mizushima
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
Kota Mizushima6.9K vistas
Scala Daysに行ってみて - あるいはスイス旅行記 - por Kota Mizushima
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
Kota Mizushima1.5K vistas
Scala Performance Tuning Tips por Kota Mizushima
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
Kota Mizushima2.9K vistas
About Capabilities for Uniqueness and Borrowing por Kota Mizushima
About Capabilities for Uniqueness and BorrowingAbout Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and Borrowing
Kota Mizushima1.4K vistas
Scala Macros makes it easy to provide useful libraries por Kota Mizushima
Scala Macros makes it easy to provide useful librariesScala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Kota Mizushima1.9K vistas
Scala + Finagleの魅力 por Kota Mizushima
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
Kota Mizushima11.1K vistas
Scalaでのプログラム開発 por Kota Mizushima
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima2.5K vistas
日本Scalaユーザーズグループ発足 por Kota Mizushima
日本Scalaユーザーズグループ発足日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足
Kota Mizushima1.2K vistas
言語アップデート -Scala編- por Kota Mizushima
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-
Kota Mizushima2.2K vistas
ScalaのソースをEclipseでビルドしてみた por Kota Mizushima
ScalaのソースをEclipseでビルドしてみたScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみた
Kota Mizushima3.2K vistas

Último

さくらのひやおろし2023 por
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023法林浩之
94 vistas58 diapositivas
Windows 11 information that can be used at the development site por
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
76 vistas41 diapositivas
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) por
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
17 vistas38 diapositivas
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 por
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化Knowledge & Experience
12 vistas34 diapositivas
The Things Stack説明資料 by The Things Industries por
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
50 vistas29 diapositivas
SNMPセキュリティ超入門 por
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
188 vistas15 diapositivas

Último(11)

さくらのひやおろし2023 por 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之94 vistas
Windows 11 information that can be used at the development site por Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka76 vistas
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) por NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 por Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
The Things Stack説明資料 by The Things Industries por CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.50 vistas
SNMPセキュリティ超入門 por mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda188 vistas
SSH応用編_20231129.pdf por icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4184 vistas
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... por NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
Web3 Career_クレデン資料 .pdf por nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo14 vistas
01Booster Studio ご紹介資料 por ssusere7a2172
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料
ssusere7a2172345 vistas

Implicit Explicit Scala