JAVA関連のことを調べてみた2022年12月16日

JAVA関連のことを調べてみた2022年12月16日

【kabuslib】auカブコム証券のkabuステーションREST APIを列挙体でラップしたAPI

# はじめに

過去記事は「[auカブコム証券のkabuステーションREST APIに関する記事一覧](https://qiita.com/hiuchida/items/611ba237dc1d1f6e3dca)」。

swagger-uiが生成したソースは、int型やString型なので、列挙体を定義したが、intValue()などで数値にしているため、せっかくの型チェックが効かない。このため、列挙体を使用したAPIメソッドやモデルクラスを作成する。

# APIメソッド

InfoApiのordersGetの定義は以下のようにString型となっている。

“`java
public List ordersGet(
String X_API_KEY, String product, String id, String updtime, String details, String symbol,
String state, String side, String cashmargin) throws ApiException
“`

後か

元記事を表示

新卒エンジニアがコードレビューから学んだ二つの学び(Strategyパターン編)

# はじめに
こちらは「[ラクス Advent Calendar 2022](https://qiita.com/advent-calendar/2022/rakus)」の16日目の記事になります。
新卒で入社し、7月に現在の部署に配属。9月中旬ごろから徐々に開発タスクに取り組み始めました。
最近ではバグ修正に加え、既存APIの改修を担当することも増えてきました。
その中で先輩エンジニアにレビューをいただき、学んだ内容を次に活かすために整理していこうと思います。

まずは簡単に状況の確認をすると、以下の流れです。

1. あるクラスで他のクラスから値を取り処理するメソッドを書き、レビューでアドバイスを貰った
1. 実際に修正し、理解のために手元でクラス図を作成したところ、見た事のある形になっていた
1. 以前読んだ本を見返したところ、これが「Strategyパターン」と名前が付いていることを確認した

では詳しく見ていきましょう。

## レビュー内容
レビュー内容を簡単にまとめると、以下の内容でした。
最初聞いた時は改善した形をイメージできませんでしたが、今では先輩のアドバイスを理解

元記事を表示

いまさら訊けないバッチ実装の心得 6選(超基本編)

# はじめに
これまでWEBアプリケーションをメインで作ってきましたが、最近新規のバッチジョブをまるっと1つ作るという経験をしました。
バッチ実装レベルとしては、既存のバッチ処理の不具合修正を何件かこなしたことがある程度。新規実装は初体験でした。
バッチ実装経験者であれば息を吸うかのように判断できるであろうことに、残念ながらとても悩んでしまう場面が多々ありました。

そんな状態ではありつつ、上司や同僚に質問・相談しながらなんとかローンチに漕ぎつけました。
その際に学んだり、自分なりに行き着いたりした、**初めてバッチ実装する際には悩んだり盲点になったりすると思われる超基本的な心得**を明文化しておこうと思います。

なお、今回実装したバッチ処理は超シンプルなデータ取込処理だったので、「こういう場合はどうするんだろう?たぶんこうするんだろうな」という考察・憶測も記載しています。そちらに関する編集リクエスト、アドバイス、異論反論、歓迎いたします。むしろご教授ください。

# 前提
– 開発環境
– Java8
– Oracle 12c(12.2.0)
– [こちらの記事に

元記事を表示

Web Apps の Java SE スタックについて

## はじめに
本記事は Microsoft Azure Tech Advent Calendar 2022 の投稿です。

Web Apps の Java ランタイムスタックを眺めていると、Tomcat は具体的にわかるのですが、Java SE (Embedded Web Server) という一般的なスタックが出てきます。このスタックはどのような場合に使うのか本記事では調べていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691192/868ba789-c6c0-2898-6271-1d818f575cd1.png)

## TL;DR
– Java SE は、`java -jar` で動作する Web アプリケーション向けのスタック
– たとえば Tomcat などのサーブレットコンテナが内蔵されている Spring Boot では Java SE スタックを選ぶ

## Java SE (Embedded Web Server)
Tomcat スタックでは、war フ

元記事を表示

【Java】JavaおじさんのJava放浪記:その1(Javaとはなんぞや)

# はじめに

はじめまして、Javaおじさんと申します。
Javaを勉強する上で「知識の出力(アウトプット)」も行えば誰かの為にもなるのでは思い筆を取りました。
何卒ご指導ご鞭撻のほど宜しくお願いいたします。

## 記事の内容

– Javaとは何か大雑把に理解していく。
– Javaってどんな利用方法があるのか知る。
– Javaの開発環境について知る。

# Javaとはなんぞや

– コンパイル型言語の一種 (cf. インタプリタ型言語)
– Write once, run anywhere (Java仮想マシンのおかげで種々のコンピュータ上で使える)
– 色んな統合開発環境 (IDEとも呼ぶ、IntelliJ IDEA・Eclipse・Android Studioなど)

# おわりに

学習の習慣化が大切だと思い、労力削減の為に今後もある程度大雑把にまとめていく予定です。
本記事をお読みいただいた方々に、深く感謝いたします。
記事の内容に誤り等がございましたら、何卒ご指摘の程宜しくお願いいたします。

## 参考

– [スラスラわかるJava 第3版](http

元記事を表示

【MOD】向いている方向にワープする【Minecraft】

MineraftのMODでワープするアイテムを追加するとする。Minecraftの世界はブロックで表現されているわけだが、これがワープ先の座標を決定することを難しくする。
ここでは、右クリックをするとワープするアイテム`ItemWarpStick`を例にして説明する。

# getYRot()を使う
Y軸を軸とした回転の角度を得られるメソッド`getYRot`があるので、それを使う方法である。理解しやすく、単純な方法である。

“`java:ItemWarpStick.java
public class ItemWarpStick extends Item {
public ItemWarpStick() {
super(new Item.Properties().tab(CreativeModeTab.TAB_COMBAT));
}

public Vec3 toVec3(BlockPos pos) {
return new Vec3(pos.getX(), pos.getY(), pos.getZ());
}

元記事を表示

xxx.getClass() と xxx.class

いわゆる型。よくわからなくなってきたのでconsoleに出力して確認

“`sample.java
public static void main(String[] args) {
String s1 = new String(“1”);
System.out.println(s1.getClass());
System.out.println(String.class);
System.out.println(s1 instanceof String);
}
“`
実行結果
“`
class java.lang.String
class java.lang.String
true
“`

元記事を表示

Generics サンプル

paramをgenericsで定義
instance化する際に、concreteなclassを指定する

“`Putlog.java
public class Putlog {
private T param;
public Putlog(T p1) {
this.param = p1;
}
public void setPlog(T p1) {
this.param = p1;
}
public void outlog() {
System.out.println(param);
}
}
“`
“`sample.java
public static void main(String[] args) {
Putlog p = new Putlog(“a1”);
p.outlog();
p = new Putlog(1);
p.outlog();
}
“`
実行結果
“`
a1
1
“`

元記事を表示

Javaで何か作ってみる(2022/12/13 Day54)

## 今日やった事
– オブジェクト指向の動画教材を見た。(**J2-99_さいごに** まで見た。)
– Springの動画教材を見た。(**セッティング~学習環境を準備しましょう~** まで見た。)
## 参考にしたもの
– [Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~](https://www.udemy.com/course/java_spring_beginner/)
– [【超初心者も必見】Javaプログラミングの「オブジェクト指向」が絶対理解できる講座【プロ講師が丁寧解説】](https://www.udemy.com/course/uz-java-obj/)
## 所感
– オブジェクト指向は完璧ではないものの、ある程度は理解出来たと思う。
– Springは、動画教材だと、Eclipseをインストールする方法しか紹介されていなかったから、
Eclipseをインストールしなくてもいい方法を模索したい。

## 明日の予定
– 引き続き、動画教材を進めていく。

元記事を表示

SwiftとJavaを比較してみた Swift:Java互換表

# はじめに
普段はiOSエンジニアとしてSwiftを使用してアプリ開発をしています。
サーバーはJavaメインで書かれているので勉強がてらSwiftとJavaの互換表を作ってみます。
基礎的なところから少しづつ更新していきたいと思っています。
ただSwift歴も浅いのでJavaは勿論、Swiftも間違いや、より良い書き方、こんな書き方もあるよ! といった際はコメントでご教示いただけますと幸いです。

# 変数
## 変数
“`swift:swift
// 宣言
var num: Int
// 代入
num = 0
// 初期化 (var 変数名 = 値)
var num = 0

var str = “もしもし”
var bool = true
“`
“`java:Java
// 宣言
int num;
// 代入
num = 0;
// 初期化 (データ型名 変数名 値;)
int num = 0;

String str = “もしもし”;
boolean bool = true
“`
・Javaには;セミコロンが付きます。忘れそうですね。
・Stringは大文字から始ま

元記事を表示

JavaのDIについてまとめ+ おまけ(よく使ってた機能)

### DIとは

– Dependency Injection(依存性注入)の略
– オブジェクトの成立に必要なコードを分離し、プログラム実行時に注入する手法
– 例:2つのクラスの間に依存関係があり、そのうちの1つのクラスが完成していない場合
完成済みのクラスをテスト(単体テスト)はできない
しかし、依存性注入によってクラスの依存関係が解消され、完成済みクラスをテストすることが可能
– このため、システムを改修する場合も最低限の変更で済ませることができ、開発が楽になる

今回の学習では以下の手順でDIを導入(DIの有無で動作確認の為)

1. 非DIのプロジェクトをコピー
2. 以下を3つをBean化
1. コントローラー
2. サービス
3. リポジトリ

## 実例

例:2つのクラスの間に依存関係があり、そのうちの1つのクラスが完成していない場合

### DIなし

![スクリーンショット_2022-04-06_14.35.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

JPAでストアドプロシージャから複数のResultSetを受け取る

# 概要
JPAでストアドプロシージャ(SQLServer)から複数のResultSetを受け取る方法です。

# 実装内容
“`gradle:build.gradle
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-web’
implementation ‘org.springframework.boot:spring-boot-starter-data-jpa’
runtimeOnly ‘com.microsoft.sqlserver:mssql-jdbc’
}
“`

## シンプルなストアドの例
– SingleStoredProcedureはINPUTパラメータ名がParameterで、1つのResultSetを返却します。

“`java
public interface SingleStoredProcedureRepository extends JpaRepository {

@

元記事を表示

関数

## 関数とは
何らかの入力を受け、処理を行い、出力を返すもの。
このため、メソッドも関数の一種になる。

### 戻り値を返す関数の代入
関数は変数に代入できるという特徴を有しています。そのため、関数の一種であるメソッドを変数に代入することができます。

“`java
import java.util.function.Function;

public class Main {
// 文字を受け取り、その文字数を返す関数
public static Integer len(String word) {
return word.length();
}

public static void main(String[] args) {
// 変数funcにlenメソッドへの参照を代入
Function func = Main::len;
// applyで代入された関数を適用
int a = func.apply(“Tokyo”);
System.out.println(a);
}
}
“`

*Function

元記事を表示

カプセル化の演習(setterに戻り値つけて笑われた話)

# 問題
口座から引き出す機能のみをもったシステムを実装してください。

“`java
public class ATM {
public static void main(String[] args) {

BankAccount myAccount = new BankAccount();
myAccount.setWithdrawal(800);//800円を引き落とす。
myAccount.setWithdrawal(-800);//不正に残高を増やそうと試みるw
System.out.println(“現在の預金残高:” + myAccount.getBalance() + “円”);
}
}
//演算結果
//入力された数値が正しくありません。
//現在の預金残高:9200円

class BankAccount {
//預金残高を保存するプライベートなインスタンス変数balanceを定義
private int balance;

public BankAccount() {
this.balance = 1000

元記事を表示

MacによるJavaのセットアップ

# Homebrewをインストール
“`bash
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

# Javaインストール
“`console
brew tap homebrew/cask-versions

# Java8
brew install –cask temurin8

# Java11
brew install –cask temurin11

# Java17
brew install –cask temurin17
“`

# インストール済みバージョン確認
“`console
/usr/libexec/java_home -V
“`

# Javaのバージョン切り替え
“`vim:~/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v “<バージョン番号>“`
PATH=$JAVA_HOME/bin:$PATH
“`

“`con

元記事を表示

JavaをMacで開発してたときのメモ

### macOSでのJDKのインストール

https://docs.oracle.com/javase/jp/16/install/installation-jdk-macos.html#GUID-2FE451B0-9572-4E38-A1A5-568B77B146DE

### STS(Spring Tool Suite)のポート番号変更

application.propertiesを編集

![スクリーンショット_2022-04-01_20.53.29.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1051129/5756a74b-8482-b6b7-88bf-5b869d02b44d.jpeg)
![スクリーンショット_2022-04-01_20.54.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1051129/d2ecb63d-a78b-2807-a59c-a294945b953e.png)

##

元記事を表示

Java初心者が不具合を発生させたことで、自動テストを書くようになった話

WHIの山﨑です。

私は2022年の1月にWHIに転職したのですが、転職して早々に不具合を発生させてしまったことで、自動テストを書くようになったので、その時の失敗談と学びについてまとめてみました。

「この人みたいな失敗をしないように、自動テスト書くようにしよう。」と思ってもらえれば幸いです。

## ぬるぽとの出会い

私は前職ではPythonを利用していたので、もちろんぬるぽなんぞ意識せずに開発をしてきました。

しかし、WHIではJavaをメインで利用しています。

慣れない言語、特にオブジェクト指向と静的な型付けに苦労しつつも開発を行っていました。

そんなある日のこと、自分の修正したプログラムで不具合が発生しました。

内容としては、以下の通りです。

“`
ClassA a = variable.getAItem();

ClassB b = a.getBItem();
“`

上記のようなコードがあったとします。(もちろん、業務コードはちゃんとした命名がされています。)

基本的には、`varibale.getAItem()` からは必ずClassAの値が帰ってきま

元記事を表示

Text CAPTCHAを解決する方法

1. Find captcha question.

2. [API](/api-docs#solving_text_captcha)に質問を送信してください。
## SDKを使用する場合 (推奨):

PHP

“`php
// https://github.com/2captchacom/2captcha-php

require(__DIR__ . ‘/../src/autoloader.php’);

$solver = new \TwoCaptcha\TwoCaptcha(‘YOUR_API_KEY’);

try {
$result = $solver->text([
‘text’ => ‘If tomorrow is Saturday, what day is today?’,
‘lang’ => ‘en’,
]);
} catch (\Exception $e) {

元記事を表示

SolveMediaの突破方法

1. CAPTCHA画像をダウンロードします。

2. 画像を[API](/api-docs#solving_solvemedia)に送信します。

## SDKを使用する場合 (推奨):

PHP

“`php
// https://github.com/2captchacom/2captcha-php

require(__DIR__ . ‘/../src/autoloader.php’);

$solver = new \TwoCaptcha\TwoCaptcha(‘YOUR_API_KEY’);

try {
$result = $solver->normal(‘path/to/captcha.jpg’);
} catch (\Exception $e) {
die($e->getMessage());
}

die(‘Captcha solved: ‘ . $result->code);
“`

<

元記事を表示

Rotate Captchaの突破方法

1. CAPTCHA画像をダウンロードします。

2. 画像を[API](/api-docs#solving_rotatecaptcha)に送信します。

## SDKを使用する場合 (推奨):

PHP

“`php
// https://github.com/2captchacom/2captcha-php

require(__DIR__ . ‘/../src/autoloader.php’);

$solver = new \TwoCaptcha\TwoCaptcha(‘YOUR_API_KEY’);

try {
$result = $solver->rotate([
‘file’ => ‘path/to/captcha.jpg’,
‘angle’ => 15,
]);
} catch (\Exception $e) {
die($e->getMessage());

元記事を表示

OTHERカテゴリの最新記事