- SpringBootを使ってみたいけど、そもそもどんなもの?何ができるの?
- SpringBootを会社で使う必要が出てきた。入門者向けに基礎の基礎から知りたい。
本記事はこのようなお悩みを解決します。
記事の信頼性
現在現役のJavaエンジニア
1年目の時にSpringBootを学ばねばならず、大変苦労しました。。
SpringBootを触ったことがない方でも、この記事を読めば環境構築からHello Worldの出力までできるようになります。
Hello Worldまで出力できればWebアプリの雛形は完成ですので、後は好きなロジックを組んでいけますよ。
なお、こちらの記事はJavaエンジニアの勉強ロードマップ上の記事でもあります。
まだロードマップをご覧になっていない方は、ぜひ以下の記事を読んでみてくださいね。
Javaエンジニアとしてどのように学んでいったらよいのか、その全体像をつかむことができると思います。
-
-
初心者・未経験者のためのJavaエンジニアロードマップ
「これから会社でJavaを使うけど、何を勉強したら良いの?」 ...
続きを見る
SpringBootに入門しよう
まずは初心者の方に向けて、SpringBootとは何か、何が嬉しいのか、をご紹介します。
SpringBootとは何か
SpringBootとはJavaのWebアプリケーションフレームワークです。DIを用いてクラス間の依存性を少なくすることや、AOPを取り入れてロジックと関係ない処理を分離する機能が特徴的です。
ただし、私がSpringBootに入門するときはこのようなことを言われても全く分かりませんでした。そのため、「JavaのWebアプリケーション作成を楽にしてくれる仕組みなんだな!」でOKです。
補足: フレームワークとは
本来フレームワークとは雛形や枠組みと行った意味を持ちますが、プログラミング界のフレームワークも同じです。
開発するプロダクトの雛形が最初から準備されていて、後は独自のロジックを実装すれば完成ですよ、といったものがフレームワークです。
ココがポイント
フレームワークは雛形。開発を途中までやってくれているもの。
例えとして、「Webアプリケーションフレームワーク」について考えてみます。Webアプリは基本的に以下の処理があると思います。
step
1ユーザーからのリクエストを受ける
step
2何らかの処理を行う
step
3レスポンスを返す
この中で、どんなWebアプリでも①と③は絶対に必要な機能ですよね。
Webアプリケーションフレームワークを使うと、①と③を最初から実装された状態で開発を始められます。実際の開発は実質独自ロジックだけになる上、その独自ロジックの部分に関しても色んな機能を提供してくれているので、すごい便利に開発することができるのです!
SpringBootを使うメリットとは
SpringBootを使うメリットは2つあります。
1つめ: 開発が楽になる
1つ目のメリットは、開発が楽になることです。
先ほどもお伝えしたように、フレームワークは最初から開発に必要な機能と、その他便利な機能を提供してくれます。
少しだけ内容をお伝えすると、ユーザーからのリクエストを受け付けてレスポンスを返すクラスとメソッドは「@Controller」と「@GetMapping」の2つを書くだけで完成してしまいます。
このように、SpringBootを使うことでJavaのWebアプリ開発を簡単にしてくれるのです。
2つめ: エンジニアが理解しやすいフォルダ構成になる
2つめのメリットは、SpringBootで作ったWebアプリはエンジニアにとって理解しやすい形になるという点です。
フレームワークはある程度完成した状態から開発を始めます。また、フレームワークの機能を使うには決まった書き方をしなければならない場合も多いです。
すると必然的にフォルダ構成が似るようになるので、経験のあるエンジニアならアプリの全体像を掴みやすいのです。
ぱっとしないかもしれませんが、企業で使うレベルのコードはとんでもないクラス数なので、フレームワークでフォルダ構成が決まっているととても楽ですよ。
SpringBootの環境構築
SpringBootの環境構築は、なんとEclipseをインストールしていれば不要です。最初からSpringBootがセットになっているので、すぐに開発を始めることができます。
Eclipseを持っていない方も、ダウンロードしてインストールするだけなので、身構えなくても大丈夫ですよ。
IT入門書籍 スッキリシリーズさんの記事がシンプルで読みやすかったので、恐縮ですが紹介させていただきます。
https://sukkiri.jp/technologies/ides/eclipse/pleiades_install.html
SpringBootでHelloWorldを出力するまで
続いて、SpringBootを使っていきたいと思います。今から作るのは最も基本的なWebアプリです。URLにリクエストを送ると、Topページが表示されます。
では、早速プロジェクトを作成しましょう。
手順①: 新規プロジェクトの作成
SpringBootプロジェクトを作ります。
Eclipseの左上のFile > New > Otherから、Spring Starter Projectを選びます。
※Spring Starter Projectがない方は、Help > Eclipse Marcketplaceで"spring"と調べてSpring Tools4をインストールしてください。
続いて、その次の画面で以下を設定していきます。
- Name: samle
- Type: Maven
- Java Version: 11
- Package: jar
これらが設定できたら次へを押し、DependenciesではThymeleafとSpring Webを選択します。以上ができれば「作成」を押します。
手順②: Thymeleafの作成
続いて、ユーザーに返すHTMLページを作ります。
step
1/templateフォルダを作る
src/main/resourcesを右クリックし、NewからFolderを選択します(Source Folderではないので注意。なければOtherにあります。)
名前にtemplateと入力し、作成します。これでsrc/main/resources/templateができました。
step
2index.htmlを作る
先ほど作成したsrc/main/resources/templateの中に、index.htmlを作成します。
内容は以下のコードです。
<!DOCTYPE html> <html> <head> <title>タイトル</title> <meta charset="UTF-8"> </head> <body> テストページ </body> </html>
手順③: Controllerの作成
続いて、ユーザーからリクエストがあったらindex.htmlを返してあげるコントローラクラスを作ります。
step
1SampleController.javaの作成
src/main/javaを右クリックしClassを選択。名前にAppControllerと名付けて作成します。
step
2SampleController.javaの中身を書く
続いて、以下のような中身を書いていきます。意味については後ほど解説いたしますね。
package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class SampleController { @GetMapping("/index") public String index() { return "index"; } }
非常にシンプルなコードですが、これだけでユーザーのリクエストにindex.htmlを返すことができます。
フレームワークの素晴らしさが分かりますね。
解説1. @Controllerとは
これはコントローラクラスであることを宣言するアノテーションです。
コントローラクラスとは、ユーザーからのリクエストを受け付けることができるクラスを指します。
解説2. @GetMappingとは
このアノテーションをメソッドにつけると、GETリクエストを受けるようになります。
@GetMapping("/index")とかけば、URLでlocalhost:8080/sample/indexのアクセスに対してメソッドが実行されます。
解説3. return "index"とは
文字列を返しているように見えますが、これでindex.htmlを返すことができます。
これもフレームワークの力です。
手順➃: 実行する
作ったアプリを実行しましょう。
sampleフォルダを右クリック > 実行 > SpringBootアプリケーションを押すと実行できます。
起動に成功したら、localhost:8080/sample/indexにリクエストを送ってみましょう。index.htmlが表示されれば成功です。
※ポートが8080ではない方もいらっしゃると思います。各自のポートに合わせてください。8080か80が多いと思います。
このあと何を勉強すればよい?
SpringBootに入門した場合は、以下の勉強を行うのがおすすめです。
step
1アノテーションを覚える
まずはSpringBoot特有のアノテーションを覚えることをおすすめします。少なくとも以下を学びましょう。
@Controller, @RestController, @Autowired, @Service, @Component, @Entity, @GetMapping, @PostMapping,
step
2DIとAOPを覚える
続いて、Springフレームワークの2大特徴であるDIとAOPを学びます。SpringBootで開発するには、DIやDIコンテナの仕組みを必ず理解しておくことが大切です。
AOPに関しては、自分で開発する分には使わないこともありますが、ぜひ概要だけでも押させてくだだい。
step
3Thymeleafを覚える(スキップ可)
続いて、テンプレートエンジンであるThymeleafを学びます。
ただし、こちらはスキップしても構いません。理由は、実際の開発でThymeleafを使うことは少ないためです。
現在はVueやReactを使ってフロントエンドサーバをしっかり立てることが主流ですからね。
step
4ウェブアプリを作る
最後に、学んだ知識を実践を通して身につけるために自分でウェブアプリを開発します。
内容としては、データベースを用意してSpringDataJPAなどのORMも同時に学ぶのがおすすめです。実際の開発でDBがないものなんてほとんどありませんからね。
ここではぜひ、好きなウェブアプリを作っていただきたいですが、どうしても思いつかないという方はUdemyのSpringBootの講座を真似するのがおすすめです。
これは私もやった方法なのですが、最初から自分でアプリを作るよりも、実際にどうやって作っているのかを見たほうが分かりやすいためですね。
こちらは後ほど紹介します。
SpringBootを勉強するのにおすすめな方法
SpringBootを勉強するのにおすすめな方法は2つあります。
方法①: 技術書で勉強する
1つめは技術書を買って勉強する方法です。
SpringはJavaの有名なフレームワークですから、技術書もとても充実しています。ただし、機能がたくさんあって複雑なフレームワークなので、技術書がかなり難しいのがネックです。
「理論から学びたい」という人には技術書から学ぶのはぴったりなのですが、入門したての方にはかなりきついというのを覚えておいてください。
私が実際に買ったSpringの本は『Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発』です。
Amazonを見ると、Spring関連の本の中でも一番評価数とレビュー数が高いので、安心できます。
方法②: Udemyで勉強する
もう一つのおすすめ勉強法は、UdemyでSpringBootの講座を買って勉強することです。
Udemyとはオンライン学習プラットフォームサイトです。教えたい人が講義動画をアップし、学びたい人がそれを購入して学ぶことができます。
一度講座を買ってしまえば、いつでもどこでも見れるのでスキマ時間の学習にもよく使っています。
私が実際に買ったのは『Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~ 』という講座です。
SpringBootの基礎を学びながら2つのアプリを作ることができる上に、ソースコードは全て用意してくれているので、入門者でも十分に受講することができます。
こちらは、「とりあえず手を動かしながら学びたい」という方におすすめです。
なお、Udemyは定期的にセールをやっているので、絶対にセール中に買いましょう。半額以下になることも珍しくないので、定価で買うともったいないですよ。
Udemyはセール中(1ヶ月に数回ある)に買うこと!
半額以下で買える可能性もある!
まとめ
SpringBootに入門する方法をご紹介しました。
会社で急にSpringBootを学ぶ必要がある方や、Javaを勉強していてフレームワークに挑戦しようと思っている方にとって、本記事が少しでもお役に立てましたら幸いです!
SpringBootは企業レベルの開発でも非常に使われているフレームワークなので、使いこなせるようになるのがおすすめです。
これからも一緒にJavaエンジニアを頑張っていきましょう!最後までお読みいただきありがとうございました。
▼その他のJavaエンジニアロードマップはこちら
-
-
初心者・未経験者のためのJavaエンジニアロードマップ
「これから会社でJavaを使うけど、何を勉強したら良いの?」 ...
続きを見る