SlideShare a Scribd company logo
函数プログラミングの集い2011
    チュートリゕル
   「モナドについて」
 株式会社 Preffered Infrastructure
       田中 英行
   tanaka.hideyuki@gmail.com
自己紹介
• 田中英行 (@tanakh, id:tanakh)
• 株式会社 Preferred Infrastructure (PFI) 勤務
    – 検索エンジンのゕルゴリズムとか作ってます
•   Haskell (2004~)
•   C++ (1998~)
•   BASIC (1992~)
•   プログラミングコンテスト愛好家
    – ICPC, ICFPC, CodeJam, TopCoder, …
本日の概要
• モナドとは?
• モナドの使い方
 – モナドのセマンテゖクス
 – 典型的なモナドの例
 – Haskellでのモナド
• モナドの作り方
 – モナドの゗ンスタンスに
 – モナド変換子
What is Monad?

モナドとは?
モナドとは何か?
• 非常に難しい質問です
• 既に数多くの人がそれに答えようとして
  います
 – そして各々が一見全く違う主張をしている
幾つかの例
『モナドは象である』
『モナドはメタフゔーではない』
『プログラマブル・コンテナ』
『コンベゕのゕナロジー』




        from “All About Monads”
いろいろありますが…
• 結局モナドとはなんなのか?




             モナドの力の秘密、
             いつか解き明かしてみたいな…
モナドについての疑問
• 疑問にもいろいろある
 – モナドとは何か?
 – 何の役に立つのか?
 – なぜモナドなのか?
   モナドがもてはやされるのか?
  • ゕローとモナド、どうして差がついた…
• それぞれについて、私なりの見解
モナドとは何なのか?
• モナドとはパラダ゗ムである !
抽象的な話
パラダ゗ム?
• プログラミングパラダ゗ム
 – 手続き型
 – 関数型
 – 論理型
 – オブジェクト志向

 – モナデゖック(?)
  • ここじゃない
モナドとは手続き型パラダ゗ムの
    再定義である
• プログラミングパラダ゗ム
 – 手続き型
  • モナデゖック
 – 関数型
 – 論理型
 – オブジェクト志向
意味的側面からの
    モナドのメタフゔー
• モナドは『プログラマブルセミコロン』
  である
Programmable Semicolon
• Real World Haskell より
手続き型言語と構造化定理
• プログラムは、「順次・反復・分岐」の
  基本的な構造の組み合わせによって記述
  できる
• これらはモナドへ直接的にマッピングで
  きる
それで、何が嬉しいの?
• 分岐のセマンテゖクス書き換え
• 反復のセマンテゖクス書き換え
 – そういうことができる言語は過去にはあった
• 逐次のセマンテゖクス書き換え
 – かつて無いもの(…の様な気がします)!
逐次のセマンテゖクス
• およそほとんどの手続き型言語では、
  セミコロンの意味は変えられない
 – 空気のような存在
• セミコロンの意味を変えることの意義が
  伝統的に見逃されて来たのではないか?
 int main()
 {                 main =
   foo(); bar();     foo >> bar
 }
継続との関係
• モナドは継続(continuation)の一般化とも考
  えることができます
• 継続=各セミコロンにおけるプログラム
  の状態
• モナドはセミコロンを記述するわけなの
  で、その状態を取り出すことは簡単
 – 実際に継続モナドというものがあります
セミコロンをいじることにより
     可能になること
• 普通のプログラムを非決定計算に変える
• 普通のプログラムにエラーハンドリング
  を(プログラムを書き換えずに)追加する
• 普通のプログラムに暗黙の状態を導入す
  る
コンテクスト
• 具体的なモナドに対して、それが計算に
  付加価値を与えます。それを(計算の)
  コンテクストと呼ぶことにします
 – つまり、モナドというのはコンテクスト付き
   の計算ということができる
• 例えば…
 – monad:リストモナド → ctx:非決定性
 – monad:Stateモナド → ctx:mutableな状態
 – etc …
それぞれにそういうプログラムを
書けばいいんじゃないんですか?
• コンテクストごとに異なる記法
• コンテクストごとに異なるプログラム
• コンテクストごとに異なる語彙
 ・・・



         抽象化の欠如
コンテクストの抽象化
• 共通のゕルゴリズムの記述
• 共通のコード片の抽象化




     よりメタレベルの抽象化へ
床下配線のゕナロジー
• モナドによるセミコロンの抽象化は
  床下配線と例えられることも
 – 見えないところを書き換える
少し具体的な話
例
• N-ク゗ーン問題
 – Int が与えられて解を返す
 – 解とはなんぞや?
  • 全解列挙
  • どれか一つを見つける
  • 一番いい解を頼む
 – いろいろ考えうる
N-Queen問題
• モナデゖックに書くと、これらを統一的
  に扱える
 – 解の列挙のストラテジをモナドとして記述
 – 問題を解くゕルゴリズムからの分離
前半まとめ
• モナドとは何なのか?
 – 計算コンテクストの抽象化である
• なんでそれが嬉しいの?
 – 具体的なコンテクストに依存しないコードを
   書ける
 – 抽象化したものを具体的なコードにできる
• なぜモナドなの?
 – モナドは構造化定理に必要な要素を自然に記
   述できて、なおかつ簡潔であるから
三行で言うと

• モナドは関数レベルで
 • メタプログラミング
 • するためのものです



  (´・_・`)えっ…?
How to use Monads

モナド入門・モナドの使い方
実装レベルのお話
モナドとは
• “ある特定の方法”で組み合わせることので
  きる計算のことをまとめて、


      モナド
と呼びます。
ちなみに
• 組み合わせ可能な計算はモナドだけではあり
  ません
 – いろいろな抽象化におけるそれが存在
• 例えば、
 –   関数 (関数合成)
 –   フゔンクタ (関手)
 –   ゕプリカテゖブ・フゔンクタ
 –   ゕロー
 –   Iteratee
 –   etc…
ひとまず置いておいて、
Haskellでのモナドのお話
Haskellでのモナド
• 次のような型クラス




これの゗ンスタンスが具体的なモナド=
計算コンテクスト
モナドになっている標準データ型

• 標準データ型の中にもモナドがある
 – リスト
 – Maybe
 – Either
 – IO
モナド則の必要性
• モナド則は、モナドを安全に組み合わせ
  るのに必要
 – これらの挙動が同じでなければ、組み合わせ
   方によって意味が変わるということになる
Haskellのdo記法
• Haskellではモナドを非常によく使うので、
  専用の構文糖衣が用意されています
高度なモナドの使い方
リストモナド
• リストはモナドにできる
• リストは非決定
  計算のコンテクスト
  と捉えることが
  できる
Maybeモナド
• Maybeもモナド
• 失敗するかもしれない計算
IOモナド
• 入出力を行う可能性のある計算
• HaskellではIOモナドを介してしか入出力を
  扱えない
IOモナドの功罪
• モナドに関するよくある誤解
 – モナドってpurely functional languageでIOする
   ためにあるんでしょ?


• モナドはIOのためにあるのではありません
• モナドはIOのためにあるのではありません
 – 大事なことなので
モナド則
• すべてのモナドは次のモナド則を満たす
  ”べき”である
 – 満たす保証をするのはプログラマの責任
 – あえて満たさなくても良い
モナド変換子(Monad Transformers)

• モナドとモナドを組み合わせるもの
 – (cf. 計算と計算を組み合わせるものがモナド)
動機
• 複数の計算コンテクストを合成したい
 – 失敗するかもしれないIO計算
 – エラーハンドリングできるパーザー
 – etc, …
MTL (Monad Transformer Library)
• 標準のモナドラ゗ブラリ
 – Preludeのモナドを大幅強化
• これらのものを含む
 – 幾つかの標準的なモナド
 – これらのモナドを合成するための
   モナド変換子(Monad Transformers)
MTLに含まれるモナド
•   Monad.Cont (継続)
•   Monad.Reader (ReadOnly状態)
•   Monad.Writer (ログ出力)
•   Monad.State (Mutable状態)
•   Monad.List (非決定計算)
•   Monad.Error (エラーハンドリング)

• これに加え、それぞれのモナド変換子版
モナド変換子
• 2つのモナドを合成するためのもの
• 例えばStateモナドの場合:
 – StateT s m a
    • モナド変換子版Stateモナド
    • State s a と比べて、mというパラメータが追加
    • mに合成したいモナドを代入
 – StateT s IO a
    • IOモナドを内包したStateモナド
    • IOモナドの操作とStateモナドの操作が両方できる
持ち上げ(lift)
• StateT s IO の例




  – StateT s IO の中でIOを行うには、持ち上げ(lift)
    を行う必要がある(型が合わないので)
モナドクラス
• 例えばIOを行うだけの計算

• これは、StateT s IO 以外のモナドでも使え
  て欲しい
 – ErrorT err IO
 – ReaderT s IO
 –…
MonadIOクラス
• そのために、IOをliftできるクラス全体を抽象
  化したMonadIOクラスを定義


• 先のコードは次のような型に


• StateT s IO などをMonadIOの゗ンスタンスに
  すれば使用可能に。
一般の持ち上げ
• モナド変換子に渡されるモナドはIOだけで
  はない
 – ネストする場合もある
• 一般ケースのために、MonadTransという
  クラスが用意されている


 – 内側のモナド外側のモナドに持ち上げること
   ができる
中盤まとめ
• モナドとは >>= と return の2つの演算が定
  義されたもの
• 標準データ型の多くのものがモナドに
  なっている
• mtlというモナド変換子ラ゗ブラリがある
• モナド変換子を用いてモナドを組み合わ
  せる
• モナド持ち上げで型の異なるモナドを張
  り合わせる
Advanced Topics
monad-control (1)
• liftの逆をするもの
• 動機
 – Haskellの例外ハンドリング機構はIOモナド
   ベース
 – 渡せるものがIO固定
   • MonadIO に対しても例外ハンドルしたい
monad-control (2)
• MonadIOに対して一般化




• それを行えるようにするために、
  MonadControlIOというクラスを用意
モナドいろいろ
• 近年実に様々なラ゗ブラリがモナデゖッ
  クラ゗ブラリとして提供されるようにな
  りました
• それらの一部を紹介していきたいと思い
  ます
MonadPar
• 並列計算を記述するためのモナド
 – `par`, `seq` などをモナド化したもの
Parser
• パーザいろいろ
 – Parsec, Attoparsec, trifecta
WebApp
• WAI, Yesod, Snap, CGI, …
Interpreter
• hint, BASIC, …
How to design your monads

モナドの作り方
モナドを設計するにあたって
• 自分のラ゗ブラリが、モナドとして抽象
  化できることに気づいたとします
• しかし、モナドの作り方を間違うと、非
  常に使い勝手の悪いものができてしまい
  ます
 – 使い勝手のよいモナドの実装には気をつける
   べきことが沢山あります
• ここまで紹介したことはすべて理解して
  おくことが望ましいです
1) 既存のモナドが利用できないか

• 実際のところ、mtlに含まれるモナドで、
  ほとんどのケースはカバーされます
• 作りたい計算が、mtlにあるモナドの組み
  合わせで実現できないかまず検討するべ
  きです
2) モナド変換子版を用意する
• いざモナドを作るとなったら、(原理的に)
  可能なのであれば、モナド変換子版を必
  ず用意しましょう
 – モナド変換子にはHogeTと、末尾に大文字Tを
   つけるのが慣習です
• 非モナド変換子版は、モナド変換子版に
  Identityモナドを代入したものにします
 – 実装を重複させてはいけません
MonadIOクラスの゗ンスタンスにする

• あなたのモナドをMonadIOの゗ンスタンス
  にしておくのはとても良いことです
• あなたのモナドを利用するすべての場所
  でIOを行うことができるようになります
• MonadIOを用意しておくのはモナドによっ
  てIOを行うHaskellにとっては極めて重要な
  ことです
※ IOモナドについて(1)
• IOモナドは、Haskellのプログラムの中では外
  すことのできないモナドです
 – unsafePerformIO などを除いて
• その結果、IOを呼ぶコードはそれ自身がIOを
  行わなくても、IOモナドにする必要がありま
  す
• Haskellによくある批判として、まともなプロ
  グラムを書いているとほとんどすべての関数
  の型がIOになる、というのがあります
 – IOモナドは感染するとか言われます
※ IOモナドについて(2)
• そこでMonadIOの出番です
• IOが必要なコンテクストについてのみ、
  MonadIOを要求させておけば良くなります
• Pureなモナドに関しては、具体的な型が決
  定するに従って、自動で持ち上げられる
  ことになります
• つまり、PureなコードとIOのコードのオー
  バーロードが可能になるということです
3) MonadControlIOの
      ゗ンスタンスにする
• あなたのモナドが例外を正しく扱えるよ
  うにするために、MonadControlIOの゗ンス
  タンスにしましょう
 – これがないと bracket などが正しく後処理でき
   ません
4) MonadTransの゗ンスタンスにする
• あなたのモナド変換子が、他のモナドを
  自動多段持ち上げ可能になるように(可能
  であれば)必ず、MonadTransの゗ンスタン
  スにしましょう
5) Functor, Applicative
         の゗ンスタンスにする
• Applicativeスタ゗ルというものがあります
 – http://d.hatena.ne.jp/kazu-yamamoto/20101211/1292021817
 – などを参照

• あなたのモナドをFunctor, Applicativeの゗
  ンスタンスにすると、使い勝手が大幅に
  向上します
• 必ずこれらの゗ンスタンスにしましょう
 – Monadの゗ンスタンスは必ずFunctor及び
   Applicativeの゗ンスタンスにできます
6) 必要に応じて、その他
• その他のモナドクラスの゗ンスタンスに
  します
 – エラーハンドリングを付けたいなら、
   MonadError
 – 失敗に対する代替を与えたいときには、
   Alternative
※ Alternativeクラスについて
• m1 <|> m2 なる演算子が定義されている
• m1が失敗したとき、m2の結果

• Alternativeの任意の゗ンスタンスに対して
 – many p – pを失敗するまで繰り返し
 – some p – pを失敗するまで1回以上繰り返し
 – optional p – p が失敗したらNothing成功したら
   Just aを返す
 – これらを定義することができる
GenericNewtypeDeriving
• 自分のモナドをこれらすべての゗ンスタ
  ンスにするのは骨の折れる作業です
• モナドがnewtypeの時、これをderiving で
  済ませることができます
 – -XGenericNewtypeDeriving 言語拡張
後半まとめ
• モナドを作るにあたって
 – MTLのモナドの組み合わせで実現できないか
   考える
 – いろいろなクラスの゗ンスタンスにしておく
 – モナド以外の有用なクラスが標準にあるので
   それの゗ンスタンスにもする

More Related Content

PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
 
PDF
マルチコアを用いた画像処理
Norishige Fukushima
 
PDF
これから Haskell を書くにあたって
Tsuyoshi Matsudate
 
PDF
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
 
PDF
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 
PDF
自動定理証明の紹介
Masahiro Sakai
 
PDF
不遇の標準ライブラリ - valarray
Ryosuke839
 
PDF
プログラムを高速化する話
京大 マイコンクラブ
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
 
マルチコアを用いた画像処理
Norishige Fukushima
 
これから Haskell を書くにあたって
Tsuyoshi Matsudate
 
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
 
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 
自動定理証明の紹介
Masahiro Sakai
 
不遇の標準ライブラリ - valarray
Ryosuke839
 
プログラムを高速化する話
京大 マイコンクラブ
 

What's hot (20)

PDF
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
 
PDF
「今日から使い切る」 ための GNU Parallel による並列処理入門
Koji Matsuda
 
PDF
Re永続データ構造が分からない人のためのスライド
Masaki Hara
 
PDF
Parser combinatorってなんなのさ
cct-inc
 
PDF
すごい配列楽しく学ぼう
xenophobia__
 
PDF
動的計画法の並列化
Proktmr
 
PDF
できる!並列・並行プログラミング
Preferred Networks
 
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
 
PDF
Union find(素集合データ構造)
AtCoder Inc.
 
PDF
動的計画法
京大 マイコンクラブ
 
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
 
PDF
プログラミングコンテストでの動的計画法
Takuya Akiba
 
PDF
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
 
PDF
機械学習のためのベイズ最適化入門
hoxo_m
 
PDF
君はyarn.lockをコミットしているか?
Teppei Sato
 
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
 
PPTX
分散システムについて語らせてくれ
Kumazaki Hiroki
 
PPTX
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
Yoshikazu GOTO
 
PDF
関数プログラミング入門
Hideyuki Tanaka
 
PDF
Quine・難解プログラミングについて
mametter
 
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
 
「今日から使い切る」 ための GNU Parallel による並列処理入門
Koji Matsuda
 
Re永続データ構造が分からない人のためのスライド
Masaki Hara
 
Parser combinatorってなんなのさ
cct-inc
 
すごい配列楽しく学ぼう
xenophobia__
 
動的計画法の並列化
Proktmr
 
できる!並列・並行プログラミング
Preferred Networks
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
 
Union find(素集合データ構造)
AtCoder Inc.
 
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
 
プログラミングコンテストでの動的計画法
Takuya Akiba
 
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
 
機械学習のためのベイズ最適化入門
hoxo_m
 
君はyarn.lockをコミットしているか?
Teppei Sato
 
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
 
分散システムについて語らせてくれ
Kumazaki Hiroki
 
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
Yoshikazu GOTO
 
関数プログラミング入門
Hideyuki Tanaka
 
Quine・難解プログラミングについて
mametter
 
Ad

Similar to Monad tutorial (20)

PDF
MP in Haskell
Kent Ohashi
 
PDF
並行プログラミングと継続モナド
Kousuke Ruichi
 
KEY
Haskell Day2012 - 参照透過性とは何だったのか
Kousuke Ruichi
 
PDF
Freer Monads, More Extensible Effects
Hiromi Ishii
 
PDF
モナドハンズオン前座
bleis tift
 
PDF
モナドをつくろう
dico_leque
 
PDF
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
 
PDF
An engineer uses monads
Kousuke Ruichi
 
PDF
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
 
KEY
モナドがいっぱい!
Kenta Sato
 
ODP
これから Haskell を書くにあたって
Tsuyoshi Matsudate
 
PDF
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
悠滋 山本
 
PDF
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
悠滋 山本
 
PDF
Object-Funcational Analysis and design
Tomoharu ASAMI
 
PDF
ScalaプログラマのためのHaskell入門
Yasuaki Takebe
 
PDF
MP in Scala
Kent Ohashi
 
PDF
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
KEY
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
 
PDF
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
 
PDF
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
Masahiro Sakai
 
MP in Haskell
Kent Ohashi
 
並行プログラミングと継続モナド
Kousuke Ruichi
 
Haskell Day2012 - 参照透過性とは何だったのか
Kousuke Ruichi
 
Freer Monads, More Extensible Effects
Hiromi Ishii
 
モナドハンズオン前座
bleis tift
 
モナドをつくろう
dico_leque
 
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
 
An engineer uses monads
Kousuke Ruichi
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
 
モナドがいっぱい!
Kenta Sato
 
これから Haskell を書くにあたって
Tsuyoshi Matsudate
 
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
悠滋 山本
 
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
悠滋 山本
 
Object-Funcational Analysis and design
Tomoharu ASAMI
 
ScalaプログラマのためのHaskell入門
Yasuaki Takebe
 
MP in Scala
Kent Ohashi
 
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
 
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
 
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
Masahiro Sakai
 
Ad

More from Hideyuki Tanaka (7)

PDF
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
Hideyuki Tanaka
 
PDF
Xpath in-lens
Hideyuki Tanaka
 
PPTX
IdrisでWebアプリを書く
Hideyuki Tanaka
 
PDF
手書きスライド
Hideyuki Tanaka
 
PPTX
Yesod勉強会
Hideyuki Tanaka
 
PDF
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
 
PPTX
Icfp2009
Hideyuki Tanaka
 
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
Hideyuki Tanaka
 
Xpath in-lens
Hideyuki Tanaka
 
IdrisでWebアプリを書く
Hideyuki Tanaka
 
手書きスライド
Hideyuki Tanaka
 
Yesod勉強会
Hideyuki Tanaka
 
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
 
Icfp2009
Hideyuki Tanaka
 

Recently uploaded (10)

PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 

Monad tutorial