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
53
希望の関数と絶望の副作用
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
81
ぱろっと、Padrinoやめるってよ
parrotstudio
0
140
Other Decks in Technology
See All in Technology
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
1
110
Snowflake女子会#3 Snowpipeの良さを5分で語るよ
lana2548
0
220
KubeCon NA 2024 Recap: How to Move from Ingress to Gateway API with Minimal Hassle
ysakotch
0
200
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
3
1.4k
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
150
MLOps の現場から
asei
6
630
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
Wantedly での Datadog 活用事例
bgpat
1
410
.NET 9 のパフォーマンス改善
nenonaninu
0
560
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
240
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
GraphQLとの向き合い方2022年版
quramy
44
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Designing Experiences People Love
moore
138
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
GitHub's CSS Performance
jonrohan
1030
460k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
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/