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

JAVA関連のことを調べてみた2020年03月30日
目次

Activity内に定義したAsyncTaskのネストクラスに警告「This ‘AsyncTask’ class should be static or leaks might occur」

この記事は、
「[非staticネストクラスが握っちゃう、エンクロージングオブジェクトの暗黙的参照](https://qiita.com/wakwak/items/21da22045c2d084fdd33#comment-21887e3165e8d82845a9)」と題した投稿の続きです。
ですので、先にそっちをご覧いただければ幸いです。
そっちの記事は、頭ごなし的に言っちゃえば、「ネストクラスには、`static`修飾子を付けろ」です。

# いきなりカウントアップしだすアプリを作ってみた、ら…

起動したとたんに、勝手に1秒刻みでカウントアップが始まります。
START!から始まったら「9」まで数え上げたらお終いです。
(このアニメーションGIFは、3まで至ったらまたSTART!を繰り返しているアニメーションですが、このQiitaに貼り付けたアニメーションGIFを止めるすべがないのでごめんなさい)

![countup.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100612/cd7b052b

元記事を表示

HULFT IoT EdgeStreamingでプラグインを作成してみた【実行編】(3/3)

#はじめに
こんにちは。よろず相談担当 すぎもん:yum:です。
今回は、HULFT IoT EdgeStreamingのSDKを使用したコンポーネント(アダプタ)の開発をやってみようと思います。全3部作で完結するよう記載してます。

#今回やること
今回は、第3弾としてHULFT IoT EdgeStreaming Plugin SDKで開発したプラグインのビルドと実行をしてみようと思います。第1弾、第2弾の記事は、下記にありますので参考にしてみてください。

:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【セットアップ編】(1/3)]
(https://qiita.com/sugimon/items/cf7503479c6e4c46c3b3)
:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【開発編】(2/3)](https://qiita.com/sugimon/items/67bdd6f610e03cdfcef2)
:arrow_forward: HULFT

元記事を表示

HULFT IoT EdgeStreamingでプラグインを作成してみた【開発編】(2/3)

#はじめに
こんにちは。よろず相談担当 すぎもん:yum:です。
今回は、HULFT IoT EdgeStreamingのSDKを使用したコンポーネント(アダプタ)の開発をやってみようと思います。全3部作で完結するよう記載してます。

#今回やること
今回は、第2弾としてHULFT IoT EdgeStreaming Plugin SDKを使用してプラグインを開発してみます。他にセットアップ編、実行編の記事もあるので是非参考にしてみてください。

:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【セットアップ編】(1/3)]
(https://qiita.com/sugimon/items/cf7503479c6e4c46c3b3)
:arrow_forward: HULFT IoT EdgeStreamingでプラグインを作成してみた【開発編】(2/3)
:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【実行編】(3/3)](https://qiita.com/sugi

元記事を表示

HULFT IoT EdgeStreamingでプラグインを作成してみた【セットアップ編】(1/3)

#はじめに
こんにちは。よろず相談担当 すぎもん:yum:です。
今回は、HULFT IoT EdgeStreamingのSDKを使用したコンポーネント(アダプタ)の開発をやってみようと思います。全3部作で完結するよう記載してます。

#今回やること
今回は、第1弾としてHULFT IoT EdgeStreaming SDKを使用するためのセットアップ編として環境準備をしてみようと思います。既に環境あるよ~って方は、読み飛ばしていただき下記の【開発編】、【実行編】の記事を参考にしてみてください。

:arrow_forward: HULFT IoT EdgeStreamingでプラグインを作成してみた【セットアップ編】(1/3)
:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【開発編】(2/3)](https://qiita.com/sugimon/items/67bdd6f610e03cdfcef2)
:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【実行編】(3/

元記事を表示

Eclipse インストール時に Failed to create the Java Virtual Machine.

## はじめに

Mac に Eclipse をインストールしようとしたら “Failed to create the Java Virtual Machine.” って怒られました。

install-error.png

インストール時にこんな屈辱を受けたのは初めてだ

もちろん Java は入ってる

結論から言うと、案の定いつものやつ

`-vm` を ini ファイルに設定するあれだ

## 手順

*最初に注意点*

原因がよくわからないが、 ini ファイルを vim で修正するとこんなエラーが出る。

usodaro.pngゼロから作るDeepLearningをJavaで勉強する。

※注意
この記事は、まだこの本を読み始めたばかりの私が自分のために書いている自己満要素が多いのでレベルが低い且つ
内容が間違っていたりおかしなコードになっている可能性があります。
あと用語の説明などはあまりしないので機械学習を知らない人には意味不明だと思います。
徐々にこの記事を更新していきます。

# (単層)パーセプトロンの実装
パーセプトロン:アルゴリズムの一種。
       ニューラルネットワークのもととなったアルゴリズム。        
       活性化関数にステップ関数を用いる。
       単層だと線形領域しか表現できない。

**コンストラクタにバイアスと各入力信号の重みを渡してANDやOR,NANDを表現する。**

“`
public class PerceptronSample {

private double b, w1, w2;

PerceptronSample(double b, double w1, double w2){
this.b = b;
this.w1 = w1;

元記事を表示

保守性を上げる重要なデザインパターン

#導入
こんにちは。けちょんです。
皆さん、保守性の低いコードを作ってしまっていませんか?
私が以前指摘され、改善したコードを紹介します。

#改善前
##コード

“`java
public class Main {
public static void main(String[] args) throws Exception {
if (args[0].equals(ExecPattern.A.toString())) {
exeA(args[1]);
} else if (args[0].equals(ExecPattern.B.toString())) {
exeB(args[1]);
} else {
throw new Exception(“illigal request parameter”);
}
}

private static void exeA(String input) {
// something
}

private static void exeB(String input) {
// somethi

元記事を表示

新世代Javaプログラミングガイドの紹介(Java 言語拡張 プロジェクト「Amber」編)

この記事は[新世代Javaプログラミングガイドの紹介(Java 12編)](https://qiita.com/kazsharp/items/f5365122204129fedfdd)の続きです。

##Java 言語拡張 プロジェクト「Amber」
書籍の最後はAmberプロジェクトについての解説で締めくくられています。
AmberプロジェクトはJava言語をより良い言語に拡張しようとして進められているプロジェクトですが、原著の出版時にはJavaのどのバージョンで使えるようになるか決まっていないものが多かったようです。
もちろん、翻訳書が発売された今でも決まっていないものがあります。
そんな **未来の機能** を含むAmberプロジェクトですが書籍では以下の5つについて解説させています。

* Amber プロジェクトの拡張 enum 型
* データクラスとその利用方法
* テキストブロック
* ラムダの改善ポイント
* パターンマッチング

###Java14で使える機能
書籍発売時と違い、Java14が既にリリース済みです。
Java14では上記の機能のうち

* データクラス

元記事を表示

計算ゲームアプリ 更新

・自作のBGMを追加
・アプリ中断時BGMが流れ続ける不具合修正
・アプリ再開時にアプリが停止する不具合を修正
・広告(Admob)が表示されるように設定

以前のソースコード
https://qiita.com/KToushi/items/e338aaaf6decc9fced77

サンプル動画

package com.nyaa.braintrainer;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import an

元記事を表示

屋内環境を手軽にモニタリングする~⑨モーション検知(HC-SR501 / RCWL-0516)をJavaで取得する(GPIO / Pi4J)~

以前、[こちらの記事](https://qiita.com/s5uishida/items/9c31e6fd9b6eb0fa9c96)で、屋内環境(自宅/オフィス/工場)で一般的な環境情報をモニタリングする簡易ツールについて書いたことがあります。このような環境情報のモニタリング用にツールにまとめられたオープンソースは意外と見当たらず、以下のコンセプトイメージを立てて、プライベートで作成しました。
rainy_concept_jp.png
各センサーならびに産業オートメーション機器から取得した情報を以下のように利用することができます。

– Webブラウザから時系列グラフでモニタリングする。(ダッシュボード)
– 他の用途で利用できるようにJSON化してMQTTで出力する。(オフライン分析用にクラウドやストレージに蓄

元記事を表示

AWS Lambda で Javaを使う ー実装編Tips – ReagionとInstanceIDからInstance名を取得する

##AWS Lambda で Javaを使う 目次
・[Eclipse準備編](https://qiita.com/t_ookubo/items/a71a9bd05282bf20e023)
・登録実行編(いつか)
・[実装編 – EC2を止める/立ち上げる](https://qiita.com/t_ookubo/items/3b12bd985a65a73b4c59)
・[実装編 – CloudWatchの引数を確認する](https://qiita.com/t_ookubo/items/18d47265d39bba4364b8)
・[実装編Tips – ReagionとInstanceIDからInstance名を取得する](https://qiita.com/t_ookubo/items/619d8029546447e61391)

### ReagionとInstanceIDからInstance名を取得する

引数にReagionコードとInstanceIDを渡すと、Instance名を返してあげる。
また、二回目以降、同じReagionコードを渡した場合、Mapに格納している値を返

元記事を表示

AWS Lambda で Javaを使う ー実装編 – CloudWatchの引数を確認する

##やりたいこと
Lambdaで実行するJavaで、CloudWatchに登録してある引数を取得する。

###背景・経緯
前回の記事で作成したEC2の起動停止するLambdaファンクションを、
CloudWatchEventsのCronで、8時、9時、17時、18時など複数の時間帯で起動するようにしていた。
が、どのインスタンスをどの時間に起動するようにしたか忘れてしまい、
いちいちCloudWatchEventsに登録した引数を確認しなければならなかった。
面倒だったので、引数を取得するファンクションを作成した。
(メモを取ると、登録している引数とメモを同期させないといけないので、避けたかった。)

##AWS Lambda で Javaを使う 目次
・[Eclipse準備編](https://qiita.com/t_ookubo/items/a71a9bd05282bf20e023)
・登録実行編(いつか)
・[実装編 – EC2を止める/立ち上げる](https://qiita.com/t_ookubo/items/3b12bd985a65a73b4c59)
・[実装編 –

元記事を表示

新世代Javaプログラミングガイドの紹介(Java 12編)

この記事は[新世代Javaプログラミングガイドの紹介(Java 11編)](https://qiita.com/kazsharp/items/d572c69b8c68e8ff4754)の続きです。

##Java 12での変更点
Java 12では以下の2つについて書かれています。

* switch 式
* JDK 12のその他の改良点

##switch 式
switch式はJava 12の正式な機能ではありません。
それどころかJava 13でも正式でなくJava 14からの正式な機能となります。
本ではプレビュー機能を使う方法としてコンパイル時や実行時に `–enable-preview` オプションを指定するよう解説されていますが、今はJava 14もリリースされているので、Java 14を使うならオプションなしで実行できます。
正直、今まであまりswitchを使ってこなかったのですが、今回のswitch式を使うと完結に安全なコードが書けるケースが増えるのではと思っています。
今までのswitchは何が問題だったのか、switch式でそれがどう改善されたのか、本ではサンプル

元記事を表示

新世代Javaプログラミングガイドの紹介(Java 11編)

この記事は[新世代Javaプログラミングガイドの紹介(Java 10編)](https://qiita.com/kazsharp/items/b75773ff77a0900fa5b7)の続きです。

##Java 11での変更点
Java 11では以下の6つについて書かれています。

* ラムダパラメータのローカル変数構文
* Epsilon GC ― ガベージコレクタの改良
* HTTP クライアント API
* ZGC - 低遅延化とスケーラビリティの改善
* フライトレコーダとミッションコントロール
* JDK 11 のその他の改良点

###ラムダパラメータのローカル変数構文
Java 11でLambda式のパラメータでvarが使えるようになりました。
というと「あれ? Lambda式のパラメータは元々型宣言はなくてもよかったんじゃ?」と思う人もいるかもしれません。
確かにLambda式では

“`java
(int age) -> x > 100;
(age) -> x > 100;
x -> x > 100;
“`

のような記述ができ、1番目以外は型の指定を省略してい

元記事を表示

Object MotherパターンとTest Data Builderパターン

# はじめに

## 背景と目的
テストフィクスチャのセットアップは面倒で大変です。特に、複雑なオブジェクト構造のテストデータを準備するのは手間がかかる上に、冗長な記述によってテストコードのノイズが大きくなり可読性の低下を招きます。
本稿では、テストフィクスチャのセットアップのための代表的なデザインパターンである`Object Motherパターン`と`Test Data Builderパターン`を説明し、また、改良のためのアイデアをご紹介します。

## サンプルコード
Java+JUnit5の[サンプルコード](https://github.com/yonetty/test-fixture-patterns)をGitHubで公開しています。

# テストフィクスチャとは
繰り返してテストを実行した際に同じ結果が得られることを保証するための一定の状態(環境やデータ)のことを`テストフィクスチャ`と呼びます。本投稿はその中でも、テスト実行に必要なデータのセットアップに焦点を当てます。

# サンプル
説明用のサンプルとして、図書管理アプリケーションを想定します。図書貸出管理サービス

元記事を表示

新世代Javaプログラミングガイドの紹介(Java 10編)

##Java 10以降の知識の整理に
2020/3/13「新世代Javaプログラミングガイド」という本が[発売されました](https://www.amazon.co.jp/dp/B085RBT3LH)
この本は4部で構成されていて

* 第1部 Java 10
* 第2部 Java 11
* 第3部 Java 12
* 第4部 Java 言語拡張 プロジェクト「Amber」

となっています。
先日Java 14がリリースされたばかりなので最新のJavaのバージョンまで対応していなさそうですが、訳者がJava 13やJava 14についての追記や訳注をつけておりJava10からの変更点や新機能などについてわかりやすく整理されておりJavaに関わる仕事をしている人にはぜひ読んでほしい本だと感じました。
今回は上記4部のうちの「第1部 Java 10」の部分について感想などを述べたいと思います。
(内容についてはあまり深く解説いたしませんので、興味を持たれたら本を読むことをお勧めいたします)

##Java10 での変更点
Java 10については以下の4つについて書かれています。

*

元記事を表示

JVM・ガベージコレクションに関してまとめてみた

先日、業務でフルGCが発生しアプリケーションが止まってしまうことがありました。
そもそもフルGCとは何か、わからなかったのでそこから調べて、またGCってどれくらいの頻度で発生するのか気になったので、調べて実際にちょこっと触ってみたことを書いています。

## GCとは

簡単にいうと、JVM上に確保されたヒープ領域で、不要になったオブジェクトに紐づいているメモリを開放すること。

たとえば、以下のようなコードがあった場合には、Compnayのオブジェクトが100000個も作成されます。
ほっておくとメモリを圧迫してしまいます。
実際にはこんなコード書かないと思いますが、このように少しのあらゆるコードの箇所で、数多くのオブジェクトが作られメモリに乗っています。

“`scala:test.scala

case class Company(name: String)

for(i 0 <- 100000 ) { val company = Company(s"企業-${i}") } ``` ## JVMのヒープ領域の詳細 young・oldに大別されます。 youngはさら

元記事を表示

javaでAtCoder Beginner Contest 160を解く

AtCoder Beginner Contest 160お疲れ様でした!
[公式ページ](https://atcoder.jp/contests/abc160)

今回の自分の書いたコードは[こちら](https://github.com/ko-flavor/atcoder-java/tree/master/atcoder/src/abc/abc160)
結果はA-EまでACできました。久しぶりの5問ACでテンション上がります^^

以下簡単に解説します。

##[問題A](https://atcoder.jp/contests/abc160/tasks/abc160_a)

引数にStringで6文字のものが渡されてくるので、
`String.charAt()`
で指定文字のcharacterを取り出して、比較すればOKです。

##[問題B](https://atcoder.jp/contests/abc160/tasks/abc160_b)

金額が与えられて、それを適切に500円硬貨と5円硬貨に両替する問題です。
答えの出力が「嬉しさ」になっていて、500円硬貨をもっていると1

元記事を表示

【XML】気象庁から地震情報を取得する①

#気象庁XMLを取得して解析までの道のり
① XMLのダウンロード(今回)
② XMLファイルの解析(次回)

#気象庁からXMLファイルを取得する
ダウンロードを実行するクラスを作成する。

“`java:XMLDownloader.java
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class EarthquakeXMLDownloader implements Runnable {

// 気象庁のリンク(http://www.data.jma.go.jp/developer/xml/feed/eqvol.xml)
String link;

// ダウンロードする場所
File

元記事を表示

java 標準関数型インターフェース

関数型インターフェースとは、抽象メソッドを1つだけもつインターフェースで、ラムダ式やメソッド参照の代入先として使われるやつです
標準関数型インターフェースについてまとめてみました

## 標準関数型インターフェース
標準関数型インターフェースとして、典型的なメソッドの型が`java.util.function`パッケージで定義されている

### 基本的な標準関数型インターフェース

|インターフェース|メソッド|説明|
| —- | —- | —- |
|Function \|R apply (T t)|T型の引数を受け取って、R型の結果を返す|
|Consumer \|void accept (T t)|T型の引数を受け取って、結果は返さない|
|Predicate \|boolean test(T t)|T型の引数を受け取って、boolean値の結果を返す|
|Supplier \|T get()|引数無し、T型の結果を返す|

#### サンプルコード

“`Sample.java
// Function

元記事を表示

OTHERカテゴリの最新記事