Enviar pesquisa
Carregar
契約プログラミング
•
Transferir como PPTX, PDF
•
3 gostaram
•
5,057 visualizações
O
Oda Shinsuke
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 14
Baixar agora
Recomendados
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Docker超入門
Docker超入門
VirtualTech Japan Inc.
例外設計における大罪
例外設計における大罪
Takuto Wada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
目grep入門 +解説
目grep入門 +解説
murachue
Recomendados
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Docker超入門
Docker超入門
VirtualTech Japan Inc.
例外設計における大罪
例外設計における大罪
Takuto Wada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
目grep入門 +解説
目grep入門 +解説
murachue
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
こわくない Git
こわくない Git
Kota Saito
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Marp Tutorial
Marp Tutorial
Rui Watanabe
ScratchとAzure FunctionsのBlocklyな関係
ScratchとAzure FunctionsのBlocklyな関係
Masuda Tomoaki
開発を彩る技術たち
開発を彩る技術たち
Oda Shinsuke
Mais conteúdo relacionado
Mais procurados
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
Yasuhiro Mawarimichi
こわくない Git
こわくない Git
Kota Saito
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Marp Tutorial
Marp Tutorial
Rui Watanabe
Mais procurados
(20)
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
こわくない Git
こわくない Git
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
Mavenの真実とウソ
Mavenの真実とウソ
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
Marp Tutorial
Marp Tutorial
Semelhante a 契約プログラミング
ScratchとAzure FunctionsのBlocklyな関係
ScratchとAzure FunctionsのBlocklyな関係
Masuda Tomoaki
開発を彩る技術たち
開発を彩る技術たち
Oda Shinsuke
TechDo Goハンズオン#3
TechDo Goハンズオン#3
privatemy
Go一緒にいかが?
Go一緒にいかが?
Ryuji Iwata
ngCore engine for mobage platform
ngCore engine for mobage platform
Toru Yamaguchi
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
Dockerで開発環境をデリバる
Dockerで開発環境をデリバる
Daigou Harada
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
cch-robo
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
YYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビュー
宜浩 香月
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
ZendStudioのご紹介
ZendStudioのご紹介
Manabu Shinsaka
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
Kazuchika Sekiya
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTC
Natsuki Yamanaka
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
invogue
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
日本マイクロソフト株式会社
The evolution of c#
The evolution of c#
leverages_event
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
m ishizaki
Semelhante a 契約プログラミング
(20)
ScratchとAzure FunctionsのBlocklyな関係
ScratchとAzure FunctionsのBlocklyな関係
開発を彩る技術たち
開発を彩る技術たち
TechDo Goハンズオン#3
TechDo Goハンズオン#3
Go一緒にいかが?
Go一緒にいかが?
ngCore engine for mobage platform
ngCore engine for mobage platform
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Dockerで開発環境をデリバる
Dockerで開発環境をデリバる
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
YYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビュー
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
ZendStudioのご紹介
ZendStudioのご紹介
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTC
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
The evolution of c#
The evolution of c#
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
Mais de Oda Shinsuke
SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdf
Oda Shinsuke
What's hyperscale
What's hyperscale
Oda Shinsuke
Dot net+sql server tips
Dot net+sql server tips
Oda Shinsuke
Sql server 2019 ざっくり紹介
Sql server 2019 ざっくり紹介
Oda Shinsuke
Spark on sql server?
Spark on sql server?
Oda Shinsuke
SQL Server のロック概要
SQL Server のロック概要
Oda Shinsuke
Blazor 触ってみた
Blazor 触ってみた
Oda Shinsuke
Linux + PHP でも SQL Server
Linux + PHP でも SQL Server
Oda Shinsuke
グラフデータベースの話し
グラフデータベースの話し
Oda Shinsuke
Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介
Oda Shinsuke
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベース
Oda Shinsuke
Transaction scopeまだダメ
Transaction scopeまだダメ
Oda Shinsuke
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!
Oda Shinsuke
2016年を振り返って
2016年を振り返って
Oda Shinsuke
Sql world とは
Sql world とは
Oda Shinsuke
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Oda Shinsuke
Sql world とは
Sql world とは
Oda Shinsuke
Ms build 触ってみよう
Ms build 触ってみよう
Oda Shinsuke
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
Oda Shinsuke
Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介
Oda Shinsuke
Mais de Oda Shinsuke
(20)
SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdf
What's hyperscale
What's hyperscale
Dot net+sql server tips
Dot net+sql server tips
Sql server 2019 ざっくり紹介
Sql server 2019 ざっくり紹介
Spark on sql server?
Spark on sql server?
SQL Server のロック概要
SQL Server のロック概要
Blazor 触ってみた
Blazor 触ってみた
Linux + PHP でも SQL Server
Linux + PHP でも SQL Server
グラフデータベースの話し
グラフデータベースの話し
Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベース
Transaction scopeまだダメ
Transaction scopeまだダメ
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!
2016年を振り返って
2016年を振り返って
Sql world とは
Sql world とは
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Sql world とは
Sql world とは
Ms build 触ってみよう
Ms build 触ってみよう
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介
Último
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
Último
(9)
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
契約プログラミング
1.
Groovy でもやってみよう! 契約プログラミング
2.
3.
契約プログラミングってなに?
4.
Groovy では?
5.
他の言語では?
6.
まとめアジェンダ
7.
8.
勤務地:大阪で開発者しています
9.
.NET (C#) がメイン
(Java はよく知りません)
10.
SQL World, わんくま同盟,
JGGUG の勉強会等に参加
11.
オンラインの活動 Blog:お だ のスペース
http://d.hatena.ne.jp/odashinsuke/ twitter:@shinsukeoda 自己紹介
12.
契約プログラミング
13.
僕と契約してry 契約プログラミング
14.
15.
Eiffel という言語が起源
16.
仕様をコード内に記述する
17.
事前条件 (メソッドの開始時に満たす条件)
18.
事後条件 (メソッドの終了時に満たす条件)
19.
不変条件 (どんな操作が行われても保障される条件)
20.
サポートする言語
21.
Eiffel
22.
D
23.
Spec#契約プログラミング
24.
事前条件の例 - 仕様
25.
事前条件の例 - 実装
The Spec# programming system: An overview. より抜粋 http://research.microsoft.com/en-us/projects/specsharp/krml136.pdf
26.
27.
事後条件(メソッドに指定)- @Ensures( {
condition } )
28.
不変条件(クラスに指定)- @Invariant( {
condition } )http://groovy.dzone.com/announcements/gcontracts-10-released GContracts
29.
import org.gcontracts.annotations.* @Invariant({
speed >= 0 && speed <= 100 }) class Rocket { int speed boolean started @Requires({ !started }) def start() { started = true } @Requires({ started }) @Ensures({ old -> (speed - old.speed) > 0 }) def accelerate() { speed += 10 } } class BetterRocket extends Rocket { @Override def accelerate() { speed += 20 } } defbetterRocket = new BetterRocket() betterRocket.accelerate() http://blog.andresteingress.com/2010/07/12/gcontracts-1-1-2-released/
30.
Interface にも設定可能 @Contracted
がついてるパッケージ、クラスを AST 変換対象とする 「ContractGroovyDoc」 Antタスクで、ドキュメントに事前/事後条件を出力出来る …ほかにもまだまだあります。 http://blog.andresteingress.com/2011/03/11/gcontracts-1-2-0-released/ 1.2 からの新機能
31.
メソッドのパラメータが Not Null
とか、メソッド毎に仮引数名違うしめんどくせー 似たようなの書くのマンドクセ('A`) AnnotationContract @Precondition @AnnotationContract({ it != null }) public @interface NotNull {} class Tester { defdoSomething(@NotNullparam) { println "hello world: ${param}" } } http://blog.andresteingress.com/2011/03/31/getting-started-with-annotation-contracts/
32.
33.
Assert で事前条件書くより、なんかかっこいい! 契約を書くことで、誤った実装を許さない
Gcontractだと、HTMLドキュメントに条件を出力出来る 個人的な話ですが、DbCあまり試せていません。一緒に勉強しませんか? まとめ
Baixar agora