SlideShare a Scribd company logo
1 of 52
Download to read offline
2021/12/18 株式会社ユーザベース 矢野勉
プログラミング言語とシステムデザイン
Clojure, J
a
v
a
, デザインパターン, DDD, Cle
a
n Architecture
提供
株式会社ユーザベース
誰?
• 名前: 矢野勉


• @t_yano


• https://boxofpapers.hatenablog.com/


• 株式会社ユーザベース・技術部門のフェローをやってます


(フェローというのはユーザベースの正式な役職名で、別に名誉職ではないです。仕
事してます)


• プログラミング言語Clojureのコントリビュータ


コンパイラにパッチ送ったりしてます(なかなかマージされない…)
モデリング議論楽しいですよね
けっこう白熱しますよね
これはこういうクラスに分割しよう
これはドメインかな、ドメインサービスかな
なんのためのクラス分け?
夢中になると、なんのために
クラス分けしようとしてるの
か、思考が止まってしまう
デザパタ地獄
なんでもかんでも、なんらかのデザインパターンを適用しようとする麻疹
AbstractFactoryパターンがあるからnewは禁止ですか?
シンプルな委譲で済むことに、ChainOfResponsibilityパターン必要ですか?
なんでも過剰になっていく
XML-RPC →もっと機能増やすぜ → SOAP
XML最高 → EJB2
REST最高!→ RESTful+HATEOAS
設計にはトレードオフがつきもの


やりたいことに対して複雑さが高過ぎては意味がない
トレードオフ
パターンは言語によっては消滅してしまう
デザインパターンはトレードオフで選択するもの
Visitorオブジェクトを定義することで、階層状のノードを潜りながら、ノード
に対する操作を実行していくデザインパターン
Visitorパターン
• Visitorはクロージャ関数として書けるし、ノードを潜る操作は再帰処理として書けま
す。
クロージャ関数があって、再帰処理をサポートしている言語で、
このパターン必要ですか?
デザインパターンには、適用条件があって、その条
件がなくなってしまったら、パターンごと必要なく
なる
条件が変わったら消えてしまうものがある。
でも条件が変わっても消えないものもある。
設計理論
その消えないものの一つが
で


それを適用したものが
アーキテクチャ
なんじゃないかと思います
DDDとCleanArchitecture
Clojureというプログラミング言語を肴に、


DDDやCleanArchitectureがどう見えてくるのかって話をしたいです
Clojureってどんな言語?
LISP系のJVM上で動く言語
よくかっこ多過ぎと言われるアレ


(実際にはそんなに変わらんのだけど)
関数言語
• クラスはない


• 一つのデータに対してたくさんの関数
一般的なオブジェクト指向言語 Clojure
データと関数は独立している
Users
閲覧者を処理する関数 Listを処理する関数
購入者を処理する関数
社員を処理する関数
データの価値は、関数が決める
Users
社員を処理する関数
関数がそのデータを社員として扱うなら、それは社員データ
CleanArchitectureのあの図
Usecaseってなんだ?
Usec
a
seオブジェクト?
社員のある月のサラリーを求めるユースケース
社員Repository
社員Domain Service
勤務履歴Repository
社員 履歴
メソッド
Clojureでも似たような構造は作れるが…
RecordとProtocol
社員のある月のサラリーを求めるユースケースprotocolを実装したrecord
SalaryUsecase
社員Repository
社員Domain Service
勤務履歴Repository
社員 履歴
protocol関数
Record作成時にrecord内に格納する
関数は、その引数にだけ依存すべき
多くの関数言語で使われるポリシー
•関数はそれだけで実行できるべき


•テスト容易性


•REPLドリブン開発
ただの関数でよくない?
社員のある月のサラリーを求める関数
その他必要なもの全部
年月
社員を特定できるデータ
引数
DDDのエンティティ
エンティティ「社員」
社員ID
名前
値オブジェクト
部署
ある月の社員の基本給を求めるメソッド 年月
引数
値オブジェクト
値オブジェクト
オブジェクト


フィールド
オブジェクト


フィールド
関数でよくない?
社員の基本給を求める関数
基本給を求めるのに必要な社
員の情報が入ってるデータ
引数
年月
Clean ArchitectureのいうEntity
CleanArchitectureのEntityと


DDDのEntity
Entityオブジェクト
Entityを取り出すRepository
Domain Service
DDDの「モデル」
ドメインを表す名前空間に関数定義すればよくない?
Clojureでは、関数は「名前空間」で区分けすることができます
社員データを処理する関数
社員データを取り出す関数
社員データ同士をまとめて処理したり、他のものを掛け合わ
せて処理したりする関数
「社員」名前空間
Entityのメソッドだったもの
Repositoryのメソッドだったもの
DomainServiceのメソッドだったもの
何がドメインかは、関数が決める
Users
社員を処理する関数
関数がそのデータを社員として扱うなら、そのデータは社員
データが社員クラスだから社員なのではない
データそれだけでは、ただのデータで、何者でもない
これらは、オブジェクト指向のデザインパターンだった
Entityオブジェクト
Entityを取り出すRepository
Domain Service
Usecaseオブジェクト
オブジェクト指向言語の特性や制約が生んだものであっ
て、システム設計上必須のものではなかった
デザインパターンは、条件が変わると消滅することがある
でも、それでも消えなかったものも
ありますよね
その部分が、言語を超えて通用するアーキテクチャ
“CleanArchitecture”というアーキテクチャはない
あの図は例の一つです
この図の通りやってる人どのくらいいますか?
特にWebアプリケーション開発してる人
割と都合悪いところは無視してません?
でもそれはそれでも構わない場合もある
SOLID原則
• S - Single-responsiblity Principle 単一責任の原則
• O - Open-closed Principle オープン・クローズドの原則


• L - Liskov Substitution Principle リスコフの置換原則


• I - Interface Segregation Principle インターフェイス分離の原則


• D - Dependency Inversion Principle 依存関係逆転の原則
2000年ごろにUSENETで誕生(名前がついたのは2004年)
Robert C.Martin,角 征典,高木 正弘. Clean Architecture 達人に学ぶソフトウェアの構造と設計
(Japanese Edition)
“SOLID原則は、関数やデータ構造をどのようにクラスに組み込むのか、そしてクラスの相
互接続をどのようにするのかといったことを教えてくれる。「クラス」という用語を使った
からといって、これらの原則がオブジェクト指向ソフトウェアにしか通用しないわけではな
い。ここでいうクラスとは、単にいくつかの機能やデータをとりまとめたものを指している
にすぎない。「クラス」と呼ぶかどうかは別として、どのようなソフトウェアシステムにも
そのような仕組みはあるはずだ。SOLID原則は、そうした仕組みに適用するものである”
単一責任の原則
個々のモジュールを変更する理由がたったひとつだけになるように、ソフト
ウェアシステムの構造がそれを使う組織の社会的構造に大きな影響を受けるよ
うにする。


オープン・クローズドの原則
ソフトウェアを変更しやすくするために、既存のコードの変更よりも新しい
コードの追加によって、システムの振る舞いを変更できるように設計すべきで
ある
リスコフの置換原則
要するに、交換可能なパーツを使ってソフトウェアシステムを構築するなら、
個々のパーツが交換可能となるような契約に従わなければいけないというこ
と。
インターフェイス分離の原則
ソフトウェアを設計する際には、使っていないものへの依存を回避すべきだと
いう原則。
依存関係逆転の原則
上位レベルの方針の実装コードは、下位レベルの詳細の実装コードに依存すべ
きではなく、逆に詳細側が方針に依存すべきであるという原則。
SOLID原則をシステムに当てはまるとこうなるよね
と言うのがこの図
ぶっちゃけ色分け以外の文字はどうでもいい…
外界
アプリケーションロジック
ビジネスロジック
外界とのIO詳細
でも一番複雑なプログラム、ここにあったりしませんか?
一番複雑な部分を、G
a
tew
a
yの向こう側に吹っ飛ばしてしまってるとも言える
それじゃ、システムの複雑さは改善されないですよね??
この図の通りにクラス分けできているか?
自分のプログラムは


SOLID原則を守れているか?
よりも
の方が大事。
• 下位レイヤーとロジックを分離できているか?


( インターフェイス分離の原則)


• ロジックが下位レイヤーの詳細に依存するのではなく、下位レイヤーの方がロジック
側の提供する仕様に合わせているか?


(依存関係逆転の原則)


• 下位レイヤーの変更を行わずに、コードを追加することで、機能の拡張ができるか?


(オープン・クローズドの原則)
こういった理屈は、言語が変わっても


そのまま適用できる
OSにだって適用できる
OS
(カーネル)プラグイン
ハードウェア抽象化レイヤー
ハードウェア
Webアプリケーション以外にだって適用できる
データ
Clojureのチャンネル・パイプラインの実装
チャンネル
関数
関数
関数
関数 関数
関数
既存のチャンネル+関数を変更することなく、


チャンネルを追加することで、機能を拡張・改変できる
もちろんGatewayの向こう側に


吹っ飛ばした複雑性にも


適用できる
言語を超えて通用するものを見つけるために
パラダイムの違う言語をやろう
今オブジェクト指向言語ばっかり使っているなら


オブジェクト指向言語でないものをやろう
言語を超えても有効なものこそが、


システムの基盤となるアーキテクチャ理論になる
今回言いたかったこと
モデリングは楽しいけども、


その部分を無視したモデリングは多分何も解決してくれない
とりあえず


Clojure


やってみませんか?
というわけで
楽しいよ…
終わり

More Related Content

What's hot

目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
Moving computation to the data (1)
Moving computation to the data (1)Moving computation to the data (1)
Moving computation to the data (1)Kazunori Sato
 
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装実践!Django + GraphQL 実装
実践!Django + GraphQL 実装ssuseraf19bf
 
静的型付け言語Python
静的型付け言語Python静的型付け言語Python
静的型付け言語Pythonkiki utagawa
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方増田 亨
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupgree_tech
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おうserviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おうよしだ あつし
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Etsuji Nakai
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術Takuto Wada
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Pythonkwatch
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務Yutaka Kachi
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Takayuki Shimizukawa
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門ESM SEC
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
Mixed Precision Training
Mixed Precision TrainingMixed Precision Training
Mixed Precision TrainingMasao Taketani
 

What's hot (20)

目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
Moving computation to the data (1)
Moving computation to the data (1)Moving computation to the data (1)
Moving computation to the data (1)
 
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装実践!Django + GraphQL 実装
実践!Django + GraphQL 実装
 
静的型付け言語Python
静的型付け言語Python静的型付け言語Python
静的型付け言語Python
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おうserviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おう
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
Mixed Precision Training
Mixed Precision TrainingMixed Precision Training
Mixed Precision Training
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 

Similar to プログラミング言語とシステムデザイン

磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!uka yare
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みhaljik Seiji
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう増田 亨
 
プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介Seiko Kuchida
 
Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫
Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫
Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫Koichiro Matsuoka
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜Koichi ITO
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
訳が欲しい奴ぁ俺んとこ来い!
訳が欲しい奴ぁ俺んとこ来い!訳が欲しい奴ぁ俺んとこ来い!
訳が欲しい奴ぁ俺んとこ来い!Ryuji Tamagawa
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾Ryutaro YOSHIBA
 
Windows Azure 最新 Update 2013/12/09
Windows Azure 最新 Update 2013/12/09Windows Azure 最新 Update 2013/12/09
Windows Azure 最新 Update 2013/12/09Ryusaburo Tanaka
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaonNaoki Okino
 
KyotoLT_Online_27.pdf
KyotoLT_Online_27.pdfKyotoLT_Online_27.pdf
KyotoLT_Online_27.pdfhiroya akita
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! 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
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景Koichi ITO
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]Koichiro Matsuoka
 
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)Koichiro Matsuoka
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8Koichiro Matsuoka
 
Windows Azure 最新 Update 2014/01/28
Windows Azure 最新 Update 2014/01/28Windows Azure 最新 Update 2014/01/28
Windows Azure 最新 Update 2014/01/28Ryusaburo Tanaka
 
特にタイトルはない
特にタイトルはない特にタイトルはない
特にタイトルはないAya Komuro
 

Similar to プログラミング言語とシステムデザイン (20)

#nds34 LT
#nds34 LT#nds34 LT
#nds34 LT
 
磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
 
プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介
 
Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫
Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫
Discordから バーチャルオフィス「Teamflow」 に乗り換えてみた 雑談を生む工夫
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
訳が欲しい奴ぁ俺んとこ来い!
訳が欲しい奴ぁ俺んとこ来い!訳が欲しい奴ぁ俺んとこ来い!
訳が欲しい奴ぁ俺んとこ来い!
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
Windows Azure 最新 Update 2013/12/09
Windows Azure 最新 Update 2013/12/09Windows Azure 最新 Update 2013/12/09
Windows Azure 最新 Update 2013/12/09
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaon
 
KyotoLT_Online_27.pdf
KyotoLT_Online_27.pdfKyotoLT_Online_27.pdf
KyotoLT_Online_27.pdf
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
 
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
 
Windows Azure 最新 Update 2014/01/28
Windows Azure 最新 Update 2014/01/28Windows Azure 最新 Update 2014/01/28
Windows Azure 最新 Update 2014/01/28
 
特にタイトルはない
特にタイトルはない特にタイトルはない
特にタイトルはない
 

プログラミング言語とシステムデザイン