
Java Spring Bootでプロ野球審判出場記録アプリを作成する①
プロ野球開幕まであと5日
新しい職場ではJavaを主に使っているので自分も早くJavaに慣れるべく、PythonのFlaskで作成したプロ野球審判出場記録アプリをシーズン始まる前までに定期実行で出場審判の情報をスクレイピング→データベースに登録ができるように改造しがてらJavaのSpring BootというWEBフレームワークを使って作成し直すことにしました。
なぜSpring Bootにしようかと思ったかというと、なるたけFlaskと似ていて直感的にコードが書けてあまり複雑な設定がないもので作成したいと思った時に今はやりのChartGPTに聞いてみたところ、
「JavaのWebアプリケーションフ レームワークで、 FLASKのよう に簡単に使えるものには、以下 のようなものがあります。
Spring Boot
Spark Java
Ninja framework 4. Play Framework
Spring Boot はJavaの最もポピュラーなフレームワーク で、多数の機能があります。」
という返答を頂いたからです。まだプログラミング関連の質問しかしていませんが的確に答えてくれます。便利。
こちらの動画が非常に分かりやすかったので参考にしながら進めます。このような分かりやすい動画が無料で気軽に見れるだなんて…ありがてえ…!
環境構築というほどでもないくらい簡単
pythonではVScodeを使っていますが、Javaはeclipseを使います。多分一番最新のを入れました。黒画面でデザインがかっこいい感じになっています。
動画の通りにファイル→新規→Spring bootスターターなんたらを選択→プロジェクト名つけて必要な機能を選択(今回はPostgresqlを使うのでなんかPostgresqlが使えそうなやつも入れました)するだけで必要なファイルが作成されてしまうのでFlaskで仮想環境作って~、ファイル作って~ということがなくてめちゃくちゃ簡単でした。

実際にコードを書いてみよう
Javaの文法全然分からないんですけどまあこれでいけるやろ的な雰囲気で書いても動くくらい簡単です。
src/main/java配下のcom.example.demoにumpire_appというクラスを作成するとumpire_app.javaというファイルができます。(クラスってなんだ…)
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class umpire_app {
@RequestMapping("/top")
public String top() {
return "top.html"
}
}
importの部分はアノテーション(@の部分)を入力すると自動で入力してくれます。Flaskの@app.route("/", methods=["GET", "POST"])の役割が@RequestMapping("/")の部分なようです。
src/main/resourcesファイルにtemplatesというファイルがあるのでそこにtop.htmlを作成します。
あとはumpire_appweb(プロジェクト名、親ファイル?)を実行して、
http://localhost:8080/top
にアクセスすると

HTMLファイルを表示させることができました。ここまで20分足らず。Flaskと似ている感じがしてきたのであとは文法さえなんとかしてしまえばなんとかなりそうです(そこが難しいのでは)。JavaはPythonと違って変数を定義するときにもちゃんと型を指定しないとだめなんだなというのが分かってきたのであとは同じオブジェクト指向の言語だしいけるはず…頑張ります。