■ はじめに
https://dk521123.hatenablog.com/entry/2023/03/01/235100
https://dk521123.hatenablog.com/entry/2023/03/05/235755
で、Apache Flink について、触れたが、 Scalaで書かれていることを触れた。 もし、採用された場合、Scalaで開発することになりそうなので 今のうちに、予習をしておく そこで、今回は、Scala の開発環境を設定し、 最後に、「Hello World」を行う。 なお、この後、Spark/Scalaの実行環境が必要な場合 以下の関連記事も参考になるかも、、、
Spark/Scalaの開発環境構築 ~ Windows編 ~
https://dk521123.hatenablog.com/entry/2023/03/20/115450
目次
【1】環境構築 補足:Webブラウザ上でさっくり試したい場合 1)JDK (Java Development Kit ) 2)sbt 3)VS CodeのScala用プラグイン「Metals」 【2】ビルドツール「sbt」 1)主な機能 2)主な sbt コマンド一覧 【3】Hello World 1)sbt で 新しいプロジェクトを作成する 2)ソースを確認し、修正 3)sbt run で実行 【4】補足:VS Code上での Scala の デバッグ
【1】環境構築
以下をインストールする ~~~~ 1)JDK (Java Development Kit ) 2)ビルドツール「sbt」 3)統合開発環境 VS Code および Scala用プログイン「Metals」 ~~~~
補足:Webブラウザ上でさっくり試したい場合
* 以下のサイトでやるといい。
https://scastie.scala-lang.org/CEpZy3v4Taa0MCStp3LCYg
1)JDK (Java Development Kit )
Windows の場合
* 以下のサイトからダウンロードし、インストールする
https://www.oracle.com/java/technologies/downloads/
Linux の場合
* 以下の関連記事を参照のこと。 ~~~~~ sudo apt update sudo apt install openjdk-11-jre-headless ~~~~~
Linux で JDK を設定する
https://dk521123.hatenablog.com/entry/2017/08/01/234900
JDKが入っているか確認
$ java -version openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
2)sbt
* sbt については、後述『【2】ビルドツール「sbt 」』を参照
Windows の場合
https://www.scala-sbt.org/release/docs/Installing-sbt-on-Windows.html
から sbt をダウンロード(※)し、インストールする ※ 今回の場合、「sbt-1.8.2.msi」
Ubuntu の場合
sbt Reference Manual — Linux への sbt のインストール
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add sudo apt-get update sudo apt-get install sbt
確認
$ sbt --script-version 1.8.2
3)VS CodeのScala用プラグイン「Metals」
* IDE (統合開発環境)として、Visual Studio Codeを選択 => インストールしていない場合は、 以下の関連記事などを参考にインストールする
https://dk521123.hatenablog.com/entry/2019/10/24/000000
プラグイン Metals の設定
https://docs.snowflake.com/ja/developer-guide/snowpark/scala/quickstart-vscode
[1] ウィンドウの左側 にある Activity Bar で、 Extensions アイコンをクリック => Activity Bar が表示されない場合は、 [View]-[Appearance]-[Show Activity Bar]がチェックされていることを確認 [2] Search Extensions in Marketplace の検索ボックスで「Metals」を検索 [3] 検索結果で、Scala(Metals)拡張機能を見つけて、 Install をクリック
【2】ビルドツール「sbt」
* 主に Scala の ビルドツール (Simple Build Tool の略) => JavaのMavenやAntに相当するツール => sbt に関しての詳細は、以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/2023/03/22/000000
Apache Flink について
Apache Flink の古いバージョンでは、 sbt を使ったよう(sbt new tillrohrmann/flink-project.g8)
しかし、最新バージョン v1.16 だと、Maven or Gradle で主流?
https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/dev/configuration/overview/
とはいえ、以下のURLに sbt での Flink 用の Quick Start のシェル「sbt-quickstart.sh」があるので それを使ってもいいかも。
【3】Hello World
* 以下のサイトなどを参考に、恒例の「Hello World」をやってみる => 3Stepで可能。
https://www.scala-sbt.org/1.x/docs/ja/Hello.html
1)sbt で 新しいプロジェクトを作成する
$ mkdir HelloWorld $ cd HelloWorld $ sbt new scala/hello-world.g8 [info] welcome to sbt 1.8.2 (Oracle Corporation Java 11) ... A template to demonstrate a minimal Scala application name [Hello World template]:ThisIsMyFirstTime << 任意の名前入力(今回は「ThisIsMyFirstTime」) $ tree << 出来上がったフォルダ階層を表示 C:. └─thisismyfirsttime ├─project └─src └─main └─scala
2)ソースを確認し、修正
[1] VS code を立ち上げる [2] [File]-[Open Folder]で作成したプロジェクト名のところを指定する [3] src/main/scala 配下の「Main.scala」をクリックし、エディタで開く [4] Main.scalaを以下を参考に修正する
Main.scala
object Main extends App { // println("Hello, World!") println("Hi, World!") }
3)sbt run で実行
[1] VS Code の [Terminal]-[New Terminal] を選択し、ターミナルを開く => 以降「コマンド例」を参考に、ターミナルに入力していく
コマンド例
# 階層確認 $ dir ... ... build.sbt ... <= 「build.sbt」が直下にあることを確認 ... $ sbt run ... [info] running Main Hi, World! <= Main.scalaが実行され、修正した「Hi, World!」になっていることを確認 [success] Total time: 4 s, completed 2023/03/10 19:30:59
【4】補足:VS Code上での Scala の デバッグ
* 上記でとりあげた『Scala用プラグイン「Metals」』が必要 => エラーになったら、入れ直した方がいいかも => 実際の解説動画は、以下を参照。
https://youtu.be/zX-t5E5hQh0?t=104
デバッグの開始の仕方
https://youtu.be/zX-t5E5hQh0?t=149
参考文献
環境設定
https://qiita.com/icoxfog417/items/31d88358942d8dd0eb8b
https://tanishiking24.hatenablog.com/entry/scala-setup-2021
関連記事
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331
Scala ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2023/01/07/000000
Scala ~ 基本編 / Option型 ~
https://dk521123.hatenablog.com/entry/2023/03/09/000000
Scala ~ 基本編 / メソッド ~
https://dk521123.hatenablog.com/entry/2023/03/03/000000
Scala ~ 基本編 / クラス ~
https://dk521123.hatenablog.com/entry/2023/03/14/000857
Scala ~ 基本編 / コレクション ~
https://dk521123.hatenablog.com/entry/2023/03/13/000345
Scala ~ 基本編 / 日付・日時 ~
https://dk521123.hatenablog.com/entry/2023/03/08/000000
Scala ~ 基本編 / 正規表現 ~
https://dk521123.hatenablog.com/entry/2023/03/18/034704
Scala ~ 基本編 / ジェネリック
https://dk521123.hatenablog.com/entry/2023/03/21/003817
Scala ~ Enum ~
https://dk521123.hatenablog.com/entry/2023/01/05/000000
Scala ~ ファイル名・パスの扱い ~
https://dk521123.hatenablog.com/entry/2023/03/11/000000
Scala ~ ファイルハンドリング ~
https://dk521123.hatenablog.com/entry/2023/01/03/000000
Scala ~ ファイルの読み書き ~
https://dk521123.hatenablog.com/entry/2023/04/07/000000
Scala ~ YAML ~
https://dk521123.hatenablog.com/entry/2023/03/16/012034
Scala ~ JSON ~
https://dk521123.hatenablog.com/entry/2023/04/04/000733
Scala ~ 非同期 / Future ~
https://dk521123.hatenablog.com/entry/2023/04/30/000000
Scala ~ JDBC / DB接続 ~
https://dk521123.hatenablog.com/entry/2023/03/26/000950
Scala ~ AWS SDK ~
https://dk521123.hatenablog.com/entry/2023/03/24/211033
Scala ~ AWS SDK / S3サンプル ~
https://dk521123.hatenablog.com/entry/2023/04/01/002005
Scala ~ AWS SDK / Secrets Managerサンプル ~
https://dk521123.hatenablog.com/entry/2023/04/03/012600
Scala ~ AWS SDK / SESサンプル ~
https://dk521123.hatenablog.com/entry/2023/04/16/003338
Scala ~ Apache Kafka / Producer ~
https://dk521123.hatenablog.com/entry/2023/04/27/235703
Scala ~ Apache Kafka / Consumer ~
https://dk521123.hatenablog.com/entry/2023/04/28/014737
SBT ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/22/000000
SBT ~ 基本編 / build.sbt ~
https://dk521123.hatenablog.com/entry/2023/01/27/000000
SBT ~ 基本編 / sbtコマンド ~
https://dk521123.hatenablog.com/entry/2023/01/26/000000
SBT ~ sbtプラグイン ~
https://dk521123.hatenablog.com/entry/2023/01/25/000000
SBTでのエラー/警告対応
https://dk521123.hatenablog.com/entry/2023/04/06/093458
ScalaTest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/27/001306
ScalaTest ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/03/28/003906
ScalaTest ~ with ScalaCheck ~
https://dk521123.hatenablog.com/entry/2023/03/29/000014
ScalaTest ~ with Mockito ~
https://dk521123.hatenablog.com/entry/2023/03/31/002830
Spark ~ FutureAction ~
https://dk521123.hatenablog.com/entry/2023/04/18/234214
Visual Studio Code ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/20/230323
Apache Flink ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/05/235755
Windows 上で WSLコマンドを使って Linux 環境を構築
https://dk521123.hatenablog.com/entry/2021/11/03/003836
Linux で JDK を設定する
https://dk521123.hatenablog.com/entry/2017/08/01/234900
Spark/Scalaの開発環境構築 ~ Windows編 ~
https://dk521123.hatenablog.com/entry/2023/03/20/115450
Docker compose ~ LocalStack/Glue4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/25/021432