JAVA関連のことを調べてみた2023年02月01日

JAVA関連のことを調べてみた2023年02月01日

method refference of particular type

# type::methodのメソッド参照
instance::methodではなく、type::methodを渡すタイプ。
instanceを渡さないので、method発行する側が
first argumentにtypeのinstanceを指定する。
下記のsampleで、SampleClass#apply(String u)は、single argumentだが
SampleClass::applyのようにメソッド参照指定した場合、apply発行側が
SampleClassのinstanceを指定する。instanceは、first argumentに追加される
もともとfirst argumentであるString uは、押し出される形でsecond argumentになる。最終的にapply(SampleClass s,String u)。
そして、methodは、double argumentとなり、発行側としてはBiFunctionとなる

この仕組みはqiitaで以下のQ&Aを起票し、@uasi氏より回答をいただき、理解することができた
https://qiita.com

元記事を表示

BitbucketPipelinesでCI/CDに挑戦する その2:テスト結果をS3にアップロードする

## 概要
既にある程度の開発が進んでいるBitbucket上のプロジェクトにPipelinesを使って継続的あれこれする機能を追加しようという、解説というよりも私の挑戦の記録です。

前回は初のPipelinesの利用として「[手動でテストを実行](https://qiita.com/talesleaves/items/99a75ca0b831f92be34f)」しました。
その2では「オープンソースの開発で、生成されたテスト結果を開発リソースとして共有する」シーンをを想定して、テスト結果をAWS S3にアップロードするまでを扱います。記事の分量から、CloudFrontでの配信やビルドステータスへのアーティファクトの公開URLの追加は次回以降に扱います。

### 記事内で使用している環境
– Java17
– Gradle7.6
– JUnit,JaCoCoでテストのレポートを作成
– BitbucketのリポジトリでPipelinesを有効化している([その1](https://qiita.com/talesleaves/items/99a75ca0b831f92be34f)を

元記事を表示

【応用分野】各プログラミング言語は何ができるかを見てみよう

多くの人がプログラミングを学ぶのは常に頭が熱くなってからネットで資源を探して勉強を始めます。学んでみると今学んでいることは自分が一番好きなものではなく、別の技術をもっと好きなようで、間違っていると感じて、また別のことを勉強するようになった。
![代替テキスト](https://jp.scrapestorm.com/wp-content/uploads/2022/12/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80.png)
プログラミング言語を学ぶ前に、どの分野に適用されるかを明らかにしなければなりません。本文は、いくつかのプログラミング言語の応用分野を説明し、何ができるかを見てみましょう。
## 1.C言語
C言語の主な応用分野は、オペレーティングシステム、組み込みシステム、およびサーバーであり、底辺で広く使われている強力な高級言語です。たとえば、世界のオペレーティングシステムの90%以上を占めているMicrosoftのWindowsシステム、そのコアはC言語で書かれています。しかし、C言語は習得が難しいことでも有名で、C言語に精通していれば、収入は決して低

元記事を表示

【備忘録】.jar/.war/.ear の違いについて

# 概要
これまで、JavaEEを利用したJava開発をしてきており、今はSpringBootを利用したJava開発プロジェクトに携わっております。その中で、これまで触れてきた「.jar」「.war」「.ear」の違いって何なんだろうと、ふと思ったので調べてみました。

### .jar/.war/.ear の違い簡単に
いずれもJavaコミュニティの仕様に準拠して定義されたzip形式のパッケージ(複数のファイルをまとめたアーカイブ)で、Javaで実装したプログラムを実行・配布しやすくするための形式です。Java EEベースのエンタープライズアプリケーションには「.ear 拡張子」、Java EE準拠のWeb アプリケーションには「.war拡張子」 、スタンドアロンJavaアプリケーション等には「.jar拡張子」を使用します。ファイルの規模感としては、.ear > .war > .jarとなります。これらの拡張子を「.zip」に変更すると、7zip等の標準解凍ツールで開くこともできます。近年のマイクロサービス開発の潮流より、小規模jarファイルとしてコンポーネント化されがちみたいです。

元記事を表示

testディレクトリに配置したprotoファイルがコンパイルされない

ユニットテスト用にテスト用のprotoファイルを用意してJavaファイルを自動生成したかったのですが、いくつかハマリポイントがあったのでここにまとめておきます。

# テスト用protoファイルの配置場所
テスト用のprotoファイルは以下に配置します。
以下に配置すればbuild.gradleでsourceSetsなどを記述しなくても自動で読み取ってくれるようになります。
“`
src/test/proto
“`
# テスト用protoからJavaコードの生成
src/main/protoに配置されたprotoファイルの場合は./gradlew buildや./gradlew generateProtoで自動生成することができますが、test配下のprotoからはこれらタスクでは生成できません。
代わりに
“`
./gradlew generateTestProto
“`
を実行することでtestディレクトリのprotoから自動生成することができます。
生成されたJavaファイルは以下のように/build/generated/source/proto/test配下に出力されま

元記事を表示

enumとThymeleafを使用した画面表示

## 背景
enum(定数)のフィールドを持ったドメインの要素を画面に表示したいため実装しました。
本記事に記載した方法は保守性などの観点からよくないという意見もあるため、仕様や実現したいことから実装方法を選定してください。
参考サイトは最後にまとめております。

## 環境
macOS Monterey / バージョン12.0.1
Spring Boot 2.7.7
IDE Eclipse
openJDK11
Maven3.8.6
Thymeleaf3

## 実現したいこと

enumクラスにて設定した定数をhtml、Thymeleafを利用して画面で表示する

Itemドメインにcolorというフィールドがあり、それを定数クラス群に設定する

~~~Item.java
public class Item {
/** ID */
private Integer id;
/** 商品名 */
private String name;
/** 商品カラー */
private Integer color; //これを定数とする.
}
~~~

~~~Color.ja

元記事を表示

Android デベロッパー プロフェッショナル エクスペリエンスはいかがですか?

1. Androidデベロッパーの義務と責任を理解する
説明によると、learntocodewith Android 開発者にはいくつかの主な責任があります。たとえば、次のとおりです。

バグを修正

アプリの機能と UI の構築

他のチームメンバーとのコラボレーション

データベースと API の処理は、

テスト

Android 開発者がどのような責任を負うのかを理解することで、最初に学ぶべきスキルを簡単に判断できます。

2.スキルを向上させる
スキルがある場合は、スキルをアップグレードし、ユーザーが現在必要としているものを探すことを忘れないでください。もちろん、必要なスキルを効果的に高めることで、Android 開発者になるための苦労はより簡単になります。

サイト eunoiamedia は、信頼できる Android 開発者になるために必要なスキルがいくつかあると説明しています。たとえば、次のとおりです。

Java と Kotlin に精通している

Android UI の設計原則

元記事を表示

【マルチスレッド】CompletableFutureについて

マルチスレッド処理で他のスレッドから戻り値がある場合がある。

戻り値を受け取る方法としてCompletableFutureがある。

マルチスレッドの中では、1つのスレッドの戻り値を受け取って処理を行いたい場合がある。

その場合、戻り値が必要な処理は、戻り値を受け取るまで処理がブロックされる。
戻り値を返す処理が終了したら、戻り値を取得し、後続の処理を行う。

CompletableFutureは前段の処理が終了したら自動的にその結果を次の処理を渡して実行するようにできる。

CompletableFutureは戻り値のある非同期処理をsupplyAsyncメソッドで起動する。

“` sample.java
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class Samp

元記事を表示

【Java】マルチスレッドでの処理サンプル

プログラムにおいて、独立して実行する一連の処理をスレッドという。

その中で、JavaScriptが代表的だが、並列して処理を実行せず、一連の流れで処理を行うプログラムをシングルスレッドという。

それに対し、複数のスレッドで同時に処理を行う仕組みをマルチスレッドという。マルチスレッドで別々の処理を平行して実行することを非同期処理という。

本記事では基本的なマルチスレッドの実装についてまとめる。

# スレッドの作成と処理実行

新しくスレッドを作成するには、Threadクラスのインスタンスを生成し、startメソッドで実行するのが基本的である。

“` sample.java
Thread th = new Thread(実行したい処理);
th.start();

“`

以下のでは2つのスレッドを作成して処理を実行する。

“` sample.java
Thread th1 = new Thread(() -> System.out.println(“スレッド1の処理が実行されました”));
Thread th2 = new Thread(() -> Syste

元記事を表示

【Java】参照の自動型変換

Javaの継承関係にあるクラスではサブクラスのインスタンスには必ずスーパークラスのインスタンスに相当する部分が含まれており、スーパークラスのメソッドなどを使用することができる。

この特徴を利用すれば、サブクラスのインスタンスを、スーパークラスのインスタンスとして使用することができる。

ParentHumanクラスを継承するChildHumanクラスがあったとする。

“` ParentHuman.java

public class ParentHuman {

private String name;

private int age;

private String gender;

public ParentHuman() {

}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void

元記事を表示

Collectors#toList(), toSet(), toMap()

Collector classを生成する
toList() streamの各要素としたListをreturnするCollectorを生成
toSet() streamの各要素としたSetをreturnするCollectorを生成
toMap() streamの各要素をFunctionで加工したkey, mapをMapとしてreturnする

Collectorを生成
“`java
class Value {
int price;
String name;

public Value(int price, String name) {
this.price = price;
this.name = name;
}

public int getPrice() {
return price;
}

public void setPrice(int price) {
this.price = price;
}

public String get

元記事を表示

独学のプログラミングのヒント

今日の洗練された時代では、すべてを簡単に学ぶことができます。たとえば、プログラミングは独学で学ぶことができます。プログラミングとは正確には何ですか?プログラミングは、コンピューター上でプログラムを作成するプロセスです。作成されたプログラムは、ソフトウェア、Web サイト、Android または iOS アプリケーションなどの形をとることができます。

本題に入る前に、重要な情報があります。プログラミングを始めたい方はDicoding Academyで学べます . Android、iOS、クラウドからフロントエンド、バックエンドのWeb開発者まで、さまざまな分野があります。これらの各フィールドには、初心者から上級者までさまざまなレベルもあります。すごいでしょ?すぐにクラスを確認して登録してください。

はい、本題に戻ります。この記事では、プログラミングを独学で学べるように、さまざまなヒントについて説明します。すでに興味がありますよね?さあ、よく見てみよう。

プログラミングとは?

![programming-eunoiamediaID.png](https://qiita-imag

元記事を表示

JavaだってGPT-3.5を使ってChatGPTクローンが作れる

OpenAI が提供している ChatGPT は非常に面白いですね。
ここまで、すごいものが出ると今後、GPTやChatGPTがさらに進化することが想像できますね。

この記事では、GPTを使ったChatGPTクローンをJavaで実行するまでを紹介していきます。

# どうやってChatGPTクローンを作るのか?

ChatGPTクローンを作る方法としては、LangChainというものがあり、OpenAIのGPT-3やGoogleのFLAN-T5 XLといった大規模言語モデル(LLM)を使いやすくするためのフレームワークです。

:::note info
詳しくは[npakaこと布留川英一のnote](https://note.com/npaka/n/n61ad59380a43#0e3152ff-6526-47b4-9bfa-6cfe008ac605)を参照のこと。
:::

しかし、上記のLLMは無料では使用できず、OpenAIのAPIアカウントが必要であり、連携するAPIによっては追加の費用が発生する可能性があります。

# JavaでGPT-3を使うには
GPT-3をJavaで使

元記事を表示

プログラミング入門

皆さん、こんにちは!テクノロジーに関する有用な情報を共有しますが、より明確にするためには、プログラミングの世界です。

「プログラミング」と聞いて何を思い浮かべますか?コーディング?それともコンピューティング?まだ間違っています。ふむ、まずは基本から始めればよかった。プログラミングはプログラムです。

プログラムはどのようなものですか?プログラムは、特定の入力と出力を持つ論理シーケンスです。プログラムは、コンピューターが必要に応じて最適に機能できるように、コマンドの集まりの形にすることもできます。システムに統合されたプログラムは、Web アプリケーションや Android などのアプリケーションと呼ばれます。

さて、この議論では、プログラミングという用語を徹底的に復習します。次の説明を見てみましょう。

プログラミングとは?

eunoiamedia による報告プログラミングとは何か? 簡単に言えば、プログラミングはコンピューター上でプログラムを作成するプロセスです。作成されたプログラムは、ソフトウェア、ウェ

元記事を表示

設計でJavaGoldは役に立つのか

最近寒くなり、ますますインドアが加速している福岡在中のSEです:snowflake:

2月から新規プロジェクトが始まるのですが、今回はオンラインの新規画面数が多いため
一足先に要件確認と、基本設計を少しずつ手を付け始めてます。

JavaGoldを去年取得しましたが、製造でしかまだ実践できていなかったので
今回は、**システム設計**でどこまで活かせたかを話したいと思っています。

設計で役に立ったこと
**1**:apple: **セキュリティコーディング**
**2**:apple: **共通部品の検討**
**3**:apple: **製造工数の算出**

***

### 1:apple:セキュリティ対策
「[現場で活きる!Java Gold](https://qiita.com/puellana/items/ce32d93952b4cf3a1ff4 “現場で活きる!Java Gold”)」でもお話しましたが、製造の経験が浅かったとき、十分にセキュリティ面を考慮したコーディングすることが出来ていませんでした…:confused:
 それはJavaアプリケーションにおけるセ

元記事を表示

stream Collector interface

Collector sample

accumlator process本体
finisher 中間値→return値
supplier 中間値のインスタンス生成

# なぜこんなものをつくったのか
supplier, accumlator, finisherを一つのメソッドに書くと
accumlatorは、for/whileを書かざるを得なくなる、これでは、streamメリットが減る。
そのため、作者はaccumlatorを切り出し、collector側で回すようにした。
様々な処理にも耐えうるようその他の機能を切り出しメソッドに用意した。
各メソッドはfunctional interfaceを強制させることにより記載を標準化。

以下はstring arrayを,区切りで連結するサンプル
“`java
class SampleCollector implements Collector {
@Override
public Supplier supplier() {

元記事を表示

【Java勉強法】Java未経験からJava Silver取得

# はじめに
今回は、Java未経験からJava Silver取得のために行なった勉強法について、まとめました。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の対象者
– これからJavaの学習を始める方
– Java Silverの取得を考えている方

# プロフィール
参考として、Javaの学習を始めた時のプロフィールについて記載します。

– プログラミング歴:約3ヶ月
– 今まで学習した言語:HTML, CSS, Ruby, Rails, JavaScript

# この記事の内容
1. 試験日までのスケジュール
2. 学習ロードマップ
3. 黒本の要点まとめ
4. 最後に

# 1. 試験日までのスケジュール
**学習期間:**
– 約3ヶ月

**学習内容:**
– 1か月目   ・・・Youtubeを使い、Javaの基礎について学習
– 2, 3か月目  ・・・黒本を使い、試験対策

# 2. 学習ロードマップ

学習内容の詳細について、記載します。
①~③の順に学習を行い、試験

元記事を表示

ABC287A~Dの解答[Java]

## はじめに
今回はDまでしか解けなかったのでDまで載せようと思います。

では、見ていきましょう。

## A – Majority
問題文は[こちら](https://atcoder.jp/contests/abc287/tasks/abc287_a)

先頭の文字だけ見ればどちらか判別できるので、先頭の文字が`F`のものを数えて過半数か判定しました。
“`A.java
class Main{

static final boolean autoFlush = false;
static final Library System = new Library(java.lang.System.in,java.lang.System.out,java.lang.System.err,autoFlush);

public static void main(String[] args){

//Nの受け取り
int N = System.in.nextInt();

//総数
int count = 0;

//一文字目がFのものを数える
for(

元記事を表示

Javaプログラムからwindowsバッチファイルを実行する

実務でJavaプログラムからバッチファイルを実行する処理が実装されていたので備忘録として簡単なサンプルを残しておく。

今回はA5M2.exeを起動するバッチファイルをJavaから起動する処理を実装した。

なぜA5M2なのは特に理由はない。

実装する処理の流れは以下の通り。

①バッチファイルを起動するJavaプログラムを実行

②バッチファイルからA5M2.exeを起動

# Javaプログラムの実装

Javaのソースは下記の通り

“` sample.java
public class Sample {

public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder(“C:\\Users\\User\\Desktop\\hello.bat”);
Process process = pb.start();

int result = process.waitFor();
System.out.println(“戻り値:” + resu

元記事を表示

【Java基礎】入力フォームを使おう

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html)
数値を入力させ、その入力値を表示するプログラムを作成しなさい。

# コード
“`php
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
System.out.println(t);
}
}
“`

↓ 入力フォームに「56」と入力

# 結果
“`
56
“`

文字列の場合は
“`java
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {

元記事を表示

OTHERカテゴリの最新記事