ブックマーク / zenn.dev/ababup1192 (5)

  • 関数型プログラミングなんもわからん。を考えようと言うイベントを開きました。

    先日Connpassにて、関数型プログラミングなんもわからん。を考えようと言うイベントを開かせていただきました。 関数型プログラミングがわからない! と言う方達の疑問に対して、普段関数型プログラミング言語を使っているわかる人たちが回答をして行くと言うスタイルのイベントでした。関数型プログラミング言語と一口に行っても、Elm, Scala, Haskell, Clojure, Elixir, F#と様々な言語があり(これは今回参加した人たちの使っている言語で、関数型プログラミング言語の一部にしか過ぎません)何が正解かなどはわからない中での意見の集約といった形のため参考程度にご覧ください。結果イベントとしては様々な視点からの意見が聞けて満足という声が多かったです。私自身知らないことがたくさん知れて勉強になり楽しかったです。 イベントの内容は、Figma上で開けるFigJamファイルとして、公開

    関数型プログラミングなんもわからん。を考えようと言うイベントを開きました。
  • Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第5章〜

    この記事は引き続き、Software Design 2021年3月号に掲載されているJavaでもう一度学び直すオブジェクト指向プログラミングと言う記事を関数型プログラミング言語Elmで考えたらどうなるだろう?と考えてみた記事です。今まで以下の三つの記事を出していて、最終章になります。 第1章 第2章(Javaと他のOOP言語との比較だったのでありません) 第3章 第4章 第5章のテーマは、継承よりコンポジションを採用せよ。というテーマなのですが、Elmや一般的な純粋関数型言語には継承は存在せず、コンポジション(や型クラス)を利用しているため、1~4章までのコードがまさにそれを守り続けているコードなため語るようなことがありません。そのため、この記事では前半に簡単に改めてコンポジションに当たるようなコードの説明。そして、後半にオブジェクト指向にはない関数型プログラミング言語の魅力を少しだけ触れ

    Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第5章〜
  • Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第4章〜

    この記事は前々回、前回に引き続き、Software Design 2021年3月号に掲載されているJavaでもう一度学び直すオブジェクト指向プログラミングと言う記事を関数型プログラミング言語Elmで考えたらどうなるだろう?と考えてみた記事です。 元記事4章の内容は、あるクラスが具象クラスに依存してしまう問題をインターフェースを用いることで、依存関係の逆転をすることで設計に柔軟性を持たせようと言う内容でした(例によって雑誌の内容は明記しないので、雑誌を購入して読んでいただくか、依存関係逆転の原則等で調べていただくことをお勧めします)。結論から述べると、関数型プログラミングではインターフェースを用いることなく、ほぼ今までの知識で同様のことを実現できます。(ただし、DIなどの機能を備えていない関数型プログラミング言語の方が多いので、その点は劣る箇所だと思われます。) これぞまさに関数型プログラミ

    Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第4章〜
  • Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第3章〜

    この記事は前回に引き続き、Software Design 2021年3月号に掲載されているJavaでもう一度学び直すオブジェクト指向プログラミングと言う記事を関数型プログラミング言語Elmで考えたらどうなるだろう?と考えてみた記事です。 元雑誌の該当記事の第3章ではJavaのクラスを利用した設計は自由度が高すぎるため、手続き的な手法で書かれたアンチパターンを避け、より良いオブジェクト指向の設計を目指しましょうと言う内容でした(ざっくりですぎて、すみません)。 結論から述べると、この章の内容だけに限って言えば、関数型プログラミング言語を用いた方がアンチパターンに陥りにくい設計になるかつ、例として書かれているコードが実行時エラーを起こしうる危険なコードも含んでいたため、より安全な言語に倒した方がいいのでは無いか?と言う印象でした。 今回のコード全体です。 優れたオブジェクト指向の設計方法とは

    Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第3章〜
  • Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第1章〜

    この記事は、Software Design 2021年3月号に掲載されているJavaでもう一度学び直すオブジェクト指向プログラミングと言う記事を関数型プログラミング言語Elmで考えたらどうなるだろう?と考えてみた記事です。 何故このような記事を書いたかと言うと、かつて幾度と無くオブジェクト指向プログラミングを学ぶことで素晴らしい体験ができますよと言う甘言に誘われて学んでは、上手くいかず挫折をしてきました。そこで関数型プログラミング言語を学んでいくことで徐々にシンプルに物事を考える思考を身につけた結果、必ずしもオブジェクト指向プログラミング手法を学ぶことだけが上達の道ではないと学んだからです。 もちろん関数型プログラミングが唯一の正解とは思っていません。今ではオブジェクト指向プログラミングも関数型プログラミングも両方を使い仕事に活かしています。どちらのプログラミング手法も奥が深く、難しかった

    Javaでもう一度学び直すオブジェクト指向プログラミングを関数型プログラミングで考え直す 〜第1章〜
  • 1