エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Java Advent Calendar 2020 まとメモ

Advent Calendar

Java Advent Calendar 2020 - Qiita

きっかけ

周囲のエンジニアに置いていかれないよう、投稿されてる内容を把握できれば、ある程度やっていけるはず。
だから、書いてある内容には一通り目を通して、知らないことを知るようにしていこうと思い、書くに至った。

感想

Jakarta EEをはじめよう!

Jakarta EEをはじめよう! - Qiita

パット見た感じ、Springに近い印象を受けた。
web系の開発が、Spring系から入ったから、そう見えるのかもしれない。

JSFは、業務で使ったことが1度ある。
使用感的には、JSPと似ていた印象。
HTMLではないので、webデザイナーと共同開発しにくい印象がある。
使ってたときは、デザインの取り込みが苦しかった。

Java8の日時APIにおける期間の重複判定

Java8の日時APIにおける期間の重複判定 - Qiita

コメントにあった、ThreeTen Extraのほうが気になってしまった。。。
ちょっと後で見てみる。

Javaラムダ式やStream APIの可読性を向上させるテクニック

Javaのラムダ式やStream APIの可読性を向上させるテクニック - Qiita

ロジックを入れないのは、同意。
ロジック入れると、それってfor文で書くのと変わらなくなるからな。
streamを使うのなら、きちんとメソッド使って処理を意味あるまとまりでまとめる必要がある。

static import は、なるほどと思った。
streamを使うと、終端処理でCollectors をよく使うから、static import使うのはありかもしれない。
怖いのは名前衝突くらいかな?設計で回避できそうな気もする。

関数型インタフェースを作るってのは、少し敷居が高いような気がする。
JavaScriptだと違和感なく作れるのだが、Javaだと、まだ戸惑うことが多い。
言語的な特性から来ている可能性もありそう。

StringUtils#containsAnyメソッドの注意

StringUtils#containsAnyメソッドの注意 - Qiita

apacheのStringUtilsは、ごくたまに使う。
プライベートで使ったことはないが、業務で利用するくらい。

だいたい、足りないと思ったら、Util落とすより自作しちゃうんだよね。。。

Proxy環境下のSpring Securityを攻略する

Proxy環境下のSpring Securityを攻略する - Qiita

認証系とかやってると、プロキシ周りで詰まることってあるよね。。。
Javaではないが、XSS回避のためにプロキシ自作するってなったことがあった。
あそこらへんは、また作れる気がしない。。。

通信の、特にセキュリティ絡みは、非常に知識を要するのが辛いんだ。。。

ImageIOでJpegの品質を上げる

coneta.jp

デフォルトの品質レベルが低いのだろうか?
指定してあげないと、低レベルで出力しているような気がする。。。

念のためもう一度トルコ語(等)で起こる問題について整理する

念のためもう一度トルコ語(等)で起こる問題について整理する - Qiita

かなりややこしい問題だな。。。
文字コードの問題は、表面化することはほとんどないけど、表面化するとハマりそう。。。

教訓としては、文字コードUTF-8安定って理解でOK?

カウント処理をしたい時

Coneta

文字の出現数カウントの実装ね。
Javaは、こういうのがやりにくい印象がある。
pythonは、それが楽にできるから、分析系で多用されているような気がする。
データ操作の問題かもしれない。

InputStreamからStringへの変換

Coneta

この実装、たまに使う。
読み込んだやつをどこかに入れてとか実装してると、長くなるし、バグ混入も増えるから、なるべくこういう実装をするようにはしてる。

Bukkitプラグイン開発 - コマンド処理、最適化編

Bukkitプラグイン開発 - コマンド処理、最適化編 - Qiita

コマンドパターンの説明ぽかったかな?
Bukkitって何?って思って調べたら、マイクラのサーバーみたいだね。
javaでコマンドパターンはあんまり見ないけど、実装したら、そうなるよね。

クラス図があると、理解はしやすかったかなと思う。

SpringBootとQuickFIX/Jで爆速でFIXサーバを実装する話 - 今日からあなたもオンラインブローカー?

SpringBootとQuickFIX/Jで爆速でFIXサーバを実装する話 - 今日からあなたもオンラインブローカー? - Qiita

reactiveプログラミングみたいなものだろうか?
使われてる技術は理解したが、FXは怖くて手が出せんな。。。

Javaの例外処理入門

Javaの例外処理入門 - Qiita

内容自体は、それほど目新しいものではなかったので、サラッと読んで終わり。

例外の話になると、毎回どっちだったか分からなくなるのが、RuntimeExceptionが検査例外か非検査例外かという個人的な悩みがある。
いい覚え方ないだろうか?
Java以外は、JSをよく触るのだが、JSは、非検査例外ばかりだから、あんまり意識しないけど、Javaだとどっちだったか、たまに分からなくなる。

Javaのオートボクシングでの注意

Coneta

キャッシュされない値同士の比較になるから、"=="での結果が変わるって認識であってるかな?
言語仕様や、他サイトの説明見てると、そのように受け取った。

そもそも、オブジェクト同士を比較するときに"=="を使うのは、危険だね。
アンボクシングされるってのがあっても、同じということだな。

Javaのプロが避ける「波かっこ」の駄目な使い方は規約によるので規約を読んでみよう

Javaのプロが避ける「波かっこ」の駄目な使い方は規約によるので規約を読んでみよう - Qiita

その人が育ってきた環境によるかな?ってのが個人的な感想。
プロジェクトに依存するのではなかろうかと思う。
個人的には、波括弧始まりの行ができないようにするのが無難だとは思うが。。。

コーディング規約次第ですってのが、正直なところ。
下っ端エンジニアなんで、規約には逆らえないのです。
規約には従うが、自分が作る立場なら、なるべく一般的な規約になるようにする。

あと、脱線するけど、規約を守れって散々言われたのだが、規約が守られるような土壌を作れよって思う。
レビューで散々指摘されたけど、記憶を頼りに規約を守るのは、無理がある。
覚えたって、その現場でしか使えないじゃんって思っているので、覚える気はサラサラない。
lintなりcodestyleなりで警告出してくれないと、個人の記憶力ベースの実装になり、絶対にむらが出ると思うんだよね。
それで生産性が~とか言い出したら、マジでキレるかもしれない。

SPA(Vue.js) + REST API構成でSpring Secirityで認証まで作った時に気を付けることや大事なこと

SPA(Vue.js) + REST API構成でSpring Secirityで認証まで作った時に気を付けることや大事なこと - Qiita

認証って聞くと、発狂しそうになる病なので、読むのが辛かった。。。
CORS対策が必須になるのは、どこも同じだね。
自分は、JSで作ってたので、JSでCORS対策していたが、初めてやったときはプロキシ用の実装組んだりしたりして、かなり辛かった。
SPAが難しいのは、そういった対策をせねばならないところにあるのではなかろうかと思う。

【業務系】世の中に逆行するJavaのWebアプリでの画面フレームワーク選定

【業務系】世の中に逆行するJavaのWebアプリでの画面フレームワーク選定 - Qiita

JSFは使ったことがあるが、JSPと対して変わらない。
画面作るときに、かなり苦労するイメージしかない。
デザイナーの仕事を殺す可能性が高いので、個人的にはあまり使いたくはない。

Vaadin/CUBA Platformも見たが、やはり、フロントサイドはHTML/CSS+JSが最適だとは思う。

Javaコレクション操作の基礎

Javaコレクション操作の基礎

データ構造を理解すれば、操作はある程度直感的に分かるんじゃないのかなってのが、自分の持論。
基本的に、map/set/listの構造を抑えておけば、だいたいの業務で通用する実装はかけると思う。
やり方は、書類整理とかと一緒だから、構造さえ理解できれば、できる操作は直感的に分かるものだと信じたい。

pythonとかは、データ構造の種類が多い印象がある。
JavaScriptは、ゆるいデータ構造を使っている印象。

Java の + 演算子による文字列結合は、どのように処理されているのか

Java の + 演算子による文字列結合は、どのように処理されているのか - Qiita

裏でそんなことしてるのかぁってのが正直な感想。
今まで、あまり深くは考えなかったが、読んでいて、学生の頃にCの勉強したときに文字列を文字の配列としているってのを思い出した。
その感覚で、最終的なデータとしての保持はバイトってのは、なんとなく腑には落ちる。

裏で結構な量の処理をしているんだなって思った。 今度から、Javaで文字操作するときは、「Javaさん、ありがとう」ってお礼言うようにしようと思います。

null「俺が俺で無くなってゆく」

null「俺が俺で無くなってゆく」 - Qiita

何か厨二臭いタイトルだな。。。

ちなみに、自分は緑茶派です。
コーヒーは、カフェイン量が多すぎて、下痢になったり頭痛がすることが多いので、あんまり飲まない。

nullの解釈仕方って感じの記事だった。
nullで揉めるのは、どっちかと言うとJavaScriptで起きやすい印象。
undefindeとnullで論争が起きた現場を、何回か見たからね。。。

Java8 Optionalの逆引きレシピ

Java8 Optionalの逆引きレシピ - Qiita

Optionalは、便利だとは思うけど、なかなか手が出せてない。
Optional#getは、俺も使わない。
なぜなら、Optionalを使ってるメリットが無くなってしまうから。
廃止にしてもいいのではないかとすら思ってる。

ほとんどの場合は、ifPresentを使うような気がする。

Optionalは使わない方がいいケースが参考になった。
値がないことが他の表現で可能な場合は、そちらに寄せたほうが結果的に都合がいいことが多いのだろう。

JFRとモニタリングの融合? JEP 349: JFR Event Streamingを触ってみる

JFRとモニタリングの融合? JEP 349: JFR Event Streamingを触ってみる

監視の作業をあまりしてきたことがないので、何がメリットなのか、あまり理解できていない。

段階的に理解する Dependency Injection

段階的に理解する Dependency Injection - Qiita

ServiceLocaterは、初めて効いた気がする。コンポーネントスキャンに使われているのだろうか?
DIに至るまでの依存との戦いを見ているような感じだった。。。
DIと簡単に言うには、こういった経緯を知らないといけないのかもしれない。
個人でDIと合う前に開発していたときは、こういう問題をレベル4程度のことまでは考えていた気がする。

VSCodeで作るJava開発環境&Spring Bootアプリケーション入門

VSCodeで作るJava開発環境&Spring Bootアプリケーション入門 - Qiita

自分も、inteliJかeclipseを使っていたが、最近は、ちょっとしたコードを書く場合、vscodeで書くことが多い。
mavenやgradleを利用する場合は、inteliJとか使うんだろうけど、簡単なプログラムであれば、vscodeでやる。
IDEは、たしかに便利だが、早期ビルドに対応しきれていない場合、テキストエディタでやるほうが便利な場合もある。
大規模開発するならIDE使うけど、ちょっとしたことをやるのなら、案外vscodeでも十分なのは、Javaの早期ビルドを試すときに使ってて思う。

RESTfulなメール送信サービス+クライアントを作ってみよう

RESTfulなメール送信サービス+クライアントを作ってみよう - Qiita

J-Mailは、使ったことないな。
個人の開発だと、メールを利用する機会がめったに無い。
存在自体は知っているんだが、利用するタイミングがない。
メール送る相手が居ないのが、最大のネックだとは思ってる。

TODO

  • ThreeTen Extraを調べる

全体感想

Coneta.jpを使う人が多いな。
流行っているのだろうか?
ブログより短い内容を投稿するサービスっぽい。