Javaを自分のWindowsのPC上で開発しよう&CSE上での実行方法

はじめに

プログラミング1の講義にてJavaの導入方法が適切に示されていなかったことで、混乱が生じているように感じる。今回はCSE上での実行方法と自宅のPCで開発はどのように行うのかを解説していく。

CSE上でのJavaの実行方法

コンソールを開く

左上のシステムからコンソール(黒い画面; ターミナル; 端末)を開きましょう。

エディタでHello.javaの作成

Vimの使い方

コンピューター入門ではemacsというエディタを用いてテキストを編集したが、emacsよりもVimの方が個人的に使いやすいため、こちらをおすすめする。
Vimのには「コマンド入力モード」「削除モード」「挿入モード」がある。
まずドキュメントを開くと、以下のような画面となっていると思うので、

コマンド入力モード

キーボード左上のEscキーを押してみてください。これでコマンドを入力できるモードになっています。
まずは終了の仕方は:q(コロンとQ)です。画面下部に文字が入力した文字が表示されて居ると思います。もしも入力を間違えたらもう一度Escキーを押してください。
そしてEnterを押すとVimを終了することができます。
ただし、テキストに変更が加わっていて、「No write since last change (add ! to override)」というエラーが出るときは、もう一度Escキーを押して:q!のように!を加えてコマンドを入力すると、Vimを強制的に閉じることができます。(このときテキストは保存されません)

挿入モード

次に挿入(Insert)モードへの行き方を紹介します。VimHello.javaを開いて、左上のEscキーを押し、右上のInsertキーを1度だけ押してみてください(2度押すと下記の削除モードになります)。
するとコメントが表示されていた欄(画面下部)に---- Insert (挿入) ----が表示されると思います。この状態では自由にテキストを入力することができます。

削除モード

Vimを開いた状態でEscを押し、Insertを2回押すとReplaceモードになります。
Insertモードに戻るには、一度Escを押し、一度だけInsertを押すことで可能です。

Vimで実際に編集をしてみる

vim Hello.java

をコンソールのコマンドに入力しましょう。
適切な内容を書き入れるましょう。以下のような内容が適切だと思います。

class Hello {
    public static void main(String[] args) {
        System.out.println("Hello!");
    }
}

Vimをコマンド入力モード(Escを一度押す)にして、保存と終了のコマンド:wqを入力すると、ドキュメントを保存することができます。

コンパイル(javac)と実行(java)

  1. Vim:wqで終了
    →コンソールに戻ります
  2. コンソールに戻ったら、コンパイルをするために
    javac Hello.java
    を入力します。(なお完了しても特に何も出ません)
  3. 次に実行をするために
    java Hello
    を入力します。
  4. 先程の内容が正しく書き込まれていたらHello!と出力(表示)されると思います。 (もしも以上で異常が起きたら苦情を申し付けください)

以上のようにしてCSE上でJavaを実行することができます。

Eclipseを使ったWindows上でのJava開発

CSEに接続してコードを書くのはかなり辛いです。よってWindows上でJava開発をすることをおすすめします。教科書にも載っていると思いますが、ここはEclipseを用いた開発の方法を説明をします。(前節とかぶる部分もあります)

JDKのダウンロードとインストール_

Java開発環境、通称JDKとはJavaを開発するために必要なソフトウェア群です。
ただしJDKは、今回ダウンロードするEclipseには全部入っていると思うので、ダウンロードとインストールは結局のところ不要です。

一応、入れておきたい人は# JDKのダウンロードとインストール を参照してください。

Eclipseのダウンロードとインストール

Eclipse公式サイトからJava開発者用のものをダウンロードしてもよいですが、英語のままになるため、翻訳と必須プラグインがインストール済みのEclipseをダウンロードしましょう。

Eclipse 日本語化 | MergeDoc Project

Pleiades All in One ダウンロード」の「Eclipse 2020」を押して、行「Windows 64bit Full Edition」の、列「Java」をとりあえず選びましょう。 (わかっている人はStandard Editionを選んでも大丈夫です。環境設定とJava15とかをインストールする必要があるだけだと思います。たぶん)

ダウンロードしたファイルは7-Zipというソフトを使って展開(解凍)してください。(それ以外だとエラーが出ます) 圧縮・解凍ソフト 7-ZipからWindows x64のものをダウンロードして、ダウンロードしたインストーラーのファイルを実行してください。

7-Zipで展開(解凍)をするときは、先程のEclipseのファイルを選択して、右クリックから7-Zip→展開→OKとしてください。 ファイルが展開できましたら、たとえばCドライブ直下などに、先程展開して生成されたEclipseのフォルダを移動してください。

Eclipseでプロジェクトを作ってみよう

丸投げします。以下サイトを参考にしてください。

「Eclipse」の基本操作に慣れる (1/2):Eclipseではじめるプログラミング(2) - @IT

Windows上でのJavaの実行方法(Eclipse無し)

CSEに接続してコードを書くのはかなり辛いです。よってWindows上でJava開発をすることをおすすめします。
今回は多分教科書には載っていないEclipseなどのIDE(統合開発環境)を使わない実行方法を解説します。
**ただし、この節はやや大変なので今回は推薦しません。上記の# Eclipseを使ったWindows上でのJava開発をおすすめします。

JDKのダウンロードとインストール

JavaDevelopmentKit(Java開発環境?)、通称JDKとはJavaを開発するために必要なソフトウェア群です。
Java8のJDKOracleのサイトからダウンロードできます。

Java SE Development Kit 8 - Downloads | Oracle 日本

基本的に、Java SE Development Kit 8uXXX の項目の「Windows x64」の「jdk-8uXXX-windows-x64.exe」を押して、出てきたポップアップを許諾すると、Oracleのアカウントが必要になります。
Oracleのアカウントを適当に作ったら(詳細な手順は省きますが、メールアドレスと氏名などを書くとかだけだったと思います)、ログインしてダウンロードしましょう。ダウンロードしたファイルをダブルクリックしてインストールをしてください。

OpenJDKをダウンロードしたい場合 (やや慣れが必要なため、この記事では推薦しない) なんやかんや あって、JDKのダウンロードはOpenJDKの方からダウンロードするのが良いかもしれないです。しかし、なんやかんや あったので色々なディストリビューションあり、JavaFXがなかったり、ちゃんと話さないとわからないので、とりあえず今回はおすすめしません…(ちょっとまだ全貌が分かっていないです)。

AdoptOpenJDK - Open source, prebuilt OpenJDK binaries

  • OpenJDK 8 upstream バイナリのみ版 環境変数の設定をしなければいけないので、少し面倒です。(上記のインストーラー版を推薦)

Upstream | AdoptOpenJDK - Open source, prebuilt OpenJDK binaries

Operating System: はWindowsを。Architecture: はx64を選択(するしかないい)のでこれを選択して、JDKと書いてある方の.zipをダウンロード。ダウンロードしたzipファイルを展開し、展開したファイルを適当な浅めのフォルダに移動してください。そしてこの中のbinフォルダに対して、環境変数の設定をしてください。

javaファイルの作成

Hello.javaというファイルを作成します。
まずは、拡張子を表示してください。(参考: Windows 10でファイルの拡張子を表示する方法 - NEC LAVIE公式サイト サービス&サポート )

  1. 適当なフォルダ内にて右クリックをして 「新規作成>テキストドキュメント」をクリックしてください。
    → 「新規テキストドキュメント.txt」というファイルが生成されている。
  2. 名前をHelloに変える。またこのファイルの拡張子「.txt」を「.java」に変更します。つまりファイル名としてはHello.javaとなります。
    ファイル名変更の方法はファイル名を変更 - NEC LAVIE公式サイト サービス&サポート を確認してください。

javaファイルの編集

Hello.javaというjavaファイルを作成したら、簡単なプログラムを書いてみましょう。例えばさくらエディタやメモ帳などのエディタでHello.javaを開いて(ダブルクリックからプログラムを選択など)、以下の内容を入力(コピペも可)してみてください。

class Hello {
    public static void main(String[] args) {
        System.out.println("Hello!");
    }
}

そうしましたら作ったjavaファイル(Hello.java)をCtrlキーとSキーの同時押し(通常はこれをCtrl+Sと表記しますので覚えておいてください) などで保存してください。

コンパイル(javac)と実行(java)

作ったjavaファイルを保存しましょう。
1. WinキーとRキーを同時押し(Win+R)して、出てきたウィンドウにcmdと入力します。
コマンドプロンプトという黒い画面が起動すると思います。(一応コンソールとも言うかもしれないです; 省略してCMDと書くことがあります) 2. コンパイルをするために
javac Hello.java
コマンドプロンプトに入力します。(なお完了しても特に何も出ません) 3. 次に実行をするために
java Hello
を入力します。 4. 先程の内容が正しく書き込まれていたらHello!と出力(表示)されると思います。

以上のようにしてWindows上においてEclipse無しでJavaを実行することができます。(ちょっと初心者には辛いですね)

WSLで開発してみる

自分のWindows上でCSELinux環境を再現することができます。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

Microsoft公式サイトに記述がありますので参考にしてみてください。

また、新しいSSDとかを買ってCentOSをインストールして載っけるのもいいかもしれません。

WSL上のLinux(CentOSUbuntu)でも、# CSE上でのJavaの実行方法 と同じことをすれば大丈夫だと思います。また、WSL上ではLaTeXをinstallしたりして、この環境でLaTeXが使えちゃったりします。詳しくは調べてください。

【Google Colaboratory / Python】Excelのデータからシャピロ-ウィルクの検定とコルモグオロフス-ミノルフ検定(KS検定)を行う方法

大学の課題で大半がR言語を用いていたが、R言語って環境構築が大変そう(適当)なので、環境構築なしですぐにPythonを使う方法をここに書く。

1. Google Colaboratoryにログインする

Google Colaboratoryにアクセスして、自分のGoogleアカウントでログインしましょう。

f:id:KoNitech:20200801202637p:plain

2. Google Colabのノートブックを新規作成

「ファイル」>「ノートブックを新規作成」をクリック

f:id:KoNitech:20200801203019p:plain

3. Excelファイルのアップロード

左側にあるファイルのボタン(青色で囲んであるアイコン)をクリックして、
オレンジ色の範囲にドラッグ&ドロップExcelファイルをアップロードしてください。
(もしくは赤色のボタンを押してアップロードしてください)

f:id:KoNitech:20200801205641p:plain

邪魔なのでオレンジ範囲のXボタンを押して非表示にしてください。

4. Excelファイルの読み込みテスト

注意: 以下データ1つ1つに対して実行してあげないと、いい感じになりません。(身長のデータだけとか体重のだけという意味です) あと、しばらくするとExcelファイルは削除されるので注意してください。(仮想環境ごとに削除されるため)

今回のExcelファイルの形式

今回用いるExcelファイルは以下のようになっています。
Excelファイル名は「data.xlsx」。
・Sheet1の1列目に身長をheaderありで、headerの下にデータを置いています。
・Sheet2の1列目に体重をheaderありで、headerの下にデータを置いています。

f:id:KoNitech:20200801205857p:plain f:id:KoNitech:20200801205852p:plain

ソースコード

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel("data.xlsx", sheet_name="Sheet1")

df.head()

pd.read_excel("data.xlsx", sheet_name="Sheet1")
注意 第一引数にはExcelファイル名, sheet_nameにはシート名を書きます。

もしもExcelファイルが、たとえば次のような形式であれば以下のようにしてください。
(ry)(後で書くかも) 参考: pandasでExcelファイル(xlsx, xls)の読み込み(read_excel)

ソースコードなど参考
【初心者向け】Google ColaboratoryでDataFrameにExcel・CSVファイルを読み込む - Qiita

実行

以下のようにソースコードをコピペして、適切に編集したら三角丸アイコンを押して実行します。
すると以下のように表示されるはずです。
ここで適切に設定できていれば大丈夫ですが、できていなければエラーが出たり、この後で失敗することになってしまいます。

f:id:KoNitech:20200801210837p:plain
Excelファイルの読み込みテスト_実行

5. シャピロ-ウィルクの検定を行う

やっと本番です。

コードセルの追加

「+コード」ボタンを押して、コードの欄(コードセル)を増やします。

f:id:KoNitech:20200801211358p:plain
コード追加

新しくできたコードセルへ、次のソースコードを書き込んでください。

ソースコード

import numpy as np 
from numpy.random import *
from scipy import stats
import pandas as pd
import matplotlib.pyplot as plt
def check_norm(x):
    plt.title("height")
    plt.hist(x, bins = 10, ) #ヒストグラム表示
    plt.pause(.01)
    stats.probplot(x, dist = "norm", plot = plt) #QQプロット表示
    plt.pause(.01)
    W, p = stats.shapiro(x) #シャピロウィルク検定
    print("シャピロウィルク検定のp値: " + str(p))
    print("データ数: " + str(len(x)))

df_height = pd.read_excel("data.xlsx", sheet_name="Sheet1")
#df_height.head()
data_height = df_height["身長"]
check_norm(data_height)

先程のように自分のデータと合うように適切に、このソースコードを編集してください。

ソースコード参考
Pythonでデータの正規性を確認するサンプルコード - なろう分析記録

実行

実行結果などは以下のようになります。 f:id:KoNitech:20200801212604p:plain f:id:KoNitech:20200801212559p:plain

6. コルモグオロフス-ミノルフ検定(KS検定)を行う

だいたいシャピロウィルクの検定と同じです。

コードセルの追加

「+コード」ボタンを押して、コードの欄(コードセル)を増やします。

f:id:KoNitech:20200801211358p:plain
コード追加

新しくできたコードセルへ、次のソースコードを書き込んでください。

ソースコード

import numpy as np 
from numpy.random import *
from scipy import stats
import pandas as pd
import matplotlib.pyplot as plt
def check_norm(x):
    plt.title("height")
    plt.hist(x, bins = 10, ) #ヒストグラム表示
    plt.pause(.01)
    stats.probplot(x, dist = "norm", plot = plt) #QQプロット表示
    plt.pause(.01)

    loc, scale = stats.norm.fit(x)
    n = stats.norm(loc=loc, scale=scale)
    value = stats.kstest(x, n.cdf) #コルモグオロフスミノルフ(KS)検定
    print("コルモグオロフスミノルフ(KS)検定のp値: " + str(value.pvalue))
    print("データ数: " + str(len(x)))

df_height = pd.read_excel("data.xlsx", sheet_name="Sheet1")
#df_height.head()
data_height = df_height["身長"]
check_norm(data_height)

先程のように自分のデータと合うように適切に、このソースコードを編集してください。
value = stats.kstest(x, "norm") #コルモグオロフスミノルフ(KS)検定
KS検定の場合は5.と違い、このようにします。
(これは嘘です)

平均、標準偏差、サンプル数
loc, scale, size
を適切に設定する必要があるそうです。

ソースコード参考
pythonで正規性の検定【コロモゴロフスミルノフ検定(KS検定)】 - 技術メモ K-S検定(コルモゴロフ-スミルノフ検定)と、その誤用について - Qiita p_value is 0 when I use scipy.stats.kstest() for large dataset - Stack Overflow

実行

データを用意していないため、実行結果がありません。

まとめ

以上のようにすることで、シャピロウィルクの検定とKS検定を環境構築せず、Google Colaboratory上のPythonで行うことができます。
お疲れ様でしたー!