Scala用のRisonパーサを作ってみた

RisonというのはJSONライクかつURLに埋め込みやすいようURLエンコーディングが最小限になるよう設計されたデータフォーマットだそうで、Kibanaなどで使われているそうです。日本語だと以下の記事が詳しいです(自分もこの記事を見てRisonを知りました)。 qi…

Java/Scala用機械学習ライブラリ「Smile」を使ってみる

手軽に使える機械学習ライブラリというとPythonのscikit-learnが有名ですが、Java/ScalaでもSmileというライブラリがあったので軽く試してみました。 github.com まずはリリースページからzipファイルをダウンロードして適当な場所に展開します。bin/smileで…

Scalaのテストケース内でDockerコンテナを使う

GitBucketではもともとデータベースを使ったテストに組み込みMySQLやPostgreSQLの機能を提供するライブラリを使っていたのですが、これらのライブラリのメンテナンスが怪しくなかなか新しいバージョンに対応したテストを行うことができないという問題があり…

2018年の振り返り

今年も今日で仕事納めなので1年の振り返りを書いてみたいと思います。 Arm Treasure Dataに転職しました 前職であるビズリーチでは割と自由にやらせていただいていたのですが、先のことも色々考えないとなと思っていたところ(とは言っても積極的に転職活動…

GitBucket 4.30.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.30.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.30.0 ChangeLogの自動生成 リリースの作成時にGitのコミットログから直前のタグとの間の更新履歴を自動生成できる…

Akka Streamsで簡単にリトライするFlowを作る

akka-http-contribというリポジトリにRetryというユーティリティがあり、リトライ処理が簡単に書けるようだったので試しに見てみました。 github.com テストケースによると使い方はこんな感じです。 def flow[T] = Flow.fromFunction[(Int, T), (Try[Int], T…

SONYのオープンイヤー型イヤホンSTH40DJPを買ってみた

以前ビデオ会議の際にオープンイヤー型のイヤホンなら自分の声も聞こえて便利という話を聞いていたのですが、最近自分もオンラインミーティングや英会話をやる機会が多いので購入してみました。 ソニー SONY イヤホン STH40DJP : インイヤー / 開放型 / デュ…

Scala関西Summit 2018に参加しました

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日 上記のツイー…

Scalafixで未使用のインポート文を削除する

Scalaで未使用のインポート文を自動で消せないかという話があり、Scalafixだとできそうだったのでやってみました。 github.com ドキュメントに書かれている通りでいけるのですが、手順をまとめておきます。 まずはproject/plugins.sbtにsbtプラグインを追加…

実践Scala入門

「実践Scala入門」を技術評論社さんからお送りいただきました。Scalaの入門書というとコップ本を思い浮かべる方が多いと思いますが、下のツイートでも書いている通りこの本はかなりコンパクトです。 技評さんから実践Scala入門をお送りいただきました。あり…

sbtサーバとRustで書かれたsbtクライアント

Scalaのビルドツールsbtには1.xからLanguage Server Protocol 3.0に対応したサーバモードが実装されており、常駐させたサーバに別プロセスから接続してコマンドを実行することができます。サーバモードはIDEやエディタプラグインのために実装されたものだと…

プロジェクト管理に便利なGitBucketプラグイン

GitBucketはプラグイン機構を持っており、様々な機能をプラグインで拡張することができます。最近プロジェクト管理に便利なプラグインを作成されている方がいらしたので簡単に紹介させていただきたいと思います。 カンバンプラグイン イシューやプルリクエス…

SalesforceのScala製AutoMLライブラリ「TransmogrifAI」を触ってみた

AutoMLはこれまで専門のエンジニアを必要としていたような機械学習の処理を自動化し、誰でも機械学習を利用できるようにするという分野です。PythonだとTPOTなどのライブラリが存在しますが、先日Salefsforce社からScala + SparkベースのAutoMLライブラリが…

入門 PySpark ―PythonとJupyterで活用するSpark 2エコシステム

Sparkはちょくちょく触る機会があるのですが、PySparkは使ったことがなかったので読んでみました。最近のSparkの流れを見ていてもPythonのサポートが強化されてきているので軽く押さえておきたいなと…。 入門 PySpark ―PythonとJupyterで活用するSpark 2エコ…

GitBucket 4.29.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.29.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.29.0 オフィシャルDockerイメージが利用可能に DockerHub上でオフィシャルのDockerイメージが利用可能になりまし…

AirframeのFinagleサポートを試してみる

AirframeはScala向けのDIコンテナを中心とした様々な便利機能を提供するプロジェクトなのですが、最近airframe-httpとairframe-http-finagleというモジュールが追加され、Finagleを使ったWebアプリケーションを簡単に作れるようになったので感じを掴むために…

JIRAのチケット番号をリンクに変えるChrome拡張が便利

仕事でもOSS活動でもJIRAを使うことがよくあるのですが、JIRAのチケット番号を自動的にリンクにしてくれるChrome拡張を見つけたので試してみました。 chrome.google.com リンク先のJIRAは以下のような画面で設定できます。 簡単なものですが、GitHubやGmail…

Docker/Kubernetes 実践コンテナ開発入門

職場では様々な用途にDockerが活用されていたり、今後はKubernetesを使いそうな気配もあるので予習しておこうと思い、最近出たばかりのこの書籍を購入してみました。 Docker/Kubernetes 実践コンテナ開発入門作者: 山田明憲出版社/メーカー: 技術評論社発売…

クローリングハックの韓国版が出ました

前職の同僚諸氏と執筆したクローリングハックという書籍が韓国語に翻訳されたとのことで翔泳社さんから一冊お送りいただきました。 表紙などのデザインモチーフは日本語版ではクモだったのですが、これは…カニ??? まあ、クモがちょっとというのはわかるの…

GitBucket 4.28.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.28.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.28.0 プラグインインストール時にプロキシを利用可能に プラグインリポジトリからのインストール設定を"System se…

Scaladocを実行時に読み取れるようにするコンパイラプラグイン

ScalaベースのフレームワークでクラスのメタデータからSwaggerなどを生成できるものがあるのですが、専用のアノテーションやオブジェクトを使って情報を記述しておく必要があり、特にパラメータの説明などはScaladocに書いたものをそのまま使えればいいのに…

相対時間で表記した期間をパースするJavaライブラリを作ってみた

正確に言うと自分で作ったのではなく、AirframeというScalaライブラリに相対時間で表記した期間をパースしてくれる機能があるのですが、わけあってこれをJavaにポーティングしてみました。 github.com Maven Centralにdeployしてあるのでpom.xmlに以下の依存…

SlickでStackOverflowErrorが発生する場合の対処法

GitBucketに以前からGitBucketのバッシュレポートでStackOverflowErrorが発生するというバグレポートが上がっていたのですが、最近直接の知り合いからも言われたので重い腰を上げて修正にトライしてみることにしました。 github.com 原因は以下のようなコー…

トレジャーデータ株式会社に入社しました

Good morning, my new workplace! pic.twitter.com/b4jEO3jun8— Naoki Takezoe (@takezoen) 2018年8月1日 Good morning, my new workplace! pic.twitter.com/NZfDYWvHUS— Naoki Takezoe (@takezoen) 2018年8月9日 トレジャーデータに入社したと思ったらいつ…

株式会社ビズリーチを退職しました

Today is my last day at BizReach. I learned a lot of things here. Thanks for exciting days over 4 years! pic.twitter.com/wrPANaxbKW— Naoki Takezoe (@takezoen) 2018年7月31日 本日、2018年7月31日をもって4年と4ヶ月勤務した株式会社ビズリーチを…

GitBucket 4.27.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.27.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.27.0 ブラウザ上でタグを作成可能に リポジトリビューア上でタグを作成できるようになりました。 EditorConfigの…

Scalaをはじめよう! ─マルチパラダイム言語への招待─

技術書典で販売されていた同人誌がインプレスR&Dさんから電子書籍&オンデマンドで発売されたものとのことで、Scala初心者向けの入門用書籍にどうだろうと思い、Kindle版を購入して読んでみました。 Scalaをはじめよう! ─マルチパラダイム言語への招待─ (技…

Akka StreamsのElasticsearchコネクタでupdateやdeleteもできるようにした

AlpakkaにはElasticsearch用のコネクタも含まれていて、これは元々自分がコントリビュートしたものなのですが、これまではFlow/Sinkによるバルク書き込みはindexとupsertにしか対応していませんでした。また、1つのストリームでindexとupsertを混ぜることも…

Akka Streamsで巨大なXMLをストリーム処理する

Akka Streams用のコネクタを提供するAlpakkaにはXMLサポートも含まれており、XMLの読み込み・書き込みを行うためのFlowやSinkを利用することができます。 しかし読み込みはXMLのパースイベントをストリームするだけなので、実際には下流の処理で状態を管理し…

AWS Kinesisからの読み込みをAkka Streamsで行う

Akka Streams用の様々なコネクタを提供するAlpakkaですが、もちろんAWS Kinesis用のコネクタも含まれています。 しかし、書き込むためのFlow/Sinkは普通に使える感じのものなのですが、読み込むためのSourceはライセンスの問題からKCLを使ったコネクタを取り…