Soumettre la recherche
Mettre en ligne
仕様をコードに落としこむ際気をつけたいこと
•
3 j'aime
•
3,463 vues
Masaki Toyoshima
Suivre
市ヶ谷Geek Night
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 21
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Scalaでもgae
Scalaでもgae
Masaki Toyoshima
Scala on gae
Scala on gae
Masaki Toyoshima
Ladder of cqrs+es
Ladder of cqrs+es
Masaki Toyoshima
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
Kota Mizushima
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
虎の穴 開発室
Deno を aws fargate で動かす
Deno を aws fargate で動かす
虎の穴 開発室
Recommandé
Scalaでもgae
Scalaでもgae
Masaki Toyoshima
Scala on gae
Scala on gae
Masaki Toyoshima
Ladder of cqrs+es
Ladder of cqrs+es
Masaki Toyoshima
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
Kota Mizushima
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
虎の穴 開発室
Deno を aws fargate で動かす
Deno を aws fargate で動かす
虎の穴 開発室
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
虎の穴 開発室
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ
虎の穴 開発室
React + Amplifyで アプリ開発
React + Amplifyで アプリ開発
虎の穴 開発室
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
Sadao Tokuyama
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
Amplify Studioを使ってみた
Amplify Studioを使ってみた
虎の穴 開発室
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策
Mogi Isamu
Scalaプロジェクトへの未経験者の円滑なジョインへ
Scalaプロジェクトへの未経験者の円滑なジョインへ
Kenji Doi
React and-rx
React and-rx
Taketoshi 青野健利
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
Deno で始めるフロントエンド
Deno で始めるフロントエンド
虎の穴 開発室
GraphQL with React
GraphQL with React
Taketoshi 青野健利
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!デベロッパーネットワーク
Apolloを使って、React-Reduxの世界にGraphQLを持ち込む
Apolloを使って、React-Reduxの世界にGraphQLを持ち込む
chuck h
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
Yahoo!デベロッパーネットワーク
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
心 谷本
Responsableを使ったadr実装
Responsableを使ったadr実装
Kenjiro Kubota
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
SpringIO2019報告_Kotlin関連
SpringIO2019報告_Kotlin関連
ShingoKurihara1
十人十色のScalaの始め方
十人十色のScalaの始め方
Nyle Inc.(ナイル株式会社)
Akkaを使ったスケーラブルなLINE BOT
Akkaを使ったスケーラブルなLINE BOT
Takashi Sugimoto
Contenu connexe
Tendances
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
虎の穴 開発室
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ
虎の穴 開発室
React + Amplifyで アプリ開発
React + Amplifyで アプリ開発
虎の穴 開発室
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
Sadao Tokuyama
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
Amplify Studioを使ってみた
Amplify Studioを使ってみた
虎の穴 開発室
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策
Mogi Isamu
Scalaプロジェクトへの未経験者の円滑なジョインへ
Scalaプロジェクトへの未経験者の円滑なジョインへ
Kenji Doi
React and-rx
React and-rx
Taketoshi 青野健利
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
Deno で始めるフロントエンド
Deno で始めるフロントエンド
虎の穴 開発室
GraphQL with React
GraphQL with React
Taketoshi 青野健利
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!デベロッパーネットワーク
Apolloを使って、React-Reduxの世界にGraphQLを持ち込む
Apolloを使って、React-Reduxの世界にGraphQLを持ち込む
chuck h
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
Yahoo!デベロッパーネットワーク
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
心 谷本
Responsableを使ったadr実装
Responsableを使ったadr実装
Kenjiro Kubota
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
SpringIO2019報告_Kotlin関連
SpringIO2019報告_Kotlin関連
ShingoKurihara1
Tendances
(20)
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ
React + Amplifyで アプリ開発
React + Amplifyで アプリ開発
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
Spring I/O 2015 報告
Spring I/O 2015 報告
Amplify Studioを使ってみた
Amplify Studioを使ってみた
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策
Scalaプロジェクトへの未経験者の円滑なジョインへ
Scalaプロジェクトへの未経験者の円滑なジョインへ
React and-rx
React and-rx
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Deno で始めるフロントエンド
Deno で始めるフロントエンド
GraphQL with React
GraphQL with React
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Apolloを使って、React-Reduxの世界にGraphQLを持ち込む
Apolloを使って、React-Reduxの世界にGraphQLを持ち込む
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
Responsableを使ったadr実装
Responsableを使ったadr実装
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
SpringIO2019報告_Kotlin関連
SpringIO2019報告_Kotlin関連
En vedette
十人十色のScalaの始め方
十人十色のScalaの始め方
Nyle Inc.(ナイル株式会社)
Akkaを使ったスケーラブルなLINE BOT
Akkaを使ったスケーラブルなLINE BOT
Takashi Sugimoto
Scala戦士を増やせ
Scala戦士を増やせ
Yuto Suzuki
Aerospike deep dive LDTs
Aerospike deep dive LDTs
Masaki Toyoshima
Power of Scala
Power of Scala
Kota Mizushima
Macros in nemerle
Macros in nemerle
Kota Mizushima
Akka Stream x Kinesis at Shinjuku reactive meetup vol2
Akka Stream x Kinesis at Shinjuku reactive meetup vol2
Masaki Toyoshima
Securing Spark Applications
Securing Spark Applications
DataWorks Summit/Hadoop Summit
Agile Japan 2016 大阪サテライト
Agile Japan 2016 大阪サテライト
Naoya Maekawa
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
yoshiaki iwanaga
Securing Your Apache Spark Applications
Securing Your Apache Spark Applications
Cloudera, Inc.
Scalaのコンパイルを3倍速くした話
Scalaのコンパイルを3倍速くした話
tod esking
Akka stream
Akka stream
Masaki Toyoshima
Spark Security
Spark Security
Yifeng Jiang
kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化
Ryo Mitoma
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
賢太郎 前多
Fine-Grained Security for Spark and Hive
Fine-Grained Security for Spark and Hive
DataWorks Summit/Hadoop Summit
Agile Japan 2016 | アジャイルなIoTプラットフォーム開発
Agile Japan 2016 | アジャイルなIoTプラットフォーム開発
SORACOM,INC
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
Itsuki Kuroda
En vedette
(20)
十人十色のScalaの始め方
十人十色のScalaの始め方
Akkaを使ったスケーラブルなLINE BOT
Akkaを使ったスケーラブルなLINE BOT
Scala戦士を増やせ
Scala戦士を増やせ
Aerospike deep dive LDTs
Aerospike deep dive LDTs
Power of Scala
Power of Scala
Macros in nemerle
Macros in nemerle
Akka Stream x Kinesis at Shinjuku reactive meetup vol2
Akka Stream x Kinesis at Shinjuku reactive meetup vol2
Securing Spark Applications
Securing Spark Applications
Agile Japan 2016 大阪サテライト
Agile Japan 2016 大阪サテライト
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Securing Your Apache Spark Applications
Securing Your Apache Spark Applications
Scalaのコンパイルを3倍速くした話
Scalaのコンパイルを3倍速くした話
Akka stream
Akka stream
Spark Security
Spark Security
kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
Fine-Grained Security for Spark and Hive
Fine-Grained Security for Spark and Hive
Agile Japan 2016 | アジャイルなIoTプラットフォーム開発
Agile Japan 2016 | アジャイルなIoTプラットフォーム開発
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
リーンスタートアップと顧客開発とアジャイル開発を一気通貫するッ #devlove #devkan
Similaire à 仕様をコードに落としこむ際気をつけたいこと
ドリコムのインフラCI
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
Hideo Terada
JavaScript.Next
JavaScript.Next
dynamis
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで
【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで
UnityTechnologiesJapan002
Perl/CGI 入門
Perl/CGI 入門
keroyonn
Grailsのススメ(仮)
Grailsのススメ(仮)
Tsuyoshi Yamamoto
Storyboard
Storyboard
Yukihiko Kagiyama
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM,INC
Scalaで始める競技プログラミング
Scalaで始める競技プログラミング
HAYATO KOKUBU
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Drecom Co., Ltd.
Flutterを体験してみませんか
Flutterを体験してみませんか
cch-robo
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Issei Hiraoka
Riscv+fpga200606
Riscv+fpga200606
たけおか しょうぞう
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
yaegashi
Source Code of Dart
Source Code of Dart
nothingcosmos
Scripting Layer for Android + Perl
Scripting Layer for Android + Perl
Naoya Ito
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)
Hideaki Tarumi
Scala + Finagleの魅力
Scala + Finagleの魅力
Kota Mizushima
Similaire à 仕様をコードに落としこむ際気をつけたいこと
(20)
ドリコムのインフラCI
ドリコムのインフラCI
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
JavaScript.Next
JavaScript.Next
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで
【Unite 2018 Tokyo】AndroidでAR〜ARCoreの導入から応用、使う上での勘所まで
Perl/CGI 入門
Perl/CGI 入門
Grailsのススメ(仮)
Grailsのススメ(仮)
Storyboard
Storyboard
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
Scalaで始める競技プログラミング
Scalaで始める競技プログラミング
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Flutterを体験してみませんか
Flutterを体験してみませんか
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Riscv+fpga200606
Riscv+fpga200606
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
Source Code of Dart
Source Code of Dart
Scripting Layer for Android + Perl
Scripting Layer for Android + Perl
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)
Scala + Finagleの魅力
Scala + Finagleの魅力
仕様をコードに落としこむ際気をつけたいこと
1.
copyright Fringe81 Co.,Ltd. 仕様をコードに落としこむ際 気をつけたいこと 市ヶ谷Geek★Night 2016/04/26 @mtoyoshi
2.
copyright Fringe81 Co.,Ltd. 自己紹介 @mtoyoshi Fringe81で働くScalaエンジニア 気づけばScala歴2.5年ほどに 宣伝: シンクル(iOS/Android)リリース “この好きがやっと分かってもらえた”
3.
copyright Fringe81 Co.,Ltd. 四月、 新しくScalaを始めた人も 多いかもしれない
4.
copyright Fringe81 Co.,Ltd. 例えば DDD
5.
copyright Fringe81 Co.,Ltd. ドメインの理解 モデルの抽出 コードで表現
6.
copyright Fringe81 Co.,Ltd. val
result: Boolean = executer.run(args) こんなコードがあったとする
7.
copyright Fringe81 Co.,Ltd. val
result: Boolean = executer.run(args) 人によっては 将来の拡張性を考えて(?) こんな風に設計するかもしれない val result: Result = executer.run(args) case class Result(isValid: Boolean)
8.
copyright Fringe81 Co.,Ltd. “isValidがfalseの時は argsのうち原因となったArgも返すこと” となったとする val
result: Result = executer.run(args) case class Result(isValid: Boolean) 仕様追加
9.
copyright Fringe81 Co.,Ltd. “isValidがfalseの時は argsのうち原因となったArgも返すこと” isValidが trueならArgはなし falseならArgはある
10.
copyright Fringe81 Co.,Ltd. “isValidがfalseの時は argsのうち原因となったArgも返すこと” isValidが trueならArgはなし falseならArgはある Option型!
11.
copyright Fringe81 Co.,Ltd. “isValidがfalseの時は argsのうち原因となったArgも返すこと” isValidが trueならArgはなし falseならArgはある case
class Result(isValid: Boolean, arg: Option[Arg])
12.
copyright Fringe81 Co.,Ltd. ちょっとまって case
class Result(isValid: Boolean, arg: Option[Arg])
13.
copyright Fringe81 Co.,Ltd. Resultは以下の 4通りの組み合わせを取りうる true
x Some true x None false x Some false x None case class Result(isValid: Boolean, arg: Option[Arg])
14.
copyright Fringe81 Co.,Ltd. Resultは以下の 4通りの組み合わせを取りうる true
x Some true x None false x Some false x None case class Result(isValid: Boolean, arg: Option[Arg]) この組み合わせは仕様と異なる
15.
copyright Fringe81 Co.,Ltd. 仕様と異なる組み合わせが作れないよう validationする? 組み合わせ違反は実行時例外? ユニットテストで確認? case
class Result(isValid: Boolean, arg: Option[Arg])
16.
copyright Fringe81 Co.,Ltd. No! 原因は 仕様と型のズレ case
class Result(isValid: Boolean, arg: Option[Arg])
17.
copyright Fringe81 Co.,Ltd. isValidが falseならArgはある trueならArgはなし
18.
copyright Fringe81 Co.,Ltd. isValidが falseならArgはある trueならArgはなし sealed
trait Result case class Valid() extends Result case class Invalid(arg: Arg) extends Result
19.
copyright Fringe81 Co.,Ltd. まとめ ■型は仕様を表現できているのか? ■実行時検査による例外送出ではなく コンパイルエラーで防げないか? ■UT書かない方向にもっていけないか? 型で仕様を表現
= コードがドキュメント
20.
copyright Fringe81 Co.,Ltd. コンパイルおっせーなー コンパイラかわいいよコンパイラ
21.
copyright Fringe81 Co.,Ltd. おわり
Télécharger maintenant