🍉

関数型で保守性・開発性up!副作用制御で並行性up!

に公開

はじめに

  • 自分や人のプログラム読みにくい!と思ってたら関数型がいい感じで使えそうと思えた。
  • なので先週の3連休で、関数型の勉強会と関数型の流れでReactのハンズオンに参加した
  • 14日から4連休も使って、本2冊で500ページ弱読んだり、qiita,zenn,yutube等をcheck、他の勉強会で2回話したりして、今のこう考えればいいんだよね?の理解で大事だとおもうこと少し書く
  • プログラムだけの話題初めてだが、AIモデル作る、学習する、推論する、AIアプリ作るのもすべてプログラミングが現状必要!

(準)関数型プログラミングで大事な考え

  • 純粋関数 入力は引数だけ、出力は返り値だけ (同じ入力で同じ出力)
  • 論理、純粋関数 と 物理、副作用部分を区別する
    I/Oとかは、DI化としてcallback変数で渡すとか
  • 変数はイミュータブル(不変)にする(なるべく)
  • 関数の合成、pipe,カリー化(1引数にする)
  • 宣言型で読みやすくなる
  • 必要なときに計算(遅延評価、キャッシュ大事)
  • 順序(フロー)の論理をコード化
  • 型をうまく使う(型推論)
  • 純粋関数はテスト簡単

React

  • 関数型のアイデアをいろいろ使っている。webフロントにおける革新。
  • でも結局Reactスタイルを学ぶのがReact使いこなすコツ
  • Render関数ではUI(タグ)の論理を返す(宣言型)
  • なるべく?変数はイミュータブルにする
  • 仮想DOMが更新されたら、必要なところを再描画
  • 副作用はuseEffectで分離

どうやって活用していくか

  • いろんな言語で、関数型に関連する機能が追加されてきている
  • この考えが急に広がる可能性は十分にある(というかもう結構広まっている)
  • 保守性上げるために、関数型っぽいアイデアを取り込めそうな場面は取り込んでいくのがいい

あとがき

記事よかったら、いいね♡ 押してね!

Discussion