Enviar búsqueda
Cargar
契約プログラミング
•
Descargar como PPTX, PDF
•
3 recomendaciones
•
5,057 vistas
O
Oda Shinsuke
Seguir
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 14
Descargar ahora
Recomendados
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
async/await のしくみ
async/await のしくみ
信之 岩永
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
Recomendados
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
async/await のしくみ
async/await のしくみ
信之 岩永
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
こわくない Git
こわくない Git
Kota Saito
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
たのしい高階関数
たのしい高階関数
Shinichi Kozake
Observableで非同期処理
Observableで非同期処理
torisoup
非同期処理の基礎
非同期処理の基礎
信之 岩永
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
UnityとROSの連携について
UnityとROSの連携について
UnityTechnologiesJapan002
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
torisoup
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
ScratchとAzure FunctionsのBlocklyな関係
ScratchとAzure FunctionsのBlocklyな関係
Masuda Tomoaki
開発を彩る技術たち
開発を彩る技術たち
Oda Shinsuke
Más contenido relacionado
La actualidad más candente
こわくない Git
こわくない Git
Kota Saito
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
たのしい高階関数
たのしい高階関数
Shinichi Kozake
Observableで非同期処理
Observableで非同期処理
torisoup
非同期処理の基礎
非同期処理の基礎
信之 岩永
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
UnityとROSの連携について
UnityとROSの連携について
UnityTechnologiesJapan002
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
C#でわかる こわくないMonad
C#でわかる こわくないMonad
Kouji Matsui
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
torisoup
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
La actualidad más candente
(20)
こわくない Git
こわくない Git
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Oss貢献超入門
Oss貢献超入門
中3女子でもわかる constexpr
中3女子でもわかる constexpr
たのしい高階関数
たのしい高階関数
Observableで非同期処理
Observableで非同期処理
非同期処理の基礎
非同期処理の基礎
オブジェクト指向できていますか?
オブジェクト指向できていますか?
UnityとROSの連携について
UnityとROSの連携について
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
メタプログラミングって何だろう
メタプログラミングって何だろう
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
冬のLock free祭り safe
冬のLock free祭り safe
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
C#でわかる こわくないMonad
C#でわかる こわくないMonad
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Similar 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
Similar 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# でのアプリ開発
Más 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
Más 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
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Último
(7)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
契約プログラミング
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あまり試せていません。一緒に勉強しませんか? まとめ
Descargar ahora