並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 91件

新着順 人気順

関数型プログラミングの検索結果1 - 40 件 / 91件

  • 『なっとく!関数型プログラミング』は読者の理解度の進捗を先読みして作り込まれた”プログラミング入門”の良書 - Magnolia Tech

    なっとく!関数型プログラミング 作者:Michał Płachta翔泳社Amazon 良い、買おう、読もう、(コードを)書こう、以上! めっちゃ良いですよ、この本 中盤のプリミティブじゃやりづらい→直積→直和→二つ合わせてADT→値を取り出すためのパターンマッチの解説の流れの疾走感がいいですね— magnoliak🍧 (@magnolia_k_) 2023年8月6日 『なっとく!関数型プログラミング』は、2022年に出版された『Grokking Functional Programming』の邦訳版で、主にScalaを題材として関数型プログラミングを学んでいくための入門書("Grokking"は、完全に理解する、という意味)。あくまで関数型プログラミングの考え方、コードの書き方、良い設計の指針の解説が主眼に置かれているので、Scalaの言語機能の入門書ではない。Scalaの言語仕様を網羅

      『なっとく!関数型プログラミング』は読者の理解度の進捗を先読みして作り込まれた”プログラミング入門”の良書 - Magnolia Tech
    • ドメイン駆動設計の正体

      はじめに "ドメイン駆動設計は当たり前のことを言っているだけ" "ドメイン駆動設計はただのオブジェクト指向プログラミング" "ドメイン駆動設計はより良いアーキテクチャだ" "軽量DDDはアンチパターンだ" このようなドメイン駆動設計に関する言及を聞いたことがあるでしょうか? ドメイン駆動設計に言及する記事や書籍は多くありますが、それぞれ着目する側面が異なったり色々なコンテキストから言及されています。 おそらくそれが原因でドメイン駆動設計が何であるかをぼやけさせ、正体のわかりにくい概念になっているように思えます。 そこで今回は色々な観点から整理し、ドメイン駆動設計とは何であるのか、その正体を考えていきます。 ドメイン駆動設計の基本的概念について ドメイン駆動設計はEric Evansが出版した「Domain-Driven Design」という書籍がルーツになっています。 ドメイン駆動設計を一

        ドメイン駆動設計の正体
      • 関数型プログラミングと型システムのメンタルモデル

        Qiita Conference 2023 Autumun での発表資料です 発表時間の見積もりが下手で後半全然説明できませんでした、すみません! 実際のプロダクト開発ではどうすればいいのか? というケースは以下のスライドを参照してください。 (本スライドは、こちらのプロダクト開発の経験をベースに基礎を再整理したものになります) https://speakerdeck.com/naoya/typescript-niyoru-graphql-batukuendokai-fa-75b3dab7-90a8-4169-a4dc-d1e7410b9dbd

          関数型プログラミングと型システムのメンタルモデル
        • 2023 年に読んでよかった本

          2023 年に読んでよかった本 2023.12.30 年末なので 2023 年のまとめっぽい記事を書きたくなりました。今年は 1 年間でおおよそ 300 冊の本をよんだようです(そのうち 3 割ほどはラノベなのですが...)。その中でも特に印象に残った本を紹介します。 年末なので 2023 年のまとめっぽい記事を書きたくなりました。 今年は 1 年間でおおよそ 300 冊の本をよんだようです(そのうち 3 割ほどはラノベなのですが...)。その中でも特に印象に残った本を紹介します。 忘れる読書 この本では「本は忘れるために読んでいます」と語られています。というわけでこの本の内容もあまり覚えておりません(?)。 本を読むときには一字一句正確に覚えるような読み方をしていると、「覚えなきゃ」という気持ちが芽生えてしまい、本を読むことが苦痛になってしまうことがあります。そうではなくて、パラパラとペ

            2023 年に読んでよかった本
          • オブジェクト指向は業務システムで本当に不要なのか? - Qiita

            主旨 以前はシステムの状態をオブジェクト指向でカプセル化し、オブジェクト同士の通信でシステムの制御をしようとしていた しかし、Webアプリケーションのように状態をメモリ上に保持し続けるのが難しい環境が増えると、上記のことがやりにくくなった(ORMのインピーダンスミスマッチの影響が大きくなった) 現在では、システム全体の状態を管理するためにオブジェクト指向を用いるシーンは減っているが、要所要所でシステムを抽象化する道具の一つとして用いるシーンはあり、適材適所で使い続ければ良い はじめに 一時期あれだけもてはやされた「オブジェクト指向」ですが、現在では「業務システム開発においてオブジェクト指向で作るとろくなことがない」、とか、いっそ「不要である」、という意見もよく見かけます。 オブジェクト指向、この記事では特に「オブジェクト指向プログラミング」を対象として話をしますが、その利点は以下の3点に集

              オブジェクト指向は業務システムで本当に不要なのか? - Qiita
            • 2023年読んで良かった技術書Top5

              こんにちは。uenikiです。2023年も残すところ後10時間となりました。 今回は2023年に読んで良かった技術書を紹介します。マネジメント系の本は抜きにして、ピュアに技術的な本を紹介します。これまであまり振り返りというものをせずに生きてきたのですが、たまには振り返りというものをしてみたいと思います。 2023年はたくさん言語化をしてきて、言語化することの気持ちよさにハマりつつあるので、アウトプットしてみようと思い立ちました。 Top5のご紹介 なっとく!関数型プログラミング まずは関数型プログラミングの入門書である本書を紹介します。人生を変えてくれる予感のある本に数年ぶりに出会った気がします。何よりも読んでいて楽しく、ワクワクします。 関数型プログラミングの原則から始まって、関数型独自の概念を一つ一つ丁寧に、なぜその概念が必要なのか?を解説してくれています。命令型の問題点を一つ一つ解決

                2023年読んで良かった技術書Top5
              • TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog

                この記事は 一休.comのカレンダー | Advent Calendar 2023 - Qiita 10日目の記事です。 昨今は Web アプリケーション開発の世界でも、関数型プログラミングのエッセンスを取り入れるような機会が増えてきました。 とはいえ、一つのアプリケーションを 1 から 10 までがっちり関数型プログラミングで構成するというわけではなく、そのように書くこともあればそうでない従来からの手続き的スタイルで書くところもあるというのが現状で、どこまで関数型プログラミング的な手法を取り入れるかその塩梅もまちまちだと思います。まだ今はその過渡期という印象も受けます。 本稿ではこの辺りを少々考察してみたいと思います。 先日、Qiita Conference 2023 Autumn で以下のテーマで発表を行いました。 この発表では「関数型プログラミング最強!」という話をしたわけではなく、

                  TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog
                • 2023年買ったもの(技術書とか) - Magnolia Tech

                  2023年のお買い物、技術書編です。 技術書以外はこちら blog.magnolia.tech とりあえずノータイムで買っちゃえ!損は無いよ!という3冊 他に、類似の本がないか、有ってもこっち買っておけばよくね?という3冊 なっとく!関数型プログラミング なっとく!関数型プログラミング 作者:Michał Płachta翔泳社Amazon Scalaをベースとした関数型プログラミングの学習本。オブジェクト指向言語であり、関数型プログラミング言語であるScalaの特性を生かして、命令型から宣言型のコードの書き方への変え方を学んでいくスタイル。 前半の凄まじい丁寧な学習のステップと、後半の「ここまで一気にやらなくても良くない?」の落差もすごいけど、ページ数の厚さに躊躇せず、前半1/3くらいを時間をかけて丁寧に学習するくらいが良いと思います。 周りに良い先生が居れば別ですが、そうでなければこの本

                    2023年買ったもの(技術書とか) - Magnolia Tech
                  • 2024年絶対に読む技術書10選

                    あけましておめでとうございます!uenikiです。2024年が始まってしまいました。 こちらの記事で、2023年に読んだ技術書Top5を紹介しました。 2023年は、技術書は12、3冊しか読めませんでしたが、毎年大体15冊〜20数冊程度で安定しているようです。(マネジメント系の本を含めるともう少し増えますが、ここではピュアに技術寄りの本のみ対象とします。) ということは、2024年も10冊は読めるということですし、すでに発売している(発売を予定している)本でもそれぐらいの数はあるだろうということで、雑に10冊を選んでみたいと思います。この企画としては、すでに読んだことある本を再度読み通すのも1冊とカウントすることとします。辞書的に必要な箇所だけ読むのは1冊とはカウントしません。 そして、必ずこの10冊は読むことします。 10選のご紹介 [試して理解]Linuxのしくみ ―実験と図解で学ぶO

                      2024年絶対に読む技術書10選
                    • TypeScript開発にRailway Orientedを持ち込み、より型安全なエラーハンドリングへ - Sansan Tech Blog

                      Digitization部 Bill One Entry*1グループの秋山です。 はじめに Domain Modeling Made Functionalというスゴ本 補講:Make Illegal States Unrepresentable バックエンドの処理を抽象化する 手続き型プログラミングの典型例 課題1:制約のないエラーハンドリング 課題2:低い可読性 課題3:エラーハンドリングの低い網羅性 Railway Oriented Programming TypeScriptで型安全にエラーハンドリングする ステップ1:サブ関数の出力はResult型で表現する ステップ2:サブ関数にResult型を入力できるようにする ステップ3:サブ関数を連結する ステップ4:網羅的にエラーハンドリングする おわりに 付録 TypeScriptの全文サンプル はじめに エラーハンドリングは重要な処

                        TypeScript開発にRailway Orientedを持ち込み、より型安全なエラーハンドリングへ - Sansan Tech Blog
                      • トンデモに対する防衛術 | 雑記帳

                        いわゆるトンデモに関して私が思うことを何点か書いておく。 何を問題にしているか ここで問題にするのは、例えば以下のような表現物である: 初心者にとって有害である。つまり、間違った理解を植え付ける。 誤りを修正したら何も残らない。 すべきではない対処 まず、作者に突撃して撤回させるのはあまり現実的ではない。指摘を受け入れて撤回するなら良いが、「自分の表現物が無意味あるいは有害だった」ことを受け入れられる表現者がどのくらいいるだろうか?あるいは、SNS上でバトルに発展した場合不毛な時間を費やすことになる。 第二に、作者に対する人格攻撃や侮辱的な表現は行うべきではない。具体的に言うと、2021年にプログラミング界隈を騒がせた件(「関数型プログラミングが『銀の弾丸』であるという非常識な常識2022」の感想の言及先)の作者を「漢字1文字+ひらがな1文字+漢字1文字」で呼んだはてなブックマークユーザー

                        • Rust の DI を考える –– Part 2: Rust における DI の手法の整理 - paild tech blog

                          paild 社でお手伝いをしている yuki です。前回に引き続き Dependency Injection 略して DI の話題を書いていきたいと思います。今回は Rust における DI についていろいろと考えてみました。今回紹介する実装はかなり単純な例を用いたもので、この記事からさらにみなさんのアプリケーションの実装状況に合わせていくつか工夫は必要になるかもしれません。ただ、とっかかりとしては十分なものになっていると思うので、DI でお困りの方はぜひ参考にしてみてください。 今回実装したいアプリケーションのお題について 今回紹介する技法の種別について コンストラクタインジェクション 静的ディスパッチを用いたもの 動的ディスパッチを用いたもの 静的ディスパッチと動的ディスパッチの利点・欠点 shaku (DI コンテナ)を用いたインジェクション shaku の利点・欠点 余談: DI

                            Rust の DI を考える –– Part 2: Rust における DI の手法の整理 - paild tech blog
                          • TypeScriptプロジェクトにスキーマ駆動開発を持ち込み、より型安全な世界へ - Sansan Tech Blog

                            Bill One Entry*1グループの秋山です。 本題に入る前にお知らせです。9/12 (火) にTypeScriptを活用した型安全なチーム開発をテーマとしたイベントを開催します。 ぜひ、お気軽にご参加ください! sansan.connpass.com 1. はじめに 1-1. スキーマ駆動開発とは 1-2. Testing Trophyとの関係性 2. 構成 2-1. 最初の構成と課題 2-2. 最終的な構成 3. バックエンド 3-1. スキーマから型ファイルを作る 3-2. APIハンドラに型を与える 3-3. バリデーターを追加する 3-4. huskyでスキーマ変更を検知する 4. フロントエンド 4-1. スキーマからAPIクライアントを作る 5. パターンマッチングを持ち込む 6. まとめ 1. はじめに 1-1. スキーマ駆動開発とは 詳しい解説は他の記事に譲り、一言

                              TypeScriptプロジェクトにスキーマ駆動開発を持ち込み、より型安全な世界へ - Sansan Tech Blog
                            • 関数型ドメインモデリング ドメイン駆動設計とF#でソフトウェアの複雑さに立ち向かおう

                              ドメイン駆動設計と関数型プログラミングを組み合わせることで、顧客満足度の向上、開発サイクルの短縮、無駄な作業の削減を実現できます。本書では、ビジネスドメインの例とF#のコードで、ビジネスに焦点を当てた、柔軟で高品質なソフトウェアを構築する方法を紹介します。たとえば、F#の型システムを使って複雑なドメインをモデル化し、読みやすいドキュメントにもなるコードを作成します。また、ビジネスルールをエンコードして「コンパイル時ユニットテスト」を作成することで、不正な状態を表現できないようにして潜在的なバグを排除します。関数型プログラミングの核となる原則を適用することで、実世界の要求をエレガントかつ簡潔にモデル化したソフトウェア設計を実現できます。 ドメイン駆動設計と関数型プログラミングを組み合わせることで、顧客満足度の向上、開発サイクルの短縮、無駄な作業の削減を実現できます。本書では、ビジネスドメイン

                              • 今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか

                                Burikaigi ブリ会議 2024 発表資料 Java, Java SE, Project Lambda, ラムダ式, Lambda Expression 関数型プログラミング

                                  今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか
                                • 抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】

                                    抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】
                                  • AWS Lambda Function URLs(関数URL)がCloudfrontのOACに対応したので試す - Qiita

                                    はじめに AWS LambdaのFunction URLs(関数URL)は、Lambda単体でHTTPSのURLを発行し、HTTPリクエストをトリガーにLambdaを実行出来るようになる、非常に便利な機能です。 API Gatewayと統合せずともLambdaのみでWebAPIを構築出来るようになり、プロトタイピングやマイクロサービスに有用です。 関数URLの制限 ところで、関数URLの実行の認可は、IAMを用いた方法しかありませんでした(IAMロールベースの認可か、認可なししか無かった)。 Cloudfrontをリバースプロキシ的に前段に配置し、関数URLと繋ぐことで、ドメインを当てたりキャッシュを活用したり、便利な訳ですが、その際に上記が問題となります。というのは、CloudfrontからIAMベースのリクエストを行うには、Lambda@Edgeを利用するしかありませんでした(オリジン

                                      AWS Lambda Function URLs(関数URL)がCloudfrontのOACに対応したので試す - Qiita
                                    • オブジェクト指向プログラミングと関数型プログラミングの違い

                                      オブジェクト指向プログラミングと関数型プログラミングの違い:手法、コード例、ユースケースごとに解説 関数型プログラミングモデルの採用を考える開発者は多い。だが、採用するなら、関数型プログラミングモデルとオブジェクト指向のアプローチがどのように異なるかを正確に理解することが重要だ。 プログラミングのパラダイムを決めることは、どのようなアプリケーション開発作業にとっても重要なステップの1つだ。関数型プログラミングとオブジェクト指向プログラミングのどちらを選ぶかは、この2つしか選択肢がないわけではないとしても、今日の多くの開発者が直面する課題の1つになっている。 本稿では、関数型プログラミングとオブジェクト指向プログラミングの主な違いを復習し、両コーディングパラダイムが機能する仕組みを幾つか示し、いずれかを選択する際に最も重要な考慮点を確認する。 オブジェクト指向プログラミングと関数型プログラミ

                                        オブジェクト指向プログラミングと関数型プログラミングの違い
                                      • Spring Boot 2系のOSS版サポート終了を、モダンなアプリ開発環境を手に入れる“絶好のチャンス”とするための選択肢とは

                                        Spring Boot 2系のOSS版サポート終了を、モダンなアプリ開発環境を手に入れる“絶好のチャンス”とするための選択肢とは:「最高の開発者体験」の実現に向けて JavaとSpring Bootの進化は止まらない。Spring Boot 2系のOSS版サポート終了を、モダンなアプリケーション開発・運用を加速する“絶好のチャンス”として生かすにはどうすればよいのか。その決断をするのは今だ。 人気開発フレームワークのOSS版サポートが終了、その後はどうする? Javaアプリケーションの開発フレームワークである「Spring Boot」の2.7.x(2系の最終マイナーバージョン)が、2023年11月24日にOSS(オープンソースソフトウェア)版サポートを終了する。ユーザーは、3.1.xあるいは(2023年11月23日リリース予定の)3.2.xにバージョンアップするか、商用サポートサービス「V

                                          Spring Boot 2系のOSS版サポート終了を、モダンなアプリ開発環境を手に入れる“絶好のチャンス”とするための選択肢とは
                                        • 「実践プロパティベーステスト」という本が出版されました #pbtbook - YAMAGUCHI::weblog

                                          はじめに こんにちは、Google Cloudのオブザーバビリティ/SRE担当者です。このたび私が翻訳しました「実践プロパティベーステスト PropErとErlang/Elixirではじめよう」という書籍がラムダノート社より去る11月1日に出版されました。書店ならびに各社オンラインストアでご購入いただけます。 実践プロパティベーステスト ― PropErとErlang/Elixirではじめよう 作者:Fred HebertラムダノートAmazon 実践プロパティベーステスト ― PropErとErlang/Elixirではじめようwww.lambdanote.com 電子書籍についてはラムダノート社のECサイトよりご購入いただけます。 実践プロパティベーステスト ― PropErとErlang/Elixirではじめよう(電子書籍のみ)www.lambdanote.com 「実践プロパティベ

                                            「実践プロパティベーステスト」という本が出版されました #pbtbook - YAMAGUCHI::weblog
                                          • Scalaの難しさをインターネットから集めてみる - Lambdaカクテル

                                            Scalaは難しいと思われたり敬遠されがちである。Scalaの難しさについてTwitterなどでアンケートをとったり、ネットでググって意見を吸い上げてみた。議論の叩き台にするみたいな用途を意図しています。 ご意見や記事募集中です。できればTwitterじゃなくて記事だと嬉しいです。流れていってしまうので・・・ また、私見は私見です。 追記(2024-03-08)ちなみに、色々書いていますが僕はScalaが大好きです(このブログでものすごい数の初心者~中級者向けの記事を書いています)し、ネットで言われているような終わった言語ではまったくないです。初心者をサポートして、難しいと感じている部分をほぐして、みんながScalaでワイワイやれるようにコミュニティを立ち上げ、継続的に活動しています。おかげさまで日本の公式Scalaコミュニティとして認めてもらっています。ブログのバナー下のリンクからDis

                                              Scalaの難しさをインターネットから集めてみる - Lambdaカクテル
                                            • RustでWebアプリの実装にチャレンジしてみよう【準備編】

                                              本連載の目的 本連載は、@ITで2021年7月から連載された「基本からしっかり学ぶRust入門」(現在は完結)の応用編です。Rustは、当時から人気上昇中の言語と評価されていましたが、Stack Overflowが毎年実施している調査「Stack Overflow Developer Survey 2022」でも、変わらず「Rustが開発者の愛する言語」の1位に選ばれました。これは7年連続してのことです。この調査は、言語の好きと嫌いの差が大きいほど上位にランクされるので、Rustを嫌いな開発者は少数、という見方ができます。また、「これから使いたい言語」の1位も獲得しているようで、少なくとも開発者の間では今後も支持を伸ばしていきそうな言語と言えます。 Rustは美点の多いマルチパラダイム言語 Rustの美点は多岐にわたり、ネイティブコードコンパイラによる高速な実行バイナリ、所有権と借用の仕組

                                                RustでWebアプリの実装にチャレンジしてみよう【準備編】
                                              • なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita

                                                EDOCODEでエンジニアをしているYutakaです。 こちらは社内勉強会で発表した資料を元にしています。 関数型言語の知識がほとんどないエンジニアがなっとく!関数型プログラミングで学んだ用語を一部まとめました。原著はGrokking Functional Programmingです。本書はScalaとJavaで説明がされていますが、できる限り社内で使われている言語(Go, JavaScript, TypeScript)でサンプルコードを記載しました。 書籍のソースコードはこちらに全て公開されています。 そもそも関数型プログラミングとは? プログラミングのパラダイムには大きく①命令型プログラミング②宣言型プログラミングがあります。 ①命令型プログラミングとは どのよう(HOW)に計算するかに焦点を合わせ、段階的なアルゴリズムを詳細に定義します。これは実際のハードウェアの計算処理の流れに沿っ

                                                  なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita
                                                • とほほさんのキーノートに感動、ベストスピーカーに聞く登壇の感想、YAPCはコミュニティが混ざる場。YAPC::Hiroshima 2024 非公式ふりかえり会文字起こしレポート - STORES Product Blog

                                                  2024年2月13日に『YAPC::Hiroshima 2024 非公式ふりかえり会』を開催しました。イベントでお話した内容を文字起こし形式で紹介します。 hey.connpass.com 登壇者紹介 STORES hogelog:YAPC初参加 ヨヨイ:YAPCは3、4回参加経験あり hiromu:YAPC初参加 藤村:YAPC初参加 えんじぇる:YAPC初参加 スマートバンク 三谷:YAPC初参加、YAPC::Hiroshima 2024でベストスピーカー賞を受賞 nyanco:YAPCスタッフ 前夜祭の感想 hogelog:『YAPC::Hiroshima 2024 非公式ふりかえり会』を始めていきます。ぜひYAPCのスタッフだった方や登壇してた方などなど、喋ってもいいですよという方はぜひ挙手をしていただけると嬉しいです。 本日の登壇者側で喋る人を紹介させていただきます。私はhoge

                                                    とほほさんのキーノートに感動、ベストスピーカーに聞く登壇の感想、YAPCはコミュニティが混ざる場。YAPC::Hiroshima 2024 非公式ふりかえり会文字起こしレポート - STORES Product Blog
                                                  • GitHub - IBM/fp-go: functional programming library for golang

                                                    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                      GitHub - IBM/fp-go: functional programming library for golang
                                                    • neverthrow の全機能リファレンス

                                                      JavaScript/TypeScript で try/catch を使わないエラーハンドリングに利用できるライブラリとしてはそこそこ有名だと思う neverthrow ですがあまり解説された記事が少なく、関数型と手続き型の書き方をいい感じにミックスできるいいライブラリで情報の少なさから選択されないのも勿体なく感じました。ちょうど GitHub のドキュメントを読みながら意訳してまとめた手元の技術メモがありますのでその一助になればと公開します。 neverthrow とは supermacro/neverthrow: Type-Safe Errors for JS & TypeScript プログラムのエラーハンドリングを try - catch ではなく関数型プログラミング由来の Result 型や Either 型と呼ばれる方法で実現する機能を提供するライブラリです。具体的には Res

                                                        neverthrow の全機能リファレンス
                                                      • F# ではじめる関数型プログラミング入門 (中巻)

                                                        .NET ファミリーの関数型プログラミング言語である F# を利用した、全 3 巻構成の関数型プログラミング入門書籍となります。 中巻では F# のより関数型プログラミングに有用な発展的な機能や型などの学習ができます。 なお、この書籍は本編をすべて無料で利用いただけますが、活動を応援いただける場合には最終チャプターをご購入いただけますと嬉しく思います。

                                                          F# ではじめる関数型プログラミング入門 (中巻)
                                                        • Scalaわいわい勉強会 参加した - ふんわり放牧

                                                          scala-tokyo.connpass.com 株式会社はてな 東京オフィスで開催されたScalaわいわい勉強会に参加した。 発表内容の感想ではなく、参加して漠然と思ったことについて書く。個人の日記です。 Scala、10年前に本当に少しだけ触った程度で何も覚えていない(github.comに辛うじてコードが残っている)のだけれど、 この1年はJVM言語で仕事をしているのもあり、勉強会の運営をしている id:Windymelt にも紹介いただいたのもあって、ふらっと参加してきた。 Scalaのコミュニティというか関数型プログラミング言語のコミュニティ、ふらっと参加するには恐れ多い印象があったのだけれども*1、 これくらいのノリであれば全然次回も参加したいな〜となるくらいの感じであったな。 参加前に これだけ読めばOK!Scalaの環境構築2023 - Lambdaカクテル を読んでて、手

                                                            Scalaわいわい勉強会 参加した - ふんわり放牧
                                                          • 自作言語の紹介と関数型言語の実装方法の検討

                                                            はじめに 私が個人で昨年の 6 月ごろから開発している関数型プログラミング言語を紹介する。言語の名前は「Plato」である。 この言語は昨年の U22 プログラミングコンテスト最終発表会でも発表した。コンテスト後、コンパイラの構成と実装に関して調査し直して、コードを一から書き直した。コンパイラは Haskell で書かれているため、本稿の内容も Haskell の知識をベースとしている。また、型理論の知識もある程度求められる。ただ、大雑把に書いているため、大雑把に読めばよく、このブログの読解に正確さは必要無い。 このブログでは、まず Plato のチュートリアルを示し、実際に何ができるのかを説明する。次に型検査や中間言語の仕様などコンパイラの実装手法を大まかに説明する。最後に今後実現したい機能などについて述べる。理論的に面白いものや有用な機能については、後日それ専用の記事を書く予定。 チュ

                                                              自作言語の紹介と関数型言語の実装方法の検討
                                                            • Scala 3でデータ指向プログラミングは可能か - かとじゅんの技術日誌

                                                              Scala 3におけるデータ指向プログラミング(以下DOP)について深掘りする。久々にScalaの話題を取り上げるが、これはScala Advent Calendar 2023の14日目の内容でもある。 早速だけど、DOPの基本原則は意外とシンプルだ。 コード(動作)をデータから切り離す データを汎用的なデータ構造で表現する データをイミュータブル(不変)として扱う データスキーマをデータ表現から切り離す イミュータブルなデータは採用することは多いと思うが、これをそのまま実践している人はどのくらいいるだろうか。Scalaではクラス中心の関数型プログラミングが主流だと思うし、私もそうしている。 DOPの詳細は下記の本(以下DOP本)を参照してほしい。 データ指向プログラミング 作者:Yehonathan Sharvit翔泳社Amazon ちなみに留意すべき点がある。DOP本とJavaのPro

                                                                Scala 3でデータ指向プログラミングは可能か - かとじゅんの技術日誌
                                                              • その名はFlix

                                                                最強JVM系関数型 論理プログラミング言語、 その名は Flix 第五関数型プログラミング(仮)の会 2024-01-26 knih The Flix Programming Language

                                                                  その名はFlix
                                                                • もみじ饅頭は揚げたてがうまい - shunshock!

                                                                  @shunsockです. YAPC::Hiroshimaから無事帰宅したので, entryを更新します. ちなみに私は以下の日程でした. 2024.02.09: 前夜祭 2024.02.10: YAPC:Hiroshima 2024.02.11: YAYAPC 2024.02.12: 観光@宮島 3泊4日とは言っても, 私は目立った活躍をしていたわけではないのでそういうエントリは他の人にやってもらうことにしてこのエントリでは, 私個人が面白いと感じたものを自由気ままに取り上げようかなと思います. 要するにお好みです. theme of YAPC::Hiroshima 2024 関数型プログラミングと型システム 最初だし本編の話から. いわゆる関数型プログラミングができるRustという言語を最近始めたので気になって聞いたセッションです. www.rust-lang.org 何故関数型プログラ

                                                                    もみじ饅頭は揚げたてがうまい - shunshock!
                                                                  • オブジェクト指向設計の5つの原則「SOLID」を解説

                                                                    オブジェクト指向プログラミングにある程度精通していれば、この開発スタイルが、特定の言語やフレームワークの選択よりも、基礎となる設計手法に深く関わっていることを知っているだろう。オブジェクト指向の適切な設計については数多くの主張や見解があるが、「SOLID原則」は、オブジェクト指向設計に携わる全ての開発者が従うべきルールとして、その権威を確立している。 SOLIDの原則を真に理解するには、この原則が推奨する個々の設計プラクティスについて学び、「各原則を並べて議論する必要性」を理解しなければならない。そこで本稿では、SOLIDが表すオブジェクト指向設計の5つの原則をそれぞれ確認する。「各原則がどう違うか」ではなく「各原則を相互に結び付ける根本的な概念とは何か」について説明する。 オブジェクト指向設計のSOLID原則とは オブジェクト指向プログラミングには特有の5つの原則がある。この5つの原則は

                                                                      オブジェクト指向設計の5つの原則「SOLID」を解説
                                                                    • YAPC::Hiroshima 2024に参加してIdempotency-Key Headerの話をしてきた - valid,invalid

                                                                      表題の通りYAPC::Hiroshima 2024にスピーカー、およびスポンサー企業の一員として参加してきました。最近はブログ不精となっていてイベントに参加しても記事を執筆せずにいたものの、YAPC参加者のすさまじい熱量にあてられたので久々に筆をとってみます。 自分とYAPCとbuilderscon YAPC初参加です。が、実はYAPCには思うところがありました。 YAPC::Asiaの後継として開催された(ですよね?)buildersconに2017, 2018, 2019と参加しており、このイベントからは過去にめちゃめちゃ感化されていたのでした。特に初参加のbuilderscon 2017に強く影響を受けてから僕は登壇やOSS活動を始めたので、勝手な思い入れがあるカンファレンスです。 「buildersconにもやがて登壇するぞ」と思っていたものの直近の数年は非開催となってしまったので

                                                                        YAPC::Hiroshima 2024に参加してIdempotency-Key Headerの話をしてきた - valid,invalid
                                                                      • サーバーサイドの人を React に引き込む作戦――コンポーネントベースの考え方をまとめる

                                                                        Next.js 14 の keynote で、「server actions を使って、ボタンと同じファイル内に SQL が書ける」というキャッチーな光景が、賛否両論を呼んだ。 私個人としては、問題だとは思わない。 なぜなら、既存の「分断された クライアント / サーバー を、BFF も無しでがんばって繋げる」という世界が壊れて、 A. コンポーネントに基づいたアプリケーション設計 B. サーバー側のロジック(→必要に応じて、BFF と 真のサーバーに分かれる?) C. UI の細かな調整(→デザイナと連携 or 融合して消滅?) という形の分業に変わり、フロントエンドエンジニア全員が B. まで担当する必要が無いと考えているからである。 この3つのグループは、ソースコードレベルで連携することができるので、従来のような openAPI およびソースジェネレータに頼った開発よりも連携が容易く

                                                                          サーバーサイドの人を React に引き込む作戦――コンポーネントベースの考え方をまとめる
                                                                        • 関数型プログラミング: map結果を引数とのペアにしたいときはStateが便利だったりする(StateTもあるよ) - Lambdaカクテル

                                                                          この記事では、Scala 3と関数型ライブラリであるCatsを時折使いつつ、Stateモナドを利用することでmap結果にうるおいを与えられるという話題を紹介します。 よくある処理: mapしてからペアにする まあまあよくある: メソッドはたまに値返さないことがある まあまあよくある: メソッドが非同期の場合もある Stateモナド 通常の関数をStateに持ち上げる Stateでmapする StateT登場!! 一般化する まとめ プログラミング言語で最も頻繁に使われるデータ構造といえば、タプル、とりわけ2つの要素を持つタプルであるペアかもしれない。 【タプルとは?】 タプルとは、いくつかの型を並べて組にし、1つの型として扱えるようにしたものです。例えば、StringとIntをくっつけた(String, Int)というタプルを考えることができます。 タプルを構成する型の数によって、3-タプ

                                                                            関数型プログラミング: map結果を引数とのペアにしたいときはStateが便利だったりする(StateTもあるよ) - Lambdaカクテル
                                                                          • F# ではじめる関数型プログラミング入門 (上巻)

                                                                            .NET ファミリーの関数型プログラミング言語である F# を利用した、全 3 巻構成の関数型プログラミング入門書籍となります。 上巻では F# の基本的な文法などの学習ができます。 なお、この書籍は本編をすべて無料で利用いただけますが、活動を応援いただける場合には最終チャプターをご購入いただけますと嬉しく思います。

                                                                              F# ではじめる関数型プログラミング入門 (上巻)
                                                                            • 関数型プログラミングを学ぶメリットとは? そもそも関数とは何かを理解する

                                                                              今やどんな開発環境でも見られるようになった関数型プログラミングとそのメリットを活用できていますか? JavaやRubyのような命令型のオブジェクト指向言語を利用しているエンジニアが関数型プログラミングを使いこなすためのノウハウが解説された『なっとく!関数型プログラミング』(翔泳社)から、関数とは何か、そして関数型プログラミングのメリットについて紹介します。 本記事は『なっとく!関数型プログラミング』の「第1章 関数型プログラミングを学ぶ」から一部を抜粋したものです。掲載にあたって編集しています。 ※本書はMichał Płachtaによる『Grokking Functional Programming』(Manning Publications 2022)の邦訳版です。 あなたが本書を手に取ったのはきっと... 関数型プログラミングに興味があるから 関数型プログラミングの話を聞いたか、ウィ

                                                                                関数型プログラミングを学ぶメリットとは? そもそも関数とは何かを理解する
                                                                              • Functional Design: Principles, Patterns, and Practices - Qiita

                                                                                Functional Design: Principles, Patterns, and PracticesClojure読書感想文SOLID原則 クリーンコードやクリーンアーキテクチャなどの「クリーン」シリーズでお馴染みのUncle Bobの新刊です。クリーンは書籍タイトルに付きませんでした。 本書は関数型プログラミングに関する書籍ですが、関数型プログラミング言語と聞いて、真っ先に皆が思い浮かべるものではないであろうClojureを取り上げて、一貫してこれとオブジェクト指向プログラミング言語との比較がされています。 これは読み進めていくと、オブジェクト指向言語としてはC++やJavaを用いて、Clojureのコードを対比していくという構図を随所でとっており、これらとできるだけ距離の遠い言語を選びたかったのだな、というのが分かります。Clojureは関数型であり動的型付け言語です。この2つ

                                                                                  Functional Design: Principles, Patterns, and Practices - Qiita
                                                                                • Domain Modeling Made Functionalの読書メモ

                                                                                  はじめに Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# を読んだので、気になったことをまとめます。 私の DDD の知識と経験は趣味プロダクトで素振りしてみた程度、関数型プログラミングは勉強中という感じなので、間違った解釈をしているかもしれませんがご容赦を。 本書は F#で記載されていますが、自分のメモでは TypeScript に翻訳してサンプルコードを書いています。 肝心の関数型プログラミングのテクニックを駆使してパイプラインを作っていくアプローチについては自分なりに理解できたので、この記事ではあまり触れていません。興味がある方は、ぜひ本書を読んでみてください。 Part1 Understanding the Domain ビジネス・イベント

                                                                                    Domain Modeling Made Functionalの読書メモ