scala
ふと気になったけど今まで記事書いてなかったのでいちおう確かめることにした。 ある1引数関数f: A => Bがあったとする。 type A type B val f: A => B = ??? Bがモノイドであるとする。 implicit class BMonoid extends Monoid[B] { ... } このとき、1引数…
Tapirなどの実験がてら、OpenAIにアクセスする実験をしていた。とりあえず実験に成功したので解説する。 github.com 実行すると、とりあえず挨拶してもらうようにしている。 $ OPENAI_APIKEY="..." OPENAI_ORG="..." sbt run こんにちは!ChatGPT APIへよう…
非常に面白い題材をTwitterで発見したのでメモ。 このようなツイートを見た。 scalaって関数にも部分型関係があって、コンパイル通ると思ってたけどダメみたい。なんでですかね?val f : Double => Boolean = (d:Double) => trueval g : Int => Boolean = fh…
言いたいことはタイトルで全部言ってしまったので以下は蛇足です。 蛇足 ECMAScriptなどの言語では、正規表現リテラルが存在しており、リテラルと一緒に正規表現オプションを設定できる。 // xオプションを設定する const re = /(\d\d\d) - (\d\d\d\d)/x; *1…
Scalaでは時刻操作のためにJavaライブラリであるjoda-time(と、そのScala用便利ラッパーであるnscala-time)を使うことが多い。JVM言語の良い所だ。今回はタイムゾーンTZ操作にまつわるメモ。 withZoneでタイムゾーン表記を変更する DateTimeに対して定義され…
ScalaのテストフレームワークであるところのScalaTestのドキュメントを読んでいたら便利なメソッドを発見したのでメモ。実はもうみんな知ってるかもしれない。 等価性比較 ScalaTestでは、Matcherという便利なメソッドを使って等価性や存在判定などのテスト…
仕事でコードを書いていて、タイトルのようなケースに遭遇した。 val a, b, c, ... = ??? // 定数 val x = f(a) // なんかを計算したり生成する val y = g(x, b) val z = h(y, c) ... val 最終的に欲しい値 = (x, y, z) こういうの。 これがもし仮に以下のよ…
とりあえず何かを覚えたらfizzbuzzにするクセやめたい import cats.syntax.all._ import cats.implicits._ extension (d: Int) def ~>(s: String)(n: Int) = (n % d == 0).guard[Option] as s val fizzbuzz = (((2 ~> "fizz" &&& 3 ~> "buzz") >>> (_.toList…
ScalaでなんかWebアプリをガッと作りたくなったときにどういう技術を使うべきなのか?という話です。自分はこういうふうに考えてるけどな〜というのを知見としてまとめておこうと思ってこの記事を書いています。いやいやこっちのが速いでしょみたいな話題歓…
一瞬ハマったのでメモ。 val m: Map[DateTime, Int] = ... このような、DateTimeからIntへのMapがあるとする。 ScalaTestで、ある範囲の日付がすべてこのMapにキーとして含まれていることを知りたい。 誤答: definedAtを使う val from = DateTime.parse("202…
先日、VOICEVOX CoreのScala用ラッパーを書いた。 blog.3qe.us これを使うと、Scalaからずんだもんを簡単に喋らせることができる。 で、ネットをさまよっているとVOICEVOXコミュニティのDiscordに参加することができた。 そこで会話してるうちに、ラッパーを…
ScalaでJARファイルにネイティブライブラリをバインディグして使いたいことがある時、いくつかの点を考える必要がある。 どういう仕組みを使うのか? どうやって呼び出すのか? どうやって同梱するのか? どうやってビルドするのか? どうやって展開するのか…
指定した個数の何かが欲しいことがScalaではよくあります。 インデックスほしいとき toを使うと良いでしょう。 (0 to 10) map (n => s"count $n") // => Seq("count 0", "count 1", ..., "count 10") 個数だけ指定してインデックスいらないとき Seq.fillを使…
Scalaの国際カンファレンスであるScalaMatsuri 2023のCfPに応募したところ採択され、登壇の機会をいただきましたからお知らせします。 とき 2023-04-15〜2023-04-16 (変わる可能性があります) 20分間喋ります 今すぐGoogle Calendarに登録してください とこ…
Scalaには2.13からpipeという面白いメソッドが追加されている。a pipe fと書くとf(a)になるという、それだけの仕組みだ。Elixirなどの他の言語では|>といった記号で導入されている。 blog.knoldus.com 記号の氾濫を避けるためにScalaは公式には単体の演算子…
ScalaからVOICEVOX喋らせようとしている人は多分絶対自分しかいないけど、ScalaからVOICEVOXを喋らせるためのラッパーであるvoicevoxcore4sを作った。 github.com この記事は、はてなエンジニアAdvent Calendar 2022の48日目の記事です。昨日の記事は id:gur…
Scala-CLIをいじっていたらかなり良さそうな機能を見付けたので紹介する。 Scala-CLI あらかじめ説明しておくと、Scala-CLIとはScalaをLLライクに扱うための便利ツールチェイン。REPLでコードを試したり、スクリプトを実行できたりする。 scala-cli.virtusla…
Apache SparkでCSVファイルを読み込むときに気をつけておきたい挙動に遭遇したのでメモしておく。 Apache Spark Apache Sparkとは、Apache財団によってメンテナンスされている分散型の計算・分析エンジンで、Scalaを第一級言語としてサポートしている。要す…
1年間病院にかからなかったということで褒美の図書カードを健康保険組合にもらったので、こういう本を購入した。 scikit-learn、Keras、TensorFlowによる実践機械学習 第2版作者:Aurélien Géronオライリー・ジャパンAmazon 鈍器っぽい。この本ではまずはscik…
あけましておめでとうございます。2023年は兎年ですね。 そして、兎といえばTensorFlo兎(テンソルフロウ)。今回もTensorflow Scalaをやっていきます。 XORをニューラルネットワークで実装する platanios.org 公式ページのサンプルを見ながら、 techblog.glpg…
機械学習で大儲けしたいからTensorflow Scalaを勉強している。その1とその2はこちら。 blog.3qe.us blog.3qe.us 今回は、テンソルの一部を表現する優れた記法であるスライス記法についてのお話。 オリジナルの(?)PythonのTensorflowにはスライス記法という…
機械学習で大儲けしたいので、Tensorflow Scalaで遊んでいる。 前回はこちら。 blog.3qe.us Tensor Creation 公式ドキュメントの Tensor Creation をやってみる。 platanios.org import org.platanios.tensorflow.api.tensors.Tensor import org.platanios.t…
機械学習をやるためのライブラリであるTensorflowにScalaバインディングが作られているのを知った。 platanios.org 機械学習で大儲けしたいので、ちょっと触ってみることにした。 インストール platanios.org 公式マニュアルのバージョン情報更新が滞ってい…
ScalaのコマンドラインパーサDeclineで、サブコマンドを定義したいのだが、サブコマンドには引数が無い、というケースを定義したかった。 普通サブコマンドにはさらに引数が付くのだが、例えば init みたいなサブコマンドを定義したいときは引数はいらない。…
hljs.highlightAll(); Table of Contents 前提: JVM言語を配るのは大変 sbt-release でリリースプロセスの手間暇を省こう プラグインをインストールする build.sbt と version.sbt の設定 MavenにはPublishしないようにする リリースフローを起動する リリー…
アルバイトとして働いてくれている同僚がScalaに入門していて、基礎的なScalaの文法などは習得してくれているけれど、コレクションメソッドや関数型プログラミングのイディオムまわりでもっと伸ばせそうな雰囲気があるので、何か良い資料を知らないですかと…
Table of Contents はじめに 最近Scalaまわりのアウトプットを積極的にやっている Scalaの裾野を広げたい 高度な記事はあるけれど 入門的な記事を増やす お高く留まらない言語にしていく お高く留まった言語から滅んでいく 裾野がプログラミング言語を支えて…
自作の解説動画作成ツールがある程度形になってきたので、配布について考えている。 www.nicovideo.jp zmmはScalaで書かれたアプリケーションなので、JVMで動作する。JVM言語の配布形式には色々あるのだけれど、zmmではとりあえずJARを配ることにした。 Scal…
マルチテナンシーというコードの形態がある。同じコードベースで、実際の実行インスタンスなどは分けた形で複数のサービスを提供することである。例えば同じコードベースでAというECサイトとBというECサイトを提供する、という感じである。 このマルチテナン…
Scala3チャレンジをする記事の二本目。 前回はこちら。 blog.3qe.us ソースコードは以下に置いてある。 github.com github.com Union Types Eitherとの違い Discriminated Union Typesもどき Intersection Types まとめ MathJax v3以降ではbussproofs.styが…