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
67
希望の関数と絶望の副作用
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
88
ぱろっと、Padrinoやめるってよ
parrotstudio
0
140
Other Decks in Technology
See All in Technology
Where will it converge?
ibknadedeji
0
200
AWS Top Engineer、浮いてませんか? / As an AWS Top Engineer, Are You Out of Place?
yuj1osm
2
190
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
7
3.2k
KMP の Swift export
kokihirokawa
0
350
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
3
5.5k
衛星画像超解像化によって実現する2D, 3D空間情報の即時生成と“AI as a Service”/ Real-time generation spatial data enabled_by satellite image super-resolution
lehupa
0
120
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
4
450
Access-what? why and how, A11Y for All - Nordic.js 2025
gdomiciano
1
120
Wasmのエコシステムを使った ツール作成方法
askua
0
100
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
240
小学4年生夏休みの自由研究「ぼくと Copilot エージェント」
taichinakamura
0
580
Reflections of AI: A Trilogy in Four Parts (GOTO; Copenhagen 2025)
ondfisk
0
100
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
514
110k
The Cult of Friendly URLs
andyhume
79
6.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Designing for humans not robots
tammielis
254
26k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
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/