Submit Search
Upload
20150131 mvp com_camp_lt
•
Download as PPTX, PDF
•
3 likes
•
1,868 views
Toshiyuki Manabe
Follow
2015/1/31 MVP Community Camp SendaiでのLT資料です。関数型ポエム。
Read less
Read more
Software
Report
Share
Report
Share
1 of 16
Download now
Recommended
Kaleidox
Kaleidox
Tomoharu ASAMI
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
yuichi_kuwahara
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
Tomoharu ASAMI
Php勉強会スライド
Php勉強会スライド
suzumurashingo
開発プロセス 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第2回】
開発プロセス 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第2回】
Tomoharu ASAMI
テスト設計へのマインドマップの適用の基本とTAME
テスト設計へのマインドマップの適用の基本とTAME
Akira Ikeda
Requirement diagram
Requirement diagram
Yohsuke Nambu
マジカ!で業務分析
マジカ!で業務分析
Wataru ONO
Recommended
Kaleidox
Kaleidox
Tomoharu ASAMI
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
yuichi_kuwahara
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
クラウドアプリケーションのための オブジェクト指向分析設計講座 (1)
Tomoharu ASAMI
Php勉強会スライド
Php勉強会スライド
suzumurashingo
開発プロセス 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第2回】
開発プロセス 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第2回】
Tomoharu ASAMI
テスト設計へのマインドマップの適用の基本とTAME
テスト設計へのマインドマップの適用の基本とTAME
Akira Ikeda
Requirement diagram
Requirement diagram
Yohsuke Nambu
マジカ!で業務分析
マジカ!で業務分析
Wataru ONO
詳細設計とアプリケーション開発工程
詳細設計とアプリケーション開発工程
康 新谷
シーケンス図とアクティビティ図と状態遷移図
シーケンス図とアクティビティ図と状態遷移図
akipii Oga
ビジネスモデルをシステムにつなげる
ビジネスモデルをシステムにつなげる
Zenji Kanzaki
ソフトウェア設計のすすめ
ソフトウェア設計のすすめ
Yoshimura Soichiro
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
Gui自動テストツール基本
Gui自動テストツール基本
Tsuyoshi Yumoto
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
Kenta Oono
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
Developers Summit
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
ceres-inc
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
yuichi_kuwahara
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
mafujiwara
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
kunihikokaneko1
Istqb : Test automation Engineer
Istqb : Test automation Engineer
Sadaaki Emura
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
Koichi ITO
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Kotaro Ogino
2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf
Kazuaki Matsuo
More Related Content
Viewers also liked
詳細設計とアプリケーション開発工程
詳細設計とアプリケーション開発工程
康 新谷
シーケンス図とアクティビティ図と状態遷移図
シーケンス図とアクティビティ図と状態遷移図
akipii Oga
ビジネスモデルをシステムにつなげる
ビジネスモデルをシステムにつなげる
Zenji Kanzaki
ソフトウェア設計のすすめ
ソフトウェア設計のすすめ
Yoshimura Soichiro
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
Viewers also liked
(7)
詳細設計とアプリケーション開発工程
詳細設計とアプリケーション開発工程
シーケンス図とアクティビティ図と状態遷移図
シーケンス図とアクティビティ図と状態遷移図
ビジネスモデルをシステムにつなげる
ビジネスモデルをシステムにつなげる
ソフトウェア設計のすすめ
ソフトウェア設計のすすめ
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
Similar to 20150131 mvp com_camp_lt
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
Gui自動テストツール基本
Gui自動テストツール基本
Tsuyoshi Yumoto
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
Kenta Oono
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
Developers Summit
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
ceres-inc
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
yuichi_kuwahara
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
mafujiwara
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
kunihikokaneko1
Istqb : Test automation Engineer
Istqb : Test automation Engineer
Sadaaki Emura
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
Koichi ITO
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Kotaro Ogino
2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf
Kazuaki Matsuo
退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話
Tadashi Nemoto
恋するJenkins
恋するJenkins
Hiroshi Nakao
Gamedevenvstudy1
Gamedevenvstudy1
Takashi Kokawa
テスト自動化入門@Graat勉強会
テスト自動化入門@Graat勉強会
Graat(グラーツ)
F#で学ぶ関数プログラミング入門?
F#で学ぶ関数プログラミング入門?
pocketberserker
Similar to 20150131 mvp com_camp_lt
(20)
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Gui自動テストツール基本
Gui自動テストツール基本
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
TDDはじめる前に
TDDはじめる前に
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
cs-12. 式の抽象化と関数,モジュール,算法(アルゴリズム)
Istqb : Test automation Engineer
Istqb : Test automation Engineer
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
2022-jasst-tohoku.pdf
2022-jasst-tohoku.pdf
退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話
恋するJenkins
恋するJenkins
Gamedevenvstudy1
Gamedevenvstudy1
テスト自動化入門@Graat勉強会
テスト自動化入門@Graat勉強会
F#で学ぶ関数プログラミング入門?
F#で学ぶ関数プログラミング入門?
More from Toshiyuki Manabe
20190919 tocfe sendai branch
20190919 tocfe sendai branch
Toshiyuki Manabe
20181213_toc_tocfe_sendai
20181213_toc_tocfe_sendai
Toshiyuki Manabe
20180912 toc tocfe_sendai
20180912 toc tocfe_sendai
Toshiyuki Manabe
20180728 helping
20180728 helping
Toshiyuki Manabe
20180623 theory of Entertainment
20180623 theory of Entertainment
Toshiyuki Manabe
20180512 recommendation for_anxiety_management
20180512 recommendation for_anxiety_management
Toshiyuki Manabe
20180328 toc tocfe sendai
20180328 toc tocfe sendai
Toshiyuki Manabe
20180321 sapid_fan_meeting
20180321 sapid_fan_meeting
Toshiyuki Manabe
聴き手に理解してもらうためのプレゼン資料の作り方
聴き手に理解してもらうためのプレゼン資料の作り方
Toshiyuki Manabe
納得してもらえる社内提案を考えよう
納得してもらえる社内提案を考えよう
Toshiyuki Manabe
聴き手に満足してもらうための伝える技術
聴き手に満足してもらうための伝える技術
Toshiyuki Manabe
20160423 test analyze
20160423 test analyze
Toshiyuki Manabe
パフォーマー視点から学ぶエンジニア像
パフォーマー視点から学ぶエンジニア像
Toshiyuki Manabe
20150608 初心者によるazure machinelearning入門
20150608 初心者によるazure machinelearning入門
Toshiyuki Manabe
20150404 jazug fukushima
20150404 jazug fukushima
Toshiyuki Manabe
20150131 mvp com_camp
20150131 mvp com_camp
Toshiyuki Manabe
20140920 jazug ml
20140920 jazug ml
Toshiyuki Manabe
More from Toshiyuki Manabe
(17)
20190919 tocfe sendai branch
20190919 tocfe sendai branch
20181213_toc_tocfe_sendai
20181213_toc_tocfe_sendai
20180912 toc tocfe_sendai
20180912 toc tocfe_sendai
20180728 helping
20180728 helping
20180623 theory of Entertainment
20180623 theory of Entertainment
20180512 recommendation for_anxiety_management
20180512 recommendation for_anxiety_management
20180328 toc tocfe sendai
20180328 toc tocfe sendai
20180321 sapid_fan_meeting
20180321 sapid_fan_meeting
聴き手に理解してもらうためのプレゼン資料の作り方
聴き手に理解してもらうためのプレゼン資料の作り方
納得してもらえる社内提案を考えよう
納得してもらえる社内提案を考えよう
聴き手に満足してもらうための伝える技術
聴き手に満足してもらうための伝える技術
20160423 test analyze
20160423 test analyze
パフォーマー視点から学ぶエンジニア像
パフォーマー視点から学ぶエンジニア像
20150608 初心者によるazure machinelearning入門
20150608 初心者によるazure machinelearning入門
20150404 jazug fukushima
20150404 jazug fukushima
20150131 mvp com_camp
20150131 mvp com_camp
20140920 jazug ml
20140920 jazug ml
20150131 mvp com_camp_lt
1.
非関数型プログラマにおくる データフロー図のすゝめ 真鍋俊之
2.
まとめ • 副作用のあるプログラムは複雑になりやすい • 副作用が少ないプログラムは、 ▫
モジュール性が高まる ▫ テストが簡単になる ▫ 並列化しやすくなる • データフロー図を用いた設計を行うことで、副 作用の少ないプログラムができる、かも
3.
関数型プログラミング • 副作用をできるだけ用いない プログラミングスタイル • 副作用とは、 ▫
「式の値を計算して求める(評価)」以外の動作 引用:Qiita「関数型言語」に関するFAQ形式の一般的説明 http://qiita.com/esumii/items/ec589d138e72e22ea97e
4.
副作用のない関数例 • int add
( int a, int b ) { return a + b; }
5.
副作用のある関数例 • int add
( int a, int b ) { printf ( “%d”, a ); return a + b; } • 「 printf ( “%d”, a ); 」の行で 画面に出力している。 ▫ 「画面に表示する」という副作用を含んでいる。
6.
副作用がないことで何が嬉しい? • 関数の出力が入力にのみに依存する (=文脈によって、結果が変わらない) ▫ 関数の独立性が高い ▫
テスト、検証が容易 ▫ 人が理解しやすい
7.
オブジェクト指向と 関数型プログラミング • 「オブジェクト指向は副作用の分割統治を、 関数型プログラミングは副作用の排除を 行うことで、モジュール性を高めようとしたと 考えられます。」 引用:なぜリアクティブプログラミングは重要か。 http://d.hatena.ne.jp/pokarim/20101226
8.
関数型プログラミングは難しい? • 難しい話が多い ▫ 再帰関数 ▫
高階関数 ▫ 参照透明性 ▫ 遅延評価 ▫ モナド ▫ 型推論
9.
なぜ、データフロー図を使うのか • 設計なので、関数型(プログラミング)言語を使 わない人でも利用可能 • 副作用のない関数を考える目的でも使える 処理データ
データ
10.
データフロー図の書き方 • データと処理を矢印でつなげる。 • 「データ⇒処理」はデータが処理の入力である ことを示す •
「処理⇒データ」はデータが処理の出力である ことを示す • 処理は副作用がないように、必要なデータはで きる限り書く 処理 入力 出力 データ データ
11.
データフロー図の何が嬉しいのか • どの順序でデータを作ればよいか(≒処理順序) が分かりやすくなる • 並列に実行できるところが分かる 処理 処理 データ データ データ データ 処理
データ並列に実行可能
12.
実例:ライフゲーム(1/2) • 碁盤のような格子があり、一つの格子はセル(細胞)と 呼ばれる。 • 各セルには8つの近傍のセルがある
(ムーア近傍) • 各セルには「生」と「死」の2つの状態があり、あるセ ルの次のステップ(世代)の状態は周囲の8つのセルの 今の世代における状態により決定される。
13.
実例:ライフゲーム(2/2) • セルの生死は次のルールに従う。 • 誕生 ▫
死んでいるセルに隣接する生きたセルがちょうど3つあれば、次 の世代が誕生する。 • 生存 ▫ 生きているセルに隣接する生きたセルが2つか3つならば、次の 世代でも生存する。 • 過疎 ▫ 生きているセルに隣接する生きたセルが1つ以下ならば、過疎に より死滅する。 • 過密 ▫ 生きているセルに隣接する生きたセルが4つ以上ならば、過密に より死滅する。
14.
実例:ライフゲーム(2/2) • セルの生死は次のルールに従う。 • 誕生 ▫
死んでいるセルに隣接する生きたセルがちょうど3つあれば、次 の世代が誕生する。 • 生存 ▫ 生きているセルに隣接する生きたセルが2つか3つならば、次の 世代でも生存する。 • 過疎 ▫ 生きているセルに隣接する生きたセルが1つ以下ならば、過疎に より死滅する。 • 過密 ▫ 生きているセルに隣接する生きたセルが4つ以上ならば、過密に より死滅する。 今のセルの状態と、 隣接する生きたセルの数で 次の世代の状態が決まる
15.
世界 次の世代の 世界 座標 セルの生死 隣接する生きている セルの数 次の世代の セルの生死 ルール まとめる 隣接セル 見る セルの 座標取得 セルの生死 を見る
16.
まとめ • 副作用のあるプログラムは複雑になりやすい • 副作用が少ないプログラムは、 ▫
モジュール性が高まる ▫ テストが簡単になる ▫ 並列化しやすくなる • データフロー図を用いた設計を行うことで、副 作用の少ないプログラムができる、かも
Download now