Eclipse Modeling Framework 〜失敗:UMLツールのインストール〜

ワンポイントレッスン的な記事です。

Eclipse Modeling Framework(EMF)

こいつでアプリケーションを作る時の設計をやろうと思います。

  1. クラスの構成を一覧できるので仕組みをどう作るか考えやすい
  2. 実際にプログラムをどのように組むか?必要なIFクラスなどまとめやすい
  3. パッケージングも同様にやりやすい

上のようなメリットがあります。一言で言うと「図で一覧できるから」一例として上のようなメリットがあります。

もちろん、プログラム設計する人のインスピレーションによって「こんなメリットもあるな!」と発見などもあると思います。

IBMのページにチュートリアル的な記述がありました。

インストールする

参考にしたサイトはこちら

 

これはうまく行きそうにないので諦めます。

 



Eclipseと連動する必要がないので別個にインストールしました(笑)

 

ND4J ベクトル生成〜ワンポイントレッスン的な〜

イントロダクション

3Dモデル、機械学習など、3次元行列を使用したプログラミングがあります。これらは、Pythonというプログラミング言語で疲れている記事を見かけます。

これは、NumPyというライブラリがあり、簡単に行列、つまり多次元配列を扱えるというものです。イメージとしては、下のようなものです。

ND4Jを使う

ND4Jを使用すると、行列(多次元配列)の扱いが簡単にできます。PythonのNumPyの実装であるND4Jは、行列の操作を扱いやすくするために使用されることが多いライブラリです。

ベクトルの生成

ND4Jで配列(ベクトル)の初期化を行う(ベクトルの生成)方法です。

参考にするサイトはこちらです。(本家家元のドキュメント)英語なので翻訳して見ました。

実行結果

上のキャプチャのように、Nd4jクラスの性的メソッドで簡単に作成できます。

サンプルコード> ※Gitからダウンロード可能

public class FirstNd4j {
    public static void main(String[] args) {
        // クラスのインスタンス化
        FirstNd4j test = new FirstNd4j();

        INDArray zeros5 = Nd4j.zeros(5);
        System.out.print("Nd4j.zeros(5) -> ");
        System.out.println(zeros5);
        // 自分で作成したメソッドを使います。
        INDArray zero5_3 = test.createZeroINDArray(5, 3);
        System.out.print("Nd4j.zeros(5, 3) -> ");
        System.out.println(zero5_3);

        // 生成したNDArrayを3で埋める
        INDArray add3 = zero5_3.add(3);
        // 自作メソッドで表示します。
        printArray("INDArray.add(3)", add3);

        System.out.println("*** 0-1の間で乱数を生成する(2次元配列) ***");
        printArray("Nd4j.rand(2, 3)", Nd4j.rand(2, 3));

        System.out.println("*** 3次元以上 ***"); 
        printArray("Nd4j.rand(new int[] {1, 2, 3}])", Nd4j.rand(new int[] {1, 2, 3}));

        System.out.println("*** 平均ゼロ、標準偏差1のガウス乱数を生成する ***");
        printArray("Nd4j.randn(2, 3)", Nd4j.randn(2, 3));
        printArray("Nd4j.randn(new int[] {1, 2, 3}])", Nd4j.randn(new int[] {1, 2, 3}));
    }

    /**
     * 静的メソッドです。(staticがつきます)
     * このクラスを起動するときに他の読み込むクラスに同じメソッドは定義できません。
     * 実行時エラーになります。
     * 
     * @param formula 表示する計算式
     * @param vector ベクトル(配列)
     */
    public static void printArray(String formula, INDArray vector) {
        System.out.print(formula + " -> ");
        System.out.println(vector);
    }
    /**
     * このクラスのインスタンスメソッドです。
     * 0のベクトルを生成します。
     * 
     * @param row 行の数
     * @param col 列の数
     * @return 生成された行列
     */
    private INDArray createZeroINDArray(int row, int col) {
        return Nd4j.zeros(row, col);
    }
    ・
    ・
    ・
}

実行結果

http://zenryokuservice.com/wp/wp-content/uploads/2023/05/FirstND4J01.png

関連ページ一覧

Eclipse プロジェクトのMaven化〜ワンポイントレッスン的な〜

EclipseのJavaプロジェクトをMaven化ます。

通常のプロジェクトはPOMファイルがありません。下のような感じです。

そして、これをMaven下するのにはわけがあります。

「便利なライブラリ簡単にインストールしたい!」

というわけです。手順は以下の通り

<手順>

  1. Mevenプロジェクトを作成する
  2. POMファイルを修正する
  3. Maven install ※最近のEclipseは保存時に走るっぽい

[rakuten ids="rakutenkobo-ebooks:16389798"]

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

IntelliJ IDEA

  1. IntelliJ IDEA 環境構築 〜インストールと起動〜
  2. IntelliJ IDEA GitGitリポジトリからクローン〜
  3. IntelliJ IDEA 使い方〜Git接続 Java起動 etc
  4. IntelliJ IDEA Jarファイルを作る
  5. IntelliJ IDEA 使い方〜Maven Projectの作成〜
  6. IntelliJ IDEA 使い方〜Mavenでライブラリを追加する〜
  7. IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜
  8. IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜
  9. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜



JavaFX FileChooser 〜ファイルの選択をする部品〜

FileChooserクラス

ブラウザ(Google Chrome, Safari, Edge etc..)で、ファイルを選択してアップロードするときのような、画面操作を実現するクラスFileChooserクラスを紹介します。

JavaFXはApplicationクラスを継承してlaunchを実行すれば起動できるシンプルな扱いで動かせます。

具体的には下のように書きます。参照先はこちらOracleDocsです。

コードの書き方

1. Applicationクラスを継承

作成したクラスにApplicationクラスを継承します。下のクラスは「HelloWorld」を作成して「extends Application」と追加しました。

import文は「import javafx.application.Application;」と書きます。

public class HelloWorld extends Application {

2. メインメソッドの実装

単純に下のように書けば動きます。メインメソッドで呼び出しているのはApplication#launch()メソッドです。継承しているので、そのまま呼び出せます。
※launchメソッドはstaticメソッドなので、メインメソッド内でも直接呼び出すことができます。

 public static void main(String[] args) {
        launch(args);
 }

3. start()メソッドの実装

このメソッドをオーバーライドして描画する画面のプログラムを行います。
Application#start()メソッドをHelloWorldクラスでstart()メソッドを定義(実装)することで、オーバーライドすることができます。日本語にすると「上書き」です。
そんなわけで、HelloWorldクラスのlaunch()メソッドを起動することで、このクラスのstart()メソッドが動きます。

ファイルチューザーの扱い方

いよいよ、描画処理の内容に入ります。
下のように、インスタンス化して動かします。細かいところは、実装してみて確認してください(笑)

 // ファイルクラスをインスタンス化
 FileChooser fileChooser = new FileChooser();
 // ダイヤログを表示した時の文字(下のキャプチャ参照)
 fileChooser.setTitle("ファイルを選択してください。");
 // Mac(自分の端末)でやった場合はファイルタイプを指定するものがないので無効?
 fileChooser.getExtensionFilters().addAll(
         new ExtensionFilter("Text Files", "*.txt"),
         new ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif"),
         new ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"),
         new ExtensionFilter("All Files", "*.*"));
 File selectedFile = fileChooser.showOpenDialog(mainStage)

そして最後の行にあるファイルを書き出ししないとファイルが作成されません。

そして、キャンセルををした場合はFileがNullになるようです。

[rakuten ids="auc-dejima:10002899"]

関連ページ一覧

  1. Java Doc 読解 System
  2. Java Doc 読解〜System.out
  3. Java Doc読解 System.In
  4. JavaDoc 読解  Filesクラス 
  5. Java Doc読解 BufferedReader
  6. Java Doc 読解〜BufferedWriter

JavaFXでハローワールド〜OpenCVまで

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine〜




JavaFX ワンポイント 〜升目状にNodeを配置する〜

以下のような感じでNodeを配置できます。緑色の部分には50x50のラベル(Image付き)を4x4マスで並べました。

<ソース>

String lightGrass = "grass_light.png";
String deepGrass = "grass_deep.png";
String soilBasic = "soil_basic.png";
GridPane grid = new GridPane();
grid.add(createImageLbl(lightGrass), 0, 1);
grid.add(createImageLbl(lightGrass), 0, 2);
grid.add(createImageLbl(lightGrass), 0, 3);
grid.add(createImageLbl(lightGrass), 0, 4);
grid.add(createImageLbl(lightGrass), 1, 1);
grid.add(createImageLbl(lightGrass), 1, 2);
grid.add(createImageLbl(lightGrass), 1, 3);
grid.add(createImageLbl(lightGrass), 1, 4);
grid.add(createImageLbl(lightGrass), 2, 1);
grid.add(createImageLbl(lightGrass), 2, 2);
grid.add(createImageLbl(lightGrass), 2, 3);
grid.add(createImageLbl(lightGrass), 2, 4);
grid.add(createImageLbl(lightGrass), 3, 1);
grid.add(createImageLbl(lightGrass), 3, 2);
grid.add(createImageLbl(lightGrass), 3, 3);
grid.add(createImageLbl(lightGrass), 3, 4);
vBox.getChildren().add(grid);

lightGrass(ラベル, 位置(X), 位置(Y));のように設定します。

なので、上のソースを以下のように修正すると。。。

GridPane grid = new GridPane();
grid.add(createImageLbl(lightGrass), 0, 1);
grid.add(createImageLbl(lightGrass), 0, 2);
grid.add(createImageLbl(lightGrass), 0, 3);
grid.add(createImageLbl(lightGrass), 0, 4);
grid.add(createImageLbl(deepGrass), 1, 1);
grid.add(createImageLbl(deepGrass), 1, 2);
grid.add(createImageLbl(deepGrass), 1, 3);
grid.add(createImageLbl(deepGrass), 1, 4);
grid.add(createImageLbl(soilBasic), 2, 1);
grid.add(createImageLbl(lightGrass), 2, 2);
grid.add(createImageLbl(lightGrass), 2, 3);
grid.add(createImageLbl(lightGrass), 2, 4);
grid.add(createImageLbl(lightGrass), 3, 1);
grid.add(createImageLbl(soilBasic), 3, 2);
grid.add(createImageLbl(lightGrass), 3, 3);
grid.add(createImageLbl(lightGrass), 3, 4);
vBox.getChildren().add(grid);

座標で位置を示します。座標 = (X, Y) = (0, 1) => 0,1の位置テキストフィールドの下あたりにあります。

[rakuten ids="toripurussss:10000004"]

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

JavaFXでハローワールド〜OpenCVまで

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine〜

Git

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜