タグ

scalaに関するhohoho_ho2005のブックマーク (312)

  • 2019/05 Scala導入を検討したい人に向けた情報をまとめてみた

    scalakb20190523.md 2019/05 Scala導入を検討したい人に向けた情報をまとめてみた Scalaとは? The Scala Programming Language 開発元はLightbend 社 と EPFL(Odersky先生がいるスイスの大学) 2019/05 現在、最新バージョンは 2.12 Dottyと呼ばれる新しいScalaコンパイラが開発されている Scala3 2019/05 現在0.15.0-RC1 2系との互換性はなく、移行ツールが用意される いつ出るのかもまだよくわからないため、おそらくこちらがメインストリームになるのはまだ数年先であると言われているが・・・? 特徴 JVM言語 オブジェクト指向と関数型言語両方の特性を併せ持つ 個人的にScalaの好きなところ 環境構築が簡単 JDKとsbt(ビルドツール)さえあればいい Scalaのコンパイラ

    2019/05 Scala導入を検討したい人に向けた情報をまとめてみた
  • ScalaにおけるHTTP Client サンプルコード集+α - Qiita

    用途によりけりですが、単にHTTPリクエストを出したいだけであれば、シンプルなscalaj-http,skinny-frameworkが使い勝手が良いと思います。Future型を使ってスマートにレスポンスを取得したい方はAkka,Dispatchあたりが使えると思います。 HTTP Clientサンプルコード サンプルコードではリクエストを送信し、取得したレスポンス結果をコンバートして受け取るところまでを想定しています。 ※サーバー側は含まれておりません。 各種ライブラリVer name := "scala-http-client-sample" version := "0.1" scalaVersion := "2.12.8" libraryDependencies ++= Seq( //akka "com.typesafe.akka" %% "akka-http" % "10.1.7"

    ScalaにおけるHTTP Client サンプルコード集+α - Qiita
  • 【2018年度版】セプテーニ技術読本の無料配布 - FLINTERS Engineer's Blog

    こんにちは。セプテーニ・オリジナルの池田です。 弊社は3年前よりScalaMatsuriに将軍スポンサーとして協賛しており、毎年「技術」をノベルティとして配布しております。 今年で3冊目となりました! ▲ 左から2016年、2017年、2018年度の技術 この技術は有志で作成しており、セプテーニ・オリジナルのエンジニアが興味のある技術分野について知見を詰め込んだになります。 これまでScalaMatruriや新宿 Geek Loungeなどで配布していましたが、より多くの方に読んで頂きたくPDFを公開します。 【2018年度版】セプテーニ技術 今年の技術の内容 関数型Scalaでの関心の分離を考慮したエラーハンドリング 日語プログラミングとScala SBT NATIVE PACKAGERを駆使してPlayFrameworkのデプロイ作業を軽減したい Dotty で

    【2018年度版】セプテーニ技術読本の無料配布 - FLINTERS Engineer's Blog
  • 順序保証型分散ストリーム処理 - MicroAd Developers Blog

    はじめまして.マイクロアドの新卒3年目のサーバサイドエンジニアの松宮です. 主にMicroAd BLADEという広告配信プラットフォームの開発をしています. サーバサイドの開発言語はJava/Scalaが中心で,最近はScalaの利用シーンが増えてきました. ということで日はScalaが活躍するお話です. タイトルの通り,順序保証型分散ストリーム処理 についてお話します. 上記用語は分散ストリーム処理に順序保証型という単語をくっつけた造語で,分散ストリーム処理において時系列を保持して処理を実行する方法です. 「大量のデータを順番に処理したい!」という方がいらっしゃれば是非ともご一読頂ければ幸いです. 順序保証型分散ストリーム処理とは そもそもストリーム処理とは,無尽蔵に生成されるデータを半永久的に処理し続けることを指し,アクセスログやセンサーから得られるログデータなどの時々刻々と生成され

    順序保証型分散ストリーム処理 - MicroAd Developers Blog
  • scala.concurrent.Future をもう一歩理解したい

    Scala 界隈ではお天気の次に共通の話題にできる (嘘) scala.concurrent.Future ですが、一年弱使用してきていまだにその挙動について上手く整理できておらずどことなく苦手意識がありました。例えば Future.successful(1) flatMap { x => Future.successful(2) flatMap { y => Future.successful(3) map { z => x + y + z } } } というコードを見たときに、全体としては Future[Int] 型が得られ、計算結果が 6 になるということは理解していますが、その中でどんな Future が生成されどのように最終的な結果が得られるのかはあまりイメージできていませんでした。 そこで Future とより向き合うために実装から必要最低限のみを抽出した実装を自分で作ってみ

  • 出張Scalaハンズオン! in 会津大学 - Opt Technologies Magazine

    11/16(木)、会津大学さんにて、授業の一環で出張Scalaハンズオンを実施させていただきました! ハンズオンの様子をレポートします。 あいさつ 会津大学さんへ出張してきました Scala入門ハンズオン (by cedretaber & lagénorhynque) プログラミング言語「Scala」 JVM オブジェクト指向・関数型のハイブリッド言語 Scalaの基文法 値とリテラル 変数定義 制御構文 パターンマッチ メソッドと関数オブジェクト map メソッド(高階関数) 平均値を表示するCLIツールを作ってみよう scalaコマンドとsbt コマンドライン引数を取り扱う 標準入力から読み取る 文字列を数値に変換する 講師からのコメント (by cedretaber) 御礼 最後に あいさつ こんにちは! オプトテクノロジーズ 採用担当の井上です。鍋と日酒がより一層美味しい季節に

    出張Scalaハンズオン! in 会津大学 - Opt Technologies Magazine
  • Scala入門 基礎編「Scalaの書き方を理解しよう」 - Qiita

    $ mkdir scala_project $ cd scala_project $ echo 'scalaVersion := "2.12.4"' > build.sbt $ sbt ... sbt:scala_project> object MyApp { def main(args: Array[String]): Unit = { // 変数 // - val: 値の再代入ができない immutable // - var: 値の再代入ができる mutable // val msg: String = "Hello world" // val msg = "Hello world" // 型推論(データ型が自明の場合) var msg = "Hello world" msg = "Hello world again?" println(msg) } } object MyApp {

    Scala入門 基礎編「Scalaの書き方を理解しよう」 - Qiita
  • Introduction · HonKit

    ScalaでのProtocol Buffers これは、ScalaでProtocol Buffersを使用する方法についてのドキュメントです。 また、ScalaでのgRPCについても解説します。

  • PlayFrameworkやAkka HTTPでのスレッドプール分割のススメ - Qiita

    概要 PlayFrameworkやAkka HTTPをつかっていて、うまくパフォーマンスがでなかった経験ありませんか? もしかしたらそれ、スレッドプールをうまく分割できていなかったからかもしれません。 PlayFrameworkやAkka HTTPなど、ノンブロッキングI/Oを前提につくられたライブラリやフレームワークでは、ブロッキングI/Oに十分な注意を払う必要があります。 具体的に言うと、ノンブロッキングI/Oの処理のみを実行するスレッドプールと、ブロッキングI/O(I/O待ちによりスレッドを占有する)を含む処理を実行するスレッドプールは分割し、それぞれ適切に設定する必要があります。 なぜスレッドプールをわけるか ノンブロッキングI/Oはその特性上、I/O待機中にCPUやスレッドを専有せず、他の処理に割り当てることができます。 この特性を活かし、PlayFrameworkやAkka H

    PlayFrameworkやAkka HTTPでのスレッドプール分割のススメ - Qiita
  • Apache FlinkとScalaでセンサーデータをウィンドウ集計をする - Qiita

    Spark Streaming、Kafka Streamsに続いてストリーム処理フレームワークのApache Flinkを試します。Spark StreamingはPython、Kafka StreamsはJavaで書いたのでApache FlinkはScalaで書いてみようと思います。 Apache FlinkもKafkaと同様にScalaで書かれています。Scalaに特徴的な後方互換性を重視せずアグレッシブな開発をしています。そのためネットで検索できる情報もどんどん古くなりAPIもDeprecatedやPublicEvolvingになりがちで初学者には少し入りづらい状況です。なかなか学習用の良い記事が見つかりませんでしたが、センサーデータのウィンドウ集計の書き方はTHE RISE OF BIG DATA STREAMINGを参考にさせていただきました。 プロジェクトテンプレート Apa

    Apache FlinkとScalaでセンサーデータをウィンドウ集計をする - Qiita
  • ScalaのFutureに渡す ExecutionContext の挙動がわかりにくいので図解する - セカイノカタチ

    Scalaには、非同期実行をサポートするために Future というクラスがあります。 正確にはJavaにも同名の仕組みがあるのですが、それをちょっと便利にした感じのものです。 Futureの仕組みを簡単に言うと、関数を渡すと別のThreadでその関数を実行してくれるものです。 それだけだと、Threadクラスとあまり変わらないのですが、ExecutionContext という管理クラスを渡してあげることによって、Threadの挙動をよりインテリジェントに制御してくれるため、Thread周りの煩わしさが大きく軽減します。 そのThread制御を担当するのが、ExecutionContextExecutorServiceというクラスで、こいつは ThreadPoolExecutor など、ExecutorService インターフェイスの実装オブジェクトをプールとして利用して生成されます。今

    ScalaのFutureに渡す ExecutionContext の挙動がわかりにくいので図解する - セカイノカタチ
  • Scalaの最も難しいところ - None is None is None

    仕事Scalaで書いたプロジェクトを担当する機会がありました。 「Scalaは難しい」と時々言われます。 YammerがScalaからJavaへ移行中 matzとkmizuさんを中心としたscalaの複雑性についての話 私の感想は やっぱりScalaは難しい。 しかし、それはScala大好きな人たちが想像するのとはちょっと違うところ。 sbt が難しい いろいろありますが、とりあえず Ctrl+C で終了してしまう動作は、初心者の心をくじくと思います。 case が難しい match節の "case" は「『条件』に合う場合」という意味の "case" ですよね。 では case classは「条件に会う場合のクラス」 ??? どういうこと? 多分 case class のは「容器・入れ物」の "case"です。ですが、value class とか struct とか、別な名前にはできな

    Scalaの最も難しいところ - None is None is None
  • Visual Studio Codeを使ってScalaの開発してみる

    Visual Studio Codeを使ってScalaの開発してみるThu, 25 May 2017 11:52:48 GMTVisual Studio Code Scala IDE Scalaの開発するのにIntellJ(Community Edition)を使っていたのですが、ちょっと重たいのでVS Codeで開発をしてみることにしました。 2018/1/15 追記 この記事で書いているScala Language Serverプラグインですが、どうもVSCodeのバージョンとプラグインのバージョンの組み合わせに応じて動いたり動かなかったりします。ので、私は結局IntelliJを使ってます。 プラグインインストール 検索したら、下記の4つが出てきます。ダウンロード数は一番上のやつが最も多いんですが、MarketPlaceを見ると どうも動かない臭いのでScala Language Se

  • ScalikeJDBC 入門

    最近 Scala を始めたので、DB 処理によく使用されているのを見る ScalikeJDBC を触ってみます。 GetStarted Typeseaf Config を使用した初期化 SQLSyntaxSupport の使用 Query DSL の使用 環境 scala: 2.12 sbt: 0.13.15 scalikejdbc: 3.0.0 1. GetStarted ScalikeJDBC の使い始めとして最もシンプルな使い方を押さえておきます。 この使い方ではコードを読んで何を行っているかがすぐにわかるぐらいシンプルに処理を書くことができます。 一方で Connection を明示的に初期化する必要がある等少し煩雑なところもあります。 ScalikeJDBC の使用には以下のライブラリが必要です (version は適宜変更)。 h2 に関しては使用する DB が異なればそれに応

  • Scala福岡で、Play Frameworkをどうやって安全にバージョンアップしたかを話してきました - だいくしー(@daiksy)のはてなブログ

    scala.connpass.com Scala福岡で登壇機会をいただき、お話してきました。 ぼくたちが運用・開発しているMackerel というプロダクトで、2度実施したPlay Frameworkのバージョンアップで得た知見を元に、アプリケーションフレームワークの更新をどうすれば安全にやれるだろうか、という観点でのお話でした。 あえて技術的な側面にはあまりフォーカスせずに、プロジェクトマネジメントの視座からお話することで、ScalaやPlayにかぎらず参考になるような発表になればいいな、ということを意識しました。他の言語の世界をあまり詳しく知らないので、意図通りの発表になったかどうかはわかりませんが…。 Twitterを見たところ、おおむね好評なようでよかったです。 サービスに機能追加しながら運用しつつ、フレームワークやライブラリのバージョンアップについて行くのまじで大変なので、このセ

    Scala福岡で、Play Frameworkをどうやって安全にバージョンアップしたかを話してきました - だいくしー(@daiksy)のはてなブログ
  • 【Haskell や圏論が出てこない】Scala で型クラスを完全に理解した話 - Qiita

    TL;DR 結論から。 型クラスはちょっとすごいオーバーロード であり 型に対して静的にメソッドを挿入する方法 です。 この記事は Haskell や 圏論等の難しそうな知識・議論なしで型クラス概念を具体的に理解する 型クラスが実は単なるすごいオーバーロードで、ちょっとした便利なものだと実感できる 型クラスとインターフェイスの違い論争で消耗しなくなる 型クラスを知っているとなにがオトクなのかわかる Haskell 等の高度な抽象化の恩恵を Java 的な慣れ親しんだシンタックスで書ける Scala は便利でたのしいと感じる ことを目的としています。 対象読者 関数型とか型クラスとかモナドとかよく聞くけど全然わからない…でも理解したい気持ちはある 型クラスの概念はいろいろ読んでなんとなく分かるけど説明が Haskell ばかりで実感がわかない 型クラスがなんなのかはぶっちゃけどうでもいいが、

    【Haskell や圏論が出てこない】Scala で型クラスを完全に理解した話 - Qiita
  • Playframework + Scalaを使ってSlackにメッセージを送って遊ぼう - Adwaysエンジニアブログ

    皆さんこんにちは。 世の中には「あんまん派」もいるということを知って 驚きを隠せない「肉まん派」のムネリンです。 皆さん、こんなこと経験ありませんか? 仕事が終えオフィスを出ると・・・ 「うわ、雨降ってた〜!傘会社においてきちゃったよ!」 帰るときの天気なんて晩御飯何にするかの方が大事なので全然気にも留めないですよね。 とはいえ困りますよね。どうすれば傘を忘れるの防げますかね? 帰る間際に強制的に天気予報見る仕組みがあればいいんじゃないか!? ということでSlackに現在の天気を通知する仕組みをHeroku上のPlayframework/Scalaで作ってみたので 紹介します! 仕組みはこんな感じです。 仕様: - 定時10分前にSlack上に現在の天気情報を通知する。 - 通知方法はcronからWebAPIを実行するようにする。 - 天気情報は下記のAPIからJSON形式で取得する。 h

    Playframework + Scalaを使ってSlackにメッセージを送って遊ぼう - Adwaysエンジニアブログ
  • Scala初心者が、Play FrameworkとMySQLで、CRUDでRESTfulなJSON APIを作ってみた(その2) | Recruit Jobs TECHBLOG

    Scala初心者が、Play FrameworkとMySQLで、CRUDでRESTfulなJSON APIを作ってみた(その2) さて次に、RESTful な CRUDサーバーを作ってみましょう。 と、その前に、POST リクエストで CSRF(クロスサイト・リクエストフォージェリ)トークンをチェックしてないので、CSRFの脆弱性対策からスタートします。 CSRF対策 CSRFの脆弱性対策から実装してみよう! こちらのドキュメントを読むと、build.sbt のプロジェクトに Play filters helpers の依存関係を追加すると書いてあるので、build.sbt を以下のような設定に修正します。 build.sbt name := "play-scala-intro" version := "1.0-SNAPSHOT" lazy val root = (project in f

    Scala初心者が、Play FrameworkとMySQLで、CRUDでRESTfulなJSON APIを作ってみた(その2) | Recruit Jobs TECHBLOG
  • Scala初心者が、Play FrameworkとMySQLで、CRUDでRESTfulなJSON APIを作ってみた(その1) | Recruit Jobs TECHBLOG

    Scala初心者が、Play FrameworkとMySQLで、CRUDでRESTfulなJSON APIを作ってみた(その1) こんにちは、荒木です。 今回は Play Framework と MySQL を使って、CRUD(※) で RESTful な JSON API の作り方をご紹介します。 ※CRUD とはCreate(生成)、Read(読み取り)、Update(更新)、Delete(削除)の機能のこと。 環境準備 Java Play Framework には Java 1.8 が必要です。Java のバージョンは次のコマンドを実行して確認しましょう。 java -version JDK がない場合は、OracleのJDKサイト からインストールする必要があります。 sbt で Play Frameworkをインストールする sbt は、Scala製のビルドツールです。今回は s

    Scala初心者が、Play FrameworkとMySQLで、CRUDでRESTfulなJSON APIを作ってみた(その1) | Recruit Jobs TECHBLOG
  • 技術イベント「Understanding Scala」を開催しました(6/10) - kmizuの日記

    Understanding Scala - connpass 昨日、表題の技術イベントを自分主催で行いました。なんでこんなイベントをやろうと思ったかというと「皆、Scalaを難しくめんどくさい方法で学んでるのでは?」という疑問が自分の中であって、その原因として、サンプルプログラムの集合を通して、ボトムアップになんとなくイメージで 全体像を作りあげてるのではという思いがありました。 そのようなアプローチに対して懐疑的な自分としては、このイベントでは(厳密にはやってませんが)どちらかというとトップダウン的アプローチでプログラミング言語について理解してもらおうと思い(もちろん、例は大切なので必要に応じて詳細に下りるのは忘れませんでしたが)、5つの発表の全てを全部自分でやりました。さすがに、5時間程度しゃべりっぱなしというのは疲れましたが、おかげさまで(?)、色々な疑問が解決したとか、メソッドと関

    技術イベント「Understanding Scala」を開催しました(6/10) - kmizuの日記