見出し画像

小さな渋谷の会社でゼロから作るWebアプリケーション (2) Gradleプロジェクト作成

株式会社エー・アンド・ディのCTOの山口です。

前回で開発に必要なツールのインストールが完了しました。

今回は、プロジェクトの基礎となるGradleプロジェクトを作成していきます。

なお、本マガジンで開発しているプロジェクトのソースコードはこちらで公開しています。
(開発は継続しているため、masterブランチでは本文の内容より先に進んでいる場合があります)

https://github.com/andcorp/morisoba

Gradleとは

Gradleとは、Javaの開発でよく使用されるビルドツールです。
主に以下のような役割を負っています。

* ビルドに必要なライブラリーを設定ファイルに記載し、ビルド時に自動で取得する。
* classファイルへのコンパイル・JarやWarへのパッケージング・テストの実行などの手順をまとめておき、コマンド1つで実行できるようにする。
* その他の作業をスクリプトとして記載しておき、簡単に実行できるようにする。

本マガジンのプロジェクトでは、Gradleを活用して以下のような作業を自動化します。

* 実行ファイル(jar)のビルド
* DBの構成管理
* DB向けのSQLの生成
* フロントエンド向けのNode.jsの管理
* フロントエンド向けのJavaScript・HTML・CSSのビルド

Gradleについて少し詳しく

Gradleは、実はGroovyというスクリプト言語の実行環境でもあります。

Groovyは、Java仮想マシン(JVM)向けのコードを生成するスクリプト言語で、つまり、Javaの機能が少ない記述量で使えるプログラミング言語です。
GradleはこのGroovyを使用して各種ビルドの設定・実行を行います。そのため、Gradleの設定ファイルの中では、GroovyとJDKの全機能を使用できます。
逆に言えば、Gradleを本当に使いこなすためには、GroovyとGradleのSDKの知識が必須です。

これが割と難しいです……。

ちなみに、最近のGradleはKotlinというまた別の言語も使用できます。

すごいですね。もうわけがわかりませんね。ただ活用するととてつもなくスゴイということを覚えておいて頂ければと思います。

Gradleインストール(しない)

それでは、さっそくGradleを使っていきます。

Gradleはツールなので本来はインストールが必要です。しかし、実は、Gradle Wrapper という仕組みを使うことで、インストールなしでも使えます。

とはいえ「鶏と卵」の問題で、最初の1回だけインストールされたGradleが必要になるのですが、今回は私がGithubに必要ファイルをアップしているため、そちらを利用される皆さんにとっては不要です。

(参考) Gradle Wrapperのための設定

Gradle Wrapperの設定方法について、morisobaのGithubリポジトリではもう完了しています。
しかし、改めて別途プロジェクトを作りたい人もいるかもしれないので、必要な設定手順についてここに記載しておきます。

まず、VSCodeの統合ターミナルでダウンロードしたJDKを使用できるように、.code-workspaceファイルにJAVA_HOMEの設定を行います。

    "settings": {
        "java.home": "C:\\Users\\ikemen\\morisoba\\jdk\\amazon-corretto-11",
        "java.jdt.ls.vmargs": "-noverify -Dfile.encoding=utf8 -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication",
        "java.configuration.updateBuildConfiguration": "automatic",
        "files.exclude": {
            "**/.classpath": true,
            "**/.project": true,
            "**/.settings": true,
            "**/.factorypath": true,
            "jdk/": true
        },
        "terminal.integrated.env.windows": {
            "JAVA_HOME": "${workspaceFolder:.}\\jdk\\amazon-corretto-11"
        }
    }

terminal.integrated.env.windows の部分が今回追加した箇所です。これで、ターミナルでJAVA_HOMEが指定したものになります。
(本当は${config:java.home}としたかったのですが、VSCodeの変数の展開が1段階しかされず、失敗しました……)

ターミナルで下記コマンドを実行すると、どこに設定されたか確認できます。(PowerShellの場合)

$ echo ${env:JAVA_HOME}
C:\Users\ikemen\morisoba\jdk\amazon-corretto-11

次に、最初のbuild.gradleファイルを用意します。
今回はmasterディレクトリを用意し、その中に下記のbuild.gradleファイルを作成します。

// Gradle Wrapperの設定
// `gradlew.bat wrapper` で下記バージョンのGradleが取得される。
wrapper {
   gradleVersion = '5.5.1'
}

次の手順の前に、Gradleを普通にインストールしておきます。

そして、Gradle WrapperをVSCodeの統合ターミナルで動かします。

$ C:\path-to-gradle\bin\gradle wrapper

path-to-gradleは、Gradleのインストール先ディレクトリに置き換えてください。
実行結果が下記のようになれば成功です。

$ C:\path-to-gradle\bin\gradle wrapper
Downloading https://services.gradle.org/distributions/gradle-5.5.1-bin.zip
.....................................................................................

Welcome to Gradle 5.5.1!

Here are the highlights of this release:
- Kickstart Gradle plugin development with gradle init
- Distribute organization-wide Gradle properties in custom Gradle distributions
- Transform dependency artifacts on resolution

For more details see https://docs.gradle.org/5.5.1/release-notes.html

To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/5.5.1/userguide/gradle_daemon.html.
Daemon will be stopped at the end of the build stopping after processing
Configuration on demand is an incubating feature.

BUILD SUCCESSFUL in 7s

これで、masterディレクトリ内にプロジェクト専用のGradleがインストールされます。

追加されたファイルについて、.gradleディレクトリだけを.gitignoreで除外し、その他のファイルは普通にソースコードとして管理します。

jarファイルも含めて管理します。
(ソースコードのみcloneした人がGradleを使えるようにするため)

Gradle Wrapperの取得が完了したら、インストールしたGradleはアンインストールしてしまって大丈夫です。

MORISOBAでは、上記の手順を既にやってあるので、cloneするだけでGradleが使えます。便利ですね。

まとめ

なんだかおまけ手順だけの回になってしまいましたが、これでビルドツールのGradleが使用できるようになりました。

次回は、JavaのWebサーバーを動かすところまで一気に行ってみたいと思います。

免責事項・ライセンス

画像1

 この 作品 は クリエイティブ・コモンズ 表示 - 改変禁止 4.0 国際 ライセンスの下に提供されています。

 弊社の当コンテンツに掲載されている情報の正確性・安全性などについての保証はなく、弊社は何らの責任を負うものではありません。
 弊社の当コンテンツに掲載された内容によって生じた損害等の一切の責任を負いかねますので、ご了承ください。

Copyright © 2019 ANDCORP.

この記事が気に入ったらサポートをしてみませんか?