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

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

GraphQL Javaでのスキーマ定義ファイルのコメントの書き方とGraphiQLやGraphQL Playgroundへの反映

[初めてのGraphQL Webサービスを作って学ぶ新世代API](https://www.oreilly.co.jp/books/9784873118932/)によると、スキーマ定義ファイルにて各スキーマにコメントをする場合は、以下のようにダブルクォーテーション3つで囲むということになっています。

“`scheme.graphqls
“””本”””
type Book {

“””ID”””
id: ID

“””名前”””
name: String

“””ページ数”””
pageCount: Int

“””著者”””
author: Author![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23101/6f44c6e0-4691-8ca9-a029-0d5ef55f6d7e.png)

}
“`

上記のように書くことで、GraphiQLやGraphQL PlaygroundのDescriptionにもダブルク

元記事を表示

Spring BootでGraphQLを実装する

## GraphQLとは
[RESTの課題とGraphQL](https://qiita.com/NagaokaKenichi/items/a4991eee26e2f988c6ec)を参照していただけたらと思います。

## 環境

* Windows10
* Java8
* Spring Boot 2.2.1.RELEASE
* Maven 3.2.5

## 依存ライブラリの追加

以下を追加します。

* GraphQL Java
* GraphQL Spring Boot Starter
* GraphQL Java Tools

“`pom.xml


com.graphql-java
graphql-java
11.0
<

元記事を表示

STS, SpringBootで手軽にWebアプリ開発。10分で。

タイトルのお手軽手順を紹介します。

##要素
– STS
– Spring Boot
– Thymeleaf

##手順
####STSインストール
こちらから STSの最新版をダウンロードし、インストール。
https://spring.io/tools

####Starter Project 作成
Create new Spring Starter Project をクリックし、”Type” は “Gradle (Buildship 3.x) を指定して Next。

以下を選択。

– AWS Core
– AWS RDS
– Spring Boot DevTools
– Spring 開発環境を強化
– Lombok
– アノテーションで getter, setter 等を自動生成
– Spring Configuration Processor
– Spring 開発環境を強化
– MyBatis Framework
– ORM
– MySQL Driver
– Spring Security
– 認証, 認可, CSRF対策, IP制限等のフレーム

元記事を表示

Spring Cloud Gatewayで独自認証をした上でバックエンドにリクエストを流す

# 目的
Locustなどの特にユーザー認証の必要がなく使える諸々のWebUIツールに対して、
独自の認証を挟んだ上で利用するようにしたかったのですが、
ツールの種類が増えるたびに個々のツールに認証機能を実装していくのも面倒かなと思いました。

そこで各ツールの前段にSpring Cloud Gatewayのアプリケーションを配置して
ここで各ツールに対するリクエストを全て受け付けて独自認証を行い、
認証がOKであればバックエンドのツールにリクエストを流すようにしてみました。

# プロジェクトのセットアップ
[Spring initializr](https://start.spring.io/)でDependenciesに”Gateway”を追加した上で雛形を作成してダウンロードします。

# 実装1: まずは認証無しでリクエストの振り分け
まずは認証機能無しで、単純にSprin Cloud Gatewayでリクエストを受け付けて、
バックエンドのツールにリクエストを振り分けるところまでやってみます。

ここまではJavaクラスの実装は必要なく、application.yamlの設

元記事を表示

RecyclerViewとMarkerを対応させる(Kotlin)

### 作りたいもの
RecyclerViewをスクロールするとそのアイテムに対応するGoogle MapのMarkerに移動し、またMap上でMarkerをタップするとRecyclerViewがアイテムまでスクロールしてくれるやつ。
![ezgif.com-optimize.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459816/9638d0bd-f0cd-d213-4e1f-d54fade6d4e1.gif)
CardViewとSnaphelperも使用していますがその説明は割愛します。

### 環境
Android Studio
Kotlin
Maps SDK for Android

### 方法
#### RecyclerView -> Marker
スクロール量でRecyclerView上の順番を判定し、そのアイテムの位置までMapを移動。

“`kotlin
//recycler -> marker
recyclerView.addOnScrollListener(object :

元記事を表示

java 条件分岐

今日は条件分岐について書きます。

# 条件分岐とは
 条件を満たした場合と満たさなかった場合の処理を行う
 コードのこと

# if文
 最も基本的な条件分岐式

基本形はこのような形です。

if()の中に条件式(a=1,a>2など)を設定し
成立した場合最初の{}の中の処理を行い
成立しなかった場合else後の{}の中の処理を行います。

※else以降のコードがなくても動作しますが
 何も出力されないだけなので。原則設定します。

“`java:if文基本構文
if(条件){
//条件と合致した場合の処理
}else{
//条件と合致しなかった場合の処理
}

“`

例文はこちら
numberを1と設定してるので
正解と出力
1以外の場合が設定されると
不正解
さらに不正解と出力されます。

“`java:if文
public class Main {
public static void main(String[] args) {
int number = 1;
if(number == 1){

元記事を表示

Java8 リスト変換を Stream map で

リスト変換について、for 文を使う場合と Stream map を使う場合で比較していきます。
以下のリストを使います。

“`java:stream-map.java
final List months =
Arrays.asList(“January”, “February”, “March”, “April”, “May”, “June”, “July”, “Augast”, “September”, “October”, “November”, “December”);
“`

それぞれの要素の一文字目だけで構成されるリストを作ります。
#### 1. for 文を使う
一文字目を格納する空のリストを宣言し、for ループ内で一文字ずつ格納しています。

“`java:for.java
final List firstChars = new ArrayList<>();
for (String c : months) {
firstChars.add(c.substring(0,1));
}
for (String fc : fir

元記事を表示

OutsystemsでCSVの読み込みと出力をしてみた

#はじめに
会社のITメンバーで参加している2019年のアドベントカレンダーに、自身2つ目の記事を投稿します!
自己紹介も兼ねて、前回書いた記事はこちらになります。
https://qiita.com/tom-k7/items/d8ef19dccb42891a0698

今回もOutsystemsについて書きます。
今はちょうどOutsystemsでCSV変換ツール(Webアプリ)を開発しているので、
OutsystemsでCSVの読み込み・出力の実装方法、あとは開発中にぶち当たった壁について共有させていただきます。
#やりたいこと
今開発しているツールでやりたいこととしては、
いろんな他社さんのサイトからダウンロードしたCSVファイルを
社内で使ってるシステムにインポートできるフォーマットのCSVファイルに変換したい。
なので、ダウンロードしたCSVファイルを読み込んで、
ごにょごにょ変換して新たなCSVファイルを出力するということをOutsystemsで実現します。
#Forge
CSVファイルの読み込み・出力にはCSVUtilのForgeコンポーネントを使います。
https:/

元記事を表示

Javaのswitch文

##Javaを使った条件分岐

###if文を用いると

“`

class Main {
public static void main(String[] args) {
int number = 12;

if(number % 3 == 0){
System.out.println(“3で割り切れます”);
else if(number % 3 == 1){
System.out.println(“3で割ると1余ります”);
else
System.out.println(“3で割ると2余ります”);
}

}
}

“`

###swich文を用いると

※ 各caseの最後に、break;をつけるのを忘れずに!
 忘れると、合致したcaseの処理を行った後、その次のcaseの処理も実行してしまう。

“`
class Main {
public static void main(String[] args) {
int number = 12;
switch(number

元記事を表示

OCJP Silver SE 11を無事取得できたのでそのまとめ

# はじめに
Javaの知識を体系的に取得したかったので、OCJP Silver SE11を受けてみた。

# OCJP Silver SE 11のレベル感
オラクルのサイトには以下のように記載されていました。
> 上級者の指導のもと開発作業ができる開発初心者[^1]

[^1]: [Java SE 11 認定資格](https://www.oracle.com/jp/education/certification/jse11-5570635-ja.html)

# 受けた人のレベル
実務経験3年未満。Java歴は1年経つか経たないかくらい。実務経験3年未満だけど実年齢はそんな若くない。JavaのBronzeとかITパスポートとかCCENTとかは持っている。そんなレベル。

# 結果
受験日を引き伸ばした結果
スクリーンショット 2019-12-22 20.28.03.pngSpring Fest 2019 スライド一覧

## 概要
Spring Fest 2019に参加してきました。
その際の、登壇スライドのまとめとなります。

## Spring Boot アプリの運用が楽になる? Pivotal と Microsoft が共同開発した専用 PaaS「Azure Spring Cloud」のご紹介 !!
– [Azure Spring Cloud の環境構築方法のご紹介 \| 寺田 佳央 – Yoshio Terada](https://yoshio3.com/2019/12/20/how-to-configure-the-azure-spring-cloud/)

## Spring Boot爆速開発超絶技巧
– [Spring Boot爆速開発超絶技巧 #jsug #boot / Spring Boot & IntelliJ IDEA technique – Speaker Deck](https://speakerdeck.com/yusuke/spring-boot-and-intellij-idea-technique)

## 入社1年目のプログラミング初心者がSpringを学

元記事を表示

【StreamAPI】max(またはmin)で空Optionalが返るシチュエーション

# maxの返り値はOptional型
Streamのメソッドに[`max`](https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/Stream.html#max-java.util.Comparator-)(以下、`min`も同様)というものがある。一見、Streamの最大値をそのまま返すように見えるが、返り値の型は以下の例の通りOptionalである。

**コード**

“`java

List integerList = Arrays.asList(1, 2, 3);
Optional maxIntegerOpt = integerList
.stream()
.max(Integer::compareTo);

System.out.println(“maxIntegerOpt = ” + maxIntegerOpt);
“`
**実行結果**

“`
maxIntegerOpt = Opti

元記事を表示

gradleとmavenの人気の動向

#調査を始めたきっかけ
Mac版のVSCodeにJava Extension Packを入れることにしました。
これは、VSCodeでJavaを扱うために必要な単語補完やデバッガーなどの拡張機能をまとめてインストールできる拡張機能です。

この拡張機能にはmavenが入っていますが、gradleが入っていません。
最近では、androidの影響もあり、mavenよりもgradleの方が勢いがあり、流行っていると考えていたため、違和感を覚え、調査を始めたのがきっかけです。

#人気の動向
日本の直近12ヶ月の動向を、Google Trendで調べてみます。
![gradle-maven-jp-12m.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/370398/59e0cacf-0522-410d-d76c-28805a3ae981.png)

ほとんど差はありませんが、若干mavenの方が上のようです。
私はgradleの方が流行っていると考えていたので、少々驚きました。

次に、世界の直近12ヶ月の動向

元記事を表示

RustでJavaのClassファイルを読んでみた

この記事は[ZYYX Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zyyx)の22日目の記事です。

今回はRustでJavaのClassファイルを読むプログラムを作成したので(まだすべてのパターンに対応したわけではありませんが)そのプログラムの紹介をします。(N番煎じ感半端ないですが、自分のアウトプットの練習、めもなどもかねて記事としました)

## 実行環境

この記事では以下の環境で動作確認しています。

* OS: MacOS (Catalina 10.15.2)
* Java: adoptOpenJdk(11.0.5+10)
* Rust: rustc 1.39.0 (4560ea788 2019-11-04)

## Classファイルリーディング
### JavaのClassファイル

一般的に知られているように、Javaはコンパイラによってソースコードを中間言語に変換し、それをJava VMと呼ばれる仮想マシン上で実行することで実行されます。この中間言語はバイトコードなどと呼ばれており、jav

元記事を表示

SpringのAutowiredはコンストラクタに書く

# 概要
SpringでDIをする時使うAutowiredのアノテーションは使いやすいし便利ですよね!
しかし、使い方が複数あり、どの使い方がいいのか迷うところではあります。
私はよくコンストラクタで使うのですが、そうなった経緯を整理したいと思います。

# Autowiredを設定できる方法
ざっくりと復習。Autowiredの設定方法は三種類あります。

## フィールドインジェクション
フィールドに直接書くタイプの宣言方法です。

“`java
public class A {
@Autowired
private B b;
}
“`

## コンストラクタインジェクション
コンストラクタに書くタイプの宣言方法です。

“`java
public class A {
private final B b;

@Autowired
public A(B b) {
this.b = b;
}
}
“`

## セッターインジェクション
セッターに書くタイプの宣言方法です。

“`java
public clas

元記事を表示

アルゴリズム体操8

#Find Maximum Single Sell Profit (Similar to Max-Subarray)

##説明
毎日の株価(簡単にするための整数)を要素とした配列が渡されて、最大の利益を得るために売買価格を返すアルゴリズムを実装しましょう。
前提条件として、買うと行為が売る行為よりも必ず先に来ることにします。
つまり、もし株価が最小の要素が配列の最後にあるとしても売る価格がその後にないので、その要素は買う価格としては認められません。
単一の売買利益を最大化する必要があります。利益を上げることができない配列が渡された場合は、損失を最小限に抑えようとします。 以下の例では、最大の利益を上げるための売買の価格が黄色と緑で強調されています。二番目の例は損失を最小限にしています。
Screen Shot 2019-12-21 at 11.14.07.pngprotocol buffeer migration from 2.x to 3.x

# @java.lang.Deprecated public static final com.google.protobuf.Parser
-> `public static com.google.protobuf.Parser parser()` が下に生えてます

# @java.lang.Deprecated public static Type valueOf
-> `@deprecated Use {@link #forNumber(int)} instead.`

TBD

元記事を表示

[Java] Stream API 入門

#Stream API #とは
[こちら](https://qiita.com/xrdnk/items/7fcc349929685f029440)の記事の続きみたいなものです.

Stream API はDataをPipeLine形式で処理するためのAPIです.
Collection,配列,ファイルなどデータの集合体(Data Source)から,個々の要素を取り出して
これを「処理の流れ」(Stream)に引き渡すための仕組みを提供します.

Streamに対して関数操作を行った結果をStreamで返す「中間操作」と
処理結果をDataとして返す「終端操作」があります.

中間操作も終端操作もメソッド引数は関数型インターフェースを取るものが多いため,
ここでラムダ式の知識が利用していくとスマートということになります.
![Stream API.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156186/f44579d8-ebab-2013-b88a-1a6de6a1b3bd.png)

#Stream

元記事を表示

java 繰り返し処理

今日はjavaの繰り返し処理について書きます。

# 繰り返し文とは
一定の指示を与えた命令を繰り返す処理のこと

実行結果をこう出す場合

[1]
[2]
[3]
[4]
[5]

通常だと

“`java:通常処理
public class PrintFiveStars { |
public static void main (String[] args){ |
System.out.println(“[1]”);
System.out.println(“[2]”);
System.out.println(“[3]”);
System.out.println(“[4]”);
System.out.println(“[5]”);
}
}
“`

繰り返し構文を使用した場合
5行ほどで済みます。
これを応用すれば、100でも1000行でも
編集するだけで処理を行うことができます。

“`java:繰り返し処理

public class

元記事を表示

Python Javaでどうやったらマネタイズできるか戦略

#Python Javaでどうやったらお金になるか?
##フレームワークではなくて言語から勉強する。
PythonならPython JavaならJava
##プログラム作成の仕事を探す。
実務しながらの方がやはり伸びると思う。
テストではなくてプログラミングがある仕事を探す。
どっちが偉いってことはないけど違う仕事だと思う。
##Javaでマネタイズ
フレームワーク(Spring)やフロントエンド的な勉強やSQLなど(Linuxもあります)
周辺知識が多くて辛いがやればお金にはなると思うので心を込めてやろうと思う。
→ Springを中心にやってあとは深めていくみたいなやり方がいいかも。

##Pythonは
Flaskの公式見たり、ソース見たり
Flask + chabot
勉強
既存の物を使って研究してみるとか
→ IBM Watson等

Flask + APIとか
フレームワークも改造できたりするところまでいけたらと思うね。

元記事を表示

OTHERカテゴリの最新記事