Springプロジェクト

オクダヒロキ
リツアンSTCでプログラマをやっている、オクダヒロキです。

僕はJava(Spring Boot)でWebアプリケーションの開発を行っている人間です。現場では特に何の苦労もなく開発を行っています。

でも、現場の環境と同じものを作ろうと思ったとき、意外ととまどいます。環境を一から作る機会はそう多くないし、何のライブラリを取り入れているかというのもあまり気にしていないからです。

そんな状態なので、自分自身のためにもここでしっかりと知識をまとめておく必要があるなと思いました。というわけで、まずはSpring Bootを使用してWebアプリケーションを開発するときのサンプルプロジェクトを作成しています。

Spring Bootで開発を行う人、特に学習を行う人は参考になるので、読んでもらえたらと思います。

Spring Bootとは?

Spring BootとはJavaのフレームワークの一つです。Javaには数多くのフレームワークがありますが、現在はSpring BootがJava界のデファクトスタンダードになっています。

昔から存在するシステムにはまだ適用されていないものもたくさんありますが、Javaでシステムを刷新する場合はほぼ間違いなくSpring Bootが採用されます。

Java言語は何かとディスられがちな言語ですが、共用のリポジトリからライブラリを簡単にダウンロードして使用できる環境が整備されたことで、一時期の使いにくさを脱却したと考えています。

もうしばらくはIT界の標準的なプログラミング言語として使われていくでしょう。

公式サイトはこちら▼

Spring Bootのサンプルプロジェクト

まだ完全には出来上がっていませんが、現場の開発環境とテスト環境を概ね再現できたので、そのリポジトリを公開しておきます。

作成環境/開発環境

  • Windows 10
  • jdk-12.0.1
  • IntelliJ IDEA Community Edition 2019.1.3 x64

ソースコードの思想

サンプルなので思想というほどのものではありませんが、一点だけ意識して書いたのは「コンストラクタインジェクション」でDIする方法を採用していることです。

サンプルプロジェクトのライブラリ構成

サンプルプロジェクトのライブラリは以下の通りです。build.graleを引用。


dependencies {
    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot
    compile group: 'org.springframework.boot', name: 'spring-boot', version: '2.1.6.RELEASE'
    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter
    compile group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.1.6.RELEASE'
    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.1.6.RELEASE'

    // https://mvnrepository.com/artifact/org.projectlombok/lombok
    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.8'

    // junit 5
    // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.5.1'
    // mockito 全般
    // https://mvnrepository.com/artifact/org.mockito/mockito-core
    testCompile group: 'org.mockito', name: 'mockito-core', version: '3.0.0'

    // mockito ExtendWith
    // https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter
    testCompile group: 'org.mockito', name: 'mockito-junit-jupiter', version: '3.0.0'

    // mockito assertThat().isEqualTo
    // https://mvnrepository.com/artifact/org.assertj/assertj-core
    testCompile group: 'org.assertj', name: 'assertj-core', version: '3.13.0'

コメントに必要なものはメモ書きしていますが、詳細は以下の通り。

spring-boot/spring-boot-starter/spring-boot-starter-web

これは基本のライブラリですね。Spring Bootを使用するなら、深く考えずに入れておきましょう。Webアプリケーションを作るのでないならば、spring-boot-starter-webは除外しても問題ないでしょう。

lombok

クラスやメソッドに @Getter や @Setter のアノテーションを付けることによって、getterやsetterを書く必要がなくなります。これは本当に便利です。

現場によっては余計なプラグインはインストールするなというところもあるでしょう。でも、僕個人としては、全現場で導入必須と考えています。

だって、書くの面倒じゃないですか。わざわざ getXX とか setYY とかたくさん書いたところで、本当に書きたいコードは何も作られていないとかあまりにも勿体ないので。

junit-jupiter

こちらはJUnit5に対応するためのライブラリです。JUnit4で使いにくかった点が改善されているので、可能ならばこちらに対応しておくのが良いでしょう。

mockito-core/mockito-junit-jupiter

mockitoはユニットテストで使用するライブラリで、モックを使用することが可能です。モックのライブラリもいくつかありますが、僕が現場で知って良いと思ったので、こちらを取り込んでいます。

mockito-junit-jupiterは入れなくてもモックを使用することは可能です。ただし、このライブラリで使用できるExtendWithアノテーションを使用すると、フィールドにアノテーションを付けることでモックを作ることが可能。テストコードの手間も削減できます。

assertj-core

こちらもユニットテストで使用するライブラリで、検証用のメソッドassertとそれに関するメソッドが豊富に揃えられています。通常のJUnitでは書きにくい内容も楽に検証することが可能です。

最後に:自分用のテンプレートを用意して開発効率を上げる

Spring Bootで開発を行うためのサンプルプロジェクトを用意しました。

実際に開発を行う上ではもっと多くのライブラリが必要になると思いますが、ミニマムから構成して徐々に機能を追加していくには、こういったサンプルを用意しておく必要があるでしょう。

近年はgithubの台頭もあり、個人でも多くのリポジトリを持てるし公開することも可能です。会社のリポジトリがあると思いますが、自分用のリポジトリも管理しておいて、必要な情報を素早く取り出せるようにしておくのが良いですね。

特に客先常駐型の仕事をしているエンジニアは、自分のPCを持ち込むことができないのが当たり前ですが、ネット上に公開しているgithubのソース取得を制限されることは稀です。自分が気持ち良く仕事ができるようにしておく上でも、情報をまとめたソースをアップしておきましょう。

挫折させないRuby動画講座「Skill Hacks」

プログラミングを独学で習得する際に障壁となるのが、「環境構築」と「質問できない環境」です。予備知識もなくプログラミング言語を学習すると、この2つで9割近くの人が挫折します。

その点、プログラミングの動画講座「Skill Hacks」はこの問題点を解消。

Skill Hacksの特徴
  • AWSを使用して環境構築は一瞬で完了
  • LINE@で質問し放題

また、本講座で使用するRubyは未経験者でも比較的覚えやすく、日本語のドキュメントも充実しているプログラミング言語です。エンジニアとして働く前に一度講座を受けてみては?

「Skill Hacks」への申し込みは下記からどうぞ▼

Skill Hacks