$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
希望の関数と絶望の副作用
Search
ぱろっと(parrot-studio)
August 31, 2013
Technology
0
69
希望の関数と絶望の副作用
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
91
ぱろっと、Padrinoやめるってよ
parrotstudio
0
140
Other Decks in Technology
See All in Technology
AI 時代のデータ戦略
na0
7
1.9k
Claude Code はじめてガイド -1時間で学べるAI駆動開発の基本と実践-
oikon48
22
12k
LangChain v1.0にトライ~ AIエージェントアプリの移行(v0.3 → v1.0) ~
happysamurai294
0
120
段階的に進める、 挫折しない自宅サーバ入門
yu_kod
5
2k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
9.7k
IaC を使いたくないけどポリシー管理をどうにかしたい
kazzpapa3
1
180
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
15k
AIにおける自由の追求
shujisado
1
220
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
970
IPv6-mostly field report from RubyKaigi 2026
sorah
0
230
[続・営業向け 誰でも話せるOCI セールストーク] AWSよりOCIの優位性が分からない編(2025年11月21日開催)
oracle4engineer
PRO
1
160
How native lazy objects will change Doctrine and Symfony forever
beberlei
1
240
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Being A Developer After 40
akosma
91
590k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Side Projects
sachag
455
43k
Balancing Empowerment & Direction
lara
5
770
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Designing for humans not robots
tammielis
254
26k
Become a Pro
speakerdeck
PRO
30
5.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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/