Scala
Apache PredictionIOは、SalesforceによってApache Software Foundationに寄贈されたオープンソースの機械学習プラットフォームです。 PredictionIOは機械学習ワークフローの全プロセスをカバーし、エンジンテンプレートという雛形をベースにすることで機械…
先日開催されたSpark + AI Summit 2019にあわせてDatabricks社からSpark用のストレージレイヤ「Delta Lake」のOSS化が発表されました。 databricks.com GitHubリポジトリはこちら。 github.com Delta LakeはSparkのライブラリとして実装されており、分散スト…
MetalsはScalametaのサブプロジェクトとして開発されているScala用のLanguage Serverで、Visual Studio CodeやAtom、Vim、EmacsなどのテキストエディタでScalaプログラミングを行う際にIDEのような機能を利用できるようにするものです。 scalameta.org コー…
2月28日(木)に大手町のGlobal Business Hub Tokyoで開催されたTokyo Scala Developersコミュニティのミートアップをトレジャーデータでホストさせていただきました。 www.meetup.com Tokyo Scala Developersは主に東京在住の外国人Scalaプログラマのコミュ…
RisonというのはJSONライクかつURLに埋め込みやすいようURLエンコーディングが最小限になるよう設計されたデータフォーマットだそうで、Kibanaなどで使われているそうです。日本語だと以下の記事が詳しいです(自分もこの記事を見てRisonを知りました)。 qi…
手軽に使える機械学習ライブラリというとPythonのscikit-learnが有名ですが、Java/ScalaでもSmileというライブラリがあったので軽く試してみました。 github.com まずはリリースページからzipファイルをダウンロードして適当な場所に展開します。bin/smileで…
GitBucketではもともとデータベースを使ったテストに組み込みMySQLやPostgreSQLの機能を提供するライブラリを使っていたのですが、これらのライブラリのメンテナンスが怪しくなかなか新しいバージョンに対応したテストを行うことができないという問題があり…
akka-http-contribというリポジトリにRetryというユーティリティがあり、リトライ処理が簡単に書けるようだったので試しに見てみました。 github.com テストケースによると使い方はこんな感じです。 def flow[T] = Flow.fromFunction[(Int, T), (Try[Int], T…
11月10日(土)、11日(日)の2日間に渡り大阪で開催されたScala関西Summit 2018に参加してきました。 GitBucket sponsors Scala Kansai Summit 2018! #scala_ks #gitbucket pic.twitter.com/0Kk3gIeeHT— Naoki Takezoe (@takezoen) 2018年11月10日 上記のツイー…
Scalaで未使用のインポート文を自動で消せないかという話があり、Scalafixだとできそうだったのでやってみました。 github.com ドキュメントに書かれている通りでいけるのですが、手順をまとめておきます。 まずはproject/plugins.sbtにsbtプラグインを追加…
「実践Scala入門」を技術評論社さんからお送りいただきました。Scalaの入門書というとコップ本を思い浮かべる方が多いと思いますが、下のツイートでも書いている通りこの本はかなりコンパクトです。 技評さんから実践Scala入門をお送りいただきました。あり…
Scalaのビルドツールsbtには1.xからLanguage Server Protocol 3.0に対応したサーバモードが実装されており、常駐させたサーバに別プロセスから接続してコマンドを実行することができます。サーバモードはIDEやエディタプラグインのために実装されたものだと…
AutoMLはこれまで専門のエンジニアを必要としていたような機械学習の処理を自動化し、誰でも機械学習を利用できるようにするという分野です。PythonだとTPOTなどのライブラリが存在しますが、先日Salefsforce社からScala + SparkベースのAutoMLライブラリが…
AirframeはScala向けのDIコンテナを中心とした様々な便利機能を提供するプロジェクトなのですが、最近airframe-httpとairframe-http-finagleというモジュールが追加され、Finagleを使ったWebアプリケーションを簡単に作れるようになったので感じを掴むために…
ScalaベースのフレームワークでクラスのメタデータからSwaggerなどを生成できるものがあるのですが、専用のアノテーションやオブジェクトを使って情報を記述しておく必要があり、特にパラメータの説明などはScaladocに書いたものをそのまま使えればいいのに…
GitBucketに以前からGitBucketのバッシュレポートでStackOverflowErrorが発生するというバグレポートが上がっていたのですが、最近直接の知り合いからも言われたので重い腰を上げて修正にトライしてみることにしました。 github.com 原因は以下のようなコー…
技術書典で販売されていた同人誌がインプレスR&Dさんから電子書籍&オンデマンドで発売されたものとのことで、Scala初心者向けの入門用書籍にどうだろうと思い、Kindle版を購入して読んでみました。 Scalaをはじめよう! ─マルチパラダイム言語への招待─ (技…
AlpakkaにはElasticsearch用のコネクタも含まれていて、これは元々自分がコントリビュートしたものなのですが、これまではFlow/Sinkによるバルク書き込みはindexとupsertにしか対応していませんでした。また、1つのストリームでindexとupsertを混ぜることも…
Akka Streams用のコネクタを提供するAlpakkaにはXMLサポートも含まれており、XMLの読み込み・書き込みを行うためのFlowやSinkを利用することができます。 しかし読み込みはXMLのパースイベントをストリームするだけなので、実際には下流の処理で状態を管理し…
Akka Streams用の様々なコネクタを提供するAlpakkaですが、もちろんAWS Kinesis用のコネクタも含まれています。 しかし、書き込むためのFlow/Sinkは普通に使える感じのものなのですが、読み込むためのSourceはライセンスの問題からKCLを使ったコネクタを取り…
Prismaは、様々なデータベースをバックエンドにGraphQLのスキーマからCRUDを行うためのエンドポイントを提供するプロキシとして動作するミドルウェアです。最近$4.5Mの資金調達をしてちょっとだけ話題になりました。 www.prisma.io Prismaが提供するソフトウ…
PlayのCache APIのバックエンドにRedisを使えるようにするプラグインがあり、以前はTypesafe社によってメンテされていたのですが、現在はメンテナンスが停止してしまっています。 github.com このプラグインはバックエンドにJedisとJedisのScalaラッパーであ…
Apache PredictionIOとApache ZeppelinはどちらもApache Software Foundationのプロジェクトです。PredictionIOはSparkML / MLlibベースの機械学習アプリケーションを開発・運用するためのプラットフォームを提供するもので、ZeppelinはSpark / SparkSQLを使…
先日のScalaMatsuri 2018でTwilioの方が発表されていた、SwaggerからAkka HTTP用(http4sにも対応している)のコードを生成するコードジェネレータがGitHubで公開されていました。 github.com 発表を聞いていて良さげな感じだったのでちょっと試してみました…
ScalaDays 2018 NewYorkのタイムテーブルが公開されていましたので、完全に個人的な趣味で気になるセッションを列挙してみたいと思います na.scaladays.org Type-driven Development (Workshop) カンファレンスの前日と前々日行われるワークショップでは「Ty…
Scalaのバージョンアップはなぜ大変なのか? GitBucketはもうかれこれ5年近く開発を継続しており、Scalaのメジャーバージョンアップも何度か経験してきました。ScalaのバージョンアップはJavaと比べるとかなり苦労することが多いのですが、それはScalaのバー…
Akka HTTPはプリミティブなHTTPツールキットであり、標準ではセッション管理の機能を持っていません。Akka HTTPにセッション管理機能を追加するためのライブラリとしてSoftwareMill社が開発しているakka-http-sessionというものがあります。 github.com この…
GitBucketではずっとSlickを使っているのですが、クエリを簡単に記述するためにちょっとした便利機能を追加しています。 1つめはこんな感じのエクストラクタ。以前吉田さんにTwitterかなにかで教えてもらったもの。 object ~ { def unapply[A, B](t: (A, B))…
GitBucketでの長年の課題の1つがGitリポジトリのスケールアウトと冗長化でした。Gitリポジトリを格納するストレージに分散ファイルシステムを使うというのは1つの解決策になりますが、分散ファイルシステムの運用はなかなか大変です。もっと手軽に使い始めて…
少し前にScala CenterからBloopというビルドツールがアナウンスされました。 github.com 実際に動かしてみたわけではないのですが、READMEやソースコードなどからどのようなものかは大体掴めるので簡単にまとめておきます。興味のある方は是非試してみて欲し…