【Java11】07 Javaの開発環境構築 エピローグ

2020年4月27日作成

これでJavaの開発環境構築は終了です。

圧倒的知識不足とはいえ、ここまで苦労するとは思いませんでした。

手掛けてしばらくは、Java本体、Apache POI、Java Extension Packを導入しクラスパスを通すなど、試行錯誤を何度繰り返してもエラーの嵐で途方にくれていました。それがMavenプロジェクト作成で嘘のようにノートラブルになりました。「Maven恐るべし」と言ったところでしょうか。

それからEclipseにこだわりがなければ、VScodeでの開発をお勧めします。VScodeでプロジェクト管理すると直にコンピュータを動かしている感覚がありテンションが上がります。(あくまでも感覚に過ぎませんが)

【Java11】06 Javaの開発環境構築 テスト実行編 2

2020年4月27日作成

テスト実行
2. プロジェクト設定及び実行
① 前回で作成したプロジェクトのフォルダ構成は以下の通りとなる。

② pom.xmlを開き、依存関係のところに以下の内容を追記する。
Excelを扱う場合
————————————————–
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi</artifactId>
 <version>4.1.2</version>
</dependency>
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-ooxml</artifactId>
 <version>4.1.2</version>
</dependency>
————————————————–

③ テストコードファイルを前回groupIDとして入力し作成されたcomフォルダに置く。
 テストコードファイル名は中身のクラス名と一致させる。
 AppTest.javaは放置。

④ テストコードファイルをVScodeで開く。
 ctrl + opt + N でビルド&デバッグを実行する。(拡張機能 Code Runner が必要)

⑤ 成功すれば確認完了。

【Java11】05 Javaの開発環境構築 テスト実行編1

2020年4月26日作成

前編まででJavaの開発環境が整いました。動作確認を行います。

テスト実行
1. Mavenによるプロジェクトの作成
① VScodeを開き、左下のギア⚙を右クリックしてコマンドパレットを開く。
② mavenと入力して関連する内容を呼び出す。
③ Create Maven Project を選択する。

④ 続いてmaven – archetype – quickstart を選択する。

⑤ maven-archetype-quickstart のバージョンを選択する。
⑥ プロジェクトを置くフォルダを選択する。
⑦ 下段のターミナルが開き、タスクが実行される。
 groupIDとartifactID(プロジェクト名)を適当に入力する。
 versionとpackageはEnter空打ちでOK。
 Y:の所もEnterを空打ちする。

⑧ BUILD SUCCESSが出てプロジェクト作成完了。

次回に続きます。

【Java11】04 Javaの開発環境構築 VScode設定編

2020年4月24日作成

Visual Studio CodeはMicrosoftが開発したプログラム開発環境を備えたエディタです。2015年に初版が公開されました。

UIは典型的なGUIエディタそのもので拡張機能を導入することで手軽にデバッグができるようになります。Javaについてもショートカット1つで一気にビルド&デバッグができ、とても便利です。

以下、VScodeのセッティングについて記します。

1. 拡張機能の導入

拡張機能としてJava Extension Packを導入する。Maven for Javaなど6つの拡張機能がパックになっている。
Code Runnerも必須。これでビルド&デバッグが同時にできるようになる。

2. Javaの場所をsettings.jsonに追記

“java.home”: “/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home”
なおsettings.jsonは下図右上のアイコンをクリックすると編集できます。使い始めた当初はなかなか気がつかなかったです。

【Java11】03 Javaの開発環境構築 Apache POI導入編

2020年4月24日作成

Apache POIはMicrosoft Office形式のファイルを読み書きするためのJavaライブラリです。

公式ページからダウンロードできます。

解凍したフォルダは適当な場所に置きます。中のjarファイルについては全てCLASSPATHを通すことをお勧めします。Mavenでプロジェクトを作成した際、pom.xmlに依存関係を追記する方法もあるようです。

私の.bash_profileの該当箇所は最後に記しておきます。

これまで.bash_profile編集だけはLinux導入時の名残でずっとvimを使ってきましたが、今回のJava導入でVScodeに完全に切り替えました。要はエディタだったら秀丸でもmimikakiでもなんでもいいんです。刷り込みというのは恐ろしいものです。

ただ1日に数百行あるいは1000行以上コードを書くような職業プログラマにとってはviやvimは強力な武器になるであろうことは私なりに想像できます。

————————————————–
export CLASSPATH=/usr/local/poi-4.1.2/poi-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-examples-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-excelant-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-ooxml-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-ooxml-schemas-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/poi-scratchpad-4.1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/activation-1.1.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-codec-1.13.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-collections4-4.4.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-compress-1.19.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-logging-1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/commons-math3-3.6.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/jaxb-api-2.3.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/jaxb-core-2.3.0.1.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/jaxb-impl-2.3.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/junit-4.12.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/log4j-1.2.17.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/lib/SparseBitSet-1.2.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/ooxml-lib/curvesapi-1.06.jar:$CLASSPATH
export CLASSPATH=/usr/local/poi-4.1.2/ooxml-lib/xmlbeans-3.1.0.jar:$CLASSPATH
————————————————–

【Java11】02 Javaの開発環境構築 バージョン管理編

2020年4月24日作成

備忘録として残しておきます。

1. Javaのバージョン確認

1.1 ターミナルにコマンド入力
まずMacに入っているJavaのバージョンを確認

入力
————————————————–
/usr/libexec/java_home -V
————————————————–

出力
————————————————–
Matching Java Virtual Machines (3):
13.0.2, x86_64: “Java SE 13.0.2” /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
11.0.7, x86_64: “Java SE 11.0.7” /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home
1.8.0_251, x86_64: “Java SE 8” /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
————————————————–

11と13はオラクル社のサイトからインストーラをダウンロードして導入しました。
今は長期サポート版の11を使っています。

1.1.1 バージョンの切り替え方法
下記内容を.bash_profileに追記

————————————————–
export JAVA_HOME=”$(/usr/libexec/java_home -v 11.0.7)”
export PATH=”/usr/bin:${PATH}:${JAVA_HOME}”
————————————————–

1.1.2 切り替え後のバージョン確認

入力
————————————————–
java –version
————————————————–

出力
————————————————–
java 11.0.7 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
————————————————–

1.2 macのシステム環境設定でも確認可能
Java ー Javaコントロールパネル ー 一般 ー バージョン情報

※JDK(Java Development Kit)
オラクル社のOracle JDKとオープンソースのOpenJDKがあります。前者は2019年4月から商用では有償となりました。

【Java11】01 Javaの開発環境構築 プロローグ

2020年4月24日作成

JavaでもExcelファイルを扱ったり、スクレイピングをするため開発環境構築に取り組みました。

何度も壁にぶつかりながら、3日ほどでようやくApache POIを使ってExcelファイルの簡単な操作ができるようになりました。

最初は代表的な統合開発環境であるEclipseを導入しましたが、趣味レベルで遊ぶには大掛かりなのでVScode + プロジェクト管理ツールMavenの組み合わせで軽量な環境を作りました。

一度は導入を諦めてC++に走ろうとしたものの、Excelを扱うにはLibXL($199)という有料ライブラリが必要であることを知り、すぐJavaに出戻りました。

C++への挑戦はしばらく先になりそうです。

今回ばかりは本当に諦めかけましたが、落ち着いて少しづづ進めていきなんとかクリアしました。

Excelというソフトに対する思い入れの強さだけで押し切った感じです。

知識面ではLinuxやVBA、Pythonをかじっていなければ、早々に挫折していたでしょう。

モチベーションと最低限の知識が合わさっていないと学習が止まってしまいますね。

段階を踏んでこつこつ取り組むことの大切さを再認識しました。

これからはPythonコードからの移植などにぼちぼち取り組んでいきたいと思います。

[JavaScript] Python GUIアプリのElectronへの移植 その2 GUI作成までで中断

とりあえずガワだけ作成しました。

テンプレートさえ作ってしまえば、簡単なツールなら容易に作成できますね。PythonのtkinterやJavaのSwingとは比較にならないお手軽さです。

と、ここまでは絶賛でしたがボタンとアクションのリンクで難易度が格段に上がりました。教本にざっと目を通したものの要領を得ません。Bashコマンドを実行したいだけなのに、なぜややこしい通信をしなきゃいけないのか(根本的な問題。フロントエンドだから当たり前)。どうやら私がやりたいこととミスマッチを起こしているようです。

やっぱりSwingで書くことにしました。EclipseをM1 Macにインストールします。

何でもJavaScriptでやろうとしてユーザーは無理をしているのではないかと感じたのですが、思い過ごしでしょうか?

2021/11/24追記:ボタンとアクションのリンクが出来なくて中断するのは2回目です。他の言語ではぶつかったことのない壁があるようです。こちらの言い分としては言語としての進化の過程が場当たり的で体系化が不完全なのではないか、という見解です。正直プログラミング言語としての合理性をあまり感じないので修得意欲が湧かないんです。まあ私自身がJavaScriptに向いていない、ということにしておきます。

<html>
<head>
 <meta charset="UTF-8">
 <title>FILE REMOVER JS v0.0.1</title>
 <link rel="stylesheet" href="style.css">
</head>
<body>
    <script type="text/javascript" src="main.js"></script>
    <div class="container">
        <div class="container2">
            <text id="lbl1">PATH</text>
            <input id="txt1" type="TEXT"></input>
        </div>
        <button id="btn1" type="button">削除</button>

        <div class="container3">
            <input type="radio" name="q1" value="フォルダ">フォルダ
            <input type="radio" name="q1" value="ファイル">ファイル
        </div>
        <button id="btn2" type="button">クリア</button>
    </div>
</body>
</html>
body {
    background-color: #70f15f;
    margin:0px 8px 8px 8px;
}
.container {
    display: grid;
    grid-template-columns: 250px 60px;
    position: relative;
	top: -10px;
}
.container2 {
    display: inline;
    margin:4px 2px 2px 2px;
}
.container3 {
    display: inline;
    margin:4px 2px 2px 2px;
}
#lbl1 {
    grid-row:1;
    grid-column:1;
}
#txt1 {
    grid-row:1;
    grid-column: 1;
    width:180px;
    margin:0px 0px 0px 2px;
}
#btn1 {
    grid-row:1;
    grid-column:2;
    width:60px;
    font-size:12px;
    margin:4px 4px 4px 4px;
}
#btn2 {
    grid-row:2;
    grid-column:2;
    width:60px;
    font-size:12px;
    margin:4px 4px 4px 4px;
}

[JavaScript] Python GUIアプリのElectronへの移植 その1

Pythonのtkinterを使って作ったGUIのファイル一括削除ツールをJavaScriptに移植することにしました。まあ簡単なツールなので移植というのはおおげさですが。

tkinterは書きやすいものの、たまに色がおかしくなってボタンの字が読めなくなったりします。またpyinstallerによるexe化が上手くいかないことが多いです。

JavaScriptのコードを書くのは3ヶ月ぶりなので、思い出しながらぼちぼち進めていきます。

[Python] AI 33 M1 Macでの環境構築 その2

Big Sur搭載のIntel Mac miniでCPUまたはGPUを使ったKeras(Fashion-MNIST)の学習モデル作成時間を測定しました。

今のところTensorflowをMac miniのGPUで効率的に機能させるのは、私の学習モデル作成条件では厳しいようです。

やはりAppleでの機械学習の開発リソースはCore MLなどに割かれていて、tensorflow-macosの開発はなおざりになっているように感じました。

機械学習開発における主言語はPythonであり、フレームワークはGoogleが開発しているTensorflowとFacebookのPyTorchが双璧を成している状況です。AppleのCore MLは人口が少ない言語であるSwiftでの利用ですから、かなり分が悪いでしょう。

GPUが実質使えずCPUが8コアから10コアに増えた位では、機械学習目的でM1 ProやM1 Maxを入手しても見返りが少なそうです。WindowsやLinux搭載のIntel – NVIDIA機が最善かと思います。