このスライドは、2020/10/17 - 18 に開催された「ScalaMatsuri」で発表したものです。Read less
このスライドは、2020/10/17 - 18 に開催された「ScalaMatsuri」で発表したものです。Read less
SoRの性質が強いBtoBアプリケーションでは、「堅く」作ることを求められる箇所がしばしばあります。 Scalaの型安全性が頼もしく感じられるのは、まさにこのような箇所においてです。 「堅く」作るために、私たちがいま注目しているのが refined と newtype というライブラリです。 この記事では、refinedとnewtypeを使ってScalaの型安全性をさらに引き出すテクニックを紹介します。 Value Class / Tagged Type refined + newtypeの話題に入る前に、これまでにどのようなテクニックが使われてきたかを簡単に振り返りましょう。 ここに、SNSのユーザーアカウントを表現するクラスがあります。 case class User(id: String, email: String, age: Int) val user1 = User("@tod
自分が気づいてなかった資質を、探して、磨く 劣等感に消耗するより、目的志向で考える オープンソースコミュニティへの参画 ドメイン駆動設計とScalaが「点」となる ドメイン駆動設計との出会いと成果 遅延評価的学習法でScalaを習得 Scalaを使ってDDDを実践するスタイルを確立した 実験的に導入して結果が出れば業務での普及も進む 積み上げてきたScalaとDDDの開発スタイル Scalaコミュニティとともに 新しい挑戦で新しい「点」ができ、そして「線」につながる 「いずれどこかで点がつながって実を結ぶだろう」 過去も未来も思い切って手放し、今の自分に集中する こんにちは、Chatworkでテックリードをしている、かとじゅん(@j5ik2o)です。 今年(2020年)で48歳になりましたが、技術に前向きになったというか、本気を出したのは37歳ごろでした。遅いな……(笑)。まぁ、遅い早いが
エムスリーエンジニアリンググループの冨岡です。この記事はエムスリーAdvent Calendar及びScala Advent Calendarの20日目の記事です。 はじめに Future の特徴 Future の長所 標準ライブラリで提供されている 抽象化の戦略がわかりやすい Future の短所 処理を即時実行する 結果が否応なしにメモ化される ExecutionContextが必要なシーンが多い 参照透過な作用 (コラム)プログラムをプログラムすることについて 3rd party の Pure Effect ライブラリの紹介 Cats Effect: IO Monix: Task ZIO まとめ 参照透過性について補足 We're hiring! はじめに Scalaでは、作用、特に非同期での作用を扱うためのデータ型として scala.concurrent.Future が提供されて
最近、現在時刻が関わるプログラムを題材に、高テスタビリティなプログラミング作法を解説した素晴らしい記事が復刻されて、感想などがTLに流れてきたので、自分もそのお題を関数型プログラミングで解いてみた記事。 はじめに 最近、こんな引用ツイートをした。 関数型界隈だと、参照透過な部分とそうでない部分(現在時刻, 乱数, etc.)を分離しといて使うところで合成する作法が尊重されてて、simplicity と composability の結果として、テスタビリティや柔軟性が高くなる(低くならない)ということがよく謳われている。あとで自分もFPでお題解いてみよう。 https://t.co/00TwqXmtC7 — yasuabe (@yasuabe2613) September 30, 2019 元記事は、t-wadaさんの『現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ 』で、めち
10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由 10年以上運用されているサービスには、さまざまな技術的な負債が発生しています。今後の継続的な改善のため、いったん新規開発を止めて4年かけて全面的なリニューアルを実施した「はてなブックマーク」の開発者に、プロジェクトの課題や解決する手法などを聞きました。 改善1つに数カ月かかるなら全てを書き換えられないか 2000年代にトレンドだった開発手法の負債 過去の開発意図を探る考古学的手法 データセンター移行も見据えて刷新しよう ドメインモデル設計とScalaとマイクロサービス化 コアロジックにはScalaを採用 きちんとしたドメインモデルによる設計と実装を継続したい 段階的なリリースとデータの移行という2つの大きな課題 求められる機能に沿ったデータベーススキーマに再構築 新旧の2システムを維持しながら
圏論は数学の一分野です。これを学ぶのには「数学書」を手に取るのが王道なのですが、残念ながらこれは大部分のプログラマに理解できる言葉では書かれていません。「定義・命題・証明」の積み重ねで書かれています1。ここで大半のScalaプログラマは苦い顔をすると思います。もう少し分かりやすいScalaプログラマ向けの圏論入門がないかと探してみると「Haskell」向けの記事が大量に引っかかるでしょう。ここで多くのScalaプログラマは心を折られてしまいます。「圏論」はまだScalaプログラマには早すぎたんだと・・・ 本記事ではそんなあなたに贈る3つの文献をご紹介したいと思います。 (本記事は自分のブログからの転載記事です。) はじめに 本記事は圏論に興味があるScalaプログラマを対象にしています。特にプログラマにとって実用的な圏論の知識をScalaを通して身につけたい方にオススメします。 プログラマ
アプリケーションエンジニアの id:tanishiking24 です。2019年6月27日から29日にかけて開催されたScalaMatsuri2019にて、「いかにして我々は10年もののPerlプロダクトをScalaでリプレースしたか」というタイトルで登壇しました。 speakerdeck.com (イベントのレギュレーション上、発表資料は英語+日本語字幕で構成されていますが、トーク自体は日本語でした。) この発表では我々が運用しているWebサービスの一つであるはてなブックマークのScalaを用いたフルリニューアルプロジェクトについてお話しました。同じ時間帯に他にも様々な魅力的なトラックがあったにもかかわらず多くの人が発表を聞きに来てくださり、Twitterのハッシュタグで様々な感想をいただき、また発表後にも何人もの方が時間が足りず話しきれなかったデータ移行などについて質問しにきてください
There is a movement to configure Akka-Cluster on Kubernetes and build a system that is resilient and scalable. Because Akka is a toolkit for developing distributed applications across nodes, it requires orchestration capabilities such as deployment scaling at the container level. In that sense, Kubernetes is now a viable option. EKS has just arrived in the Tokyo region, so I think this kind of int
Cloudflare Pages に入門してみた / 2023-10-14 Cloudflare Meetup Nagano Vol.2
以前以下のようなDottyに関する記事を書きました. amaya382.hatenablog.jp それから暫く経ち, 多くの更新が入ったため新しくまとめました. 公式ドキュメントだけでなくあちこちにちらばった情報を集めています. 過去記事と同じくあくまで真新しい機能のみに注目し, 理論的な部分や実装については深掘りしません. 概要のみなので, 個々の詳細は各見出しのリンク先を御覧ください. Dottyとは Dependent Object Types (DOT) に基づいた新しいScalaコンパイラです. Scala3系に相当します. DOT計算理論の詳細は省きます (まとめるほど理解できていないとも言う…). 現行のコンパイラと比べ, コンパイラサイズの減少・コンパイル速度向上・様々な機能追加の他, コンパイラ自体の開発安定性も増すパワフルなアップグレードが期待できます. 現行のSca
Scalaプログラマの観点からGraalVMを紹介、使ってみる。 GraalVM? GraalVMは、思い切り雑に紹介するとScala(Java)プログラムを高速化することが出来る(ことがある)らしい。 このあたりを読むともう少し詳しく書いてある。 https://www.graalvm.org/docs/why-graal/#for-java-programs 簡単にまとめておくと、特徴としては Javaを高速化 JITコンパイルになにかしら改良がしてあるとのこと。 Javaコンテキスト内で別の言語(JSやPython)を実行 Ployglotなアプリケーションを開発可能 Nativeイメージを作成 JITではなくAOTコンパイル の3点が挙げられている。 この記事では1と3に触れてみる。 2についてはEmbed Languages with the Graal Polyglot API
「Scala言語らしさ」を理解しよう! オブジェクト指向と関数型プログラミングの融合とは? プログラミング言語Scalaの設計思想にあるという、オブジェクト指向と関数型プログラミングの融合(fusion)という理想と、それを掲げつつも現実主義的な点について、水島宏太(kmizu)さんが解説します。 kmizuと申します。株式会社ドワンゴでエンジニアを務めています。 最近では、毎年の新卒エンジニア向けScala研修の講師や、N予備校 プログラミングコースの一部教材のレビューといった教育、および研究等の面でも活動しています。 ドワンゴでは、私が入社した時点でScalaがかなり採用されており、社内にScalaをより深く広めることも職務の一環でした。私は2007年くらいの、Scalaがまだほとんど注目されていなかった頃からScalaを触り始めており、その縁で新卒エンジニア向けのScala研修資料作
TL;DR 世間のScalaに関するイメージは、昔のままであることが多い 昔のままどころか、最初から間違ったイメージを持たれていることも多い 実際には、既に解決されている問題は多々あるし、改善に向かっていることも多い プロジェクト管理の問題を言語に押し付けているケースもある はじめに 自分が最初にScalaに触れたのが2005年(Scala 1からカウントした場合)、あるいは2007年(Scala 2以降からカウントした場合)と、Scalaとの付き合いも結構長くなってきましたが、その間に Typesafe社(現Lightbend社)の設立 実質標準ビルドツールとしてのsbtの確立 ライブラリのバイナリ後方互換性に関するポリシーの策定 公式ScalaイベントScala Daysのはじまり Play 2 Frameworkの登場 Scala Center発足 その他色々 がありました。この間、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く