かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot + Spring Integration でいろいろ試してみる ( その24 )( MessageSource からの Message 送信有無を制御する )

概要

記事一覧はこちらです。

  • org.springframework.integration.core.MessageSource からデータ取得して処理する処理を任意に stop したり start したり制御できないか考えてみました。そのメモ書きです。

参照したサイト・書籍

目次

  1. ksbysample-eipapp-messagesource-controll プロジェクトを作成する
  2. まずは 1秒毎に hello を出力する処理を書いてみる
  3. MessageSource から null を返せば何も処理されないのか?
  4. MessageSource から Message を返すか否かを 5秒毎に切り替えてみる

手順

ksbysample-eipapp-messagesource-controll プロジェクトを作成する

今回は Spring Initializr で作成します。

f:id:ksby:20180821051057p:plain f:id:ksby:20180821051412p:plain f:id:ksby:20180821051457p:plain f:id:ksby:20180821051601p:plain

生成された build.gradle は以下のものですが、

buildscript {
    ext {
        springBootVersion = '2.0.4.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'ksbysample'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-integration')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

lombok の @Slf4j を使いたいので dependencies block を以下のように変更します。Spring Initializr で生成された Gradle プロジェクトの Gradle は 4.8.1 だったので、記述も少し変更しました。

dependencies {
    def lombokVersion = "1.18.2"

    implementation('org.springframework.boot:spring-boot-starter-integration')
    testImplementation('org.springframework.boot:spring-boot-starter-test')

    // for lombok
    annotationProcessor("org.projectlombok:lombok:${lombokVersion}")
    compileOnly("org.projectlombok:lombok:${lombokVersion}")
}

build.gradle を以下の内容に変更した後、Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。

@SpringBootApplication が付与されているクラス名が長かったので、短く Application クラスに変更します。

まずは 1秒毎に hello を出力する処理を書いてみる

以下の仕様で実装します。

  • MessageSource は "hello" の文字列が payload にセットされたメッセージを返す。
  • IntegrationFlow を返す Bean の処理は、1秒毎に MessageSource からメッセージを取得してログに出力する。

src/main/java/ksbysample/eipapp/mscontroll の下に FlowConfig.java を新規作成し、以下の内容を記述します。

package ksbysample.eipapp.mscontroll;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.core.MessageSource;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.dsl.Pollers;
import org.springframework.integration.support.MessageBuilder;

@Slf4j
@Configuration
public class FlowConfig {

    @Bean
    public MessageSource<String> helloMessageSource() {
        return () -> MessageBuilder.withPayload("hello").build();
    }

    @Bean
    public IntegrationFlow helloFlow() {
        return IntegrationFlows.from(helloMessageSource()
                , e -> e.poller(Pollers.fixedDelay(1000)))
                .handle((p, h) -> {
                    log.info("★★★ " + p);
                    return null;
                })
                .get();
    }

}

実行すると以下のようにログが出力されます。

f:id:ksby:20180821053654p:plain

MessageSource から null を返せば何も処理されないのか?

MessageSource から Message を返さずに null を返すと処理は何も起きない気がするので、試してみます。helloMessageSource メソッドを以下のように変更します。

    @Bean
    public MessageSource<String> helloMessageSource() {
//        return () -> MessageBuilder.withPayload("hello").build();
        return () -> null;
    }

実行してみると Started Application in 1.981 seconds が出力された後は何も出力されませんでした。

f:id:ksby:20180821055312p:plain

MessageSource から Message を返すか否かを 5秒毎に切り替えてみる

以下の仕様で実装し直してみます。

  • MessageSource は boolean 型のフィールド変数を見て Message を返すか否かを切り替えられるようにする。
  • フィールド変数の値は @Scheduled アノテーションを付与したメソッドで 5秒毎に変更する。

まずは @Scheduled アノテーションが使用できるよう src/main/java/ksbysample/eipapp/mscontroll/Application.java を以下のように変更します。

package ksbysample.eipapp.mscontroll;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
  • @EnableScheduling を追加します。

src/main/java/ksbysample/eipapp/mscontroll/FlowConfig.java を以下のように変更します。

package ksbysample.eipapp.mscontroll;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.core.MessageSource;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.dsl.Pollers;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.scheduling.annotation.Scheduled;

@Slf4j
@Configuration
public class FlowConfig {

    private boolean messageSourceControlFlg = true;

    @Bean
    public MessageSource<String> helloMessageSource() {
        return () -> messageSourceControlFlg ? MessageBuilder.withPayload("hello").build() : null;
    }

    @Bean
    public IntegrationFlow helloFlow() {
        return IntegrationFlows.from(helloMessageSource()
                , e -> e.poller(Pollers.fixedDelay(1000)))
                .handle((p, h) -> {
                    log.info("★★★ " + p);
                    return null;
                })
                .get();
    }

    @Scheduled(initialDelay = 5000, fixedDelay = 5000)
    public void messageSourceControlFlgChanger() {
        messageSourceControlFlg = !messageSourceControlFlg;
        log.warn(String.valueOf(messageSourceControlFlg));
    }

}
  • private boolean messageSourceControlFlg = true; を追加します。
  • helloMessageSource Bean の処理を return () -> MessageBuilder.withPayload("hello").build();return () -> messageSourceControlFlg ? MessageBuilder.withPayload("hello").build() : null; に変更します。
  • messageSourceControlFlgChanger メソッドを追加します。@Scheduled アノテーションを付与して 5秒毎に実行されるようにします。

実行すると 5秒間 hello のログが出力されて、true → false に変わると5秒間何も起きず、false → true に変わると再び hello が出力されるようになりました。やりたかったことは実現できました。

f:id:ksby:20180821060823p:plain

履歴

2018/08/21
初版発行。

Windows 7 PC → Windows 10 PC へ移行する ( 最後にメモ書き )

記事一覧はこちらです。

  • 使用している Windows 7 PC と Windows 10 PC は物理的なディスプレイのサイズがほとんど同じで、ディスプレイ上に表示されている内容も同じだったのですが、解像度を見ると前者は 1280 x 800 で、後者は 1920 x 1200 となっており、Windows 10 PC では 150% に拡大されていました。「高DPIデバイス」というものらしいです。

    解像度が高いならもっと表示できるようになっても構わないなと思い、150% → 100% にしてみたらさすがに文字が小さすぎて見えず。125% だとちょうど良さそうだったのでこれにしたのですが、今度は Q-Dir 等のソフトで文字がにじむ現象が見られました。調べたら古いソフトで高DPIに対応していないとこうなるらしい。ソフトの exe のプロパティで設定をするときれいに表示させるようにできるので、いくつか設定しました。画面が広く表示されるようになったのは嬉しいのですが、少し面倒そうです。

  • これまで Google IME を利用していたのですが、拡大率を 125% に変更したら変換候補のウィンドウが入力中の文字を隠すように表示されるようになって Microsoft IME に切り替えました。Microsoft IME にすることはもうないだろうな、と思っていたので意外です。まさかこんな理由で切り替えることになるとは。。。 Microsoft IME を使ってみると、変換候補も結構賢くなっていて Google IME とそう変わらない感じです。

  • 画像の編集にペイントを使用していましたが、高DPIに対応していなくて使い物になりません(画像を貼り付けても小さくなります)。代替ソフトをいろいろ調べてみましたが paint.net にしました。

  • IntelliJ IDEA の Grep Console Plugin が便利です。特に WARN のログが気づきにくいのですが、色が変わって表示されるので簡単に分かるようになりました。

  • IntelliJ IDEA にインストール済の Plugin を見ていたら Struts 1.x を見つけました。こんなプラグインもあったんだとか、使っていない Plugin(見てると結構ありそう)を整理したら IntelliJ IDEA が軽快に動作するようになるのかなとか思いましたが、他にもやりたいことが山積みなので今のままですね。

  • Windows 10 になって、やっと Docker for Windows を入れることが出来ました。IntelliJ IDEA でも Docker サポートされているし、今後はサーバは Docker で環境作って楽ができるはず! でも最近の流れだと Docker なんて使えて当たり前で、Kubernetes とかを覚えていきたいところです。まあ、マイペースで行きましょう。

次は ksbysample-webapp-lending の Spring Boot 1.5 → 2.0 バージョンアップを行います(たぶん)。

Windows 7 PC → Windows 10 PC へ移行する ( Docker for Windows のインストール )

概要

記事一覧はこちらです。

Windows 10 に移行したので Docker for Windows をインストールします。また IntelliJ IDEA で Docker をサポートしているはずなので、その機能を試してみます。

参照したサイト・書籍

目次

  1. Windows の Hyper-V を有効化する
  2. Docker for Windows のインストール
  3. IntelliJ IDEA に Docker integration plugin をインストールする
  4. Docker の「Exposed daemon on tcp://localhost:2375 without TLS」の設定を有効にする
  5. IntelliJ IDEA の Docker 用の設定をする
  6. 動作確認

手順

WindowsHyper-V を有効化する

BIOS に Virtualization Technology (VTx) の設定が見つからなかったので、Hyper-V の有効化からやります。

  1. Window メニューから「設定」をクリックします。

    f:id:ksby:20180819132853p:plain

  2. Windows の設定画面が表示されます。"Hyper-V" で検索して表示された「Windows の機能の有効化または無効化」を選択します。

    f:id:ksby:20180819133136p:plain

  3. Windows の機能」ダイアログが表示されます。「Hyper-V」をチェックした後、「OK」ボタンを押して Windows を再起動してインストールします。

    f:id:ksby:20180819133322p:plain

Docker for Windows のインストール

  1. https://store.docker.com/editions/community/docker-ce-desktop-windows から Docker for Windows Installer.exe をダウンロードします。

  2. Docker for Windows Installer.exe を実行します。

  3. 「Installing Docker for Windows」画面が表示されます。何も変更せずに「Ok」ボタンをクリックします。

  4. インストールが実行されます。完了すると画面中央にボタンが表示されるのでクリックします。ただしクリックすると強制的にログオフさせられるので、作業中のものがあれば先に終了させます。

  5. Get started with Docker for Windows を見ながら hello-world image を実行します。

    f:id:ksby:20180819142239p:plain

IntelliJ IDEA に Docker integration plugin をインストールする

  1. IntelliJ IDEA を起動し、「File」-「Settings...」を選択します。

  2. 「Settings」ダイアログが表示されます。画面左側のリストで「Plugins」を選択し、画面中央下の「Browse repositories...」ボタンをクリックします。

  3. 「Browse Repositories」画面が表示されます。”Docker" で検索して、表示されたリストから「Docker integration」を選択し「Install」ボタンをクリックします。インストール後、IntelliJ IDEA を再起動します。

Docker の「Exposed daemon on tcp://localhost:2375 without TLS」の設定を有効にする

  1. Docker の設定を変更します。Windows の通知領域に表示されている Docker アイコンのコンテキストメニューを表示し、「Settings」メニューを選択します。

    f:id:ksby:20180819145557p:plain

  2. 「Settings」ダイアログが表示されます。「General」の中にある「Exposed daemon on tcp://localhost:2375 without TLS」をチェックした後、ダイアログを閉じます。

    f:id:ksby:20180819151119p:plain

IntelliJ IDEA の Docker 用の設定をする

  1. IntelliJ IDEA の「File」-「Close Project」を選択して、「Welcome to IntelliJ IDEA」画面に戻ります。

  2. 画面下から「Configure」-「Settings」を選択します。

  3. 「Settings for New Projects」ダイアログが表示されます。画面左側で「Build, Execution, Deployment」-「Docker」を選択し、画面中央上の「+」ボタンをクリックします。

    f:id:ksby:20180819152023p:plain

  4. 中央のリストに「Docker」が追加されるので、"tcp://localhost:2375" と入力されているところにカーソルを当てて "Connection successful" と表示されることを確認してから「OK」ボタンをクリックします。

    f:id:ksby:20180819152151p:plain

  5. Spring Initializr で何かプロジェクトを作成してみると、IntelliJ IDEA の画面下に「Docker」が表示されます。

    f:id:ksby:20180819152658p:plain

  6. 「Docker」をクリックすると Docker Tool Window が表示されて、「Connect」ボタンをクリックすると Docker 内の Container, Image が表示されます。

    f:id:ksby:20180819153039p:plain f:id:ksby:20180819153336p:plain

動作確認

  1. hello-world のコンテナを作成して実行してみます。「hello-world:latest」でコンテキストメニューを表示し「Create container」を選択→「Create...」を選択します。

    f:id:ksby:20180819154542p:plain f:id:ksby:20180819154654p:plain

  2. 「Create Docker Configuration」ダイアログが表示されます。「Container name」に "hello-world" と入力し、「Run」ボタンをクリックします。

    f:id:ksby:20180819155122p:plain

    コンテナが生成・実行されて "Hello from Docker!" が出力されました。

    f:id:ksby:20180819155316p:plain

  3. 今度は nginx のイメージを取得して実行してみます。https://hub.docker.com/_/nginx/ の Docker Image を使用します。

  4. Docker Tool Window 上でコンテキストメニューを表示し、「Pull Image...」を選択します。

    f:id:ksby:20180819155929p:plain

  5. 「Repository」に "nginx" を入力し、「OK」ボタンをクリックします。

    f:id:ksby:20180819160714p:plain

    nginx の Docker Image が Pull されて、「Images」の下に「nginx:latest」が表示されます。

    f:id:ksby:20180819160924p:plain

  6. 「nginx:latest」でコンテキストメニューを表示し「Create container」を選択→「Create...」を選択します。

  7. 「Create Docker Configuration」ダイアログが表示されます。以下画像の赤枠の部分を入力し、「Run」ボタンをクリックします。

    f:id:ksby:20180819161505p:plain

  8. nginx のコンテナが生成・起動されて、

    f:id:ksby:20180819161729p:plain

    ブラウザから http://localhost:8090/ にアクセスすると「Welcome to nginx!」のページが表示されました。

    f:id:ksby:20180819161922p:plain

  9. 作成したコンテナは全て削除します。

Windows 7 PC → Windows 10 PC へ移行する ( PostgreSQL、Redis、Erlang/OTP+RabbitMQ のインストール+ksbysample-webapp-lending の動作確認 )

概要

記事一覧はこちらです。

以下のソフトをインストールして、ksbysample-webapp-lending で動作確認します。

参照したサイト・書籍

目次

  1. PostgreSQL のインストール
  2. Redis のインストール
  3. Erlang/OTP+RabbitMQ のインストール
  4. ksbysample-webapp-lending で動作確認する

手順

PostgreSQL のインストール

  1. https://www.postgresql.org/download/windows/ から postgresql-10.5-1-windows-x64.exe をダウンロードします。

  2. postgresql-10.5-1-windows-x64.exe を実行します。

  3. 「Setup」ダイアログが表示されます。「Next >」ボタンをクリックします。

  4. 「Installation Directory」画面が表示されます。D:\PostgreSQL\10 に変更した後、「Next >」ボタンをクリックします。

  5. 「Select Components」画面が表示されます。何も変更せずに「Next >」ボタンをクリックします。

  6. 「Data Directory」画面が表示されます。何も変更せずに「Next >」ボタンをクリックします。

  7. 「Password」画面が表示されます。好きなパスワードを入力して「Next >」ボタンをクリックします。

  8. 「Port」画面が表示されます。何も変更せずに「Next >」ボタンをクリックします。

  9. 「Advanced Options」画面が表示されます。「Locale」で「Japanese, Japan」を選択した後、「Next >」ボタンをクリックします。

  10. 「Pre Installation Summary」画面が表示されます。「Next >」ボタンをクリックします。

  11. 「Ready to Install」画面が表示されます。「Next >」ボタンをクリックします。

  12. 「Installing」画面が表示されインストールが始まります。

  13. インストールが完了すると「Completing the PostgreSQL Setup Wizard」画面が表示されます。画面中央の「Stack Builder ...」のチェックを外した後「Finish」ボタンをクリックします。

  14. 環境変数 Path に D:\PostgreSQL\10\bin を追加します。

Redis のインストール

  1. https://github.com/MicrosoftArchive/redis/releases から Redis-x64-3.0.504.msi をダウンロードします。

  2. Redis-x64-3.0.504.msi を起動します。

  3. 「Redis on Windows Setup」ダイアログが表示されます。「Next」ボタンをクリックします。

  4. 「End-User License Agreement」画面が表示されます。「I agree the terms in the License Agreement」をチェックした後、「Next」ボタンをクリックします。

  5. Destination Folder」画面が表示されます。D:\Redis\3.0.504 に変更し、「Add the Redis installation folder to the PATH environment variable.」をチェックした後、「Next」ボタンをクリックします。

  6. 「Port Number and Firewall Exception」画面が表示されます。何も変更せずに「Next」ボタンをクリックします。

  7. 「Memory Limit」画面が表示されます。「Set the Max Memory limit」をチェックした後、「Next」ボタンをクリックします。

  8. 「Ready to install Redis on Windows」画面が表示されます。「Install」ボタンをクリックします。

  9. インストールが完了すると「Completed the Redis on Windows Setup Wizard」画面が表示されます。「Finish」ボタンをクリックします。

  10. D:\Redis\3.0.504\redis.windows-service.conf の以下の点を変更します。

    • slave-read-only yesslave-read-only no に変更します。
  11. D:\Redis\3.0.504\redis.windows-service.conf をコピーして D:\Redis\3.0.504\redis2.windows-service.conf を作成し、以下の点を変更します。

    • port 6379port 6380 に変更します。
    • logfile "Logs/redis_log.txt"logfile "Logs/redis2_log.txt" に変更します。
    • dbfilename dump.rdbdbfilename dump2.rdb に変更します。
    • slaveof 127.0.0.1 6379 を追加します。
  12. サービス画面を開き「Redis」を再起動します。

  13. 2台目の Redis をサービスとして登録・起動します。

    f:id:ksby:20180818204229p:plain

  14. D:\Redis\3.0.504\redis.windows-service.conf をコピーして D:\Redis\3.0.504\redis-sentinel.windows-service.conf.org を作成し、以下の点を変更します。

    • logfile "Logs/redis_log.txt"logfile "Logs/redis-sentinel_log.txt" に変更します。
    • ファイルの最後に以下の4行を追加します。
      • sentinel monitor mymaster 127.0.0.1 6379 2
      • sentinel down-after-milliseconds mymaster 1500
      • sentinel failover-timeout mymaster 90000
      • sentinel parallel-syncs mymaster 1
  15. D:\Redis\3.0.504\redis-sentinel.windows-service.conf.org を元に redis-sentinel1.windows-service.conf, redis-sentinel2.windows-service.conf, redis-sentinel3.windows-service.conf の3ファイルを作成し、以下の点を変更します。

    • redis-sentinel1.windows-service.conf
      • port 6379port 6381 に変更します。
      • logfile "Logs/redis-sentinel_log.txt"logfile "Logs/redis-sentinel1_log.txt" に変更します。
    • redis-sentinel2.windows-service.conf
      • port 6379port 6382 に変更します。
      • logfile "Logs/redis-sentinel_log.txt"logfile "Logs/redis-sentinel2_log.txt" に変更します。
    • redis-sentinel3.windows-service.conf
      • port 6379port 6383 に変更します。
      • logfile "Logs/redis-sentinel_log.txt"logfile "Logs/redis-sentinel3_log.txt" に変更します。
  16. Redis Sentinel の管理プロセスをサービスとして登録・起動します。

    f:id:ksby:20180818205607p:plain

  17. Spring Boot で書籍の貸出状況確認・貸出申請する Web アプリケーションを作る ( その13 )( Spring Session を使用する2 ) の記事を参考に Redis Sentinel が正常に稼働しているかチェックします。結果は問題ありませんでした。

Erlang/OTP+RabbitMQ のインストール

  1. まずは Erlang/OTP からインストールします。http://www.erlang.org/downloads から otp_win64_21.0.1.exe をダウンロードします。

  2. otp_win64_21.0.1.exe を実行します。

  3. Erlang OTP 21 Setup」の「Choose Components」画面が表示されます。「Next >」ボタンをクリックします。

  4. 「Choose Install Location」画面が表示されます。「Destination Folder」を D:\ErlangOTP\21.0.1 に変更した後、「Next >」ボタンをクリックします。

  5. 「Choose Start Menu Folder」画面が表示されます。「Do not create shortcuts」をチェックした後、「Install」ボタンをクリックします。

  6. インストールが完了すると「Close」ボタンがクリック可能になるのでクリックします。

  7. 次に RabbitMQ をインストールします。https://www.rabbitmq.com/install-windows.html から rabbitmq-server-3.7.7.exe をダウンロードします。

  8. rabbitmq-server-3.7.7.exe を実行します。

  9. 「RabbitMQ Server 3.7.7 Setup」の「Choose Components」画面が表示されます。「Next >」ボタンをクリックします。

  10. 「Choose Install Location」画面が表示されます。「Destination Folder」を D:\RabbitMQ\3.7.7 に変更した後、「Install」ボタンをクリックします。

  11. インストールが完了すると「Next >」ボタンがクリック可能になるのでクリックします。

  12. 「Completing the RabbitMQ Server 3.7.7 Setup Wizard」画面が表示されます。「Finish」ボタンをクリックします。

  13. 以下のコマンドを実行して、いくつかのプラグインを有効化します。

    f:id:ksby:20180818225620p:plain

  14. ブラウザを起動して http://localhost:15672/ へアクセスし、管理機能のログイン画面が表示されることを確認します。

ksbysample-webapp-lending で動作確認する

これで ksbysample-webapp-lending が動作するはずなので、確認します。

  • IntelliJ IDEA を起動し、ksbysample-webapp-lending をオープンする。
  • 「File」-「Project Structure」を選択して「Project Structure」ダイアログを表示し、「Project Settings」-「Project」の「Project SDK」「Project language level」の設定を変更する。
  • Gradle Tool Window の「Refresh all Gradle projects」ボタンをクリックして更新する。
  • ユーザとデータベースを作成する。 f:id:ksby:20180819081436p:plain
  • clean タスク → Rebuild Project → build タスクを実行してエラーが出ないことを確認する。
    • 最初に boot-npm-geb-sample で修正した以下の点を反映する。
      • build.gradle に [compileJava, compileTestGroovy, compileTestJava]*.options*.encoding = "UTF-8" を追加。
      • build.gradle の bootRun、tasks.withType(Test) の jvmArgs に以下の値を追加。
        • -ea
        • -Dfile.encoding=UTF-8
        • -Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP
    • BUILD SUCCESSFUL が表示された。 f:id:ksby:20180819082035p:plain
  • Tomcat を起動して画面を表示できるかも確認します。

Windows 7 PC → Windows 10 PC へ移行する ( Git、SourceTree、IntelliJ IDEA、nodist+Node.js+npm、windows-build-tools のインストール+boot-npm-geb-sample の動作確認 )

概要

記事一覧はこちらです。

以下のソフトをインストールして、boot-npm-geb-sample で動作確認します。

参照したサイト・書籍

目次

  1. Git for Windows のインストール
  2. SourceTree のインストール
  3. IntelliJ IDEA 2018.2.1 のインストール
  4. nodist+Node.js+npm のインストール
  5. windows-build-tools 3.1.0 のインストール
  6. boot-npm-geb-sample で動作確認する

手順

Git for Windows のインストール

  1. https://gitforwindows.org/ から Git-2.18.0-64-bit.exe をダウンロードします。

  2. Git-2.18.0-64-bit.exe を起動します。

  3. 「Git 2.18.0 Setup」ダイアログが表示されます。「Next >」ボタンをクリックします。

  4. 「Select Destination Location」画面が表示されます。D:\Git に変更した後、「Next >」ボタンをクリックします。

  5. 「Select Components」画面が表示されます。「Git LFS (Large File Support)」以外のチェックを外した後、「Next >」ボタンをクリックします。

  6. 「Select Start Menu Folder」画面が表示されます。画面下の「Don't create a Start Menu folder」をチェックした後、「Next >」ボタンをクリックします。

  7. 「Choosing the default editor used by Git」画面が表示されます。「Use Vim (the ubiquitous text editor) as Git's default editor」が選択された状態で [Next >]ボタンをクリックします。

  8. 「Adjusting your PATH environment」画面が表示されます。中央の「Use Git from the Windows Command Prompt」が選択されていることを確認後、[Next >]ボタンをクリックします。

  9. 「Choosing HTTPS transport backend」画面が表示されます。「Use the OpenSSL library」が選択されていることを確認後、[Next >]ボタンをクリックします。

  10. 「Configuring the line ending conversions」画面が表示されます。一番上の「Checkout Windows-style, commit Unix-style line endings」が選択されていることを確認した後、[Next >]ボタンをクリックします。

  11. 「Configuring the terminal emulator to use with Git Bash」画面が表示されます。「Use Windows'default console window」を選択した後、[Next >]ボタンをクリックします。

  12. 「Configuring extra options」画面が表示されます。「Enable file system caching」以外のチェックを外した後、[Install]ボタンをクリックします。

  13. インストールが完了すると「Completing the Git Setup Wizard」のメッセージが表示された画面が表示されます。中央の「View Release Notes」のチェックを外した後、「Finish」ボタンをクリックしてインストーラーを終了します。

  14. Rapid Environment Editor を起動して環境変数 Path を見ると D:\Git\cmd だけが追加されていますので、D:\Git\usr\bin\D:\Git\mingw64\bin\ を追加します。

  15. ConEmu を起動し、「Create new console」を開いて以下の画像の内容を入力して「Start」ボタンをクリックします。

    f:id:ksby:20180818002018p:plain

    git-cmd.exe が起動するので、日本語の表示・入力が問題ないかを確認します。

    f:id:ksby:20180818003013p:plain

  16. ConEmu のコマンドプロンプトから git --version を実行し、git のバージョンが git version 2.18.0.windows.1 になっていることを確認します。

    f:id:ksby:20180818003239p:plain

SourceTree のインストール

  1. https://ja.atlassian.com/software/sourcetree から SourceTreeSetup-2.6.10.exe をダウンロードします。

  2. SourceTreeSetup-2.6.10.exe を起動します。

  3. ダイアログが表示されます。「ライセンスに同意します」をチェックした後、「次へ」ボタンをクリックします。

  4. 「Regist account」画面が表示されます。「Atlassian アカウント」ボタンをクリックして以前登録したアカウントでログインした後、「次へ」ボタンをクリックします。

  5. 「Pick tools to download and install」画面が表示されます。「Mercurial」のチェックを外した後、「次へ」ボタンをクリックします。

  6. SSH キーを読み込みますか?」ダイアログが表示されます。「いいえ」ボタンをクリックします。

  7. SourceTree のメイン画面が表示されるので、「オプション」ダイアログで必要そうな設定を行った後、終了します。

IntelliJ IDEA 2018.2.1 のインストール

  1. https://www.jetbrains.com/idea/download/#section=windows から ideaIU-2018.2.1.exe をダウンロードします。

  2. ideaIU-2018.2.1.exe を起動します。

  3. IntelliJ IDEA Setup」ダイアログが表示されます。「Next >」ボタンをクリックします。

  4. 「Choose Install Location」画面が表示されます。「Destination Folder」を D:\IntelliJ_IDEA\2018.2.1 に変更した後、「Next >」ボタンをクリックします。

  5. 「Installation Options」画面が表示されます。何もチェックしていない状態で「Next >」ボタンをクリックします。

  6. 「Choose Start Menu Folder」画面が表示されます。何も変更せずに「Install」ボタンをクリックします。

  7. 「Installing」画面が表示されてインストールが始まりますので、完了するまで待ちます。

  8. インストールが完了すると「Completing IntelliJ IDEA Setup」画面が表示されます。「Finish」ボタンをクリックしてダイアログを閉じます。

  9. D:\IntelliJ_IDEA\2018.2.1\bin\idea64.exe を実行します。起動時に「Complete Installation」ダイアログが表示されるので、「Do not Import settings」が選択された状態で「OK」ボタンをクリックします。

  10. IntelliJ IDEA User License Agreement」ダイアログが表示されます。「Accept」ボタンをクリックします。

  11. 「Data Sharing」ダイアログが表示されます。「Send Usage Statistics」ボタンをクリックします。

  12. 「Customize IntelliJ IDEA」画面が表示されます。「Darcula」が選択された状態で「Next Default plugins」ボタンをクリックします。

  13. 「Tune IDEA to your tasks」画面が表示されます。何も変更せずに「Next Feature plugins」ボタンをクリックします。

  14. 「Download feature plugins」画面が表示されます。「Scala」「NodeJS」の2つの「Install」ボタンをクリックして Install した後、「Start using IntelliJ IDEA」ボタンをクリックします。

  15. IntelliJ IDEA License Activation」ダイアログが表示されます。JetBrains Account を入力後、「Activate」ボタンをクリックします。

  16. 「Welcome to IntelliJ IDEA」画面が表示されます。画面右下の「Configure」から以下のメニューを選択し、設定します。

    • Plugins
      • 以下の Plugin をインストールします。
        • AWS CloudFormation
        • CheckStyle-IDEA
        • Doma Support
        • Grep Console
          • 今回 Plugin を見直していて見つけた Plugin です。Console に出力されるログをタイプ別に色づけしてくれます。 f:id:ksby:20180818124956p:plain
        • IntelliJ-Haskell
        • JRebel for InetlliJ
        • Lombok Plugin
        • Prettier
        • Rainbow Brackets
        • Request mapper
        • Spock Framework Enhancements
        • Sql Generator
          • 今回 Plugin を見直していて見つけた Plugin です。Database Tools のテーブルのコンテキストメニューに「Sql Generator」というメニューが追加されて、SQL文を自動生成してくれます(生成された SQL 文はクリップボードにコピーされます)。 f:id:ksby:20180818175128p:plain
        • String Manipulatin
        • ToolWindow Colorful Icons
    • Settings
      • Editor - Color Scheme - General
        • 画面中央のリストで「Line Coverage」-「Full」を選択後、画面右側の「Foreground」を 48584800FF00 に変更。
        • 画面中央のリストで「Line Coverage」-「Uncoverred」を選択後、画面右側の「Foreground」を 715353FF0000 に変更。
      • Editor - Color Scheme - Language Defaults
        • 画面中央のリストから「Semantic highlighting」を選択後、画面右側の
      • Editor - Color Scheme - Color Scheme Font
        • 「Use color scheme font instead of the default」をチェックし、「Font」を MonospacedSource Code Pro に変更。
      • JRebel
        • Activate する
      • Other Settings - Grep Console
        • 「Highlighting & Folding」の以下の設定を変更する。
          • ERROR の 「Background」の色を 690000 へ変更。
          • WARN の「Background」の色を 696900 へ変更。
          • DEBUG の「Fourground」の色を 878787 へ変更。
          • TRACE の「Fourground」の色を 5F5F5F へ変更。
    • Edit Custom VM Options...
      • 以下の値に変更して「Save」ボタンをクリックします。
        • -Xms128m-Xms1024m
        • -Xmx750m-Xmx8192m
    • Project Defaults - Settings
      • Editor - Code Style - Javascript
        • 「Tabs and Indents」タブ
          • 「Tab size」「Indent」「Continuation indent」の値を 4 → 2 に変更。
      • Editor - Inspections
        • 「Serializable class without 'serialVersionUID'」をチェック。
      • Editor - File Encodings
        • 「Project Encoding」を <System Default: windows-31j>UTF-8 に変更。
        • 「Default encoding for properties files」を <System Default: windows-31j>UTF-8 に変更。
      • Build, Execution, Deployment - Build Tools - Gradle
        • 「Gradle VM options」に -Dfile.encoding=UTF-8 を入力。
      • Build, Execution, Deployment - Compiler - Annotation Processors
        • 「Enable annotation processing」をチェック。
      • Language & Frameworks - JavaScript
        • JavaScript language version」を ECMAScript 5.1ECMAScript 6 に変更。
    • Project Defaults - Project Structure
      • Project Settings - Project
        • 「Project SDK」に 1.8.0_181 (D:\Java\jdk1.8.0_181)を登録。
        • 「Project language level」を SDK default (8 - Lambdas, annotations, etc.) に設定。
    • Project Defaults - Run Configurations
      • Project Settings - Project
        • Templates - JUnit
          • VM Options」に -ea -Dfile.encoding=UTF-8 -Dspring.profiles.active=unittest -Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP を入力。
        • Templates - Spring Boot
          • VM Options」に -ea -Dfile.encoding=UTF-8 -Dspring.profiles.active=develop -Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP を入力。
  17. 一旦 IntelliJ IDEA は終了させます。

nodist+Node.js+npm のインストール

  1. https://github.com/marcelklehr/nodist/releases から NodistSetup-v0.8.8.exe をダウンロードします。

  2. NodistSetup-v0.8.8.exe を実行します。

  3. 「Welcome to Nodist Setup」画面が表示されます。「Next >」ボタンをクリックします。

  4. 「License Agreement」画面が表示されます。「I Agree」ボタンをクリックします。

  5. 「Choose Install Location」画面が表示されます。「Destination Folder」を D:\Nodist に変更した後、「Install」ボタンをクリックします。

  6. インストールが実行されます。完了すると「Completing Nodist Setup」画面が表示されますので、「Finish」ボタンをクリックします。

  7. コマンドプロンプトを起動し、nodist -v コマンドを実行してバージョン番号が表示されることを確認します。

    f:id:ksby:20180818132436p:plain

  8. Node.js をインストールします。https://nodejs.org/ja/ を見ると推奨版は 8.11.4 LTS でしたので、8.11.4 をインストールします。

    f:id:ksby:20180818132935p:plain

  9. npm をインストールします。https://docs.npmjs.com/ の一番下を見ると 6.4.0 と書かれていましたが、https://github.com/npm/npm/releases の Latest release は 6.1.0 でしたので 6.1.0 をインストールします。

    f:id:ksby:20180818134029p:plain

  10. コマンドプロンプトから npm config set scripts-prepend-node-path true コマンドを実行します。

    Spring Boot + npm + Geb で入力フォームを作ってテストする ( その5 )( Bootstrap, AdminLTE, Font Awesome, Ionicons のインストール ) 参照。

windows-build-tools 3.1.0 のインストール

  1. npm 以外に global インストールしている windows-build-tools をインストールします。https://www.npmjs.com/package/windows-build-tools を見ると最新バージョンは 3.1.0 でしたので、管理者モードで Powershell を起動した後 npm install --global --production windows-build-tools@3.1.0 を実行します。

    f:id:ksby:20180818135351p:plain

boot-npm-geb-sample で動作確認する

ここまでインストールが終われば boot-npm-geb-sample が動作するはずなので、確認します。

  • IntelliJ IDEA を起動し、boot-npm-geb-sample project をオープンする。
  • 「File」-「Project Structure」を選択して「Project Structure」ダイアログを表示し、「Project Settings」-「Project」の「Project SDK」「Project language level」の設定を変更する。
  • Gradle Tool Window の「Refresh all Gradle projects」ボタンをクリックして更新する。
  • clean タスク → Rebuild Project → build タスクを実行してエラーが出ないことを確認する。
    • エラーが出たので以下の点を変更した。
      • build.gradle に [compileJava, compileTestGroovy, compileTestJava]*.options*.encoding = "UTF-8" を追加。
      • build.gradle の bootRun、tasks.withType(Test) の jvmArgs に以下の値を追加。
        • -ea
        • -Dfile.encoding=UTF-8
        • -Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP
    • BUILD SUCCESSFUL が表示された。 f:id:ksby:20180818154935p:plain
  • コマンドプロンプトから npm install コマンドを実行してエラーが出ないことを確認する。 f:id:ksby:20180818155852p:plain
  • コマンドプロンプトから npm test コマンドを実行してエラーが出ないことを確認する。 f:id:ksby:20180818160337p:plain
  • コマンドプロンプトから npm run build コマンドを実行してエラーが出ないことを確認する。 f:id:ksby:20180818160522p:plain
  • npm run springboot コマンドで Browsersync を起動し、IntelliJ IDEA から Tomcat を起動して、画面が表示されることを確認する。 f:id:ksby:20180818160808p:plain f:id:ksby:20180818160919p:plain f:id:ksby:20180818161308p:plain
  • gebTest タスクを実行する前に以下のファイル内の C:\D:\ に変更する。
    • src/test/resources/GebConfig.groovy
    • D:/geckodriver/0.19.0/geckodriver.bat
  • gebTest タスクを実行してエラーが出ないことを確認する。 f:id:ksby:20180818171341p:plain

Windows 7 PC → Windows 10 PC へ移行する ( ツール類のインストール+ディレクトリのコピー )

概要

記事一覧はこちらです。

Windows 10 PC を半年くらい前に購入していましたが、忙しくなったのでしばらく放置していました。Spring Boot + npm + Geb で入力フォームを作ってテストする の記事も一段落ついたので、PC を切り替えることにします。

以前の PC は C ドライブしかありませんでしたが、今度の PC は C, D に分かれているので開発用ソフトのインストールや作業用ディレクトリの作成は D ドライブへ行うことにします。

参照したサイト・書籍

目次

  1. 「テキスト、アプリ、その他の項目のサイズを変更する」の設定を 150% → 125% に変更する
  2. ツール類のソフトをインストールする
  3. ディレクトリをコピーする

手順

「テキスト、アプリ、その他の項目のサイズを変更する」の設定を 150% → 125% に変更する

「テキスト、アプリ、その他の項目のサイズを変更する」の推奨値が 150% になっていました。確かに見やすいのですが、個人的にはもう少し文字が小さくても画面上に表示される情報量が多い方が好みなので、設定を変更します。

f:id:ksby:20180815011250p:plain f:id:ksby:20180815011348p:plain f:id:ksby:20180815011520p:plain

※100% はさすがに文字が小さくて疲れそうに思えたので止めました。

ツール類のソフトをインストールする

以下のソフトをインストールします。

以下のソフトはインストールはしましたが、使用するのを止めました。

ディレクトリをコピーする

以下のディレクトリを Windows 7 PC から Windows 10 PC へコピーします。コピー元は C ドライブですが、コピー先は D ドライブです。

Windows 7 PC → Windows 10 PC へ移行する ( 大目次 )

  1. ツール類のインストール+ディレクトリのコピー
  2. Git、SourceTree、IntelliJ IDEA、nodist+Node.js+npm、windows-build-tools のインストール+boot-npm-geb-sample の動作確認
  3. PostgreSQL、Redis、Erlang/OTP+RabbitMQ のインストール+ksbysample-webapp-lending の動作確認
  4. Docker for Windows のインストール
  5. 最後にメモ書き