Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
希望の関数と絶望の副作用
Search
ぱろっと(parrot-studio)
August 31, 2013
Technology
0
52
希望の関数と絶望の副作用
2013/08/31に発表した資料
https://github.com/parrot-studio/webcafe4-side-effect
ぱろっと(parrot-studio)
August 31, 2013
Tweet
Share
More Decks by ぱろっと(parrot-studio)
See All by ぱろっと(parrot-studio)
"プロのプログラマ"を目指す初心者が最初に読むべきたった一冊の本
parrotstudio
0
160
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
parrotstudio
0
80
ぱろっと、Padrinoやめるってよ
parrotstudio
0
140
Other Decks in Technology
See All in Technology
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
0
980
SSMRunbook作成の勘所_20241120
koichiotomo
1
110
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
180
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
290
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
510
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
120
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
いざ、BSC討伐の旅
nikinusu
2
780
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Typedesign – Prime Four
hannesfritz
40
2.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Faster Mobile Websites
deanohume
305
30k
Done Done
chrislema
181
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Writing Fast Ruby
sferik
627
61k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Transcript
希望の関数と絶望の副作用 希望の関数と 絶望の副作用 (非)⽇常編 ぱろっと(@parrot-studio) 2013/08/31
希望の関数と絶望の副作用 Profile ぱろっと(T.Tachiki) @parrot̲studio parrot-studio.com プログラマっぽい何か (⽐較的)⾔語マニア
希望の関数と絶望の副作用 今⽇の テーマ
希望の関数と絶望の副作用 副 作 用
希望の関数と絶望の副作用 you�may�say... "また関数型です か?(´-ω-)"
希望の関数と絶望の副作用 だが待っ てほしい
希望の関数と絶望の副作用 Scalaとか Haskellの 話はしない
希望の関数と絶望の副作用 この辺も今⽇はどうでもいい 参照透明性 遅延評価 モナド etc…
希望の関数と絶望の副作用 副作用って? ある機能がコンピュータの(論 理的な)状態を変化させ、それ 以 降で得ら れ る結 果に影 響を
与えることをいう。 代 表 的な例は変 数へ の値の代 ⼊である。 [「副作用�(プログラム)�-�Wikipedia」より引用]
希望の関数と絶望の副作用 副作用が「ある」とは? 何かをした結果、状態が変化す る 同じ値を渡しても、同じ結果と は限らない 「破壊的である」
希望の関数と絶望の副作用 副作用が「ある」例 ���������� ��������������������� �������� ��� ���������� ������������� ������������� �����������
��������������
希望の関数と絶望の副作用 副作用が「ない」とは? 何かをしても、状態が変化しな い ある値を渡せば、必ず対応する 値が返る 「非破壊的である」
希望の関数と絶望の副作用 副作用が「ない」例 ��������������������� ����������� ��� �������������������� �������������������� �������������������� ��������������������������������
希望の関数と絶望の副作用 余談 Rubyではメソッド名で区別できる 「場合もある」 ���������� ���������������������������������� �������������������������������� ����������������������������������� ������������������������������
希望の関数と絶望の副作用 ⼀般的にI/Oが絡むものは副 作用がある �������������������� ������������������������� ��������������������� �������������������������
希望の関数と絶望の副作用 あまりコー ドに興味が ない?
希望の関数と絶望の副作用 な ら ば
希望の関数と絶望の副作用 「テスト」 という観点 で考える
希望の関数と絶望の副作用 "副作用がないもの"のテスト ⼊⼒を与えて出⼒をみるだけ 場合によってはコードを⾒るだ けでバグの有無がわかる 結合テストもすぐできる 遊ぶ時間が作れる 精神的に安定
希望の関数と絶望の副作用 簡単 (`・ω・´)
希望の関数と絶望の副作用 "副作用があるもの"のテスト まず環境を揃える 次に⼊⼒を与えて出⼒をみる 例外が発⽣した場合の動作とか もチェックする 結合すると問題が出やすい 遊ぶ時間が削られる 精神的に追い込まれる
希望の関数と絶望の副作用 めんどい (´-ω-)
希望の関数と絶望の副作用 "副作用のない世界" 「理想的関数型 プログラミングの世界」 = 「全く副作用がない」
希望の関数と絶望の副作用 but
希望の関数と絶望の副作用 "現実"に "I/Oのない システム"は 存在しない
希望の関数と絶望の副作用 な ら ば
希望の関数と絶望の副作用 副作用を 局所的に 押さえ込む
希望の関数と絶望の副作用 あまり良くない例 read 処理 write read 処理 write ...
希望の関数と絶望の副作用 ⽐較的良い例 ⼀括read 副作用のない処理1 副作用のない処理2 副作用のない処理3 ... ⼀括write そもそも、⼀括にしないとトランザクションの問題も(´-ω-)
希望の関数と絶望の副作用 他にも、テストできるように 引数を考えるとか �������������� ������������������ ������������������������������������� ��� ���������������������� ������������������������������ �������������������
��������������������������������� ���
希望の関数と絶望の副作用 "副作用のないシステム" 大きな系として 「外」から⾒たときに 「⼊⼒に対して出⼒が⼀ 定」というのも大事 (APIやライブラリ等)
希望の関数と絶望の副作用 "副作用のないシステム" 並列処理では特に重要 Webシステムもリクエストを 並列で処理しているのを お忘れなく(`・ω・´)
希望の関数と絶望の副作用 繰り返し ますが
希望の関数と絶望の副作用 大事なこと 関数型⾔語を知らなくても、 関数型の考え⽅を知っていると "堅牢なシステム"を作りやすい
希望の関数と絶望の副作用 まずは「副作用 があるか?」を 意識してみては どうでしょう (´・ω・)?
希望の関数と絶望の副作用 ありがとうご ざいました (´・ω・)っ旦~
希望の関数と絶望の副作用 おまけ 「代⼊」を⼀度も使わない Brainf**kインタプリタ�by�Scala http://parrot.hatenadiary.jp/ entry/2013/08/06/121645
希望の関数と絶望の副作用 参考までに・・・ Q.�「ダンガンロンパ 希望の学園 と絶望の⾼校⽣」とは? A.�限りなく絶望的な状況から希望 を勝ち取る物語です(`・ω・´) http://www.danganronpa.com/