Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

希望の関数と絶望の副作用

1,355 views

Published on

2013/08/31に発表した資料
https://github.com/parrot-studio/webcafe4-side-effect

Published in: Technology
  • Be the first to comment

希望の関数と絶望の副作用

  1. 1. 希望の関数と絶望の副作用 希望の関数と 絶望の副作用 (非)⽇常編 ぱろっと(@parrot-studio) 2013/08/31
  2. 2. 希望の関数と絶望の副作用 Profile ぱろっと(T.Tachiki) @parrot̲studio parrot-studio.com プログラマっぽい何か (⽐較的)⾔語マニア
  3. 3. 希望の関数と絶望の副作用 今⽇の テーマ
  4. 4. 希望の関数と絶望の副作用 副 作 用
  5. 5. 希望の関数と絶望の副作用 you�may�say... "また関数型です か?(´-ω-)"
  6. 6. 希望の関数と絶望の副作用 だが待っ てほしい
  7. 7. 希望の関数と絶望の副作用 Scalaとか Haskellの 話はしない
  8. 8. 希望の関数と絶望の副作用 この辺も今⽇はどうでもいい 参照透明性 遅延評価 モナド etc…
  9. 9. 希望の関数と絶望の副作用 副作用って? ある機能がコンピュータの(論 理的な)状態を変化させ、それ 以 降で得ら れ る結 果に影 響を 与えることをいう。 代 表 的な例は変 数へ の値の代 ⼊である。 [「副作用�(プログラム)�-�Wikipedia」より引用]
  10. 10. 希望の関数と絶望の副作用 副作用が「ある」とは? 何かをした結果、状態が変化す る 同じ値を渡しても、同じ結果と は限らない 「破壊的である」
  11. 11. 希望の関数と絶望の副作用 副作用が「ある」例 ���������� ��������������������� �������� ��� ���������� ������������� ������������� ����������� ��������������
  12. 12. 希望の関数と絶望の副作用 副作用が「ない」とは? 何かをしても、状態が変化しな い ある値を渡せば、必ず対応する 値が返る 「非破壊的である」
  13. 13. 希望の関数と絶望の副作用 副作用が「ない」例 ��������������������� ����������� ��� �������������������� �������������������� �������������������� ��������������������������������
  14. 14. 希望の関数と絶望の副作用 余談 Rubyではメソッド名で区別できる 「場合もある」 ���������� ���������������������������������� �������������������������������� ����������������������������������� ������������������������������
  15. 15. 希望の関数と絶望の副作用 ⼀般的にI/Oが絡むものは副 作用がある �������������������� ������������������������� ��������������������� �������������������������
  16. 16. 希望の関数と絶望の副作用 あまりコー ドに興味が ない?
  17. 17. 希望の関数と絶望の副作用 な ら ば
  18. 18. 希望の関数と絶望の副作用 「テスト」 という観点 で考える
  19. 19. 希望の関数と絶望の副作用 "副作用がないもの"のテスト ⼊⼒を与えて出⼒をみるだけ 場合によってはコードを⾒るだ けでバグの有無がわかる 結合テストもすぐできる 遊ぶ時間が作れる 精神的に安定
  20. 20. 希望の関数と絶望の副作用 簡単 (`・ω・´)
  21. 21. 希望の関数と絶望の副作用 "副作用があるもの"のテスト まず環境を揃える 次に⼊⼒を与えて出⼒をみる 例外が発⽣した場合の動作とか もチェックする 結合すると問題が出やすい 遊ぶ時間が削られる 精神的に追い込まれる
  22. 22. 希望の関数と絶望の副作用 めんどい (´-ω-)
  23. 23. 希望の関数と絶望の副作用 "副作用のない世界" 「理想的関数型 プログラミングの世界」 = 「全く副作用がない」
  24. 24. 希望の関数と絶望の副作用 but
  25. 25. 希望の関数と絶望の副作用 "現実"に "I/Oのない システム"は 存在しない
  26. 26. 希望の関数と絶望の副作用 な ら ば
  27. 27. 希望の関数と絶望の副作用 副作用を 局所的に 押さえ込む
  28. 28. 希望の関数と絶望の副作用 あまり良くない例 read 処理 write read 処理 write ...
  29. 29. 希望の関数と絶望の副作用 ⽐較的良い例 ⼀括read 副作用のない処理1 副作用のない処理2 副作用のない処理3 ... ⼀括write そもそも、⼀括にしないとトランザクションの問題も(´-ω-)
  30. 30. 希望の関数と絶望の副作用 他にも、テストできるように 引数を考えるとか �������������� ������������������ ������������������������������������� ��� ���������������������� ������������������������������ ������������������� ��������������������������������� ���
  31. 31. 希望の関数と絶望の副作用 "副作用のないシステム" 大きな系として 「外」から⾒たときに 「⼊⼒に対して出⼒が⼀ 定」というのも大事 (APIやライブラリ等)
  32. 32. 希望の関数と絶望の副作用 "副作用のないシステム" 並列処理では特に重要 Webシステムもリクエストを 並列で処理しているのを お忘れなく(`・ω・´)
  33. 33. 希望の関数と絶望の副作用 繰り返し ますが
  34. 34. 希望の関数と絶望の副作用 大事なこと 関数型⾔語を知らなくても、 関数型の考え⽅を知っていると "堅牢なシステム"を作りやすい
  35. 35. 希望の関数と絶望の副作用 まずは「副作用 があるか?」を 意識してみては どうでしょう (´・ω・)?
  36. 36. 希望の関数と絶望の副作用 ありがとうご ざいました (´・ω・)っ旦~
  37. 37. 希望の関数と絶望の副作用 おまけ 「代⼊」を⼀度も使わない Brainf**kインタプリタ�by�Scala http://parrot.hatenadiary.jp/ entry/2013/08/06/121645
  38. 38. 希望の関数と絶望の副作用 参考までに・・・ Q.�「ダンガンロンパ 希望の学園 と絶望の⾼校⽣」とは? A.�限りなく絶望的な状況から希望 を勝ち取る物語です(`・ω・´) http://www.danganronpa.com/

×