GitBucketに見る長期的なメンテナンスの必要なScalaアプリケーションにおいてScalaのバージョンアップのために留意しておくべきこと

Scalaのバージョンアップはなぜ大変なのか? GitBucketはもうかれこれ5年近く開発を継続しており、Scalaのメジャーバージョンアップも何度か経験してきました。ScalaのバージョンアップはJavaと比べるとかなり苦労することが多いのですが、それはScalaのバー…

akka-http-sessionによるセッション管理

Akka HTTPはプリミティブなHTTPツールキットであり、標準ではセッション管理の機能を持っていません。Akka HTTPにセッション管理機能を追加するためのライブラリとしてSoftwareMill社が開発しているakka-http-sessionというものがあります。 github.com この…

GitBucket 4.21.0をリリースしました

4.21.0には本体およびバンドルされたプラグインにいくつかの問題があったため、修正した4.21.2をリリース済みです。こちらをご利用ください。 https://github.com/gitbucket/gitbucket/releases/tag/4.21.2 Scalaで実装されたオープンソースのGitサーバ、Git…

GitBucketで使っているSlick用のちょっとした便利機能

GitBucketではずっとSlickを使っているのですが、クエリを簡単に記述するためにちょっとした便利機能を追加しています。 1つめはこんな感じのエクストラクタ。以前吉田さんにTwitterかなにかで教えてもらったもの。 object ~ { def unapply[A, B](t: (A, B))…

ZooKeeperによる分散システム管理

最近作っているdistributed-git-serverではクラスタの状態管理にMySQLを使っているのですが、ロックをRDBで実装したり、ハートビートやノードの状態管理などを自前で実装する必要があり、だいぶ面倒だなぁと感じていました。ZooKeeperを使えばこのような課題…

スケーラブルで冗長性のあるGitサーバをどう作るか?

GitBucketでの長年の課題の1つがGitリポジトリのスケールアウトと冗長化でした。Gitリポジトリを格納するストレージに分散ファイルシステムを使うというのは1つの解決策になりますが、分散ファイルシステムの運用はなかなか大変です。もっと手軽に使い始めて…

Scala向けの高速ビルドツールBloopについて

少し前にScala CenterからBloopというビルドツールがアナウンスされました。 github.com 実際に動かしてみたわけではないのですが、READMEやソースコードなどからどのようなものかは大体掴めるので簡単にまとめておきます。興味のある方は是非試してみて欲し…

The Type Astronaut's Guide to Shapeless

先日Scala eXchangeに参加して、海外での予想以上のShapelessの人気ぶりを目の当たりにしたのでちょっと勉強してみようと思い、Underscore社が提供している「The Type Astronaut's Guide to Shapeless」という本を読んでみました。 Underscore社のWebサイト…

2017年の振り返り

2017年もいろいろありました。今年も恒例の振り返りをしてみたいと思います。 仕事関係 今年はサービスから離れてしまったのであまり自分でがっつり開発するという感じではなく、他のチームのサポート的な感じだったのですが、技術的な部分以外で悩むことが…

教養としてのScala勉強会に参加しました

会社の若者たちがScalaの勉強会を開催していたので私もお呼ばれして参加してきました。 d-cube.connpass.com 私は「頑張りすぎないScala」という発表をさせていただきました。 頑張りすぎないScala from takezoe www.slideshare.net これはScala関西で発表…

GitBucket 4.20.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.20.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.20.0 プルリクエストのマージ時にSquashもしくはRebaseが可能に プルリクエストをマージする際に以下の3つのオプ…

Scalaで型クラスをメタプログラミングできるライブラリMagnoliaを使ってみる

MagnoliaはScala界隈ではおなじみのJon Prettyさん作のライブラリで、簡単に言うとケースクラスに対する型クラスのインスタンスを生成するためのマクロを簡単に実装できるライブラリです。Play-JSONのReads、Writes、Formatなどのマクロなどを簡単に作れるも…

ロンドンでエミレーツスタジアムツアーに参加してきました

Scala eXchange 2017参加のため13年ぶりにロンドンを訪れたわけですが、観光する時間があったので愛するアーセナルの本拠地エミレーツスタジアムのスタジアムツアーに参加してきました。 スタジアムには巨大なショップが併設されており、ユニフォームを始め…

Scala eXchange 2017に参加してきました

ロンドンで開催されたScala eXchange 2017でGitBucketのLTをさせていただきました。スライドは以下になります(口頭で話した部分を付け足すなどちょっと修正してあります)。今回もいろいろ反省が多く、修行しなくては…という感じでした。 GitBucket: Git Ce…

Akka実践バイブル アクターモデルによる並行・分散システムの実現

Akka in Actionの日本語翻訳版である「Akka実践バイブル」がついに完成したとのことで翔泳社さんからお送りいただきました。ありがとうございます。 実はこの本は2年ほど前に翻訳を検討していたのですが、当時まだ原著がアーリーアクセス中でいつ完成するか…

AWSの機械学習プラットフォームSageMakerを使ってみた

AWSの新サービスである機械学習プラットフォーム SageMakerを触ってみました。ざっくり言うとデータ処理、学習、作成したモデルをコンテナとしてデプロイするという一連の作業をAWS上で提供されるJupyter Notebookから行うことができるというものです。 aws.…

GitBucketプラグインの開発をサポートするsbtプラグインを作りました

少し前からこんなsbtプラグインを作っていたのですが、使えそうな感じになってきたので紹介記事を書きたいと思います。 github.com このプラグインはGitBucketプラグインのsbtプロジェクトに以下の機能を提供します。 GitBucketのコアライブラリとサーブレッ…

GitBucket 4.19.0をリリースしました

4.19.0には本体およびバンドルされたプラグインにいくつかの問題があったため、修正した4.19.3をリリース済みです。こちらをご利用ください。 https://github.com/gitbucket/gitbucket/releases/tag/4.14.3 Scalaで実装されたオープンソースのGitサーバ、Git…

Apache PredictionIOのインストール方法(バイナリディストリビューション版)

Apache PredictionIOのハウツーについては以前以下の記事でインストール方法からテンプレートを使ったレコメンドAPIのデプロイまでを紹介しました。 takezoe.hatenablog.com 当時のPredictionIOはインストールするにはソースからビルドするべしというかなり…

ロープロファイルなメカニカルキーボードを買ってみた

PC

少し前にネット上で話題になっていたこのキーボードが気になっていたものの青軸ということで躊躇していたのですが、Amazonのレビューを見るとなかなか良さそうだし値段もそこまで高くないので試しに買ってみました。 HAVITメカニカルキーボード低背 青軸Kail…

GitHubのスター数で見るScalaのDBアクセスライブラリ

吉田さんがこういう記事を書いていたので真似してデータベースアクセスライブラリ版を書いてみました。 xuwei-k.hatenablog.com 2009年からのグラフですが、トップ5のスター数の推移はこんな感じ。 slick/slick ★1930 github.com 相変わらずの一番人気。この…

ScalaのシンプルなテスティングライブラリMinitestを使ってみる

Twitterで以下の記事を見てMonixの開発用に作られたというMinitestというテスティングライブラリの存在を知りました。 alexn.org GitHubのリポジトリはこちらです。 github.com ScalaのテスティングライブラリというとScalaTestとSpecs2が双璧ですが、Minite…

IntelliJ IDEAハンズオン――基本操作からプロジェクト管理までマスター

技術評論社さんから今井さんと山本ユースケさんのIntelliJ本をお送りいただきました。ありがとうございます!ScalaIOのためしばらく留守にしていたので受け取りが遅くなってしまったのですが、この週末にざっと目を通してみました。 一週間フランスに行って…

Scalatra 2.6.0をリリースしました

Scala用のSinatraライクなWebフレームワークScalatraの最新バージョン2.6.0をリリースしました。 github.com 今回は新しいバリデーションフレームワークとしてscalatra-formsが追加されました。これは元々GitBucketで使用していたものをScalatra本体の1モジ…

次期Scalatraのバックエンドとしてのhttp4s

Scalatraの次期バックエンドをhttp4sにしようという計画は数年前からありつつ中々進んでいなかったのですが(ブランチに途中まで試みたと思われる残骸があるのですが、そもそもScalatraの開発自体が停滞しており絶賛放置されていました)、そろそろやってみ…

ScalaIO 2017に参加してきました

11月2日、3日にフランスのリヨンで開催されたScalaIO 2017にスピーカーとして参加してきました。このエントリでは参加したセッションの中から印象に残ったものを紹介したいと思います。 Compiling like a boss! Scalaで分散コンパイルによるコンパイル速度の…

Akka HTTPでWebJarsとTwirlを使う

仕事でちょっとしたツール(Webアプリ)を作るのに試しにAkka HTTPを使ってみています。Akka HTTPでJSONを使う方法については以前このブログでも紹介しましたが、 takezoe.hatenablog.com 今回はいわゆるHTMLを返すシンプルな作りの管理ツールなのでJavaScri…

オープンソースの機械学習プラットフォームまとめ

PredictionIOは機械学習を使用したアプリケーションを開発・運用するためのプラットフォームを提供するためのOSSですが、世の中には他にも同じ領域のOSSが存在します。PredictionIO含めて各プロダクトの特徴をまとめてみました(PredictionIO以外はドキュメ…

PredictionIOがApache Software Foundationのトップレベルプロジェクトになりました!

弊社のメンバーもコミッタとして開発に参加しているApache PredictionIOですが、このたびめでたくIncubatorプロジェクトを卒業してトップレベルプロジェクトに昇格することができました。ASFからのリリースには弊社のチーフサイエンティストである@shinsuke_…

GitBucket 4.18.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.18.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.18.0 レビューコメントへの返信フォーム プルリクエストなど、ソースコードにつけたコメントに対して返信するため…