猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

業務と個人でScalaを使って感じたScalaのメリット・デメリット

はじめに Scala をどこで使っているか 個人での利用: LGTMoon 会社での利用 Scala のメリット/デメリット 教育コストが高い 実装の負債化 実行時のパフォーマンスが良い コンパイルによるエラーチェックが強力 コンパイルが遅い まとめ コップ本 はじめに こ…

sbt のバージョンを 1.5.5 にしたら java.lang.NoSuchMethodError: scala.tools.nsc.Settings.bootclasspath()Lscala/tools/nsc/settings/AbsSettings$AbsSetting;

Scala + Play Framework のプロジェクトで、 sbt のバージョンを 1.3.9 から 1.5.5 にしたところ、以下のエラーが発生しました。 #9 87.82 [error] java.lang.NoSuchMethodError: scala.tools.nsc.Settings.bootclasspath()Lscala/tools/nsc/settings/AbsSet…

Scala sbt のバージョンを上げたら java.lang.RuntimeException: insecure protocol is unsupported

執筆時の sbt のバージョンが 1.5.5 だったので、 LGTMoon (https://lgtmoon.herokuapp.com/)で使っている sbt のバージョンを 1.3.9 から 1.5.5 に上げる作業を行いました。 sbt を 1.3.9 から、1.4.9 (1.4系の最新)に上げた際に以下のエラーが発生しま…

Scala 用 AWS ライブラリは aws-java-sdk しかない

はじめに 結論 比較したライブラリ aws-java-sdk AWScala aws-scala aws-scala-sdk まとめ 参考記事 はじめに Scala から S3 にファイルをアップロードする必要があったので、 AWS のライブラリを比較しました。 *1 結論 aws-java-sdk を使うことにしました…

AWScala で S3 にファイルを put しようとしてAccess Denied Status Code: 403;

AWScala Scala から AWS S3 にファイルをアップロードするのに、 AWScala というライブラリを利用していました。 github.com S3 のライブラリを利用するには、 build.sbt の libraryDependencies に以下を追加します。 "com.github.seratch" %% "awscala-s3"…

Scala Play の application.conf を環境変数から取得する - Herokuでの運用戦略

はじめに Heroku の環境変数を使う application.conf の書き方 Heroku の設定 まとめ はじめに この記事は、 Scala アドベントカレンダ 2020 の 19 日目の記事です qiita.com 私は LGTMoon という LGTM 画像を生成するアプリを公開しています。 lgtmoon.dev …

Scala playframework で、 ws のリクエスト先をモックしてテストする

はじめに これは下記 playframework のドキュメントの翻訳です。 Scala Testing Web Service Clients - 2.8.x ws クライアントをテストする ほとんどのアプリケーションは、他の Web サービスの API 等を利用するクライアントを実装する。 この API クライア…

Scala Play + Vue.js の多言語対応

LGTM画像生成サイト LGTMoon で多言語対応してみましたので、どのような対応を行ったかをまとめます。 LGTMoon - 最もシンプルなLGTM画像ジェネレーター Vue.js フロントエンドは Vue.js で組まれています。 多言語化には vue-i18n を使います。 yarn add vu…

Heroku PostgreSQL にて Scaka Play Framework 2.6 で Slick と play-slick を利用して HikariCP でコネクションプール(スレッドプール)を使う!

Scala Play Framework 2.6 と Slick でコネクションプール(スレッドプール)の設定がしたい! 環境 前置き コネクションプール/スレッドプールを使うモチベーション コネクションプールとスレッドプールの違いは? なぜ play-slick を使うようにしたのか pl…

Windows/IntelliJで無料でScala開発する

環境 IntelliJ Community Editionのダウンロード Java のインストール Scala プラグインのインストール ProjectのImport 参考 環境 Windows 10 IntelliJ IDEA Version 2019.2 Java 8 IntelliJ Community Editionのダウンロード ファッキン無料です。 Eclipse…

Scala Play Framework と Slick で Connection Pool を利用する

経緯 環境 コネクションプールとは コネクションプールを張ってなかったときの接続方法 conf/application.conf の設定 DB接続部分 コネクションプールの利用 configの書き換え Hikari CPライブラリの導入 経緯 私は、LGTM画像を簡単に作成できるサービス「LG…

Play Framework の Contributor guidelines を読む

はじめに Play contributor guidelines issue立てるとき コントリビュートする はじめに Backportingについて *4 はじめに https://github.com/playframework/playframework にプルリクエストを出そうとすると、「How to write the perfect pull request」と…

【ScalaMatsuri2018】Recursive Schemeを用いた量子アニーリングマシン専用言語(DSL)の開発

もくじ もくじ Recursive Schemeを用いた量子アニーリングマシン専用言語(DSL)の開発 量子コンピューター QUBO? 量子コンピュータはどう使うか QUBOのコード Recursive Schemeを用いた量子アニーリングマシン専用言語(DSL)の開発 量子コンピューター D-Wave…

【ScalaMatsuri2018】tototoshiさん「Scalaらしいオブジェクト指向プログラミング」

もくじ もくじ はじめに Scalaの言語の性質 class Scalaのclass case class classとcase classどちらを使えばいい trait object これらをどう使っていくか シングルトンだらけにしてはいけない objectにすると何がダメなのか ではどうするのか コンストラク…

【ScalaMatsuri2018】Scalaでの部分的な関数型プログラミング

もくじ もくじ Scalaでの部分的な関数型プログラミング 自己紹介 エムスリー株式会社 関数型プログラミングとは 本当に純粋関数だけでプログラミングできんの? 関数型プログラミング化 部分的な関数型プログラミング 2レイヤーに分ける 2レイヤーの依存関係…

【ScalaMatsuri2018】「もしScala初心者がMonoidを投げ込まれたら」メモ

もくじ もくじ これはなに? もしScala初心者がMonoidを投げ込まれたら 注意 自己紹介 あるひ こんなコードがプルリクで投げられた ググってみる チャットでのやり取り なぜ困惑 対策 まとめ おまけ これはなに? ランチタイムに行われたLT(10分の発表)の…

【ScalaMasturi2018】OE_ujaさん「『暗黙』とうまく付き合うためのTips」メモ

もくじ もくじ 自己紹介 implicitとは implicit parameter とは implicit conversion なぜ implicit と呼ばれるか sortedは何が起こっているのか プロジェクトではどうするか ある暗黙の値を使って別の暗黙の値を定義している場合などは? Enrich my Library…

【ScalaMatsuri2018】がくぞさん「なぜComposabilityは重要か」メモ

もくじ もくじ 資料 はじめに そもそもComposabilityとは? Compositionとは Composabilityとは なぜComposabilityは重要か 独自型の変換 参考 資料 http://gakuzzzz.github.io/slides/why_composability_matters/ はじめに Scalaはオブジェクト指向 + 関数…

Scala Matsuri 2018 行きたいセッションメモ

行きたいセッション(土曜日) 傾向 難易度はなるべく + がいい。++ でもギリ可 (( + が一番初心者向け、 ++ は中級者、+++ が上級者向け。J は日本語 E は英語)) 本当は英語で聞いたほうが勉強になるきがするけどまあ完全に理解するには日本語のほうがいい…

Scala の typesafe config がいい感じに applicatoon.conf を読んでくれない

typesafe config について typesafe config とは、Play Framework でも採用されている便利な config ライブラリである。 github.com typesafe config の使い方について READMEを見ると以下のような記述がある The convenience method ConfigFactory.load() l…