Upgrade to Pro — share decks privately, control downloads, hide ads and more …

関数型プログラミングによるロバストなコード設計

 関数型プログラミングによるロバストなコード設計

■ イベント
Sansan VS サイボウズ - 品質向上Tips冬祭り
https://sansan.connpass.com/event/335070/

■ 発表者
技術本部 Bill One Engineering Unit Core Business APグループ
豊田 優貴

■ Bill One 開発エンジニア 採用情報
https://media.sansan-engineering.com/billone-engineer

SansanTech

January 27, 2025
Tweet

More Decks by SansanTech

Other Decks in Technology

Transcript

  1. • リグレッションに強く、保守性が高い。 ◦ 変数の取り違えなど妙な不具合が減る。 ◦ 処理の単位が意味のある単位で細かくなるため、単体テストが書きやす い。 • コードの意図をすばやく把握しやすい。 ◦

    上から下にコードを読み下すだけで意図を把握できる。 ◦ ないしは、そのコードブロックで何をしているかについて、コードを全 部読まなくても概ねわかるようになる。 ロバスト(頑強)なコードは…
  2. • 関数型プログラミングにはいくつかの要素がある。 ◦ 高階関数やカリー化 ◦ 永続データ構造 ◦ モナド ◦ など。

    • ただ、中には関数型プログラミング言語の機能を利用しないと厳しいも のもある。 • 他のプログラミング言語でもできることとして、「関数同士の合成」と 「純粋関数」に今回は着目する。 関数合成のために、副作用を意識する
  3. • 『Grokking Simplicity』という本には、書いているコードを次のように 分類して考えてみると良いという話が書かれている。 ◦ Actions: 副作用を生じる関数 ◦ Calculations: 純粋関数

    ◦ Data: 起こった出来事を記録しておく何か • 使えるフレームワークとして、念頭に置いておきたい。 副作用をどこに生じているかを意識しながらコードを書く