サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Google I/O
qiita.com/yasuabe2613
最近、現在時刻が関わるプログラムを題材に、高テスタビリティなプログラミング作法を解説した素晴らしい記事が復刻されて、感想などがTLに流れてきたので、自分もそのお題を関数型プログラミングで解いてみた記事。 はじめに 最近、こんな引用ツイートをした。 関数型界隈だと、参照透過な部分とそうでない部分(現在時刻, 乱数, etc.)を分離しといて使うところで合成する作法が尊重されてて、simplicity と composability の結果として、テスタビリティや柔軟性が高くなる(低くならない)ということがよく謳われている。あとで自分もFPでお題解いてみよう。 https://t.co/00TwqXmtC7 — yasuabe (@yasuabe2613) September 30, 2019 元記事は、t-wadaさんの『現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ 』で、めち
Slack のスラッシュコマンドを、API Gateway を介した Lambda 上の Haskell プログラムとして実装するやりかた。 動機 使えるところからちょっとずつ使って、Haskell とか関数型プログラミングとかの適用範囲をじわじわ広げていきたい。 お題 /f-to-c [文字列] と入力すると、文字列部分を華氏温度と解釈して、それを摂氏に変換した数値を返すスラッシュコマンドを定義してみる。[文字列]を指定していなかったり、数値に解釈できないものが入っていたりすると、エラーメッセージが返るようにもする。 実務上の応用としては、例えば、プログラマなら手元の REPL 上でのちょっとした計算や採番で導出できる ID などを、非プログラマのチームメンバーでも Slack で簡単なコマンドを叩けば必要な結果が得られるような簡単な ChatOps がある。もちろん頑張れば外部システム
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Aecor という純粋関数型 Event Sourcing ライブラリをざっくり紹介したい。 概要 Aecor は Denis Mikhaylov というロシアの技術者が開発した、Scala の純粋関数型イベントソーシングライブラリ。作者が勤務するオンライン予約会社の Evotor 社では、Arcorベースの数十のサービスが実運用されているという。 ラテン語で海の意味で、あえて五十音で近似すると、ラテン語読みだとアエコル、英語読みだとエイカーみたいな感じ。 純粋関数型DDD に親和性が高い。OOP とは逆に、FP ではデータと振る舞いを
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 以前の記事で『Microservice Patterns』について要約したが、その中の一つの Saga パターンについて、もう少し詳しく掘り下げてみる。 どういう文脈で Saga パターンを使うか? 各サービスがそれぞれの Bounded Context (整合性の境界)で自前のデータストア(Database per Service)を持っているマイクロサービスアーキテクチャで、複数サービスにまたがるワークフローのデータ整合性を維持したい。 どういう制約のもとで Saga パターンを使うか? 以下のような事情で、分散トランザクションは使
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 今年10月に出版された『Microservices Patterns With examples in Java』という本を読んだ。面白かったので紹介したい。 はじめに 著者は、マイクロサービスパターンのサイト microservice.io を運営している Chris Richardson という人。Cloud Foundry の創設者でもあり、最近では Eventuate というマイクロサービス用のプラットフォームを提供してるらしい。コンサル経験も豊富らしく、本の中でもそこで得られた知見が盛り込まれている。 microservice
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 『Domain Modeling Made Functional』という関数型ドメインモデリングの本を読んでみた。とても面白かったので紹介したい。 はじめに 著者について 『Domain Driven Design with the F# type System』 という面白いスライドで、関数型のテクニックを使って BLOBA1 をエレガントにコーディングする技法を提案していた Scott Wlaschin という人。 おすすめしたい人 特に次のような人は、きっと面白く読めるのではないかと思う。 ふだん純粋関数型言語を使っていて計算機科
Milewski 氏の圏論講座の第1章 Category: The Essence of Compositionを読んでたら、冒頭あたりに次のような一文があった。 But the essence of a category is composition. Or, if you prefer, the essence of composition is a category. 射の合成こそが圏の本質で、またその逆も成り立つという。 Cats だと cats.arrowパッケージのArrowやCategoryといった型クラスで、いろいろなパターンの合成が提供されているらしい。今回はこれを調べてみた。 (Cats バージョンは 2.12の 2.0.0-M1。ソースはここ) Arrow の階層 cats.arrow パッケージ内のArrow関連の継承関係は、下図のようになる。 以降、これらの型クラ
"Functional Programming Patterns in Scala and Clojure"(以下、FPPSC)(PDF)の第3章に、関数型言語のイディオムでオブジェクト指向のパターンを置き換える「パターン」集が載っていて、その中で OO 的な DI の代替技法として Cake パターンが紹介されている。 11個紹介されている「置き換えパターン」の中でも、この Cake は特に、OOP vs FPというより、Scalaならこういう書き方もできるという言語特有イディオムの紹介だけど、これをもう少し関数型っぽく発展させてみたい。以下 Cake Pattern、Minimal Cake Pattern、Reader、Free、Reader + Free、ZIO を順に試してみる。 ※『DI と後出しモナド:Tagless Final / Free Monad』に続く 準備等 使っ
このページを最初にブックマークしてみませんか?
『@yasuabe2613のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く