なっとく!関数型プログラミング 作者:Michał Płachta翔泳社Amazon 良い、買おう、読もう、(コードを)書こう、以上! めっちゃ良いですよ、この本 中盤のプリミティブじゃやりづらい→直積→直和→二つ合わせてADT→値を取り出すためのパターンマッチの解説の流れの疾走感がいいですね— magnoliak🍧 (@magnolia_k_) 2023年8月6日 『なっとく!関数型プログラミング』は、2022年に出版された『Grokking Functional Programming』の邦訳版で、主にScalaを題材として関数型プログラミングを学んでいくための入門書("Grokking"は、完全に理解する、という意味)。あくまで関数型プログラミングの考え方、コードの書き方、良い設計の指針の解説が主眼に置かれているので、Scalaの言語機能の入門書ではない。Scalaの言語仕様を網羅
Laminar とは...? 🤔となった人はこちらの記事も読んでみるといいかもしれません. Goal レポジトリはこちら Hands-on 使うもの Scala.js sbt Vite Laminar ライブリロードでインタラクティブに開発するためにシェルを二つ開いて一つで npm run dev を、もう一つで sbt ~fastLinkJS を実行します. npm run dev で vite の開発サーバーが立ち上がり、http://localhost:3000 でアプリケーションがサーブされます. sbt ~fastLinkJS を実行すると src/main/scala 以下の 変更を検知して 変更があるたびにビルドが走ります. display UI まずは src/main/scala/tictactoe/Index.scala をみてみましょう. 次のようなコードがあります
この記事は Scala Advent Calendar 2021 14日目の記事です。 Scalaで一番easyな構成を考えたい Scalaでマスタメンテや運用補助の簡単なアプリを手軽に作りたいときどうしましょう? requirements マスタメンテ画面など手軽に作りたい フロントとサーバーが分かれてないほうがいい フロントとサーバーを統合するのでOpenAPIやTapirはむしろ不要! 個人的コンテキスト しばらくvueのプロジェクトの改善をやっていて、大きく育ったSFCをコンポーネントに切り出すのがつらかった。誰でも安全確実に高速でリファクタリングできないと意味がない! playframework + twirlは楽だけど そもそもhttpすらいらない よねという話をAirframe RPCの話題で聞いていて、もっとシンプルなRPCないかなと探してみた。。。 すると、さすがliha
Laminar は Scala で書かれたリアクティブな宣言的 UI ライブラリです. Scala でコードをかいて Scala.js にコンパイルすることでブラウザで動作するフロントエンドアプリケーションをつくれます. Scala.js と Laminar, Scalacss, Scalatag を使えば、JS を一切使わずに型安全に Scala でフロントエンドを構築することができます. TypeScript の狂気的な型(誉め言葉)や JSのゆるゆるな言語仕様に疲れたそこのあなた! Scala.js を使ってみませんか? この記事では以下のデモサイトのコードをいくつか抜き出して Laminar の書き方をざっくり紹介します. このデモでは Laminar と Laika という Scala 製のテキスト変換ツール(pandoc のように中間AST を挟むことで多様な入力形式に対応して
Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collectionsの輪読会を開催したのでレポブログです。 OOPSLA2015で発表されたCHAMPというScalaのimmutable.HashMapとして採用されているデータ構造についての論文です。 実際にScalaのソースを見ても論文へのリンクがついていました。 scala/src/library/scala/collection/immutable/HashMap.scala at 93d6281876ae53d7eb0d1f1e8369437f0a260015 · scala/scala · GitHub CHAMP自体はHAMT(Hash Array Mapped Trie)というHashMapの改善バージョンといった位置づけで内部のデータ構
はじめに CloudTraceとは 概要はこちら。 GCP曰く「誰でも使用できる分散トレース システム」とのことで、GKE上で動かしているAkka gRPCで書かれたサービスのトレース結果を下のイメージ(クイックスタートより拝借)のように見たいなぁというのが今回の動機。 Scala環境ではOpenTelemetry(Java)を利用できそうです。 OpenTelemetryとは 概要はこちら。 Google翻訳によると「OpenTelemetryは、トレース、メトリック、ログなどのテレメトリデータの作成と管理用に設計された、API、SDK、ツール、および統合のセットです。」らしい。 OpenTracingとOpenCensusの合併した後継プロジェクトであり、CNCFのインキュベーターになっています。 Java以外にもGoとか.Netとか用意されているみたいですね。 Akka gRPCで利
はじめに akka http client APIを使っていて以下のようなエラーに遭遇したので関連する設定について調べました。 akka.stream.BufferOverflowException: Exceeded configured max-open-requests value of [4]. これは何か? エラーメッセージに記載されている説明ページには以下のように説明されています(要約) ホストごとにコネクションをプーリングしている コネクション数は akka.http.host-connection-pool.max-connectionで設定する プールを使うAPI(Http().singleRequest()など)でリクエストを送信すると、プールが処理できるリクエスト数を超えた場合はキューに入れられる キューのサイズ(max-open-requests) を超えた場合はB
諸事情により急に Minecraft のプロトコルを喋る Scala ライブラリが欲しくなった僕は、要求1に合いそうなライブラリが見当たらなかったため仕方なく作ることにしました。 Scala / sbt はそれぞれ 3.0.1 / 1.5.5 を利用します。 今回書いたコードはここに置いています。 Scala 3 のマクロについて Scala 3 でのメタプログラミングで提供されている機構を知らない方は、公式ドキュメントの macro tutorial に目を通すことを推奨します。必要に応じて language reference を参照してください。 この記事で解説するコンパイル時リフレクションは、必要でなければ書かない方が望ましいです。書くことが避けられなさそうな場合は、公式ドキュメントで説明されていないマクロ開発テクニック等を解説している SoftwareMill による記事に目を通
この記事はScala Advent Calendar 2021の16日目の記事です。 はじめに Akka Clusterを使った分散システムを実現するために、いくつかのAkkaのモジュールを理解する必要がある。 そのうちの一つにPersistence (Event Sourcing) がある。よく Actor を永続化するために使うということを聞くが、あまり使い所がピンと来なかったので、Akkaのドキュメントと参考文献を読みながらメモを書いていく。 Persistence (Event Sourcing) とは 状態を持ったアクターを永続化できるモジュール。 以下の二種の方法で永続化ができる Journal - 更新イベントを1つずつ発生した順番に保存 Snapshot - その時点でのActorの状態を直接保存 状態を持ったアクターのスナップショットも使うことはできるが(リカバリーする際
LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog 初めまして、Ads Platform開発チームの岡田(@ocadaruma)です。 この記事はLINE Advent Calendar 2017の17日目の記事です。 今回、個人的に以前から気になっていたAkka HTTPの内部構造について、この機会に調べましたので紹介いたします。 Akka HTTPとは Akka HTTPは、Lightbend社によって開発されている、Scala/Java用のHTTP toolkitです。 現在はメンテナンスが終了したsprayの後継と位置付けられており、特徴的なRouting DSLをsprayから受け継いでいます。 また、Play Frameworkは2.6系より、Akka HTTPをデ
Scala Advent Calendar 2022 - Qiita 1日目の記事です scala.js でビルドした成果物を npm にアップロードすることありますか? 私はある。 普通に scala.js でビルドした js を npm にアップロードしようとするとこういう感じの流れになります。 sbt fullOptJS とかで js にビルド ビルド成果物(.../target/scala-2.13/foo-opt.js とか) を適当なディレクトリにコピー そのディレクトリに package.json と、npmにアップロードする README.md を設置 npm login して npm publish まあ、これでも別にいいっちゃいいのですが、いくつか気に入らないところがあり build.sbt の設定と、package.json の設定を別々に管理することになる (ver
使用ライブラリなど Scala.js scalajs-react akka-http circe モデリング ゲームのコアにあたる部分の実装指針です。 オセロのルールを閉じ込めたOthelloクラスを作成し、以下の2つの状態を保持 ボード ... 盤面。どこに何色の石が置かれているかを保持。 手番 ... 次は黒/白どちらの手番か(これは、通常プレイであれば、ボード上の石数から判断することも出来るものの、通常プレイ以外の拡張モードの構想もあり、切り出すことにしました) ゲームの情報を保持するGameクラスを作成し、勝敗や参加者のIDを保持 このクラスがOthelloインスタンスを内包しています。 参加者はParticipantクラスで定義 名前と状態(フリー、参加待ち、観戦中、対戦中)を持っています。 認証認可周りは今回の本題ではないので、ふわっと作ってます。 実装戦略 以下、どういった方
こんにちは。クライアントアプリケーション開発部の田中です。 好きな麻雀の役は七対子です。 先日、ChatWork LiveのUIが変更されました。 詳細は下記を御覧ください。 blog-ja.chatwork.com UIについては今後デザイン部の方がブログを書くと思うので、今回私の方では技術的なところの紹介をしたいと思います。 (尚、この記事にはWebRTCやビデオ会議システムの話は全く出てきませんので、ご了承ください。) ChatWork Liveのフロントエンド技術について 実は今月のUI更新とは別に、JavaScript部分の大幅な変更を4月末に実施しています。 大まかな設計はすべて@kyo_ago氏がやってくれて、 私は敷かれたレールをただただ歩くだけだったので割と楽させてもらいました。 ChatWork LiveのWebクライアント側は主に以下の技術を使って実装されています。
はじめに 業務のメインプロジェクトではScalaを使うことが多く、チームに新しく加わったメンバーのオンボーディングではScala言語自体やライブラリ(主にtypelevel系)の資料を紹介する機会が少なくありません。毎回リンクのリストを作り、コメントを添えて共有するのですが、回数も増えてきたので記事にしてみることにしました。 Scala言語の入門 ScalaText 『Scala スケーラブルプログラミング』(第三版) 『Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド』 1つ目のScalaTextは有名なドワンゴさんの研修資料が日本のScalaコミュニティに寄贈にされたものです。2つ目以降はScalaTextの冒頭でも言及がありますが、入門としては鉄板かなと思います。他のプログラミング言語を修得されているのであればScalaTextを一通り
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く