JAVA関連のことを調べてみた2020年09月27日

JAVA関連のことを調べてみた2020年09月27日

Oracle公開されたTribuoを気を取り直してやってみた。Tribuo – A Java prediction library (v4.0)

##前置き
[いろいろ思うところもあるが、文句だけ言っていても始まらない。](https://qiita.com/jashika/items/1ba0cad613ec919adaa7)
むしろ俺がこれ作るからOracleが俺を雇え。ください。

##資料について
[元ネタはこちらを参照してください。](https://tribuo.org/learn/4.0/docs/)
[日本語が必要ならこちらを参照してください。](https://qiita.com/jashika/items/bc03dbbca92ba38f4502)
[データのダウンロードはこちらを参照してください。](https://archive.ics.uci.edu/ml/machine-learning-databases/iris/)

##どうにかして動かす
[bezdekIris.data](https://archive.ics.uci.edu/ml/machine-learning-databases/iris/bezdekIris.data)をダウンロードします。

[マニュアルGatting Star

元記事を表示

Oracle公開されたTribuoをやってみた。Tribuo – A Java prediction library (v4.0)

実際にやってみた。
結論から言うととっても不安になった。あと、フレームワークを名乗るなら、英語でいいからjavadocはちゃんと書け。
それから、マニュアル直すのではなく、実装コードをきちんと直したほうがいいぞ。

#セットアップ
依存性の解決にはmavenを使用しました。プロジェクト作成後、下記のようにtribuoをpomファイルに設定します。

“`

org.tribuo
tribuo-all
4.0.0
pom

“`

ロジスティック回帰モデルを学習し、評価するには[下記のようにすればよい](https://qiita.com/jashika/items/bc03dbbca92ba38f4502)と書かれているため、下記のコードをjavaクラスに記述します。

“`
var trainSet = new MutableDataset<>(n

元記事を表示

【IntelliJ IDEA】Javaファイル保存時にfinalを自動的につける方法

# やりたいこと
– Javaのコードを書くときに、immutableにしたい変数には、finalを付けておきたい
– ただ毎回finalを書くのは大変なので、ファイル保存時に自動的にfinalを付けるようにしたい

# 環境
– IntelliJ IDEA 2020.2.2
– Mac OS Catalina 10.15.7

# やり方
[Save Actions](https://plugins.jetbrains.com/plugin/7642-save-actions) プラグインを利用するので、「IntelliJ IDEA」 -> 「Preferences」 -> 「Plugins」 を押下して、Save Actionsをインストール
![スクリーンショット 2020-09-27 0.19.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160829/ffa9bad6-4be2-a9f3-8915-329c77241bec.png)

「IntelliJ IDEA」 -> 「Prefer

元記事を表示

Oracleから公開されたTribuoをさわってみた。ドキュメント Tribuo – Intro classification with Irises

※原文は [Intro classification with Irises](https://tribuo.org/learn/4.0/tutorials/irises-tribuo-v4.html) を参照してください。

# 分類チュートリアル

このチュートリアルでは、Fisherの有名なアヤメ(アイリス)データセットを使って、Tribuoの分類モデルを使ってアヤメ(アイリス)種を予測する方法を紹介します(今は2020年ですが、デモではまだ1936年のデータセットを使っています。次回は90年代のMNISTを使いますのでご安心ください)。ここでは、単純なロジスティック回帰に焦点を当て、Tribuoが各モデルの内部に保存しているデータの出所とメタデータを調査します。

“セットアップ“
アヤメ(アイリス)のデータセットのコピーを取得する必要があります。

“`
wget https://archive.ics.uci.edu/ml/machine-learning-databases/iris/bezdekIris.data
“`

まず必要なTribuoのjarライブラリ

元記事を表示

Oracleから公開されたTribuoをさわってみた。ドキュメント Tribuo – A Java prediction library (v4.0)

※ 原文は [Tribuo – A Java prediction library (v4.0)](https://tribuo.org/learn/4.0/docs/) を参照してください。

#Introduction
Tribuoは、機械学習モデルを構築・展開するためのJavaライブラリです。中心となる開発チームはOracle Labsの機械学習研究グループであり、このライブラリはApache 2.0ライセンスのもと、Github上で公開されています。

・API は強く型付けされており、モデル、予測値、データセット、例題のためのクラスがパラメータ化されています。

・APIは高レベルで、モデルは例題を消費し、予測値を生成しますが、float配列ではありません。

・APIは統一されており、すべての予測タイプは同じ(よく型付けされた)APIを持ち、Tribuoのクラスは予測タイプによってパラメータ化されています(例:分類はLabelを使用し、回帰はRegressorを使用します)。

・APIは再利用可能で、モジュール化されており、必要なものだけを小分けにしてパッケージ化されてい

元記事を表示

Javaに初めて触れてみた④

# Javaに触れてみた
自己満の備忘録ですのでご容赦ください

## いろいろ作ってみる
前回の続きです。

### ④4択クイズ応用
前回考えたこの機能の改善点
①[[1]明治大学, [2]法政大学, [3]早稲田大学, [4]立教大学]みたいにターミナルに配列の中身を表示させる時に[]を表示支えないようにする。
②選び直してください。の表示が出たら数字を入力できるようにする。多分繰り返し処理でできると思う。
③問題を増やす。
④問題をランダムで出題できるようにする。
⑤答えをランダム表示にできるようにする。

とりあえずできそうな所から手をつけます。②を改善します。

“`Test4.java
import java.util.Scanner;

import java.util.ArrayList;
import java.util.List;

class Test4 {
public static void main(String args[]) {
List array = new ArrayList();
array

元記事を表示

EHRbase入門2 – REST API

# はじめに
第2回目はREST APIを使ってEHRbaseとデータのやりとりを行います。EHRbaseには開発中を含めて多くのREST APIがあります。今回はそのうちでTemplate, Compositionに関係する以下のAPIを紹介します。

* POST EHR (EHRレコードの作成)
* POST EHR(外部IDつきでEHRレコードを作成)
* GET EHR (EHR IDでEHRレコードを読み出す)
* GET EHR (外部IDでEHRレコードを読み出す)
* POST Template(Tamplateの登録)
* GET Template (個別のテンプレートの読み出し)
* GET Template (テンプレート一覧の読み出し)
* POST Composition (Compositionの登録)
* GET Composition (Compositionの読み出し)
* PUT Composition (Compositionの更新)
* GET COMPOSITION (VersionごとにCompositionを読み出す)
* DELETE

元記事を表示

Javaで制約プログラミング

# はじめに

[制約プログラミング(Constraint Programming)](https://ja.wikipedia.org/wiki/%E5%88%B6%E7%B4%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)はプログラミングパラダイムの一つです。 制約プログラミングにおいては、変数間の関係を制約という形で記述することによりプログラムを記述します。
現在ではAIと言えばディープラーニングと同義のように言われたりしますが、かつてはこの制約プログラミングや数式処理などもAIと呼ばれていました。
Javaで制約プログラミングのライブラリを実装し、エイト・クイーン、覆面算、数独などの問題を解いてみます。

# 対象とする問題

最も単純な問題を対象とします。具体的には以下のような問題です。

* 変数の定義域は整数のみとします。
* 変数の定義域は有限で、その範囲は問題の中で定義されているものとします。

# 簡単な例題

説明のために簡単な例題を考えてみます。

* 式 a + b = c

元記事を表示

【忘備録】Java : 等価判定のequalsのオーバーライドは必要か

## はじめに
[先の記事](https://qiita.com/noytdm1021/items/8ff7a65af25ebda19f08)でも述べているように現在参考書([スッキリわかるJava入門 実践編](https://www.amazon.co.jp/dp/B00O0NIW30/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1))を進めながらJavaを勉強し直しています。(実は既に読み終わっています:blush:)

上記参考書の中でクラスを作成する際には既に備えられているメソッドをオーバーライドして意図しない不具合を引き起こさないようにするように注意喚起をしています。
その一つの例が`equals`メソッドです。

`equals`メソッドは等値ではなく等価であるかどうかを判定してくれるメソッドです。しかし参考書によると、元々備えられているObjectクラスの`equals`メソッドは等価であるかどうかを等値であるかどうかで判定しています。
つまり`equals を呼び出したオブジェクトと equals の引数として渡すオブジェクト

元記事を表示

Fabric-loaderができた経緯と仕組み

# 対象
* Fabricでmod開発をしたい
* Forgeの最新バージョンがないから仕方なくFabricを使いたい
* Javaが分かる

# Fabric-loaderができた経緯

### 1. 既存モッドローダーの問題点
 既存のForgeといったモッドローダーでは直接マインクラフトをデコンパイルしてソースコードを入手し、そのデコンパイルされたマインクラフトに簡単にアイテムなどが追加できるような仕組みが搭載されています。この方法ではモッドローダーがマインクラフトのソースコード全体を弄ることができるという(モッドローダー開発者にとっての)利点もありましたが、一つ大きな問題がありました。マインクラフトのデコンパイルは複雑で、デコンパイルされたものを再コンパイルしようとしてもできないのです。これはデコンパイラ自身によるバグのせいもありますが、コンパイル時に失われる情報(Genericsなど)もあるため仕方のない部分ではあります。この問題がモッドローダーの開発の遅れの原因となっていました。

### 2. SpongePowered/Mixin(Mixinフレームワーク)の誕生
 M

元記事を表示

Spring + MyBatis接続設定方法

#MyBatisとは
SQLとJavaオブジェクトをマッピングすることで、JavaからのDBアクセスを間接的に行ってくれるフレームワーク。
特徴としては、SQLを設定ファイルやアノテーションに宣言的に定義することにより、
Javaで書かれたビジネスロジックからSQL自体の存在を隠蔽出来ること。

MapperインターフェイスがSQLの隠蔽をしており、MyBatisがMapperインターフェイスのメソッドとSQLを紐づけている。
その為、Javaのビジネスロジックからは、Mapperインターフェイスを呼び出すだけで紐づいているSQLを実行出来る。

#前提事項
・Eclipse 2018-09 (4.9.0)
・Windows10
・H2
・MyBatisのSQLの指定方法は「マッピングファイル」「アノテーション」の二通りあるが、
今回は「マッピングファイル」を採用する。

#初期設定
“`xml:pom.xml

org.mybatis.spring.boot

元記事を表示

Java で Amazon Product Advertising API 5.0 (PA-API v5) をコールする

## 概要

– Java で Amazon Product Advertising API 5.0 (PA-API v5) をコールする
– AWS が提供している公式の SDK を使わず API を直接コールする
– AWS 署名バージョン 4 (AWS Signature Version 4) の処理を Java 標準ライブラリのみで実装する
– 今回の実行環境: macOS Catalina + Java 15 (AdoptOpenJDK 15) + Jackson Databind 2.11.1 + Gradle 6.6.1

## サンプルコード

### ファイル一覧

“`
├── build.gradle
└── src
└── main
└── java
├── AwsSignature4.java
├── JsonUtil.java
├── MyApp.java
└── PaApi5Wrapper.java
“`

### build.gra

元記事を表示

Apache Flink Python API: 歴史、アーキテクチャ、開発環境、主要な演算子

この記事では、**Apache Flink Python API**の歴史を紹介し、そのアーキテクチャや開発環境、主要な演算子について解説しています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/use-python-api-in-apache-flink_595680)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#Apache Flink Python APIの歴史、現状と今後の展開
###Apache Flink が Python をサポートする理由
Apache Flinkは、統一されたストリームとバッチデータ処理機能を持つオープンソースのビッグデータコンピューティングエンジンです。Apache Flink 1.9.0では、機械学習(ML)APIと新しいPython APIが提供されています。次に、なぜApache FlinkがPythonをサポートしているのかについて詳しく説明します。

– Pythonは最もポピュラーな

元記事を表示

DataStream APIを用いたFlinkの開発

この記事では、分散ストリーム処理の基本をレビューし、FlinkとDataStream **API**の開発を例として探ります。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/basic-apache-flink-tutorial-datastream-api-programming_595685)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#ストリーム処理の基本概念
ストリーム処理の定義は異なる場合があります。概念的には、ストリーム処理とバッチ処理は同じコインの表裏一体です。それらの関係は、ArrayList, Javaの要素が直接限定されたデータセットとみなされ、添え字(subscripts)でアクセスされるか、イテレータ(iterator)でアクセスされるかによって異なります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64

元記事を表示

エンジニア就職に向けてマッチングアプリ(Androidアプリ)を作ってみた

# はじめに
こんにちは。タイトルにもある通りエンジニア就職のためにマッチングアプリ『Match-com(マッチコン)』を作成しました。
開発期間はおおよそ1ヶ月半です。
1年ちょっと前まではSESに9ヶ月ほど在籍していました。それ以降は少しエンジニアから離れて別のことをやっていましたが最近になってまたこの業界に戻ってきました。(プログラミングの学習自体は続けてました)

# どんなアプリ?
![feature.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534109/049a6384-5c79-55c8-2836-de5d0b7146ff.png)

男性と女性のマッチングアプリです。皆さんも一度は使ったことがあるんじゃないでしょうか。
お互いがいいねをしたらマッチングしてチャットができるようになります。

**主な機能**
・Firebase
・メールログイン/Facebookログイン
・プロフィール登録
・いいね!
・マッチング
・リアルタイムチャット
・ブロック
・写真登録/プロフィール編集

元記事を表示

LocalDateTimeの使用に関連したシリアル化操作時のパフォーマンスの問題

この記事では、アリババのエンジニアがシリアル化処理中に発生した、LocalDateTimeおよびInstant timeフォーマットの使用に関連したパフォーマンスの問題について説明します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/performance-issues-related-to-localdatetime-and-instant-during-serialization-operations_595605)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

Lv Renqi氏より

#パフォーマンスの問題
[Apache Dubbo](https://dubbo.apache.org/en-us/?spm=a2c65.11461447.0.0.18e27d1f7aNxOS) の新バージョンで性能圧力テストを行った際、Transfer Object (TO) クラスの属性に関連する問題を発見しました。`Date`を`Local

元記事を表示

Javaバージョン8以降の機能

この記事では、開発者の視点から**Java**のバージョン8以降の機能を説明し、開発者がパフォーマンスを向上させるためにそれらをどのように使用できるかを記しています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/going-beyond-java-8-a-developers-perspective_595669)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

アリババグループのシニア技術専門家、陳利彬(Leijuan)より

PythonやJavaScriptなどのプログラミング言語の人気はますます高まっています。しかし、以前に支配的な言語であったJavaは、多少の好意を失ったにもかかわらず、主要なプログラミング言語のさまざまなランキングでトップの座を維持しています。Javaは、メインストリームのエンタープライズ・アプリケーションのアプリケーション開発の第1位の言語であることに変わりはありません。Java 8の発売以来、Javaはパ

元記事を表示

シンプルに「なぜinterfaceを使うのか」を考察

#それは実装をシンプルにして部品化を促すため
interfaceはカオスな**現実世界**と**実装**をつなぐ、あるいは分離する役割を担っています。
部品化しやすくするために、実装はできるだけシンプルに、複雑さはinterfaceがブロック!

#interfaceでは多重継承を許し、一般クラスでは許さない理由
interfaceはカオスな現実世界に近い業務**仕様**を記述するため、多重継承を許容することで、実装レベルの一般クラスの複雑化を代替します。

※補足
**シンプル化**:問題領域を小さくすることで、問題の連鎖や波及を制限し、部品としての汎用性が向上します。
**多重継承を許容**:言語によって差異はありますが、interfaceの意味を尊重するなら、他の言語でも一般クラスをinterfaceのようにするなどして、多重継承を自主的に制限することがオブジェクト指向の本来の利点を活用することになると考えます。

#おまけ#
interface間の関係性や条件を規定するのは、業務設計者です。
interface内に実装(処理)条件を持ち込まないように注意が必要です。
逆に実装(

元記事を表示

GraphiteとStatsDを使用して、インフラ監視

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/94be852e-dc19-b0f2-a19e-eedacbe0cdb3.png)

#はじめに

サーバー、アプリケーション、およびトラフィックに関するメトリックを収集することは、アプリケーション開発プロジェクトの重要な部分となります。 本番システムでは問題が発生する可能性のある多くの問題があり、データの収集と整理は、インフラストラクチャのボトルネックと問題を特定するのに役立ちます。

この記事では、GraphiteとStatsD、およびそれらがモニタリングインフラストラクチャの基礎を形成するのにどのように役立つかについて説明していきます。 MetricFireの[無料デモ](https://www.metricfire.com/demo/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Monitoring%20your%20infrastruc

元記事を表示

【Java】String型配列の要素一つをInt型に型変換する方法

例えば従業員の情報を、名前、年齢と入力されそれを一つの配列にScannerを使って代入すると
yamada 20

Scanner sc = new Scanner( System.in);
String[] employee = sc.nextLine();

となるが、年齢を変えたいのにInt型にキャストしなくてはならない
そこでInteger.parseIntメソッドを使う

 int age = Integer.parseInt( employee[1]);

これでString型からInt型へのキャストは終了
たとえば1歳年を増やしたければ

 int addAge = Integer.parseInt( employee[1] ) + 1;

となる。
()内は引数なのでもちろん普通の変数でも問題ありません。

元記事を表示

OTHERカテゴリの最新記事