タグ

ブックマーク / takezoe.hatenablog.com (12)

  • ScalatraがScala3で使えるようになりました - たけぞう瀕死ブログ

    地道にメンテナンスを継続しているScalatraですが、最近ついにScala 3で動作するマイルストーンビルド(3.0.0-M1)を公開しました。 github.com Scala 3対応の作業はほとんどよしださんにやっていただき自分はリリースしただけですが…。 サンプルとしてScala 3で動作するScalatraプロジェクトを作ってみました。 github.com 一応コードはScala 3のシンタックスで書いてあります。これだけだとあまり嬉しい感じはしないかもしれませんが…。 package com.example.app import org.scalatra._ class MyScalatraServlet extends ScalatraServlet: get("/") { views.html.hello() } Scalatraがデフォルトでサポートしているテンプレート

    ScalatraがScala3で使えるようになりました - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2022/08/05
  • Scala、Picocli、GraalVMによるネイティブCLIツールの作成 - たけぞう瀕死ブログ

    以前、Scalaを使ってCLIツールを作るという記事を書いたのですが、やはりJVMベースのアプリケーションには起動時間のオーバーヘッドが付き物なのでちょっとしたCLIツールをScalaで書こうという感じにはなかなかなりません。そこで今回はPicocliというJava向けのCLIツール用ライブラリとGraalVMを使ってネイティブCLIコマンドをScalaで作る方法を試してみました。 github.com sbtプロジェクトの作成 今回はPicocliのドキュメントで例として掲載されていたchecksumコマンドをScalaで実装してみます。まずは以下の内容でbuild.sbtを作成します。 name := "picocli-scala-example" version := "0.1" scalaVersion := "2.12.7" libraryDependencies ++= Seq

    Scala、Picocli、GraalVMによるネイティブCLIツールの作成 - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2020/03/18
  • 実践Scala入門 - たけぞう瀕死ブログ

    「実践Scala入門」を技術評論社さんからお送りいただきました。Scalaの入門書というとコップを思い浮かべる方が多いと思いますが、下のツイートでも書いている通りこのはかなりコンパクトです。 技評さんから実践Scala入門をお送りいただきました。ありがとうございます!思ったより小さい&薄い! pic.twitter.com/DGKRWIWVwG— Naoki Takezoe (@takezoen) 2018年10月25日 A5判文300ページ弱という分量でScalaの基的な部分を押さえつつ、sbt、Futureを使った並行プログラミング、ユニットテスト(ScalaCheckによるパラメータテストやMockitoを使ったテストまで!)などもカバーされています。また、さすがScalaを使い込んでいる著者陣だけあってScalaの各機能の使い方だけでなく、注意事項やどのように使うと便利なの

    実践Scala入門 - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2018/10/31
  • sbtサーバとRustで書かれたsbtクライアント - たけぞう瀕死ブログ

    Scalaのビルドツールsbtには1.xからLanguage Server Protocol 3.0に対応したサーバモードが実装されており、常駐させたサーバに別プロセスから接続してコマンドを実行することができます。サーバモードはIDEやエディタプラグインのために実装されたものだと思いますが、sbtにはクライアントモードも実装されており、コマンドラインで動作を確認することもできます。 たとえばあるプロジェクトでsbtのプロセスを立ち上げておき、 $ sbt ... sbt:gitbucket> 別のターミナルから以下のようにしてコマンドを送信します。 $ sbt client clean ... [info] entering *experimental* thin client - BEEP WHIRR > compile サーバ側ではこんな感じのログが表示されます。 [info] new

    sbtサーバとRustで書かれたsbtクライアント - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2018/10/25
  • Akka実践バイブル アクターモデルによる並行・分散システムの実現 - たけぞう瀕死ブログ

    Akka in Actionの日語翻訳版である「Akka実践バイブル」がついに完成したとのことで翔泳社さんからお送りいただきました。ありがとうございます。 実はこのは2年ほど前に翻訳を検討していたのですが、当時まだ原著がアーリーアクセス中でいつ完成するかわからないという状態だったため見送ったという経緯があります(そのため同じく翻訳を検討していたScalaパズルに着手することになりました)。時は流れて今年のScalaMatsuriで@yugolfさんをお見かけし、当時Akka in Actionの読書会を主催されていたことから「Akka in Actionの翻訳しませんか?」とご相談させていただいたことが今回の日語版発売のきっかけになりました。 自分としても数年越しの夢を形にしていただくことができ、翻訳者の皆さま、レビュアーの皆さまには感謝の気持ちでいっぱいです。分量もかなりあるです

    Akka実践バイブル アクターモデルによる並行・分散システムの実現 - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2017/12/13
  • GitHubのスター数で見るScalaのDBアクセスライブラリ - たけぞう瀕死ブログ

    吉田さんがこういう記事を書いていたので真似してデータベースアクセスライブラリ版を書いてみました。 xuwei-k.hatenablog.com 2009年からのグラフですが、トップ5のスター数の推移はこんな感じ。 slick/slick ★1930 github.com 相変わらずの一番人気。この1年では300くらいスターが増えている。DBIOで強制モナモナやjoinしたつもりなのに何故かサブクエリになるSQLなど問題が多いのに何故こんなに人気があるのか考えさせられるものがある。クエリビルダは非常に柔軟かつ強力だけど、やはり出てくるSQLが想像もつかないのは厳しい。joinを多用するアプリケーションでは(MySQLの場合は特に)使わないほうがよいと思うし、シンプルなCRUDしかしないんだったらこんなに複雑なクエリビルダ要らないのではという気がする。 また、最近はそうでもないけどSQLだけで

    GitHubのスター数で見るScalaのDBアクセスライブラリ - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2017/11/21
  • Scalatra 2.6.0をリリースしました - たけぞう瀕死ブログ

    Scala用のSinatraライクなWebフレームワークScalatraの最新バージョン2.6.0をリリースしました。 github.com 今回は新しいバリデーションフレームワークとしてscalatra-formsが追加されました。これは元々GitBucketで使用していたものをScalatra体の1モジュールとして取り込んだものです。PlayのFormのような感じでリクエストパラメータのバリデーションとScalaオブジェクトへのマッピングを行うことができます。 また、今後のメンテナンスコスト削減のために2.5.x以前のバージョンで非推奨になっていた機能を削除するとともに、あまり使われていない機能やメンテナンスが難しい機能などを非推奨にしています。これらの機能は2.7.0で廃止される予定です。 詳細な変更内容は以下のアナウンスを参照していただければと思います。 http://scala

    Scalatra 2.6.0をリリースしました - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2017/11/13
  • ScalaのDBアクセスライブラリまとめ - たけぞう瀕死ブログ

    Slick 3.0.0がリリースされました。 SlickはこれまでScalaで利用可能な代表的なDBアクセスライブラリの1つとして利用されてきましたが、3.0.0では別名Reactive Slickと呼ばれ、モナドを駆使したFutureベースのプログラミングを前提としたものに変貌してしまいました。Reactive Slickの狙いについてはメイン開発者であるStefan Zeiger氏によるこのスライドが参考になります。僕は聴講できなかったのですが、Scala Days 2015 in San Franciscoでのセッションで使用したものでしょうか。 これまでSlickは同期的・手続き的な実行しかできなかったため、PlayやAkkaなどのノンブロッキングベースのフレームワークと組み合わせた場合に処理全体をブロックする必要があったのですが、Slick 3.0.0ではDBアクセスを含む場合で

    ScalaのDBアクセスライブラリまとめ - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2017/11/01
  • giter8テンプレートの作り方 - たけぞう瀕死ブログ

    giter8の復活 その昔、Scala世界にはgiter8というツールがありました。GitHub上のテンプレートプロジェクトをベースにプロジェクトを作成できるというなかなか便利なものでしたが、初期の頃はWindowsでの利用に問題があったり、Typesafe Activatorという用途がモロ被りするツールが登場したりするなどしたため、ここ数年はあまり積極的に利用されていませんでした。 時は流れて2016年、Scalaの標準的なビルドツールsbtの最新版である0.13.13でgiter8テンプレートのサポートが追加されました。sbtさえインストールしておけば、 $ sbt new scalatra/scatara-sbt.g8 のようにnewサブコマンドでgiter8テンプレートを使用してプロジェクトを作成できるようになったのです。これまでactivatorを使用してプロジェクトを作成する

    giter8テンプレートの作り方 - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2017/10/24
  • sbtとpecoでテンプレートを選択してプロジェクトを作成する - たけぞう瀕死ブログ

    sbtではsbt new playframework/play-scala-seed.g8などのようにしてgiter8テンプレートを指定してプロジェクトを作成することができます。 しかし、プロジェクトを作るたびにテンプレートのリポジトリ名を調べるのも面倒です。そこで、giter8のWikiにまとめられているgiter8テンプレートのリストからpecoでインクリメンタルサーチしてプロジェクトを作成できるようにしてみました。 function peco-sbt-new() { local TEMPLATE=`curl https://github.com/foundweekends/giter8/wiki/giter8-templates -s | grep "\.g8<" | sed -e "s/</ /g" -e "s/>/ /g" | awk '{print $3}' | peco |

    sbtとpecoでテンプレートを選択してプロジェクトを作成する - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2017/08/20
  • ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ

    ScalaのWebフレームワークについて、昨年某所で書いた記事をアップデートしてみました。マイクロサービスが流行ってきたり、Playは2.4になっていろいろ変わったり、ScalaのライブラリやフレームワークもFutureやモナドを活用したものが増えてきたり等々、この一年でScala界隈のWeb開発事情もいろいろと変化してきています。 Play2 出たばかりの頃はPlay 1.x系でできたことができなかったり、バグだらけだったりでコミュニティでも暴動が起きそうになったものですが、喉元すぎればなんとやら、いまでも使いにくい部分も多いのですが、Typesafe社のお墨付きということもあり、なんだかんだでデファクトスタンダードの位置を確立しているのではないかと思います。 ユーザ数が多いだけあり、プラグインや周辺ライブラリ、Web上での情報等も豊富です。 ただ、Play 2.4でGuiceを使ったD

    ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2017/01/05
  • Scalaはなぜ難しいと言われるのか? - たけぞう瀕死ブログ

    Scalaをどうやって学ぶのがいいのか?ということはScalaを使い始めた数年前からずっと考えています。よく「Scalaは難しい」と言われますが、 どこが難しいのか? なぜ難しいのか? ということを、これまで書籍や雑誌記事、ハンズオンなど入門用のコンテンツを作ってきた経験を踏まえて整理してみました。 まず、Scalaが難しいといわれる理由のひとつに学ばなくてはならないものが多すぎるという点があげられます。Scalaはオブジェクト指向言語ですが、関数型言語の特徴的な機能を取り入れているため、きちんと理解するには両方の言語のイディオムを学ぶ必要があるためです。 ただ、Scala自体は必ずしも関数型言語の知識がなくても使えるように設計されています。最初はBetter Javaとして一般的な手続き型オブジェクト指向言語の延長として使い始めることができ、Scalaの特徴的な機能に触れていくことで少し

    Scalaはなぜ難しいと言われるのか? - たけぞう瀕死ブログ
    mitukiii
    mitukiii 2015/06/17
  • 1