Scala

シンプルなScala用ビルドツール「cbt (Chris's Build Tool)」を試してみる

Slickのコミッタとして有名なJan Christopher Vogtさんが作っているcbt (Chris’s Build Tool) というScala用のビルドツールがあります。*1 github.com 昨年参加したScala Days NewYork 2017でもセッションがあり、興味本位で参加したのですが、sbtのdisなど…

Scala Days 2017のタイムテーブルが公開されました

ここ数年は毎年アメリカとヨーロッパで開催されているScala Days、一昨年はサンフランシスコとアムステルダム、昨年はニューヨークとベルリンでしたが今年はシカゴとコペンハーゲンで開催されるようです。 www.lightbend.com 以下、シカゴとコペンハーゲンそ…

giter8テンプレートの作り方

giter8の復活 その昔、Scala世界にはgiter8というツールがありました。GitHub上のテンプレートプロジェクトをベースにプロジェクトを作成できるというなかなか便利なものでしたが、初期の頃はWindowsでの利用に問題があったり、Typesafe Activatorという用途…

Scala用のDIライブラリAirframeを試してみた

ScalaではJavaと違ってDIコンテナの必要性を感じることがあまりないのですが、フレームワークを作っているとユーザコードにフレームワークが提供するコンポーネントを供給したり、フレームワーク自体を拡張するための拡張ポイントを提供するためにDIコンテナ…

Scala用のREST APIフレームワークResty 0.0.5をリリースしました

Scala用の超シンプルなREST APIフレームワークとしてRestyというものを作っています。 takezoe.hatenablog.com github.com 前回ブログで書いてからちょこちょこいじりつつバージョンアップを重ねているので、前回のブログで紹介できなかった機能や、これまで…

RestyというScala用のREST APIフレームワークを作ってみました

GitHubリポジトリはこちら。 github.com なぜ作ったのか? Scala業界のフレームワークは関数型的なアプローチのものが主流になっています。これらのフレームワークはノンブロッキングI/Oや並列処理をうまく扱うことができますが、本質的な複雑さをもたらしま…

Scala 2.12に対応したScalatra 2.5がリリースされました

ここしばらく作業をしていたScalatra 2.5が先日無事リリースされました。 Scalatra 2.5.0 released, with Swagger 2.0, Scala 2.12 support, and many other changes. Get it while it's hot! https://t.co/1Dcf3rmdme— Scalatra (@scalatra) November 21, 2…

市ヶ谷Geek★Nightで「Scalaによるタイプセーフなフロントエンド開発」という発表をしました

普段フロントエンド開発は若者に丸投げしているバックエンドおじさんですが、ここのところScala Warriorを開発するためにScala.jsを触っていたということもあり、お声がけいただいてScala.jsの紹介をさせていただきました。 ichigayageek.connpass.com 発表…

ScalaでタイプセーフにCSSを記述できるScalaCSSを使ってみる

Scala Warriorではユーザが入力したコードを実行する目的でScala.jsを使っているのですが、せっかくScala.jsを使っているのでフロントエンドもできるだけScalaで書いてみようと思い、ScalatagsやScalaCSSなどを試しています。今日はScalaCSSについて紹介して…

はてな × BizReach合同Scala勉強会を開催しました!

Scala関西 Summit2016の翌日、京都のはてなさんオフィスに伺わせていただき弊社とはてなさんの合同Scala勉強会を開催しました。 今回はクローズドな勉強会ということで普段あまり外には出せないようなリアルな悩みなどもご相談させていただいたのですが、当…

Scala Warriorをリリースしました

昨年から密かに作り続けていたScala WarriorというWebアプリケーションをScala関西 Summit2016にあわせてリリースしました。 github.com これはRuby WarriorにインスパイアされたScala学習用のゲームで、Scalaコードを書いて侍を操作しステージをクリアして…

Scala関西 Summit2016に参加してきました

10月8日(土)大阪で開催されたScala関西 Summit2016にスポンサーとして参加させていただきました。 summit.scala-kansai.org 私自身は前職時代を含めここ4年ほどはScalaで仕事ができるようになっていますが、日本だけでなく世界的に見てもScalaの普及度とい…

第十七回 #渋谷java でScalaのマクロの紹介をしました

最近Scalaのライブラリを作っていて自分でマクロを書く機会があったのでScalaのマクロを簡単に紹介をしてみました。発表資料はこちらです。 Macro in Scala from takezoe www.slideshare.net Lispはプログラム=データ構造なのでデータを操作する感覚でマク…

Akka Typedを試してみる

MEAPが開始してから丸4年、Akka in Actionがようやく完成したそうです。 Received my first copies today, #akka in action is finally finished and rolling of the press! pic.twitter.com/nx1UmBRUwl— Ray (@RayRoestenburg) September 18, 2016 完成版の…

Scalaでコンパイル時にSQLをバリデーションするマクロを作ってみた

以前からscala-jdbcというScala用のシンプルなJDBCラッパーを作っています。 github.com このscala-jdbcにコンパイル時にSQLのバリデーションを行うためのマクロを追加してみました。 たとえば以下のように少し間違ったSQL(カラム名の後ろに余計なカンマが…

Scala関西 Summit 2016に参加します

来る10月8日(土)に大阪で開催されるScala関西 Summit 2016ですが、弊社もスポンサーとしてサポートさせていただいています。 summit.scala-kansai.org スポンサーセッションでは「Play2+SlickだけじゃないScalaのWeb/DBフレームワーク事情」という発表をさ…

blocking−slickで大体Slick2と同じメソッドが使えるようになりました

先日からblocking-slickというSlick3にSlick2風のブロッキングAPIを追加するライブラリを作っています。 github.com 基本的にはQueryオブジェクトにimplicit conversionで同期実行用のメソッドを生やすという方式で実装していたのですが、更新系のメソッドが…

Slick3用のブロッキングAPIを作ってみました

github.com なぜ作ったのか? 事の発端はSlickのこのイシューです。 github.com GitBucketはServletベースということもあり、Slick3のDBIOは非同期実行のメリットが得られないのに複雑さだけが劇的に向上してしまうこと、プラグイン開発者にもモナディックな…

Akka HTTPでJacksonを使ってJSON変換をする

Akka HTTPではspray-jsonを使用するモジュールが提供されており、これを使用することでJSONで受け取ったリクエストをオブジェクトに変換したり、戻り値として返却したオブジェクトをJSONとしてレスポンスすることができます。 takezoe.hatenablog.com が、sp…

HystrixをScala / Playアプリケーションから使ってみる

前回はHystrixの簡単な紹介を書きました。 takezoe.hatenablog.com HystrixはJavaライブラリなのでもちろんScalaからも使うことができるのですが、そのままだと若干Scalaからは使いにくい部分もあります。今回はScala(主にPlay Framework)でHystrixを使う…

ScalaCheckでケースクラスを生成するジェネレータの作り方

先日社内勉強会でJavaでのプロパティベーステストライブラリとしてjunit-quickcheckが取り上げられていました。 今週の社内勉強会は「やる夫と学ぶプロパティベーステスト」だった。junit-quickcheckが紹介されてたんだけど確かに日本語情報少ない。ScalaChe…

Akka HTTPでJSONを使ってみる

Akka HTTPの入門についてはセプテーニさんのこちらの記事がわかりやすいです。 labs.septeni.co.jp APIサーバにAkka HTTPを使ってみようかなぁと思っているので試しにリクエスト、レスポンスにJSONを使うのをやってみました。spray-jsonを使うモジュールが用…

IntelliJのScaladocのインデントの設定

以前書いたIntelliJのScaladocのインデント設定ですが… takezoe.hatenablog.com IntelliJとScalaプラグインをバージョンアップしたら場所が変わっていました。以前の設定も引き継いでくれないみたいです。 「ScalaDoc」タブの「Use scaladoc indent for lead…

Scala用のシンプルなJDBCラッパーを作ってみた

以前からちょっとしたものを作るときに便利なIO関連のユーティリティをまとめたScalaライブラリを作っていたのですが、最近ScalaのIOライブラリはbetter-filesがよさげなのでこちらに乗り換えるのがいいかなと思ったところ、自作ライブラリにあるJDBC周りの…

Scala Days 2016 NewYork 3日目

Scala Days3日目です。体力の限界を感じておりまさに瀕死です。今日こそはサイバーエージェントさんより先にブログを公開するんだと頑張って書こうと思っていたのですが意識を失ってしまいました。 Spark 2.0 今日のキーノートはDatabricks社のCTOであるMate…

Scala Days 2016 NewYork 2日目

ニューヨーク寒いです。今日もサイバーエージェントさんに負けずに参加したセッションを紹介したいと思います。 Introducing the Scala Center 今日はHeatherさんのキーノートから始まりました。 Scala CenterはScalaの教育コンテンツの開発とオープンソース…

Scala Days 2016 NewYork 1日目

ニューヨークへの12時間のフライトに耐えてScala Days 2016にやって来ました! 昨年のサンフランシスコはのどかな雰囲気でしたが、ニューヨークの都会感がすごいです。 初日は昨年と同じく夕方からOdersky先生のキーノートで開始しました。Scalaの今後の展望…

Scalaのコンパクトな便利ライブラリ「Hamsters」を調べてみた

最近HamstersっていうScalaライブラリを発見しました。関数型っぽいコンテナや機能を提供するものなのですが、非常にコンパクトでなおかつ関数型プログラミングに慣れていなくても簡単に使えるというものです。 github.com 使い方はREADMEを見ればだいたいわ…

サーキットブレーカー付きの非同期RESTクライアントを作ってみた

Lagomを触っていて、サーキットブレーカー付きのHTTPクライアントがあるといろんなフレームワークと組み合わせて使えて便利かも、と思ったのでScala用のものを作ってみました。 github.com RESTクライアントとしての基本的な使い方はこんな感じ。 import res…

Akka Persistenceでメッセージの到達保証をしてみる

前回はAkka Persistenceでアクターの状態を保存するということをやってみましたが、今回は「メッセージを永続化することでメッセージがアクターに到達することを保証する」ということをやってみたいと思います。 アクターはこんな感じになります。 class Sam…