タグ

scalaに関するkimutanskのブックマーク (115)

  • ScalaCheck + ScalaTest で Property-Based Testing する | DevelopersIO

    こんにちは、山崎です。 ひとつのテストをたくさんのテストデータに対して実施したい時、fixtureにテスト用のデータを定義するというのが良くあるパターンだと思います。しかし、データの構造を変更するたびに必要になる、fixtureの大量のテストデータの手動での変更は辛い作業になってしまうことが多いと思います。 そこで今回は、データをランダムに生成することでそんな悩みを解決するProperty-Based Testingを、ScalaCheckとScalaTestにより実行する方法についてご紹介します。 Property-Based Testingとは ランダムに生成された値を使用してテストを行うことで、テスト対象のコードの満たすべき性質を検証するテストです。 今回はScalaのProperty-Based TestingのライブラリであるScalaCheckを使用します。 さっそく例を見てい

    ScalaCheck + ScalaTest で Property-Based Testing する | DevelopersIO
    kimutansk
    kimutansk 2017/11/01
    大抵テストデータをファイルにランダム生成してやってましたが、こちらの方がいいか・・・
  • Non-Functional Programming in Scala

    28. mutableコレクション ループしながら詰め替えるような処理で使いがち val list = ... val map = mutable.Map("some" -> 0, "none" -> 0) list.foreach { x => if (x.nonEmpty) { map.put("some", map("some") + 1) } else { map.put("none", map("none") + 1) } }

    Non-Functional Programming in Scala
    kimutansk
    kimutansk 2017/09/10
    JavaGroovyとかから入ってきた人間からすると、このくらいの落としどころの方が使いやすいですね。自分で書いてる際の基準もほぼこの発表と同じでした。
  • Implicit 再入門

    class: center, middle # Implicit 再入門 Scala関西Summit 2016/10/08 --- class: left, middle ## 自己紹介 * 中村 学(Nakamura Manabu) * [@gakuzzzz](https://twitter.com/gakuzzzz) * 株式会社 Tech to Value * Japan Scala Association --- class: left, middle # [Scala Matsuri 2017](http://2017.scalamatsuri.org/) ## CFPとスポンサー募集中! --- class: center, middle ## **Implicit** と聞いて ## まず何を思い浮かべるでしょうか? --- class: center, middle ##

    kimutansk
    kimutansk 2016/10/10
    こういう動機でありましたか。implicitの機能は使っているうちにわかれど、そもそもこの機能が作られた理由は知らないまま降りまわれている感はありましたので。
  • はてなにおけるマイクロサービスとScala / Microservices and Scala at Hatena

    Scala関西Summit 2016 (http://summit.scala-kansai.org/) の発表資料です。

    はてなにおけるマイクロサービスとScala / Microservices and Scala at Hatena
    kimutansk
    kimutansk 2016/10/09
    これ、新決済が現行の機能をどう削って構築して、どのタイミングでリプレースかけたか(または部分的にやっていったか)が気になるところですね。
  • GitHub - jsuereth/scala-arm: This project aims to be the Scala Incubator project for Automatic-Resource-Management in the scala library

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - jsuereth/scala-arm: This project aims to be the Scala Incubator project for Automatic-Resource-Management in the scala library
    kimutansk
    kimutansk 2016/05/18
    Scalaでのtry-with-resouce構文、LoanPatternを自分で作るのが微妙でしたので、scala-arm使えばいい感じですか。適度に小さく、依存性も控えめ。
  • 【セッションレポート】 Developers.IO 2016 in Osaka で ゲンバのクリーンアーキテクチャを発表しました! #cmdevio2016 | DevelopersIO

    CM Developers.IO 2016 in Osaka 二週間以上も前のことになりますが、Develpers IO in Osaka 2016 で ゲンバのクリーンアーキテクチャと題して、クリーンアーキテクチャ を用いて、現場でモバイルバックエンドAPIをどのように開発しているかについて発表しました。 発表スライド Content of session 当日発表したセッションの概要です。 クリーンアーキテクチャとは Clean codeの著者であるRovert C.Martin氏が提案したアーキテクチャです。外界(API I/F, DB Schema, 外部システム)に依存しないコードをどのように記述し、パッケージ等を整理するかについて明確な方針を与えます。 外部に依存しないコードを記述するために DI(依存性注入) と DIP(依存性反転の原則)を用いて外部に依存するコードの抽象を

    【セッションレポート】 Developers.IO 2016 in Osaka で ゲンバのクリーンアーキテクチャを発表しました! #cmdevio2016 | DevelopersIO
    kimutansk
    kimutansk 2016/04/22
    「Entitiesレイヤのサービスはインフラに依存しない名前」はなるほど。名前で依存していればコードの依存先はともかく、実態はインフラに依存していることになる。
  • 最新DDDアーキテクチャとAkkaでの実装ヒントについて

    DDD+CQRS+Event SourcingとAkkaでの実装ヒントを解説。

    最新DDDアーキテクチャとAkkaでの実装ヒントについて
    kimutansk
    kimutansk 2016/03/26
    Lagom自体がCQRS+ESを特化サポートする存在として尖らせるなら、その点は明確にSpring Cloud系とは差分になる。後はそれを使いこなせるチームがどこまでいるかという問題になりますか。
  • Strategic Scala Style: Principle of Least Power

    The Scala language is large and complex, and it provides a variety of tools that a developer can use to do the same thing in a variety of ways. Given the range of possible solutions to every problem, how can a developer choose which one should be used? This is the first in a series of blog posts aiming to provide style guidelines at a "strategic" level. Above the level of "how much whitespace shou

    kimutansk
    kimutansk 2016/03/06
    Scalaのコーディングスタイルと。基本スタンスがOOでもわかるレベルの平易な構成になっているのはいい感じ。いったんこれをベースに書いてみて、それからですか。
  • Akka HTTP

    Tableau Developers Club Season2 /*TableauAPIすべて*/ Tableau Server REST API Wo...Hiroshi Masuda

    Akka HTTP
    kimutansk
    kimutansk 2016/03/06
    射を組み合わせるという関係上、横断的関心ごとも一か所にまとまるという利点はありますか。後はこれを扱える人間をどれだけ揃えられるかという話ですかね。
  • プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー

    [DI05] Azure Event Hubs と Azure Stream Analytics で、”今を処理”するde:code 2017

    プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
    kimutansk
    kimutansk 2016/03/05
    これは別に『関数型』とは直接関係ないような気はします。言語として若干書きやすくなるのは同意ですが。ただ、本質的にはオブジェクト指向でも同じことは出来る。
  • #cmdevio2016 (レポート: B-1) Scala: Mobile Backend on AWS | DevelopersIO

    Scala: Mobile Backend on AWS cmdevio2016のB-1で、Scalaとモバイルバックエンドのお話をさせていただきました。 レポート スライド 解説 Scala: Mobile Backend on AWSということで、実際にScalaをモバイルバックエンドAPIを開発して感じたことや、AWSネイティブ重視の弊社においてScalaを採用したモチベーションを解説しています。 アジェンダ Scalaのoverview Scalaを使ったモバイルバックエンドAPI なぜAWSネイティブの時代にScalaが必要か How to 説得 your client in "Scala使います!" Scalaを採用した理由や、AWSリソースと密結合でScalaを使ってみたこと、Scalaを採用すると決めたことを上司や顧客にどう伝えるべきかなどをお話させていただきました。 なお

    #cmdevio2016 (レポート: B-1) Scala: Mobile Backend on AWS | DevelopersIO
    kimutansk
    kimutansk 2016/02/20
    ScalaでLambdaで書くのは相性良さそう/MicroServiceは突き詰めればFunction/「Scalaは関数型もできるOOP言語」は個人的な使い方&感覚にはしっくりくる感じですね。
  • 継続モナドが分からなくてもActionContの嬉しさなら何とか分かる気がした。 - だいたいよくわからないブログ

    某会社の某アカウントシステムで使われているという継続モナドコントローラーですが、 今までいまいちよくわかっていなかったのですが友達に教えてもらってなるほど!と思ったので書き記します。 ActionCont 継続モナドコントローラー(ActionCont)については以下の記事で解説されています。 なぜPlayのコントローラで継続モナドを使うと便利なのか? PlayFramework - 継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita 記事では「継続 = 何か残りの処理が呼べるやつ」という雑かつ不正確な認識でもActionCont便利じゃん!使ってみよ!と感じられることを目指すので、なんとなくの概要が頭に入っていればよい(はず)です。(なので、ActionContのメリットなどがもうわかってる人にとっては当たり前じゃん?みたいな内容です) Sc

    継続モナドが分からなくてもActionContの嬉しさなら何とか分かる気がした。 - だいたいよくわからないブログ
    kimutansk
    kimutansk 2016/02/08
    Filterを多段で重ねる場合に一か所に集約される、と。JavaだとAOPでやりますが、Scalaだとそういう仕組みなしでも出来るということですか。修飾用の関数を仕込むイメージ?
  • あなたのScalaを爆速にする7つの方法(日本語版)

    ScalaMatsuri2016でお話しさせて頂いた、あなたのScalaを爆速にする7つの方法の英語版です。 7つの角度でベンチマークを取っています。

    あなたのScalaを爆速にする7つの方法(日本語版)
    kimutansk
    kimutansk 2016/02/05
    こういうの、コレクションや正規表現、APIの内部構造や性質的なものに強く依存するので、結果と理由まで書いてあるのは中々便利ですね。
  • Scalaで型クラス入門 - still deeper

    型クラスについてつらつら考えていたことをまとめておきます。マサカリ歓迎。 型クラスって? 型クラスとは一言でいうと。 アドホック多相 を実現するもの です。モから始まる名状し難いあれとは直接は関係ありません。 ではアドホック多相とは何かというと 異なる型の間で共通したインターフェースでの異なる振る舞いを 定義済みの型に対して拡張する ような多相のことです。 異なる型間での共通したインターフェースでの異なる振る舞い Javaの継承やインターフェース、Scalaのtraitを用いることで、異なる型間での共通したインターフェースを管理することができます。 trait SomeTrait { def someMethod(): String } class Foo extends SomeTrait { def someMethod(): String = "foo" } class Bar ex

    kimutansk
    kimutansk 2016/01/25
    結局のところ、後から既存の型に対してメンバ変数、メソッドを定義できる機構を実現するための媒介クラスを「型クラス」と呼べばいいんですかねぇ・・・
  • アクターの諸刃の剣:非同期のメッセージパッシングと状態隔離対障害モデル、そしてそれを克服するAkka Streamの可能性 - TanUkkiiのブログ

    ScalaのアクターライブラリであるAkkaでは今までHTTPがIOパッケージでサポートされてきませんでした。HTTPのサポートはAkka Streamの開発とともになされたのです。なぜアクターモデルとHTTPをすぐ統合せずにStreamの登場を待つことになったのか?この疑問に答えることはアクターの問題を考えるよい題材です。 Sprayの革新とその限界 SprayはAkkaのアクターモデルとHTTPを統合して成功したフレームワークです。SprayはJVMベースのフレームワークの中で最高のパフォーマンスを誇りました。SprayはServletがもつがスレッドの高速性と、NodeJSがもつイベントループによる大量のリクエストを効率的に捌くことの特性の両立を、アクターによって可能にしたのです。 ところがSprayはアクターモデルならではの問題とも戦うことになります。Reactive Manife

    アクターの諸刃の剣:非同期のメッセージパッシングと状態隔離対障害モデル、そしてそれを克服するAkka Streamの可能性 - TanUkkiiのブログ
    kimutansk
    kimutansk 2016/01/08
    AkkaのActorが持つ問題と、HTTPなどとのセマンティクス(という表現でいいのかな)の違いから発生する問題と。Queryはデータを全てストリーム的に処理できるノリですかね。
  • マイクロサービスにおける障害と Failurewall - Qiita

    こちらは Scala Advent Calendar 2015 25日目の記事です。 Scalist の皆さん、一年間お疲れさまでした。 当記事の目的はマイクロサービス(に限らないですが)における失敗の怖さについて説明することと、それを克服するためのライブラリ、Failurewall を紹介することです。 障害は怖い 障害の連鎖 現代的な Web アプリケーションは多くの依存を抱えています。MySQL のようなデータベースに依存することもあれば、Twitter API のような外部サービスに依存することもあるでしょう。マイクロサービスを実践している環境では社内 Web API に依存していたり、あるいは他のシステムが自分のシステムに依存していたりするかもしれません。 このように優秀なミドルウェアや Web API を組み合わせることで、アプリケーションは高い性能を発揮したり、豊かな機能を提

    マイクロサービスにおける障害と Failurewall - Qiita
    kimutansk
    kimutansk 2015/12/27
    HystrixはJavaである以上Scala程綺麗にはいかないですからね。なので個々の実装ならこちらの方が・・Dashboardはさすがに厳しいでしょうけど。
  • [Adtech Scala Meetup] Scalaで型クラス入門 | Scala Tech Blog

    久しぶりの投稿になります。AMoAd福原(@fukuo33)です。 Adtech StudioではScalaを使っているプロダクトが多くあるので、社内で気軽にScalaの事話せる場があったらいいな〜と思い、ScalaのMeetupを始めてみました。 ※ 音は僕がみんなからScalaの事教えてほしいだけです(^_^;) 言い出しっぺの法則に従い初回は僕の方で型クラスについて説明してみました。 すでに各所で取り上げられているテーマなので新しい話ではないのですが、初心者の方に届けばうれしいです。

    [Adtech Scala Meetup] Scalaで型クラス入門 | Scala Tech Blog
    kimutansk
    kimutansk 2015/12/21
    読めばわかるんですが、Javaから入った人間だとこういう手段を使うということに思い至らず、違う解決手段を取ってしまう。考え切り替えられなくてきっついです。
  • はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化

    はてなブックマークの持つデータには多岐にわたるアクセス制御のための属性があり、一貫した権限確認のしくみが必要となる。できる限り効率的にデータを取得するにはクエリ段階でアクセス制御に基づくフィルタリングが必要となるが、たとえばMySQLで取得した場合とElasticsearchで取得した場合など、複数パスでの整合性も求められる。発表では、半環構造を用いることで整合性を担保するしくみと、一貫性を保つためのScalaでの実装上の工夫を紹介する。 WebDB Forum 2015 C-4: 技術報告セッション http://db-event.jpn.org/webdbf2015/

    はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
    kimutansk
    kimutansk 2015/11/26
    数学的な抽象化をコードでそのまま表現できるメソッドに落とし込むと。この構成美しいですね。
  • Scala: sbt+scalatestテストを並列実行する - Qiita

    class StepSpec extends FlatSpec with ParallelTestExecution { // ... } SharedNothingでStatelessなテストは並列実行にするといいかも。 並列数を指定する 並列数はCPUの数などから自動的に算出されるらしい。 並列数の指定を行う場合は、 build.sbt に明示する。 10並列にする例:

    Scala: sbt+scalatestテストを並列実行する - Qiita
    kimutansk
    kimutansk 2015/11/17
    逆に、Sparkのテストを行う場合には明示的に並列実行をfalseにしておかないとSparkContextの兼ね合いで問題が発生する、と。
  • Matchers in scalatest

    scalatest-matcher.md Matchers in scalatest scalatestでは a should be (b)のように、「検査対象の値が〜であること」(この例では「aはbであること」)という書き方をする。 「〜である」を指定する方法(Matcherと呼ぶ)がいくつかあるので簡単にまとめてみる 等価性(equality) 上記の例のように be の後の()の中に期待値を書く。 name should be ("scala") be の代わりに equal も使える。 name should equal ("scala") be と equalは、特に機能的な違いはないので、テスト記述の文脈的にあっている方を使えば良い。 objectの等価性も判定できる。 1 :: 2 :: Nil should equal (List(1,2)) scala言語における等価性(

    Matchers in scalatest
    kimutansk
    kimutansk 2015/11/13
    ScalaTestのMatcher使い方の日本語解説。基本的な内容であれば英語読むよりこちらの方がいい。