Pro Yearly is on sale from $80 to $50! »

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

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

Transcript

  1. 希望の関数と絶望の副作用 希望の関数と 絶望の副作用 (非)⽇常編 ぱろっと(@parrot-studio) 2013/08/31

  2. 希望の関数と絶望の副作用 Profile ぱろっと(T.Tachiki) @parrot̲studio parrot-studio.com プログラマっぽい何か (⽐較的)⾔語マニア

  3. 希望の関数と絶望の副作用 今⽇の テーマ

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

  5. 希望の関数と絶望の副作用 you�may�say... "また関数型です か?(´-ω-)"

  6. 希望の関数と絶望の副作用 だが待っ てほしい

  7. 希望の関数と絶望の副作用 Scalaとか Haskellの 話はしない

  8. 希望の関数と絶望の副作用 この辺も今⽇はどうでもいい 参照透明性 遅延評価 モナド etc…

  9. 希望の関数と絶望の副作用 副作用って? ある機能がコンピュータの(論 理的な)状態を変化させ、それ 以 降で得ら れ る結 果に影 響を

    与えることをいう。 代 表 的な例は変 数へ の値の代 ⼊である。 [「副作用�(プログラム)�-�Wikipedia」より引用]
  10. 希望の関数と絶望の副作用 副作用が「ある」とは? 何かをした結果、状態が変化す る 同じ値を渡しても、同じ結果と は限らない 「破壊的である」

  11. 希望の関数と絶望の副作用 副作用が「ある」例 ���������� ��������������������� �������� ��� ���������� ������������� ������������� �����������

    ��������������
  12. 希望の関数と絶望の副作用 副作用が「ない」とは? 何かをしても、状態が変化しな い ある値を渡せば、必ず対応する 値が返る 「非破壊的である」

  13. 希望の関数と絶望の副作用 副作用が「ない」例 ��������������������� ����������� ��� �������������������� �������������������� �������������������� ��������������������������������

  14. 希望の関数と絶望の副作用 余談 Rubyではメソッド名で区別できる 「場合もある」 ���������� ���������������������������������� �������������������������������� ����������������������������������� ������������������������������

  15. 希望の関数と絶望の副作用 ⼀般的にI/Oが絡むものは副 作用がある �������������������� ������������������������� ��������������������� �������������������������

  16. 希望の関数と絶望の副作用 あまりコー ドに興味が ない?

  17. 希望の関数と絶望の副作用 な ら ば

  18. 希望の関数と絶望の副作用 「テスト」 という観点 で考える

  19. 希望の関数と絶望の副作用 "副作用がないもの"のテスト ⼊⼒を与えて出⼒をみるだけ 場合によってはコードを⾒るだ けでバグの有無がわかる 結合テストもすぐできる 遊ぶ時間が作れる 精神的に安定

  20. 希望の関数と絶望の副作用 簡単 (`・ω・´)

  21. 希望の関数と絶望の副作用 "副作用があるもの"のテスト まず環境を揃える 次に⼊⼒を与えて出⼒をみる 例外が発⽣した場合の動作とか もチェックする 結合すると問題が出やすい 遊ぶ時間が削られる 精神的に追い込まれる

  22. 希望の関数と絶望の副作用 めんどい (´-ω-)

  23. 希望の関数と絶望の副作用 "副作用のない世界" 「理想的関数型 プログラミングの世界」 = 「全く副作用がない」

  24. 希望の関数と絶望の副作用 but

  25. 希望の関数と絶望の副作用 "現実"に "I/Oのない システム"は 存在しない

  26. 希望の関数と絶望の副作用 な ら ば

  27. 希望の関数と絶望の副作用 副作用を 局所的に 押さえ込む

  28. 希望の関数と絶望の副作用 あまり良くない例 read 処理 write read 処理 write ...

  29. 希望の関数と絶望の副作用 ⽐較的良い例 ⼀括read 副作用のない処理1 副作用のない処理2 副作用のない処理3 ... ⼀括write そもそも、⼀括にしないとトランザクションの問題も(´-ω-)

  30. 希望の関数と絶望の副作用 他にも、テストできるように 引数を考えるとか �������������� ������������������ ������������������������������������� ��� ���������������������� ������������������������������ �������������������

    ��������������������������������� ���
  31. 希望の関数と絶望の副作用 "副作用のないシステム" 大きな系として 「外」から⾒たときに 「⼊⼒に対して出⼒が⼀ 定」というのも大事 (APIやライブラリ等)

  32. 希望の関数と絶望の副作用 "副作用のないシステム" 並列処理では特に重要 Webシステムもリクエストを 並列で処理しているのを お忘れなく(`・ω・´)

  33. 希望の関数と絶望の副作用 繰り返し ますが

  34. 希望の関数と絶望の副作用 大事なこと 関数型⾔語を知らなくても、 関数型の考え⽅を知っていると "堅牢なシステム"を作りやすい

  35. 希望の関数と絶望の副作用 まずは「副作用 があるか?」を 意識してみては どうでしょう (´・ω・)?

  36. 希望の関数と絶望の副作用 ありがとうご ざいました (´・ω・)っ旦~

  37. 希望の関数と絶望の副作用 おまけ 「代⼊」を⼀度も使わない Brainf**kインタプリタ�by�Scala http://parrot.hatenadiary.jp/ entry/2013/08/06/121645

  38. 希望の関数と絶望の副作用 参考までに・・・ Q.�「ダンガンロンパ 希望の学園 と絶望の⾼校⽣」とは? A.�限りなく絶望的な状況から希望 を勝ち取る物語です(`・ω・´) http://www.danganronpa.com/