rubytomato's “Getting Started”

Webアプリケーション開発の入門的な記事を投稿していきます。

『入門向け』Java開発環境の構築とかんたんなコードの書き方と実行方法 (前編)

はじめに

この記事は、Javaを勉強するための開発環境を構築したい、その開発環境を使ってソースコードを書いて実行する方法を知りたい、といったひと向けの入門記事になります。 前編のこの記事では、Windows 10とJava 11を使った開発環境の構築の手順、Javaプログラムの基本的な書き方と実行方法を説明します。 中編と後編は、Javaプログラムのもう少し踏み込んだコードの書き方について説明します。

開発環境の構築

Javaの開発ツールにはPleiades All in One Eclipseというパッケージを利用します。このパッケージはEclipseをベースにしていてメニューやメッセージが日本語化されている他に、JavaTomcatなどが同梱されているので、このパッケージだけで開発環境を構築できます。

mergedoc.osdn.jp

Pleiades All in One Eclipseのダウンロード

Eclipse 日本語化 | MergeDoc Project にアクセスし、以下の手順でダウンロードします。

最新バージョンを利用したいので、Fig1の赤い枠線で囲った"Eclipse 2020"(2020年3月現在の最新)というボタンをクリックします。

f:id:rubytomato:20200328233051p:plain
Fig1.

Windowsであれば、Fig2の赤い枠線で囲ったWindows 64bit版のFull Editionをダウンロードするボタンをクリックします。

f:id:rubytomato:20200328233110p:plain
Fig2.

pleiades-2020-03-java-win-64bit-jre_20200322.zipという名前(2020年3月現在)のzipファイルのダウンロードが始まります。

Pleiades All in One Eclipseのインストール

ダウンロードしたzipファイルを7-Zipなどのツールで展開します。まだこのツールをインストールしていなければ先にインストールしてください。 zipファイルを展開するとpleiadesというフォルダができるので、これを適当な場所へコピーします。 この記事では以下の場所へコピーしました。インストールはこれで完了です。

C:\dev\pleiades

このフォルダをWindowsエクスプローラで開くと、Fig3のようになっていると思います。

f:id:rubytomato:20200325221812p:plain
Fig3.

この中からさらにeclipseというフォルダを開きます。Fig4のようなフォルダやファイルがあると思いますが、この中のeclipse.exeWindowsの設定によってはeclipseとだけ表示されているかもしれません)を右クリックし、メニューから送るデスクトップ(ショートカットを作成) を選択します。

f:id:rubytomato:20200328233151p:plain
Fig4.

すると、デスクトップにeclipseのフォートカットが出来ていると思います。ショートカットファイルの名前に"ショートカット"と付いていると思いますが、名前は変更できるので任意の名前に変更してください。 このショートカットをダブルクリックするとEclipseが起動します。

ワークスペースの選択

Eclipseを起動するとワークスペースの場所を指定するEclipse IDEランチャー(Fig5)が表示されます。ワークスペースソースコードを管理するフォルダで、基本的には画面の通りの場所で構いませんが、任意のフォルダを指定することもできます。任意のフォルダを指定したい場合は"参照(B)..."ボタンをクリックしてフォルダを選択します。

f:id:rubytomato:20200325221954p:plain
Fig5.
Fig5の通り../workspaceで起動ボタンを押すと、このワークスペースは以下の場所に作成されます。

C:\dev\pleiades\workspace

起動直後の画面

Fig6が起動直後の画面です。この画面の見方を簡単に説明します。 一番上がメニューバーで、その下のアイコンが並ぶバーをツールバーと呼びます。ツールバーによく使われる操作がアイコンで表示されています。 一番下がステータスバーです。ここにはEclipseが使用しているメモリ量やファイルの文字コードなどが表示されています。 一番面積の大きい中央右がエディター・ビューです。ここでファイル(ソースファイルやプロパティファイルなど)を編集します。 その他のビューは役割毎の内容が表示されます。例えば左端の"パッケージ・エクスプローラー"ビューはプロジェクトの構造を表示し、下の"問題"ビューはコンパイルエラーなどの情報を表示します。

f:id:rubytomato:20200329023314p:plain
Fig6.

レイアウトのカスタマイズ

ビューの位置を変更してレイアウトをカスタマイズすることができるので、その方法を簡単に説明します。(※レイアウトはこのままがいいという方は読み飛ばしてください。) ビューの移動は、移動させたいビューのタイトルバーをドラッグ(マウスの左ボタンを押しながら)して移動させたい場所でドロップ(マウスの左ボタンを離す)します。

まず、画面左下の”問題”というビューを画面右下へ移動させてみます。タイトルバーをドラッグしてFig7の黄色い枠線で囲ったあたりへドロップします。

f:id:rubytomato:20200328002838p:plain
Fig7.

Fig8がドロップ後の画面です。

f:id:rubytomato:20200328002435p:plain
Fig8.

次に"ランナー"や"アウトライン"があるビューを画面右端へ移動させてみます。タイトルバーをドラッグしてFig9の黄色い枠線で囲ったあたりへドロップします。

f:id:rubytomato:20200328002821p:plain
Fig9.

Fig10がドロップ後の画面です。

f:id:rubytomato:20200328002155p:plain
Fig10.

あとは各ビューの表示幅を調整します。ビューとビューの間の境界にマウスカーソルをあわせるとポインターが矢印マークになるので、その状態でマウスの左ボタンを押しながら左右、または上下に移動させるとビューの幅が変わります。

最終的にFig11のようなレイアウトに変えました。エディター・ビューは一番見ている時間が長いので中央に大きく表示するようにしました。

f:id:rubytomato:20200328002141p:plain
Fig11.

次によく使うビューをレイアウトに追加します。メニューバーのウィンドウ(W)ビューの表示(V)コンソールを選択します。すると画面下のビューにコンソールが追加されます。

f:id:rubytomato:20200328002124p:plain
Fig12.

以上がレイアウトのカスタマイズ方法です。どのようなレイアウトにするかは個人の好みなので自由に変えても問題ありませんが、パッケージ・エクスプローラーエディタービューは最低限残しておいてください。

使えるJavaのバージョンを確認

何種類かのJavaが利用できるようになっています。どのバージョンのJavaが用意されているかを確認するには、Eclipseのメニューバーのウィンドウ(W)設定(P) をクリックします。

設定画面が表示されるので、左側のメニューのJavaインストール済みのJREをクリックします。Fig13の通りJava6、Java7、Java8、Java11、Java14が利用でき、デフォルトはJava11になっています。この設定はとくに変える必要はないのでこのままにしておきます。

f:id:rubytomato:20200325222048p:plain
Fig13.

使えるTomcatのバージョンを確認

この記事ではTomcatは利用しませんが、Javaで開発したWebアプリケーションを実行するTomcatというアプリケーションサーバーも同梱されています。 確認するには、Eclipseのメニューバーのウィンドウ(W)設定(P)をクリックします。

設定画面が表示されるので、左側のメニューのサーバーランタイム環境をクリックします。Fig14の通りTomat 6、Tomcat 7、Tomcat 8、Tomcat 9が利用できます。

f:id:rubytomato:20200325222116p:plain
Fig14.

Javaプログラムの書き方

ここからはJavaプログラムの書き方の説明になります。まず最初に行うのはJavaプロジェクトの作成です。

Java プロジェクトの作成

プロジェクトが1つも作成されていない状態ではパッケージ・エクスプローラーのメニューからJava プロジェクトの作成を選択するか、またはメニューバーのファイル(F)新規(N)Java プロジェクト を選択します。 Fig15の新規 Java プロジェクトが開きますので、"プロジェクト名(P):"にstudy01projectと入力し、"完了"ボタンをクリックします。

f:id:rubytomato:20200328220056p:plain
Fig15.

Fig16の新規 module-info.javaが開くので、"作成"ボタンをクリックします。

f:id:rubytomato:20200328220112p:plain
Fig16.

Fig17がプロジェクトが作成された状態です。中央のエディタにmodule-info.javaが表示されていますが、いまは編集しないのでタブの×アイコンをクリックして閉じます。

f:id:rubytomato:20200328220155p:plain
Fig17.

パッケージの作成

Javaプロジェクトを作成したら、次はパッケージを作成します。 Fig18のsrcを右クリックしメニューの新規(W)パッケージを選択します。

f:id:rubytomato:20200328220305p:plain
Fig18.

Fig19の"名前(M):"にcom.exampleと入力し、"完了"ボタンをクリックします。

f:id:rubytomato:20200328220321p:plain
Fig19.

Fig20がパッケージが作成された状態です。srcフォルダの下に作成したパッケージが表示されていることがわかります。

f:id:rubytomato:20200328220333p:plain
Fig20.

レッスン1

レッスン1では次のことを行います。

※レッスン1は中編の記事へ続きます。

レッスン1用のパッケージを作る

レッスン1用のパッケージを作成します。Fig21のcom.exampleパッケージを右クリックし、新規(W)パッケージを選択します。

f:id:rubytomato:20200328220350p:plain
Fig21.

Fig22の"名前(M):"にcom.exampleと入力されているところに.lesson01を追加して、"完了"ボタンをクリックします。

f:id:rubytomato:20200328220409p:plain
Fig22.

Fig23がパッケージが作成された状態です。

f:id:rubytomato:20200328220434p:plain
Fig23.

Demoクラスを作る

レッスン1でこれから作るクラスを動かすための実行クラスを作成します。クラス名はDemo(Demonstration / デモンストレーション / 実演)という名前にします。(※クラス名は分かりやすければ何でもいいです。) com.example.lesson01パッケージを右クリックし、新規(W)クラスを選択します。

f:id:rubytomato:20200329021450p:plain
Fig24.

"名前(M):"にDemoと入力し、"どのメソッド・スタブを作成しますか?"には、public static void main(String[] args)(V)にチェックを入れ、"完了"ボタンをクリックします。

f:id:rubytomato:20200329021504p:plain
Fig25.

クラスが作成されると、中央のエディタビューにDemo.javaというソースファイルが表示されます。 ソースファイルにはmainという名前のメソッドがすでに作成されていますが、このmainメソッドはJavaプログラムを実行するために必要なメソッドです。

package com.example.lesson01;

public class Demo {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

    }

}
ソースコードの修正と保存

mainメソッドを以下のように修正します。

public static void main(String[] args) {
    System.out.println("Lession01 Demo start");
    System.out.println("Lession01 Demo end");
}

するとタブのファイル名の先頭にアスタリスク(*)が付いたと思います。このアスタリスクは編集中のファイルであることを示しています。

f:id:rubytomato:20200329033116p:plain
Fig26.
この状態でCtrl + Sを押すとファイルが保存されアスタリスクが消えます。

Eclipseではファイルの保存と同時にソースコードコンパイルが自動的に行われます。 もし、ソースコードに書き間違い (Syntax Error / シンタックスエラー / 構文エラー) があるとファイル名の先頭に赤い×アイコンが付きます。これはコンパイルエラーがおきたことを示しています。 たとえば、以下のようにSystemsystemに書き直して保存すると

public static void main(String[] args) {
    system.out.println("Lession01 Demo start");
    System.out.println("Lession01 Demo end");
}

Fig27のようにエラーがあるクラス、および当該の行に赤い×アイコンが付きます。

f:id:rubytomato:20200329013049p:plain
Fig27.

また、問題ビューにも現時点で起きているコンパイルエラーの内容が表示されます。

f:id:rubytomato:20200329013103p:plain
Fig28.

コンパイルエラーの起きているsystemSystemになおしてファイルを保存すると赤い×アイコンが消えます。

Demoクラスを実行する

試しにDemoクラスを実行してみたいと思います。EclipseからJavaプログラムを実行する方法にはいくつかあります。

1). メニューバー → 実行(R)実行(S)Java アプリケーション

f:id:rubytomato:20200328231516p:plain
Fig29.

2). ツールバー実行アイコンの右の▼ → 実行(R)Java アプリケーション

f:id:rubytomato:20200328231500p:plain
Fig30.

3). エディタ上で右クリックしメニューから実行(R)Java アプリケーション

f:id:rubytomato:20200328231446p:plain
Fig31.

上記の方法のいずれかで実行すると画面下のコンソールビューに、mainメソッドに書いたコードの実行結果が出力されます。

f:id:rubytomato:20200328231205p:plain
Fig32.

起動ヒストリと実行構成の管理

Demoクラスを一度でも実行すると実行構成というプログラム実行の設定と起動ヒストリが自動的に作成されます。そうすると以降はツールバー実行アイコンをクリックするだけでDemoクラスを実行することができます。

f:id:rubytomato:20200329001515p:plain
Fig33.

起動ヒストリとは、今までに実行したことのあるプログラムの一覧です。起動ヒストリは実行アイコンの右の▼をクリックすると確認できます。 Fig33で”実行アイコンをクリックするだけで実行できます”と書きましたが、正確には起動ヒストリの一番上にリストされているプログラムが実行されます。 Fig34の左側がヒストリ無しで、Demoの実行後は右側のようにDemoの起動ヒストリが作成されています。

f:id:rubytomato:20200328233459p:plain
Fig34.

実行構成とは、プログラムをどのような条件で実行するかなどの設定です。Demoの実行構成を確認するには、このメニューの"実行の構成(N)..."をクリックします。 Fig35の左側のメニューのJava アプリケーションの下にDemoというメニューが表示されていると思いますが、これがDemoクラスの実行構成です。 右側にはその実行構成の設定内容が表示されています。"メイン"タブに表示されているプロジェクト名とメイン・クラスの内容の通り、この実行構成で実行するプログラムはstudy01projectプロジェクトのDemoクラスだということがわかります。

f:id:rubytomato:20200329003041p:plain
Fig35.

ソースコードのフォーマット

Demoクラスのソースコードを以下のように修正して実行してみます。コンソールビューに実行結果が出力され、問題なく実行できたと思います。 このようにソースコードはインデント(段落)を付けても、付けなくても実行に支障がない場合がありますが、ソースコードの読みやすさを考えると基本的にインデントは付けるようにします。

package com.example.lesson01;

public class Demo {

public static void main(String[] args) {
System.out.println("Lession01 Demo start");
System.out.println("Lession01 Demo end");
}

}

この例ではたった数行のソースコードなのでタブキーを押して一行一行インデントを付けていくことも大して手間はかかりませんが、ソースコードが数百行に及ぶこともめずらしくありません。そのような場合に手動でインデントを付けると時間がかかるのでEclipseのコードフォーマット機能を利用します。 Ctrl + Shift + Fを押すと、ソースコードが自動的にフォーマットされて以下のようになったと思います。

package com.example.lesson01;

public class Demo {

    public static void main(String[] args) {
        System.out.println("Lession01 Demo start");
        System.out.println("Lession01 Demo end");
    }

}

ソースコードを書いているうちにフォーマットが崩れてきたとおもったら、自動フォーマットを行ってソースコードのフォーマットを整えるようにします。

保存アクションの設定

Eclipseの保存アクションの設定で、ファイル保存時にソースコードの自動フォーマットを行うことができます。この設定を行うと毎回Ctrl + Shift + Fを押して自動フォーマットを行わなくても済むので便利です。 設定はメニューバーのウィンドウ(W)設定(P) を選択し、設定画面の左側メニューのJavaエディター保存アクション を選択します。 右側の設定で"ソース・コードのフォーマット(S)"にチェックを入れ、"適用して閉じる"ボタンをクリックします。

f:id:rubytomato:20200329020939p:plain
Fig36.

この設定を有効にすると、以降はファイル保存時(Ctrl + S)に自動的にソースコードのフォーマットが行われ、ソースコードのインデントが常に保たれます。

以上で、前編は終了です。続く中編ではJavaコードの書き方をもう少し踏み込んで説明します。(現在記事作成中です)

rubytomato.hateblo.jp

Windows 10にPostgreSQL 12をインストーラを使わずにZipファイルからインストールする

はじめに

ローカルPCに開発用途のPostgreSQL 12をインストールする方法を説明します。インストール方法には、インストーラ(ファイルの拡張子がexe)を使う方法と、zipファイルを使う方法があります。通常はインストーラでインストールする方が簡単ですが、この記事ではzipファイルを使って手動でインストールする方法を説明したいと思います。

zipファイルでインストールするメリット

  • レジストリを更新しないので、アンインストールはファイル削除だけで済む。
  • 複数の異なるバージョンのPostgreSQLをインストールすることが簡単。

この記事ではWindows 10 64bitに、2020年3月現在で最新バージョンのPostgreSQL 12.2をインストールします。

PostgreSQLのダウンロード

ダウンロードページ ( PostgreSQL: Windows installers ) からzipファイル (postgresql-12.2-1-windows-x64-binaries.zip) をダウンロードします。Fig1の赤い枠線で囲った"zip archive"というリンクテキストをクリックします。

f:id:rubytomato:20200325010637p:plain
Fig1.

Fig2の赤い枠線で囲った"Win x86-64"というボタンをクリックするとzipファイルのダウンロードが始まります。

f:id:rubytomato:20200325010703p:plain
Fig2.

以上でPostgreSQLのダウンロードは完了です。

PostgreSQLのインストール

インストールと言ってもダウンロードしたzipファイルを7-Zipなどのツールで展開するだけです。 この記事では展開して出来たフォルダを以下のフォルダへコピーしました。以降はこのフォルダをインストールディレクトリと呼びます。

C:\dev\pgsql-12.2

このフォルダをWindowsエクスプローラで表示してFig3のような状態であることを確認します。

f:id:rubytomato:20200325010722p:plain
Fig3.

ユーティリティコマンド

インストールディレクトリ直下のbinディレクトリには、ユーティリティコマンドと呼ばれるコマンドが含まれています。たとえばデータベースを作成するcreatedb.exeコマンド、ユーザーを作成するcreateuser.exeコマンドなどです。 この記事では、データベースおよびユーザーの作成はこれらのユーティリティコマンドで行います。(データベースやユーザーの作成はSQLコマンドでも行えます)

pgAdmin 4

インストールディレクトリ直下のpgAdmin 4ディレクトリにPostgreSQLデータベース用のGUI管理ツールが同梱されています。下記の場所にあるpgAdmin4.exeを実行すると起動することができます。

C:\dev\pgsql-12.2\pgAdmin 4\bin\pgAdmin4.exe

初期設定

フォルダの作成

PostgreSQLのインストールディレクトリ直下にdata、logsフォルダを作成します。 以下のようにフォルダが出来ていればOKです。

C:\dev\pgsql-12.2\data
C:\dev\pgsql-12.2\logs

データベースクラスター(Database Cluster)の作成

PostgreSQLではディスク上のデータベースストレージ領域をデータベースクラスターと呼び、最初に初期化する必要があります。 データベースクラスターを初期化するにはinitdbコマンドまたはpg_ctlコマンドを使用します。この記事ではpg_ctlコマンドでデータベースクラスターを作成します。※以降のコマンドプロンプトからのコマンド実行は、断りが無い限りPostgreSQLのインストールディレクトリから行います。

-Uオプションでスーパーユーザーに任意の名前を付けることができますが、PostgreSQLの慣習ではpostgresという名前を付けるのが一般的なのでそのようにしています。

bin\pg_ctl initdb -D "C:/dev/pgsql-12.2/data" -o "-A password -W -U postgres -E UTF8 --no-locale"

実行結果

途中でスーパーユーザー(postgres)のパスワードを決めるように求められますので入力します。メッセージの最後の方に"成功しました。以下のようにしてデータベースサーバを起動することができます:" と出力されればデータベースクラスターの作成は完了です。

データベースシステム内のファイルの所有者はユーザ"<Windowsのユーザー名>"となります。
このユーザをサーバプロセスの所有者とする必要があります。

データベースクラスタはロケール"C"で初期化されます。
デフォルトのテキスト検索構成は english に設定されます。

データベージのチェックサムは無効です。

新しいスーパユーザのパスワードを入力してください: <postgresのパスワード>
再入力してください: <postgresのパスワード>

ディレクトリC:/dev/pgsql-12.2/dataの権限を設定しています ... ok
サブディレクトリを作成しています ... ok
動的共有メモリの実装を選択しています ... windows
デフォルトのmax_connectionsを選択しています ... 100
デフォルトの shared_buffers を選択しています ... 128MB
selecting default time zone ... Asia/Tokyo
設定ファイルを作成しています ... ok
ブートストラップスクリプトを実行しています ... ok
ブートストラップ後の初期化を実行しています ... ok
データをディスクに同期しています ... ok

成功しました。以下のようにしてデータベースサーバを起動することができます:

    C:/dev/pgsql-12.2/bin/pg_ctl -D C:/dev/pgsql-12.2/data -l ログファイル start

オプションの意味

オプション 意味
-D C:/dev/pgsql-12.2/data データベースクラフターのデータディレクト
-A password ユーザーのデフォルトの認証方法
-W スーパーユーザーのパスワードを要求する
-U postgres スーパーユーザーの名前
-E UTF8 テンプレートデータベースのエンコーディング
--no-locale デフォルトのロケール. --no-locale--locale=Cと同様

データベースの起動

データベースクラスターの作成が完了したらデータベースを起動させることができます。データベースの起動はpg_ctl startコマンドで行います。-Dオプションでデータディレクトリのフルパス、-lオプションでログファイルのフルパスを指定します。

bin\pg_ctl start -D "C:/dev/pgsql-12.2/data" -l "C:/dev/pgsql-12.2/logs/postgresql.log"

実行結果

サーバの起動完了を待っています....完了
サーバ起動完了

postgresユーザーで接続する

データベースが起動したら、postgresユーザーで接続できることを確認します。接続にはクライアントツールのpsqlコマンドを使用します。-hオプションで接続先のホスト名、-Uオプションで接続するユーザー名、-dオプションで接続するデータベース名を指定します。

bin\psql -h localhost -U postgres -d postgres
ユーザ postgres のパスワード: <postgresユーザーのパスワード>
psql (12.2)
"help"でヘルプを表示します。

postgres=#

バージョンの確認

select version();でバージョンを確認できます。

postgres=# select version();
                          version
------------------------------------------------------------
 PostgreSQL 12.2, compiled by Visual C++ build 1914, 64-bit
(1 行)

データベース一覧を表示

\lメタコマンドを実行すると、データベースの一覧を表示します。データベースクラスター作成直後の状態を確認します。(※メタコマンドについては後ほど簡単に触れます。)

postgres=# \l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
(3 行)

終了する場合は\qメタコマンドかexitと入力してenterを押下します。

データベースのステータスの確認

データベースのステータスはpg_ctl statusコマンドで確認できます。

bin\pg_ctl status -D "C:/dev/pgsql-12.2/data"

起動中のステータス

pg_ctl: サーバが動作中です(PID: 5852)
C:/dev/pgsql-12.2/bin/postgres.exe "-D" "C:/dev/pgsql-12.2/data"

停止中のステータス

pg_ctl: サーバが動作していません

データベースの停止

データベースの停止はpg_ctl stopコマンドで行います。

bin\pg_ctl stop -D "C:/dev/pgsql-12.2/data"

実行結果

サーバ停止処理の完了を待っています....完了
サーバは停止しました

メタコマンド

PostgreSQLにはメタコマンドという\から始まるコマンドが用意されています。メタコマンドの種類は\?というメタコマンドで確認できます。 よく使うメタコマンドにテーブル、ビュー、シーケンスを一覧表示する\d、データベースを一覧表示する\lがあります。その他に下記に3つほど使用例をあげました。

別のデータベースへ接続する

接続中のpostgresユーザーから、sample_userユーザーでsample_dbデータベースへ接続します。

\c sample_db sample_user

接続情報

\conninfo
データベース"postgres"にユーザ"postgres"として、ホスト"localhost"(アドレス"::1")上のポート"5432"で接続しています。

クライアントのエンコーディング

\encoding
SJIS

ユーザーの作成

postgresユーザーはスーパーユーザーつまり管理者権限を持つユーザーなので、管理操作以外で使用するための一般ユーザーを作成します。 この例ではcreateuserコマンドでsample_userというユーザーを作成します。-Uオプションにはデータベースに接続するユーザーを指定します。この例ではpostgresユーザーを指定しています。

bin\createuser -U postgres -W -P -e sample_user
新しいロールのためのパスワード: <sample_userのパスワード>
もう一度入力してください:<sample_userのパスワード>
パスワード: <postgresのパスワード>
SELECT pg_catalog.set_config('search_path', '', false);
CREATE ROLE sample_user PASSWORD 'md5c326ab35c9353dd34801ecd7ab7b1d76' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

データベースの作成

createdbコマンドでsample_userユーザーがオーナーのsample_dbデータベースを作成します。-Oオプションでデータベースのオーナーになるユーザーを指定、-Uオプションにはデータベースに接続するユーザーを指定します。この例ではpostgresユーザーを指定しています。

bin\createdb -O sample_user -U postgres -W -l Japanese_Japan.932 -T template0 -e sample_db

実行結果

パスワード: <postgresのパスワード>
SELECT pg_catalog.set_config('search_path', '', false);
CREATE DATABASE sample_db OWNER sample_user TEMPLATE template0 LC_COLLATE 'Japanese_Japan.932' LC_CTYPE 'Japanese_Japan.932';

データベースの削除

作成したデータベースを削除はdropdbコマンドで行います。以下はsample_dbデータベースを削除する例です。

bin\dropdb -U postgres -W -e sample_db

実行結果

パスワード: <postgresのパスワード>
SELECT pg_catalog.set_config('search_path', '', false);
DROP DATABASE sample_db;

起動・停止用のバッチファイルの作成

PostgreSQLサーバーの起動や停止を簡単に行うためにバッチファイルを作成します。バッチファイルを作成しておけば、以降の起動や停止はバッチファイルを実行するだけで行えるようになります。

起動用

インストールディレクトリ直下にstartup.batという名前のファイルを作成します。

C:\dev\pgsql-12.2\startup.bat

startup.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem 起動用
C:\dev\pgsql-12.2\bin\pg_ctl start -D "C:/dev/pgsql-12.2/data" -l "C:/dev/pgsql-12.2/logs/postgresql.log"

pause

停止用

インストールディレクトリ直下にshutdown.batという名前のファイルを作成します。

C:\dev\pgsql-12.2\shutdown.bat

shutdown.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem 停止用
C:\dev\pgsql-12.2\bin\pg_ctl stop -D "C:/dev/pgsql-12.2/data"

pause

postgresユーザー接続用

インストールディレクトリ直下にpostgres_user.batという名前のファイルを作成します。

C:\dev\pgsql-12.2\postgres_user.bat

postgres_user.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem postgresユーザーでログイン
C:\dev\pgsql-12.2\bin\psql -U postgres -d postgres

テーブルの作成

作成したsample_userで接続しsample_dbデータベースにtodoテーブルを作成します。

bin\psql -U sample_user -d sample_db
ユーザ sample_user のパスワード: <sample_userのパスワード>
psql (12.2)
"help"でヘルプを表示します。

sample_db=>

以下のSQL文を実行してテーブルとシーケンスを作成します。

CREATE TABLE IF NOT EXISTS todo (
  id BIGSERIAL NOT NULL,
  title VARCHAR(255) NOT NULL,
  description VARCHAR(1024) NULL,
  done BOOLEAN DEFAULT FALSE NOT NULL,
  create_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
  update_at TIMESTAMP WITHOUT TIME ZONE NULL,
  PRIMARY KEY (id)
);

データの登録

INSERT INTO todo (title) VALUES ('買い物に行く')
, ('部屋の掃除')
, ('犬の散歩')
, ('ブログを書く')
, ('JavaScriptの勉強')
;

PostgreSQLの再インストール

なんらかの理由でPostgreSQLの環境をリセットして再作成したい場合は、以下のフォルダをWindowsエクスプローラで削除し、『初期設定』の『フォルダの作成』からやり直します。 ※dataフォルダも削除するので、それまで作成したデータがそのまま消えてしまう点に注意してください。

C:\dev\pgsql-12.2\data
C:\dev\pgsql-12.2\logs

PostgreSQLのアンインストール

PostgreSQLのインストールディレクトリをWindowsエクスプローラで削除します。

C:\dev\pgsql-12.2

補足

参考情報

Windows 10にMySQL Workbenchをインストールする方法と初歩的な使い方の説明

はじめに

MySQL WorkbenchはMySQLサーバーと同じOracleが開発している無償で使えるMySQLサーバー専用のデータ管理ツールです。この記事ではWindows 10へMySQL Workbenchをインストールする方法、および初歩的な使い方を説明します。

MySQL Workbenchのダウンロード

ダウンロードページ( MySQL :: Download MySQL Workbench )からインストーラ(mysql-workbench-community-8.0.19-winx64.msi)をダウンロードします(2020年3月現在の最新バージョンです)。 ダウンロード画面(Fig1)の赤い枠線で囲った"Select Operating System:"は"Microsoft Windows"を選択、ダウンロードするファイルは"Windows (x86, 64-bit), MSI Installer"を選びます。

f:id:rubytomato:20200320201813p:plain
Fig1. MySQL Workbench Download

次のダウンロード画面(Fig2)の赤い枠線で囲った”No thanks, just start my download.”というリンクをクリックするとダウンロードが始まります。

f:id:rubytomato:20200320201912p:plain
Fig2. No thanks, just start my download.

なお、MD5チェックサムの検証方法は、この記事で説明していますのでご覧ください。 rubytomato.hateblo.jp

以上でMySQL Workbenchのダウンロードは完了です。

MySQL Workbenchのインストール

ダウンロードしたインストーラ(mysql-workbench-community-8.0.19-winx64.msi)をダブルクリックして実行します。 インストール自体はインストーラの画面の通り進めていけばOKです。

f:id:rubytomato:20200320202036p:plain
Fig3. install (1)

f:id:rubytomato:20200320202056p:plain
Fig4. install (2)

f:id:rubytomato:20200320202111p:plain
Fig5. install (3)

f:id:rubytomato:20200320202129p:plain
Fig6. install (4)

f:id:rubytomato:20200320202149p:plain
Fig7. install (5)

インストールが完了すると、そのままMySQL Workbenchが起動します。(Fig8)

f:id:rubytomato:20200320202343p:plain
Fig8. MySQL Workbenchの起動直後

コネクションの作成

まず、コネクションを作成する前にMySQLサーバーを起動しておきます。 次にMySQL Workbenchのトップ画面(Fig9)の赤い枠線で囲った+アイコンをクリックします。

f:id:rubytomato:20200321230513p:plain
Fig9. MySQL Connections

Setup New Connection画面(Fig10)のConnection Name:に"localhost"と入力しました。この名前は分かりやすい名前であればなんでも良く、例えば"Local DB"でも良いです。 Test Connectionボタンをクリックします。

f:id:rubytomato:20200321210420p:plain
Fig10. Setup New Connection

rootユーザーのパスワードを入力してOKボタンをクリックします。

f:id:rubytomato:20200321210450p:plain
Fig11. Connect to MySQL Server

認証できると成功画面(Fig12)が表示されます。

f:id:rubytomato:20200321210525p:plain
Fig12. Successfully made the MySQL connection

Setup New Connection画面に戻るのでOKボタンをクリックして入力内容を登録します。

MySQL Workbenchのトップ画面(Fig9)に戻りますが、トップ画面にいま登録したコネクションが追加されています。表示されている"Localhost"とはSetup New Connection画面(Fig10)で入力したConnection Nameで、"root"は接続ユーザー名です。

f:id:rubytomato:20200321211950p:plain
Fig13. 登録したコネクション

接続する

Fig13の登録したlocalhostコネクションをクリックするとrootユーザーのパスワード入力を求められるので入力します。 認証が成功するとFig14の画面が表示されます。 画面中央の"Query 1"というタブがSQL文を入力して実行する欄になります(タブは増やすことができます)。ここにテーブル作成やデータ挿入を行うSQL文を入力して実行します。その下の"Output"というビューにはこれまで実行したSQLの内容とその成否(成功したか失敗したか)が表示されます。 画面左側の"Navigator"は2つのタブに分かれていて、"Schemas"タブにはデータベース(MySQLではスキーマと同じ意味)の情報、"Administration"タブにはMySQLサーバーの情報が表示されます。

f:id:rubytomato:20200322183327p:plain
Fig14. MySQL workbench

SQLを実行する

画面中央の"Query 1"タブでSQLを入力して実行してみます。実行するのは

  • 1) データベース作成
  • 2) ユーザー作成
  • 3) ユーザーの権限設定
  • 4) テーブル作成
  • 5) データ登録
  • 6) データ検索
  • 7) データ更新
  • 8) データ全件削除

です。

1) データベースを作成する

データベースの作成はCREATE DATABASE文を使用します。IF NOT EXISTSとはsample_dbというデータベースが無ければ実行するという意味になります。

CREATE DATABASE IF NOT EXISTS sample_db
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_general_ci
;

このSQL文を実行するにはFig15の赤い線で囲ったアイコンをクリックするか、Ctrl + Enterを押下します。 左端の数値は行番号で、その隣のアイコンはSQLステートメントの先頭に表示されます。

f:id:rubytomato:20200323221402p:plain
Fig15.

OutputビューにSQLの実行結果が表示されます。左端のアイコンが実行結果で、緑色のアイコンは成功、赤色のアイコンは失敗を示します。

f:id:rubytomato:20200323221046p:plain
Fig16.

(補足)上記でSQLステートメントの先頭にアイコンが付くと書きましたが、正確には正しいSQLステートメント(構文エラーが無い)にアイコンが付き、正しくないSQLステートメント(構文エラー / Syntax Error)の場合は赤い×アイコンが付きます。Fig15Bは、SQL文が正しくないので×アイコンが付いています。

f:id:rubytomato:20200323233512p:plain
Fig15B.

2) ユーザーを作成する

ユーザーの作成はCREATE USER文を使用します。

CREATE USER IF NOT EXISTS 'sample_user'@'localhost'
  IDENTIFIED BY 'sample_pass'
  PASSWORD EXPIRE NEVER
;

この画面(Fig17)ではアイコンが2つ表示されているので、2つのSQLステートメントが入力されていることがわかります。 このように1つのタブに複数のSQLステートメントが入力されている状態で、任意のSQLステートメントを実行するにはSQLステートメントかその行末にカーソルを置いた状態で SQLの実行アイコンをクリックするか、Ctrl + Enterを押下します。 この例では2つ目のSQLステートメント(つまりCREATE USER文)を実行したいので、行番号10にカーソルを置いて実行アイコンをクリックします。

f:id:rubytomato:20200322222341p:plain
Fig17.

このようにOutputビューにSQLの実行結果が表示されます。

f:id:rubytomato:20200322222458p:plain
Fig18.

3) ユーザーの権限を設定する

2)で作成したsample_userへ、1)で作成したsample_dbに対して権限を与えます。権限の付与はGRANT文を使用します。

GRANT ALL ON sample_db.* TO 'sample_user'@'localhost';

f:id:rubytomato:20200322222634p:plain
Fig19.

OutputビューにSQLの実行結果が表示されます。

f:id:rubytomato:20200322222715p:plain
Fig20.

4) テーブルを作成する

テーブルの作成はCREATE TABLE文を使用します。テーブル名の前にsample_dbとデータベース名を付けている点に注意してください。

CREATE TABLE IF NOT EXISTS sample_db.todo (
  id BIGINT AUTO_INCREMENT,
  title VARCHAR(255) NOT NULL,
  description VARCHAR(1024) NULL,
  done BOOLEAN NOT NULL DEFAULT FALSE,
  create_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  update_at TIMESTAMP(3) NULL,
  PRIMARY KEY (id)
)
CHARACTER SET = utf8mb4,
COLLATE utf8mb4_general_ci
;

f:id:rubytomato:20200322222758p:plain
Fig21.

OutputビューにSQLの実行結果が表示されます。

f:id:rubytomato:20200322222815p:plain
Fig22.

データベースの状態を確認

テーブルまで作成したので、この時点でのデータベースの状態を確認します。 Navigator画面(Fig23)の赤い枠線で囲ったアイコンをクリックするとデータベースの状態が更新されます。

f:id:rubytomato:20200322223009p:plain
Fig23.

更新後のNavigator画面(Fig24)です。このように作成したデータベース(sample_db)と、テーブル(todo)が確認できます。

f:id:rubytomato:20200322223542p:plain
Fig24.

さらにデータベース名(sample_db)を右クリックし、メニューからSchema Inspectorを選択すると(Fig25)、データベースに関する情報を確認できる画面(Fig26)が表示されます。同様にテーブル名(todo)を右クリックし、メニューからTable Inspectorを選択すると、テーブルに関する情報が確認できます。

f:id:rubytomato:20200323223859p:plain
Fig25.

タブ(Tables、Columns、Indexes、Triggersなど)で、それぞれの情報を確認できます。

f:id:rubytomato:20200323223913p:plain
Fig26.

新しいコネクションを登録する

rootユーザーは管理者権限を持つユーザーなので特定の場合でしか使用しません。以降の操作は新しく作成したユーザー(sample_user)で行うように新しいコネクションを登録します。 いま開いているコネクションは、メニューバーのFileClose Connection Tabをクリックして閉じます。 Setup New Connection画面(Fig27)を開いたら、Connection Name:に任意の名前を(この例では"localhost (sample_user)"としました)、Username:にsample_user、Default Schema:にsample_dbと入力します。

f:id:rubytomato:20200323225741p:plain
Fig27.
次にPassword:の"Store in Vault ..."というボタンをクリックして、sample_userのパスワードを入力します(Fig28)。
f:id:rubytomato:20200323225757p:plain
FIg28.
最後にOKボタンをクリックすると画面(Fig29)に新しいコネクションが登録されていると思います。このコネクションをクリックするとsample_usersample_dbへ接続します。
f:id:rubytomato:20200324003021p:plain
Fig29.

5) データを登録する

新しいコネクションで接続したら、テーブル(todo)へデータを登録してみます。

INSERT INTO todo (title) VALUES ('買い物に行く')
, ('部屋の掃除')
, ('犬の散歩')
, ('ブログを書く')
, ('JavaScriptの勉強')
;

auto_commit

デフォルトではauto_commitは有効になっているので、insert文やdelete文を実行するとその都度コミットされます。 auto_commitの設定はFig30の赤い枠線で囲ったアイコンで切り替えられます。これは有効な状態で

f:id:rubytomato:20200323235212p:plain
Fig30.

クリックするとauto_commitは無効になりFig31のようになります。また左隣りの2つのアイコン(commitとrollback)が有効になり、変更をコミットする場合は明示的にcommitアイコンをクリックする必要があります。

f:id:rubytomato:20200323235509p:plain
Fig31.

このINSERT文を実行して、commitアイコンをクリックするとOutputはFig32のようになります。

f:id:rubytomato:20200324002750p:plain
Fig32.

6) データを検索する

以下のSELECT文で登録したデータを検索してみます。

select * from todo;

Queryタブの下に検索結果が表形式で表示されます。また、赤い枠線で囲ったエクスポートアイコンをクリックすると検索したデータをCSV形式のファイルに出力できます。

f:id:rubytomato:20200324010138p:plain
Fig33.

7) データを更新する

表形式のデータを直接編集して更新することもできます。 たとえば3行目の"犬の散歩"を"犬の散歩へ行く"に編集してみます。すると右下の"Apply"、"Revert"ボタンがクリックできるようになります。編集をコミットするには"Apply"ボタンをクリックします。

f:id:rubytomato:20200324004849p:plain
Fig34.
Applyボタンをクリックします。
f:id:rubytomato:20200324004947p:plain
Fig35.
Applyボタンをクリックします。Cancelをクリックするとコミットを中断します。
f:id:rubytomato:20200324005004p:plain
Fig36.
Finishボタンをクリックして完了します。
f:id:rubytomato:20200324005020p:plain
Fig37.

(補足)データの更新はQueryタブから直接UPDATE文を実行することでも可能です。

8) データを全件削除する

以下のDELETE文でtodoテーブルのデータを全件削除しようとすると、エラーが発生して削除できません。

delete from todo;
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.

f:id:rubytomato:20200324010759p:plain
Fig38.

デフォルトの設定では、安全性を考慮して全件を削除することはできないようになっています。この設定を変えるにはメニューバーのEditPreferences...SQL EditorOtherSafe Updateのチェックを外し、再接続します。

f:id:rubytomato:20200324011448p:plain
Fig39.

SQLを実行する (その2)

SQLを実行する方法は2つあります。いままではカーソルのあるSQLステートメントだけを実行してきましたが、複数のSQLステートメントをまとめて実行する方法もあります。 たとえば、以下のような個別のINSERT文をまとめて実行するには、

INSERT INTO todo (title) VALUES ('買い物に行く');
INSERT INTO todo (title) VALUES  ('部屋の掃除');
INSERT INTO todo (title) VALUES  ('犬の散歩');
INSERT INTO todo (title) VALUES  ('ブログを書く');
INSERT INTO todo (title) VALUES  ('JavaScriptの勉強');

Fig40の赤い枠線で囲ったアイコンをクリックします。

f:id:rubytomato:20200324011911p:plain
Fig40.

また、Fig41のように選択状態にすると、選択されたSQLステートメントだけが実行されます。この例では上3行のINSERT文だけが実行されます。

f:id:rubytomato:20200324012347p:plain
Fig41.

Windows 10にMySQL 8.0をMSIインストーラを使わずにZipファイルからインストールする

はじめに

ローカルPCに開発用途のMySQL 8.0をインストールする方法を説明します。インストール方法には、MSIインストーラ(ファイルの拡張子がmsi)を使う方法と、zipファイルを使う方法があります。 ダウンロードページではMSIインストーラがお勧めされていますが、この記事ではzipファイルを使って手動でインストールする方法を説明したいと思います。

zipファイルでインストールするメリット

  • レジストリを更新しないので、アンインストールはファイル削除だけで済む。
  • 複数の異なるバージョンのMySQLをインストールすることが簡単。

この記事ではWindows 10 64bitに、2020年3月現在で最新バージョンのMySQL Community Server 8.0.19をインストールします。

事前準備

Windows 10にMySQLをインストールするには、事前にMicrosoft Visual C++ 2015 Redistributable Packageというランタイムライブラリをインストールしておく必要があります。

Important
MySQL 8.0 Server requires the Microsoft Visual C++ 2015 Redistributable Package to run on Windows platforms. Users should make sure the package has been installed on the system before installing the server. The package is available at the Microsoft Download Center.

インストールされていない場合はMicrosoftサポートページ ( https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads ) からインストーラをダウンロードしてインストールします。

Windows 10が32ビット/64ビットかでダウンロードするファイルが異なります。64ビットの場合はFig1の赤い線を引いた"vc_redist.x64.exe"というリンクをクリックします。

f:id:rubytomato:20200320175521p:plain
Fig1. vc_redist.x64.exeのダウンロード

ダウンロードした"vc_redist.x64.exe"をダブルクリックするとインストール画面が表示されるので”ライセンス条項および使用条件に同意する(A)”をチェックしてインストールボタンをクリックします。

f:id:rubytomato:20200320175559p:plain
Fig2. vc_redist.x64.exeのインストール

インストールが終了するとPCを再起動するように求められるので再起動します。 以上でインストールは完了です。

MySQLのダウンロード

ダウンロードページ ( MySQL :: Download MySQL Community Server ) からzipファイル (mysql-8.0.19-winx64.zip) をダウンロードします。 Fig3の赤い枠線で囲った"Select Operating System:"は"Microsoft Windows"を選択、ダウンロードするファイルは"Windows (x86, 64-bit), ZIP Archive"を選びます。

f:id:rubytomato:20200320162426p:plain
Fig3. MySQL Download

Fig4のダウンロード画面の赤い枠線で囲った”No thanks, just start my download.”というリンクをクリックするとダウンロードが始まります。

f:id:rubytomato:20200320162656p:plain
Fig4. No thanks, just start my download.

zipファイルをダウンロードしたら、そのzipファイルが正しいか(破損していないか、改ざんされていないか)確認するため、MD5チェックサムで検証します。 Fig3のオレンジ色の線を引いたところにMD5: f52c52e7b499958acc5f08ce0a869cabという記載がありますが、これがダウンロードするzipファイルのMD5チェックサムです。

実際にダウンロードしたzipファイルのMD5チェックサムを出力し、ダウンロードページに記載されているMD5チェックサムと同一であれば正しいファイルと判断できます。 MD5チェックサムの出力には、Windows 10標準コマンドのcertutil.exeを使用します。

zipファイルのあるフォルダでコマンドプロンプトを開き、以下のコマンドを入力します。

certutil -hashfile mysql-8.0.19-winx64.zip MD5

コマンドを実行すると次の結果が出力されます。2行目がMD5チェックサムです。ダウンロードページに記載されてるMD5チェックサムと比較します。

MD5 ハッシュ (対象 mysql-8.0.19-winx64.zip):
f52c52e7b499958acc5f08ce0a869cab
CertUtil: -hashfile コマンドは正常に完了しました。

以上でMySQLのダウンロードは完了です。

MySQLのインストール

インストールと言ってもダウンロードしたzipファイルを7-Zipなどのツールで展開するだけです。 この記事では展開して出来たフォルダを以下のフォルダへコピーしました。以降はこのフォルダをインストールディレクトリと呼びます。

C:\dev\mysql-8.0.19-winx64

このフォルダをWindowsエクスプローラで表示してFig5のような状態であることを確認します。

f:id:rubytomato:20200320162900p:plain
Fig5. インストールディレクト

初期設定

オプションファイルの作成

オプションファイルとはmy.cnfmy.iniというファイル名で知られるMySQLの設定をまとめたテキストファイルです。 Windowsではmy.iniというファイル名が一般的なので、このファイルをインストールディレクトリ直下に作成します。

C:\dev\mysql-8.0.19-winx64\my.ini

とりあえず、以下の内容をコピーしてmy.iniファイルへペーストします。もしMySQLのインストールディレクトリがC:\dev\mysql-8.0.19-winx64でなければ、ファイルパスは適宜修正してください。 またファイルパスの区切り文字は\ではなく2重\\にします。

[mysqld]
basedir = C:\\dev\\mysql-8.0.19-winx64
datadir = C:\\dev\\mysql-8.0.19-winx64\\data
tmpdir = C:\\dev\\mysql-8.0.19-winx64\\temp

## logging

general_log = 1
general_log_file = C:\\dev\\mysql-8.0.19-winx64\\logs\\general.log

log_error = C:\\dev\\mysql-8.0.19-winx64\\logs\\error.log

slow_query_log = 1
slow_query_log_file = C:\\dev\\mysql-8.0.19-winx64\\logs\\slow_query.log

log_timestamps = SYSTEM

フォルダの作成

MySQLのインストールディレクトリ直下にdatalogstempフォルダを作成します。 以下のようにフォルダが出来ていればOKです。

C:\dev\mysql-8.0.19-winx64\data
C:\dev\mysql-8.0.19-winx64\logs
C:\dev\mysql-8.0.19-winx64\temp
  • data は MySQLのデータファイルが格納されます。
  • logs は ログファイルが格納されます。
  • temp は 一時ファイルが作成されます。

MySQLの初期化

MySQLのインストールディレクトリでコマンドプロンプトを開き、以下のコマンドでMySQLの初期化を行います。 ※以降のコマンドプロンプトからのコマンド実行は、断りが無い限りMySQLのインストールディレクトリから行います。

初期化処理に問題が無ければ特にメッセージは出力されません。もし何かメッセージが表示された場合はエラーが起きた可能性があるので、これまでの作業を見直してください。

bin\mysqld --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini --initialize

Windowsエクスプローラでlogsフォルダを開き、error.logというファイルをテキストエディタで開きます。 このファイルにはMySQLのrootユーザーの仮パスワードが記録されています。

2020-03-20T17:12:39.004140+09:00 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xhkUnc1qQe%8

この行のxhkUnc1qQe%8が仮パスワードです。

MySQLの起動

MySQLの初期化が終了したら起動してrootユーザーでログインしてみます。 起動は以下のコマンドで行います。

bin\mysqld --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini --console

以下が起動メッセージです。この中の3行目のready for connections. Version: '8.0.19' socket: '' port: 3306 MySQL Community Server - GPL.というメッセージがあれば起動できています。

2020-03-20T17:22:48.440783+09:00 0 [System] [MY-010116] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe (mysqld 8.0.19) starting as process 11176
2020-03-20T17:22:49.331232+09:00 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-03-20T17:22:49.408022+09:00 0 [System] [MY-010931] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe: ready for connections. Version: '8.0.19'  socket: ''  port: 3306  MySQL Community Server - GPL.
2020-03-20T17:22:49.617563+09:00 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060

rootユーザーでログインする

MySQLの起動が確認できたらrootユーザーでログインしてみます。 MySQLのインストールディレクトリで新しいコマンドプロンプトを開き、以下のコマンドを実行してrootユーザーでログインします。

bin\mysql -u root -p

Enter password: には先ほど確認した仮パスワードを入力します。 ログインできると以下のようなメッセージが表示されると思います。

Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
仮パスワードを変更する

仮パスワードをそのまま使い続けることはできないので、以下のSQLコマンドで変更します。 new passwordの部分を新しいパスワードに変えて実行してください。またパスワードはシングルクォート( ' )で囲みます。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

変更が成功すると以下のメッセージが表示されます。

Query OK, 0 rows affected (0.01 sec)

パスワードの変更ができたら以下のSQLコマンドでログアウトします。

exit

MySQLの停止

rootユーザーでのログインまで確認できたら一旦MySQLを停止します。 停止は以下のコマンドで行います。

bin\mysqladmin -u root -p shutdown

Enter password:には、先ほど変更したrootユーザーのパスワードを入力します。

Enter password: ********

MySQLを起動したコマンドプロンプトを見てみると、以下のメッセージが表示されていて停止したことがわかります。

2020-03-20T17:37:22.663545+09:00 9 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.19).
2020-03-20T17:37:22.667429+09:00 0 [System] [MY-013105] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe: Normal shutdown.
2020-03-20T17:37:22.999047+09:00 0 [System] [MY-010910] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

MySQLの起動・停止用バッチファイルを作成

これまで、MySQLの起動・停止はコマンドプロンプトからコマンドを入力して行ってきましたが、これらのコマンドをバッチファイルにすることで簡単に行えるようにします。

起動用バッチファイル

インストールディレクトリ直下にstartup.batという名前のファイルを作成します。

C:\dev\mysql-8.0.19-winx64\startup.bat

startup.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem 起動用バッチ
C:\dev\mysql-8.0.19-winx64\bin\mysqld --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini --console

pause

rootユーザーログイン用バッチファイル

インストールディレクトリ直下にroot_user.batという名前のファイルを作成します。

C:\dev\mysql-8.0.19-winx64\root_user.bat

root_user.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem rootユーザーでログイン
C:\dev\mysql-8.0.19-winx64\bin\mysql --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini -u root -p

停止用バッチファイル

インストールディレクトリ直下にshutdown.batという名前のファイルを作成します。

C:\dev\mysql-8.0.19-winx64\shutdown.bat

shutdown.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem 停止用バッチ
C:\dev\mysql-8.0.19-winx64\bin\bin\mysqladmin -u root -p shutdown

pause

これで、MySQLの起動はstartup.bat、停止はshutdown.batのクリックで行えるようになりました。 また、MySQLが起動していればroot_user.batをクリックしてrootユーザーでログインできます。

バッチファイルを作成する理由

ソフトウェアをインストールすると実行ファイルがあるパスを環境変数pathに追加するということがよくあります。 MySQLで言えばMySQLサーバーの実行ファイルであるmysqld.exeMySQLクライアントのmysql.exeなどです。フルパスを入力するよりmysqlと入力するだけで実行できるので便利ですが、複数バージョンのMySQLをインストールしていて使い分けしたい場合は、どのバージョンのMySQLがpathに登録されているのか気にする必要がでてきます。

このような場合、起動・停止用のバッチファイルを作成し実行ファイルへのフルパスを記述することで環境変数pathに登録する必要がなくなります。

pauseコマンド

startup.batとshtudown.batにpauseコマンドを入れています。pauseはコマンドプロンプトのコマンドで、エンターキーの入力があるまで処理を一時停止します。 pauseコマンドを入れておく理由は、MySQLの起動や停止に異常があった場合にコマンドプロンプト上で確認することができるためです。逆に入れていないとエラーが起きていてもコマンドプロンプトがそのまま閉じてしまうのでエラーが確認できません。 ただし、起動や停止に問題が内容であればbatファイルから削除しても構いません。

パスワードの入力を省略する

これはセキュリティ上よくないので、ローカル開発環境でのみ利用するようにしてください。 バッチファイルの-pオプションを以下のように--password=***** (***** は rootユーザーのパスワードに読み替えてください)と書き換えることで、パスワードの入力を省略できます。

rem rootユーザーでログイン
C:\dev\mysql-8.0.19-winx64\bin\mysql --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini -u root --password=*****

MySQLの再インストール

なんらかの理由でMySQLの環境をリセットして再作成したい場合は、以下のフォルダをWindowsエクスプローラで削除し、『初期設定』の『フォルダの作成』からやり直します。 ※dataフォルダも削除するので、それまで作成したデータがそのまま消えてしまう点に注意してください。

C:\dev\mysql-8.0.19-winx64\data
C:\dev\mysql-8.0.19-winx64\logs
C:\dev\mysql-8.0.19-winx64\temp

MySQLのアンインストール

MySQLのインストールディレクトリをWindowsエクスプローラで削除します。

C:\dev\mysql-8.0.19-winx64

事前準備の項でMicrosoft Visual C++ 2015 Redistributable Packageをインストールした場合は、Windows 10の設定 → アプリと機能の画面からアンインストールします。

Spring BootでシンプルなWebアプリケーションを開発する環境構築手順について

はじめに

これはJavaやSpring Bootの学習をするために動かせるプロジェクトを作成したいけど、そのための環境構築やプロジェクト作成方法がわからない方向けの記事です。 記事の前半で開発環境の構築手順、後半でWebアプリケーションのプロジェクト作成と実行までを説明しています。 作成するプロジェクトは"Hello World"を表示するだけのシンプルなWebアプリケーションですが、これをベースにいろいろと手を入れながら学習できると思います。

開発環境の構築手順

開発環境について

この記事の説明で利用するPCはWindows 10です。Macユーザの方は適宜読み替えてください。

Java

Javaは、OpenJDK 13.0.2を使用します。(2020/3月時点の最新バージョンです)

インストール

OpenJDKのインストールは、一般的なソフトウェアやOracle JDKのインストールとは違って、zipファイルをダウンロードしそれを展開して配置するだけで済みます。 まず、zipファイルをダウンロードするためhttp://jdk.java.net/13/にアクセスします。 Fig1の赤い枠線で囲ったリンクをクリックするとzipファイルのダウンロードがはじまります。

f:id:rubytomato:20200316135159p:plain
Fig1. OpenJDKのダウンロード

ダウンロードが完了したら、7-Zipなどzipファイルを展開するツールを使って任意のフォルダへzipファイルを展開します。 この記事では下記の場所へ展開しましたので、この場所をOpenJDKのインストールフォルダとして説明を続けます。

C:\dev\openjdk\jdk-13.0.2

念のため、Windowsエクスプローラでこの場所に下記のフォルダやファイルがあることを確認します。

f:id:rubytomato:20200316135306p:plain
Fig2. OpenJDKのフォルダ内容

バージョンの確認

コマンドプロンプトを起動し、下記のコマンドを実行してOpenJDKのバージョンを確認します。

C:\dev\openjdk\jdk-13.0.2\bin\java -version

以下の実行結果が返ってくれば成功です。

openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

環境変数pathの設定

javaコマンドを毎回フルパス(絶対パス)で入力しなくても済むように、環境変数pathにjavaコマンドのフルパスを追加します。 Windowsのスタートメニューを開き(キーボードのWinキーを押下でも可)、そのままenvと入力します。 Fig3のような画面が表示されたら、赤い枠線で囲った”開く"をクリックします。

f:id:rubytomato:20200316135339p:plain
Fig3. システム環境変数の編集

Fig4の”環境変数(N)"ボタンをクリックします。

f:id:rubytomato:20200316135437p:plain
Fig4. システムプロパティ画面

Fig5のようにJAVA_HOMEというシステム変数の変数値にOpenJDKのインストールディレクトリを登録します。

f:id:rubytomato:20200316135519p:plain
Fig5. JAVA_HOMEの追加

最後にFig6のように環境変数pathに%JAVA_HOME%\binという値を追加します。

f:id:rubytomato:20200316135549p:plain
Fig6. 環境変数pathの編集

環境変数pathが正しく設定されたかどうか確認するため、コマンドプロンプトを新しく開き以下のコマンドでバージョンを確認します。 バージョン情報が返ってきたら成功です。

java -version

Eclipse

Webアプリケーションの開発ツールにEclipseを使用します。開発ツールにはEclipse以外にもIntelliJ IDEAやNetBeans、Spring Tools Suiteなどがあります。また日本語化されていて便利な拡張機能がプレインストールされているPleiades All in Oneも人気があります。

インストール

EclipseのインストールもOpenJDKと同様にzipファイルをダウンロードして展開するだけで済みます。 ダウンロードページにアクセスするとFig7のページが表示されますが、ここのダウンロードボタンではなく赤い枠線で囲った"Download Packages"というリンクをクリックします。

f:id:rubytomato:20200316135634p:plain
Fig7. Eclipseのダウンロードページ

この画面(Fig8)の"Windows 64-bit"のリンクをクリック、次の画面(Fig9)のファイル名をクリックするとzipファイルのダウンロードが始まります。

f:id:rubytomato:20200316135732p:plain
Fig8. Windows 64-bit
f:id:rubytomato:20200316135759p:plain
Fig9. ダウンロードリンク

ダウンロードしたzipファイルを7-Zipなどのツールで展開します。 この記事では下記の場所へ展開しましたので、この場所をEclipseのインストールフォルダとして説明を続けます。

C:\dev\eclipse

Windowsエクスプローラで、この場所に下記のフォルダやファイルがあることを確認します。

f:id:rubytomato:20200316135826p:plain
Fig10. Eclipseのフォルダ内容

eclipse.exeを右クリックしてメニューの「送る」→「デスクトップ(ショートカットを作成)」をクリックします。これでデスクトップにEclipseのショートカットアイコンが作成されました。

起動と設定

デスクトップに作成したEclipseのアイコンをクリックしてEclipseを起動します。 起動するとワークスペースの場所を決めるダイアログウィンドウが表示されます。ワークスペースの場所はどこでも構わないのですが、この記事ではEclipseをインストールしたフォルダと同じ場所にeclipse-workspaceというフォルダを作成しました。

f:id:rubytomato:20200316140223p:plain
Fig11. Eclipseワークスペースの場所

C:\dev\eclipse-workspace

起動するとWelcome画面(Fig12)が表示されます。右下のチェックを外してWelcome画面を閉じます。(チェックを外さないと毎回Welcome画面が表示されます)

f:id:rubytomato:20200316140258p:plain
Fig12. Welcome画面

次にJAVA_HOMEの設定が正しく反映されているか確認します。 メニューバーのWindowPreferencesをクリックし、左側メニューのJavaInstalled JREsをクリックします。 画面右側のInstalled JREsにJAVA_HOMEで登録したOpenJDKが反映されていることを確認します。

f:id:rubytomato:20200316140854p:plain
Fig13. Installed JREsの確認

そのまま続けて、左側メニューのGeneralWorkspaceをクリックします。 画面右側のText file encodingDefault (MS932)からOtherのUTF-8へ、New text file line delimiterDefault (Windows)からOtherのUnixへ変更します。(この変更はプロジェクトをGitで管理する場合を想定しています。)

f:id:rubytomato:20200316141438p:plain
Fig14. Workspaceの設定

次に左側メニューのGeneralEditorsText Editorsをクリックします。 画面右側のShow whitespace charactersをチェックします。この設定を有効にすると目に見えない文字(半角スペースやタブ、改行)がエディタ上では代替文字で可視化されるようになります。

f:id:rubytomato:20200316141734p:plain
Fig15. Text Editorの設定

拡張機能のインストール

Spring Bootを使ったWebアプリケーションのプロジェクトを作成できるようにSpring Tools 4という拡張機能を追加します。 メニューバーのHelpEclipse Marketplace...をクリックし、Searchタブの検索フィールドにspring tools 4と入力して検索します。 画面(Fig16)に表示された"Spring Tools 4 (aka Spring Tool Suite 4) 4.5.1.RELEASE"のInstallボタンをクリックしてインストールを始めます。

f:id:rubytomato:20200316142211p:plain
Fig16. Spring Tools 4のインストール

確認画面(Fig17)で、そのままConfirmボタンをクリックします。

f:id:rubytomato:20200316142635p:plain
Fig17. Confirm画面

ライセンスの同意画面(Fig18)で、I accept the terms of the license agreementsにチェックを入れてライセンスに同意し、Finishボタンをクリックしてインストールを開始します。

f:id:rubytomato:20200316142930p:plain
Fig18. ライセンス同意画面

インストールが終わるとEclipseの再起動を促されるので、一旦再起動します。

以上で開発環境の構築は完了です。

プロジェクトの作成

Spring Bootを利用したWebアプリケーションのプロジェクトを簡単に作成する手段がいくつかありますが、主なものではSpring InitializrというWebサービスを利用する方法、もう1つはEclipse拡張機能のSpring Tools 4を利用する方法があります。 この記事では2つ目の方法、Spring Tools 4を使ってプロジェクトを作成します。

プロジェクトの作成開始

EclipseのメニューバーのFileNewOther...をクリックします。 画面(Fig 19)のフィールドにspringと入力し、検索結果に表示されたSpring Starter Projectを選択して、Nextボタンをクリックします。

f:id:rubytomato:20200316152814p:plain
Fig19. Spring Starter Project

プロジェクトのアーキテクチャを選択

この画面(Fig 20)で、Java Versionを13へ変更します。Typeでプロジェクトのビルドツールを選択できますがデフォルトのMavenのままにします。

f:id:rubytomato:20200316152923p:plain
Fig20. Spring Boot Project

Spring Bootの依存ライブラリを選択

Spring Boot 2.2.5は、2020年3月現在の最新バージョンです。 画面左に利用できるライブラリの一覧がカテゴリ別に表示されています。 画面右に選択したライブラリの一覧が表示されます。(Fig21は最初の状態なので何も選択されていません)

f:id:rubytomato:20200316152957p:plain
Fig21. 依存ライブラリの選択

この記事で開発するWebアプリケーションは"Hello World"を表示するだけのシンプルなものなので、必要な依存ライブラリは以下の3つだけです。

  • WebカテゴリのSpring Web
  • Template EnginesカテゴリのThymeleaf
  • Developer ToolsカテゴリのSpring Boot DevTools

Spring Webの追加

f:id:rubytomato:20200316153054p:plain
Fig22. Spring Webの追加

Thymeleafの追加

f:id:rubytomato:20200316153129p:plain
Fig23. Thymeleafの追加

Spring Boot DevToolsの追加

f:id:rubytomato:20200316153206p:plain
Fig24. Spring Boot DevTools

選択できる依存ライブラリはたくさんありますが、とりあえず必要なのは3だけなので選択できたら最後にFinishボタンをクリックしプロジェクトを作成します。 (※たとえば、データベースを扱いたい場合はSQLカテゴリの"Spring Data JPA"や"Spring Data JDBC"とデータベースドライバ(MySQL DriverやPostgreSQL Driver)を選択します。)

作成直後のプロジェクトの状態

プロジェクトの作成が完了すると、Project Explorerにプロジェクトが展開されます。

f:id:rubytomato:20200316153719p:plain
Fig25. 作成されたプロジェクト

プロジェクト内にDemoApplicationというクラスがありますが、これはSpring Tools 4が生成したクラスで、Spring Bootを利用したアプリケーションの起動クラスになります。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

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

}

また、"src/main/resources"にapplication.propertiesというSpring Bootアプリケーションの設定ファイルが生成されていますが、プロジェクト作成直後はただの空ファイルです。 この記事でも特に設定を変える部分はないので編集しません。

Mavenでビルドする

とりあえず、プロジェクト作成直後の状態でビルドを行ってみます。 Project Explorer上のプロジェクト名を右クリックし、メニューのRun AsMaven buildをクリックします。

f:id:rubytomato:20200316155645p:plain
Fig26. Run Configurations

編集画面(Fig27)でGoalsにclean packageと入力し、Runボタンをクリックしてビルドを行います。(編集画面の設定は、この後でも行えます)

f:id:rubytomato:20200316155930p:plain
Fig27. Edit Configurations

ビルド結果がEclipseのConsoleに出力されます。Fig28のように"BUILD SUCCESS"と表示されればビルドは成功です。

f:id:rubytomato:20200316160151p:plain
Fig28. Build Success

ビルドが成功すると、targetフォルダにjarファイル(成果物/アーティファクト)が生成されています。 jarファイルが見えない場合は、Project Explorer上のプロジェクト名を選択した状態でF5キーを押下して画面をリフレッシュしてください。

f:id:rubytomato:20200316161621p:plain
Fig29. jarファイル

以降のMavenビルドは、プロジェクト名を右クリック → Run ASMaven buildで行えます。

Hello Worldの実装

ここから、"Hello World"を表示するWebアプリケーションの開発手順について説明します。

controllerパッケージを追加する

com.example.demoというパッケージを右クリックし、メニューのNewPackageをクリックします。

f:id:rubytomato:20200316165439p:plain
Fig30. create package

f:id:rubytomato:20200316165611p:plain
Fig31. create package

controllerクラスを追加する

作成したcom.example.demo.controllerパッケージを右クリックし、メニュ―のNewClassをクリックします。

f:id:rubytomato:20200316165642p:plain
Fig32. create class

クラス名にHelloWorldControllerと入力します。

f:id:rubytomato:20200316165801p:plain
Fig33. create class

HelloWorldController

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloWorldController {

    @GetMapping(value = "/")
    public String index(Model model) {
        String message = "ハローワールド";
        model.addAttribute("message", message);
        return "hello-world";
    }

}

テンプレートファイルを追加する

templatesフォルダを右クリックし、メニューのNewOther...をクリックします。

f:id:rubytomato:20200316165932p:plain
Fig34. create template file

入力フィールドに"html"と入力し、検索結果に表示されたHTML Fileを選択して、Nextボタンをクリックします。

f:id:rubytomato:20200316170137p:plain
Fig35. create template file

テンプレートファイル名にhello-world.htmlと入力します。

f:id:rubytomato:20200316170323p:plain
Fig36. create template file

hello-world.html

<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
    <div>
        <h1 th:text="${message}"></h1>
    </div>
</body>
</html>

アプリケーションの実行

アプリケーションの実行方法にもいくつか手段があります。

Eclipseから実行する

  • 1つ目はDemoApplicationクラスを右クリックし、Run ASJava Application もしくは Spring Boot Appをクリックする方法。
  • 2つ目はプロジェクト名を右クリックし、Run ASSpring Boot Appをクリックする方法。

アプリケーションを実行すると、EclipseのConsoleに起動メッセージが出力されます。 Consoleの最後の方に"Started DemoApplication in 1.918 seconds"のようなメッセージが表示されていればアプリケーションの起動は成功です。

2020-03-16 17:29:53.264  INFO 9184 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2020-03-16 17:29:53.425  INFO 9184 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-03-16 17:29:53.429  INFO 9184 --- [  restartedMain] com.example.demo.DemoApplication         : Started DemoApplication in 1.918 seconds (JVM running for 2.803)

この方法でアプリケーションを実行すると、次からEclipseのメニューバーのRunアイコンから簡単に実行できます。

f:id:rubytomato:20200316181041p:plain
Fig37. run application

Mavenコマンドで実行する

3つ目はMavenコマンドで実行する方法です。コマンドプロンプトでプロジェクトディレクトリを開き、下記のコマンドを実行します。 この方法でもEclipseから起動したのと同じ起動メッセージが出力されます。

mvnw spring-boot:run

jarファイルを実行する

4つ目はビルドして生成したjarファイルを実行する方法です。 以下はプロジェクトディレクトリから実行する例になります。 1行目のコマンドでMavenビルドを実行してjarファイルを生成します。(jarファイルが生成されていればスキップしても構いません) 2行目のコマンドでjarファイルを実行します。

mvnw clean package
java -jar .\target\demo-0.0.1-SNAPSHOT.jar

上記の方法のいずれかでアプリケーションが起動したらブラウザを立ち上げ、以下のURLでアクセスします。画面に”ハローワールド”と表示されれば成功です。

http://localhost:8080/

環境構築手順とプロジェクトの作成方法の説明は以上です。