-
IDE
Eclipse Neon.3 (4.6.3)
-
フレームワーク
SpringBoot (1.5.4)
- gitでmasterブランチをclone
- Eclipseで、ファイル→インポート→Gradle/Gradleプロジェクト、を選択してインポート
- プロジェクトを右クリックし、Gradle→Gradleプロジェクトのリフレッシュ、を選択
-
インポートにGradleプロジェクトがない場合、Eclipseに
BuildShip
をインストールする必要がある- Eclipseのメニューバーからヘルプ→Eclipseマーケットプレイス→
BuildShip
で検索しインストール
- Eclipseのメニューバーからヘルプ→Eclipseマーケットプレイス→
-
Gradleプラグインとして
Gradle IDE Pack
を使用している場合BuildShip
をインストール- Gradle(STS)/Gradle(STS)Projectを選択してインポートすることも可能だが、
BuildShip
を使用するので上記の方法でインポートする - 参考
-
Lombokを使用しているため、EclipseへのLombokのインストールが必要である
- Lombokのjarファイルをダウンロードして実行
- 対象のIDEを聞かれるのでEclipseを選択してインストール
-
方法1
プロジェクトを右クリック→実行→実行の構成→
NoviceTimerApplication
を選択して実行 -
方法2
NoviceTimerApplication
を表示して、右クリック→実行→Java アプリケーション、より実行
-
src/main/resources/config/application.yml
ファイルに通知を送るフックのurlを記述するが、GitHubで公開したくないのでurlの記述のないダミーファイルとしている -
実際のフックurlを記述した
application-production.yml
を作成し、.gitignore
ファイルに記述することでGitの管理から外している -
通常どおりに実行すると設定ファイルとして
application.yml
が読み込まれる。 -
application-production.yml
を読み込むには、実行時に環境変数SPRING_PROFILES_ACTIVE = production
を指定する(Eclipseの場合、実行→実行の構成→環境、に記述) -
通知を送りたくない場合、
TimerService.NoticeTimerTask
のsendMessageメソッド
の処理をSystem.out.println
に変更するとよい
UI
-
アジェンダ一覧画面
- パス: GET /agendas
-
アジェンダ作成画面
- パス: GET /agendas/create
-
アジェンダ編集画面
- パス: GET /agendas/edit?id={agendaId}
-
アジェンダ詳細画面
- パス: GET /agendas/detail?id={agendaId}
API
-
アジェンダの全取得
- パス: GET api/agendas
-
特定アジェンダの取得
- パス: GET api/agendas/{id}
-
アジェンダの登録
-
パス: POST api/agendas
-
リクエストボディ:
{ "subjects": [ { "title": "title1", "minutes": 5, "idobata_user": "user1" }, { "title": "title2", "minutes": 5, "idobata_user": "user2" } ] }
-
-
アジェンダの更新
-
パス: PUT api/agendas/{id}
-
リクエストボディ:
{ "subjects": [ { "title": "new_title1", "minutes": 10, "idobata_user": "new_user1" }, { "title": "new_title2", "minutes": 10, "idobata_user": "new_user2" } ] }
-
-
サブジェクトの更新
-
パス: PUT api/agendas/{id}/subjects/{number}
-
リクエストボディ:
{ "title": "new_title", "minutes": 10, "idobata_user": "new_user" }
-
-
アジェンダの全削除
- パス: DELETE api/agendas
-
特定アジェンダの削除
- パス: DELETE api/agendas/{id}
-
タイマーの開始
-
パス: PUT api/agendas/{id}/subjects/{number}/timers
-
リクエストボディ:
{ "state": "start" }
-
備考: タイマーの実行は同時に1つのみ、実行中のタイマーがある場合は開始されない
-
-
タイマーの終了
-
パス: PUT api/agendas/{id}/subjects/{number}/timers
-
リクエストボディ:
{ "state": "end" }
-
-
備考
- APIを実行できるツール
- curlコマンド
- Restlet Client - REST API Testing
- APIを実行できるツール
-
Herokuを使用する準備
- Herokuアカウントを作成する
- Heroku CLIをインストールする(参考のDownload the Heroku CLI for...から)
heroku login
コマンドを使用して、登録したメールアドレスとパスワードでログインするheroku keys
コマンドでキーが追加されたか確認する。ない場合はheroku keys:add
コマンドで追加する
-
Herokuへデプロイ
./gradlew build
コマンド(windowsはgradlew.bat build
)でビルドを実行し、生成された実行可能jar(build/libs/novice-timer-0.0.1-SNAPSHOT.jar)が問題なく実行できるか確認するheroku login
コマンドを使用してログインheroku create
コマンドで新しいHerokuアプリをプロビジョニングheroku config:set BUILDPACK_URL=https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git
コマンドを実行し、使用するBuildpackを変更git push heroku master
コマンドで作成したアプリをHerokuへプッシュheroku open
コマンドでアプリをブラウザで実行できる
-
備考
- Herokuではmasterが実行される
- 初回はHerokuにmasterがないので
git push heroku master:master
でプッシュする - アプリの名前は
heroku create
時に適当に決められるが、heroku apps:rename
コマンドで任意の名前に変更できる - Herokuでの環境変数は、
heroku config:set
コマンドで登録できる - Heroku標準のBuildpackでは、SpringBootアプリを
gradle wrapper
でうまくビルドできない。そのためカスタムのBuildpackを利用するためにheroku config:set BUILDPACK_URL=https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git
コマンドを実行する
-
参考
- 槙俊明(2016)『はじめてのSpringBoot[改訂版]』工学社.