日々常々

ふつうのプログラマがあたりまえにしたいこと。

Javaアプリケーションを作るときにまずやってること

DevLOVE関西で実験的なイベントをさせてもらいました。

devlove-kansai.doorkeeper.jp

このイベントのおかげで、自分がアプリケーション作るときに最初にどうしてるかを確認できたので晒してみます。誰かの役に立つかどうかは知らない。あ、Macです。ある程度はWindowsでもいけると思うけど、ある程度だと思う。

なおSTSとかIDEのプロジェクト生成機能を使えば一発で済むことだったりする。宗教上の理由で使わないけど。

やってること

基本的にマウスを触る必要はないです。それぞれの詳細は次の通り。長く見えるかもしれませんが、(IDEAの起動とgradleのjarのダウンロード時間を除けば)全部で30秒くらいです。

作業ディレクトリを作る

% git init {作るもの}
% cd {作るもの}

mkdir {作るもの} して cd {作るもの} して git init することもあります。 たまにこの段階で README.md を作ってコミット、ライセンスファイルを作るときはGitHubで作ってからcloneします。

ビルドスクリプトを用意する

記憶かける程度ならそれで。

% vi build.gradle

だいたいこれくらい。たまに cat>build.gradle で書いたりもしますが、気分です。

apply plugin: 'java'
repositories.jcenter()
dependencies {
  testCompile 'junit:junit:4.12'
}

Javaのバージョンやエンコードの設定などが無いですが、一旦作ってから後で変えればいいと思っているのでこだわりません。

これよりも多く書く場合(作るものが決まってるとか)は次のいずれかになります。イベントでは「手元のテンプレートをコピる」をしました。

  • 手元のテンプレートをコピる
  • ググる
  • Spring Initializr

手元のテンプレートをコピる

% cp {テンプレートのあるとこ}/build.gradle ./

ググる

ググって出てきたの(主にGettingStarted)を切り貼りします。

MavenCentralRepositoryを検索

使いたいgroupIdとかがわかっている場合はこっちで検索。

https://mvnrepository.com/

Spring Initializr

https://start.spring.io/

便利ですね。

必要なディレクトリを作る

% mkdir src/main/java src/main/resources src/test/java src/test/resources

これをするエイリアスを作っています。前段のテンプレートをコピるのをあわせたのもあるので、そっちを使うことが多いです。

alias mkjavadirs='mkdir src/main/java src/main/resources src/test/java src/test/resources'
alias initSpringProject='mkjavadirs && cp {テンプレートのあるとこ}/springboot.gradle ./build.gradle'

と言う感じ。

IDEを起動して取り込む

% idea build.gradle

IntelliJコマンドラインランチャーを使います。 Tools / Create Command-Line Launcher から作れるもので、 idea コマンドで新しくプロジェクトが開けます。 コマンドラインラインチャーを作らないなら、IDEAを立ち上げてからOpenでbuild.gradleを選ぶのですが、若干面倒。

テストを書いて実行する

こんな感じのテストを作って実行します。

import org.junit.Test;

public class HogeTest {
    @Test
    public void test() throws Exception {
        
    }
}

即捨てるのでデフォルトパッケージです。確認したいのは環境です。テストが実行できる環境になっているかとか。

面倒に思えるかもしれませんが、テストの作成は以下でできます。

  • Projectの src/test/java ディレクトリを選択
    • [Command]+1 から上下キー、もしくはマウスクリックします
  • [Command]+n で新規のメニューを開いて [Enter]
    • 新規クラス作成のダイアログが出る
  • HogeTest [Enter]
    • クラスができる
  • [Esc]
    • エディタがアクティブになる
  • O
    • 新規行ができる。vimすばらしい。
  • test [Tab]
    • Live Templatesによりテストメソッドが生成される
  • test
    • テストメソッド名を入力
  • [Ctrl]+[Alt]+r [Enter]
    • テストが実行される

キーを押す回数は30回程度、今やってみたら12秒でした。( HgeTest ってtypoったけど。) これをサボると、たまに「なんかビルドできない」とかで悩んだりして馬鹿らしいので、ビルドスクリプトを切り貼りしたときや、環境の更新をした後などは必ずやります。

SpringBootアプリケーションの場合

テストではなく Application クラスで代用します。 起動すれば環境としては問題無いと判断できます。

コミットする

% git add .
% git commit -m"init"

いつでもここに戻ってこれるように。

この段階のリポジトリ

GitHub - irof/DevKan20180305 at a4ccd5d761ccb58cd66bdbec1516cfb2f41852c6

コミットとしてはこの2つ。

さらに前段のことや、周囲のことや、マルチプロジェクトの場合とか、とかとか

WEB+DB PRESS vol.98 「実践!イマドキのビルド環境」に書いてます!

WEB+DB PRESS Vol.98

WEB+DB PRESS Vol.98