Scala

【Scala】ScalaTest ~ with Mockito ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/27/001306 https://dk521123.hatenablog.com/entry/2023/03/28/003906 https://dk521123.hatenablog.com/entry/2023/03/29/000014 の続き。 Scala の単体試験で、ScalaTest をベースにやってきた…

【Scala】ScalaTest ~ with ScalaCheck ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/27/001306 https://dk521123.hatenablog.com/entry/2023/03/28/003906 の続き。 今回は、ScalaTest + ScalaCheck (org.scalatestplus) を使って プロパティベーステスト (Property Based Testing;…

【Scala】ScalaTest ~ 基本編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/27/001306 の続き。 今回は、Scalaの単体試験する際に ScalaTest を使用した時のTipsについてまとめる 目次 【1】初期処理・後処理 1)BeforeAndAfter 2)BeforeAndAfterAll 【2】一時的テス…

【Scala】ScalaTest ~ 入門編 ~

■ はじめに ここ最近、狂ったように、プログラムや調べものをしてきたが とりあえず、最低限やれることが調べたので、後はブラッシュアップさせていきたい、、、 っと思ったのだが、単体試験のことを忘れていたので、調べてみた。 目次 【0】Scalaのテスト…

【Scala】Scala ~ JDBC / DB接続 ~

■ はじめに SparkからSnowflakeへの接続について考える https://dk521123.hatenablog.com/entry/2023/03/19/013833 で、JDBCでもSnowflakeにアクセスすることに触れたが 今回は、ScalaでJDBCドライバからDBにアクセスすることについて触れる 目次 【1】JDBC…

【Docker】Docker compose ~ LocalStack/Glue4.0 ~

■ はじめに Spark/Scalaの開発環境構築 ~ Windows編 ~ https://dk521123.hatenablog.com/entry/2023/03/20/115450 で、『本当は、Dockerで一発でばーんって作りたい、、、』って 言ったのだが、それを実践してみた 以前やった https://dk521123.hatenablog…

【Scala】Scala ~ AWS SDK ~

■ はじめに AWS Glue で Scala を使うことになって悪戦苦闘中なのだが Scalaの実装のしにくさとして、 Pythonのように便利な boto3 がある訳ではないので調べてみた。 とりあえず、以下のサービスを利用したい。 ~~~~~ + S3 + Secrets Manager + SES ~~~~~ …

【Scala】SBT ~ 入門編 ~

■ はじめに Scala を初めて、SBTについて今まで何となくやっていたが ちゃんと勉強しないとまずいと感じたので、メモ。 目次 【0】環境設定 【1】ビルドツール「sbt」 1)主な機能 2)sbt の処理の流れ 【2】フォルダ構成 1)build.sbt 2)build.prop…

【Scala】Scala ~ 基本編 / ジェネリック <T> ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/16/012034 で YAMLファイルを扱った。ここで作成した 「例2:独自クラスにマッピングする」「例3:別YAML&リファクタリング」 を、どのクラスでも使えるようにしたい。 そこで、その第一歩とし…

【Scala】Spark/Scalaの開発環境構築 ~ Windows編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/09/18/214814 で、Windows で Spark の実行環境を構築した。 で、最近、AWS Glue4.0になり、Sparkのバージョンもv3.3.0になり かつ、今の仕事で、Scalaを使うことになった。 そこで、今回は、「Windo…

【Scala】Scala ~ 基本編 / 正規表現 ~

■ はじめに Scala が慣れない、、、 今回は、Scala の 正規表現 (regular expression) について扱う。 正直、めちゃくちゃ、いまいち、、、 Javaの正規表現メソッド使った方がいいかも、、、 目次 【0】正規表現オブジェクト 1)メソッド 【1】抽出 【2…

【AWS】AWS Glue ~ Scalaでの実装 ~

■ はじめに AWS Glue は、3年以上使っていて、その際は、PythonでGlue jobを記述していた。 今、行っている仕事で、Scalaを使ってPoC(Proof of Concept:概念実証) をすることになったので、調べてみた。 別件:Glue4.0 ってゆーかーいつの間にGlue4.0がリ…

【Scala】Scala ~ YAML ~

■ はじめに Scala で YAMLファイルを扱う方法を扱う 目次 【1】YAML用ライブラリ「org.yaml.snakeyaml.Yaml」 1)設定 2)API仕様 【2】サンプル 例1:Hello World 例2:独自クラスにマッピングする 例3:別YAML&リファクタリング 【1】YAML用ライ…

【Scala】Scala ~ 基本編 / クラス ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/10/193805 https://dk521123.hatenablog.com/entry/2023/03/12/184331 の続き。 今回は、クラス周辺について扱う。 試す環境 https://scastie.scala-lang.org/CEpZy3v4Taa0MCStp3LCYg 目次 【1】…

【Scala】Scala ~ 基本編 / コレクション ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/10/193805 https://dk521123.hatenablog.com/entry/2023/03/12/184331 の続き。 今回は、配列やコレクションについて扱う。 試す環境 https://scastie.scala-lang.org/CEpZy3v4Taa0MCStp3LCYg 目…

【Scala】Scala ~ 入門編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/10/193805 の続き。 Scalaで開発することになりそうなので 予習してたら、Javaと比べて、結構、変わっていた。 まずは、簡単な文法から整理していく なお、以下のサイトで動作確認しながらやると…

【Scala】Scala ~ ファイル名・パスの扱い ~

■ はじめに Scala の ファイル名・パスの扱いについて書き溜めていく 【1】ファイル名取得 import java.io._ val targetPath = "s3://your-bucket/hello/world/test.csv" val targetFile = new File(targetPath) val fileName = targetFile.getName() // Fi…

【Scala】Scala ~ 環境構築編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/01/235100 https://dk521123.hatenablog.com/entry/2023/03/05/235755 で、Apache Flink について、触れたが、 Scalaで書かれていることを触れた。 もし、採用された場合、Scalaで開発することに…

【Scala】Scala ~ 基本編 / Option型 ~

■ はじめに 開発中だが、バグったので整理。 目次 【1】Option型 1)Some 2)None 【2】NULLおよび混同しそうなキーワード 1)null 2)None 3)Nothing 4)Nil 【1】Option型 * 値があるかないかを表す型 * 2種類のサブクラスを持っている 1)Some…

【Scala】Scala ~ 基本編 / 日付・日時 ~

■ はじめに 今回は、Scala の 日付/日時の扱いについて触れる。 徐々に書き溜めていく、、、 目次 【1】日付/日時フォーマット 【1】日付/日時フォーマット import java.util.Date val date1 = "%tY%

【Scala】Scala ~ 基本編 / メソッド ~

■ はじめに Scala が慣れない、、、 今回は、Scala の メソッド について扱う。 なお、Scala の 場合、メソッド と 関数 は異なる。 Scala ~ 基本編 / 関数 ~ https://dk521123.hatenablog.com/entry/2023/10/09/232838 目次 【1】構文 【2】戻り値 【3…

【Scala】SBT ~ 基本編 / build.sbt ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/22/000000 の続き。 build.sbt の書き方について、メモ。 目次 【1】libraryDependencies 1)% "test" 2)% "provided" 3)% "compile" 4)%% 【2】excludeDependencies 【3】resolvers 補…

【Scala】SBT ~ 基本編 / sbtコマンド ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/22/000000 https://dk521123.hatenablog.com/entry/2023/01/27/000000 の続き。 build.sbt の書き方について、メモ。 目次 【1】主な sbt コマンド一覧 1)通常 2)テスト関連 【2】主な sbt …

【Scala】SBT ~ sbtプラグイン ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/22/000000 https://dk521123.hatenablog.com/entry/2023/01/27/000000 https://dk521123.hatenablog.com/entry/2023/01/26/000000 の続き。 徐々に、SBT について分かってきた。 今回は、sbtプラ…

【Scala】Scala ~ 基本編 / 文字列 ~

■ はじめに Scala の 文字列について、徐々にノウハウを書き溜めておく 目次 【0】データ変換 【1】ゼロ埋め (Zero padding) 【2】前方一致・後方一致 【3】空・空文字じゃないを判定 【4】ホワイトスペース除去 【5】文字列置換 【6】mkString 【7…

【Scala】Scala ~ Enum ~

■ はじめに 昔っから、プログラムを書くときに Enumを相当活用するのだが、 昨今のプログラム言語では、Enumを軽視してて 少し悲しい。。。 圧倒的に可読性や利便性があがると思うのだが、、、 今回は、Scala の Enum (列挙型) を扱う 目次 【0】ScalaでのE…

【Scala】Scala ~ ファイルハンドリング ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/16/012034 https://dk521123.hatenablog.com/entry/2023/03/21/003817 でファイルのオープンなどを行ったので、 基本的なところを整理した。 目次 【1】変換 1)Byte[] to InpiutStream 2)Byt…