エンターテイメント!!

遊戯王好きの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を使う人が多いな。
流行っているのだろうか?
ブログより短い内容を投稿するサービスっぽい。

Javaでコンパイル時に「エンコーディングwindows-31jにマップできません」が発生

きっかけ

Java Advent Calendarのサンプルコードを実行しようと思ったら、当該事象が発生したので、調べたことメモとして、記録を残す。

環境

バージョン: 1.52.0 (system setup)
コミット: 940b5f4bb5fa47866a54529ed759d95d09ee80be
日付: 2020-12-10T22:45:11.850Z
Electron: 9.3.5
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Windows_NT x64 10.0.18363
$ java -version
openjdk version "15.0.1" 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9-18)
OpenJDK 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)

ソース

import jdk.jfr.consumer.*;
import java.time.*;

public class Test {
  public static void main(String[] args) throws InterruptedException {
    try (var rs = new RecordingStream()) {
        // イベントの購読を登録
        rs.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1));
        rs.onEvent("jdk.CPULoad", event -> {
            System.out.println("jdk.CPULoad: " + event.getFloat("machineTotal"));
        });
        rs.startAsync();

        // サーバ的な処理
        long cnt = 0;
        while (true) {
            Thread.sleep(1000);
            System.out.println("本来はここでなんかサーバの処理: " + (cnt++));
        }
    }
  }
}

事象

$ javac Test.java 
Test.java:7: エラー: この文字(0x81)は、エンコーディングwindows-31jにマップできません
        // 繧、繝吶Φ繝医?ョ雉シ隱ュ繧堤匳骭イ
                  ^
Test.java:14: エラー: この文字(0x86)は、エンコーディングwindows-31jにマップできません
        // 繧オ繝シ繝千噪縺ェ蜃ヲ逅?
                       ^
Test.java:18: エラー: この文字(0x81)は、エンコーディングwindows-31jにマップできません
            System.out.println("譛ャ譚・縺ッ縺薙%縺ァ縺ェ繧薙°繧オ繝シ繝舌?ョ蜃ヲ逅?: " + (cnt++));
                                                      ^
Test.java:18: エラー: この文字(0x86)は、エンコーディングwindows-31jにマップできません
            System.out.println("譛ャ譚・縺ッ縺薙%縺ァ縺ェ繧薙°繧オ繝シ繝舌?ョ蜃ヲ逅?: " + (cnt++));
                                                           ^
エラー4個

エンコードの問題ってのはすぐに分かったけど、対応方法がぱっと思いつかなかった。

解決方法

コンパイル時にエンコードを指定する。

javac -encoding UTF-8 Scores.java

勝手にエンコード判定してコンパイルしてくれないものだろうか。。。

所感

こういうの、かなり手間だなとは思った。

参考サイト

Java コンパイルエラー エンコーディングwindows-31jにマップできません - Qiita

2020/12/07週 気づきと振り返り 40分500円の価値

業務こなしての問題・気づき

設計書にどこまで書くのか?

既存の設計書にない箇所が修正対象になっているのだが、どうすればよいのだろうか?
書こうとすると、いろんなロジックが入ってるから、芋づる式に設計書にない箇所をどんどん書かないといけない気がして、ものすごく億劫なのだが。。。

フル仮想環境がいいわけではない

PC全部仮想化してあって、現場のPCはリモートアクセス用だけなのだが、いかんせん、開発しようとすると重すぎて辛い。。。
何が遅くなってるのかよくわからんのが辛いな。
少なくとも、メモリ6GBは、アカンと思うんだよね。。。
家のPCでも16GBあるというのに、開発PCがそれ以下ってのは、辞めてほしいわ。。。

アクセスルート画面の実装は辛い

いろんな画面への遷移がある画面の開発、マジで辛い。。。
IF周りでいろんな実装者と調整したりするのが面倒くさくてしょうがない。
遷移先の実装まで俺が考えさせられるようになったのも、辛い。。。

こういう画面は、マジで余裕が欲しい。
余裕がないと、いろんなことが積み重なって、焦りと辛みが蓄積するんだよね。。。

その他

茶店での勉強

バカにしていた口だが、いざやってみると、たしかに、集中してできた気がする。
暇つぶし道具が手元にない環境になれば、自然と勉強に専念できるとは思った。
ただ、集中力が1時間も持たないんだよね。。。
40分位で、疲れる。
40分のために500円払えますか?が判断基準だと思う。
どうしても集中したいときは、ものすごい安い買い物だとは思う。

学校の授業も、1時間ちかい時間を椅子に座ったままって、無理があると思うんだよね。。。
1コマ40分くらいにするべきだと思う。

electron実行時に`'attachShadow' on 'Element': This element does not support attachShadow`

発生に至った経緯

electronで、canvas-datagridを使おうとしていたら発生した。

発生時の環境

$ electron -v
v1.4.13

発生の原因

electronのベースであるchromiumeがshadow domをサポートしているバージョンではなかったので、発生していた。

canvas-datagridがshadow domを利用しているらしい。

対応

electronのバージョンを上げた。

electron -v
v11.0.2

そうとう古いバージョンのやつを使ってたんだな。。。

雑記

ちゃんとバージョンアップに追随してないと、余計な調査コストがかかるな~って思った。

2020/11/16週 気づきと振り返り 普通に実装してたら出会わないエラーばかりに合う1週間だった

業務こなしての問題・気づき

Java

streamを使えない現場

使いたくても使えない現場ってのがあるんだなって、思いました。 配列でデータが独立して保持してたりすると、使うのが難しい。

データ構造の重要性

今の現場が、画面の項目1つ1つが独立しており、グルーピングができていない。。。
例を上げると、以下みたいな感じ

private String[] name = null;
private String[] birthDay = null;

本来は、nameとbirthDay はセットで設定してくるので、入れ物オブジェクト作りたいのだが、配列ってのが、また厄介さを増してる。
そのため、for文回すにしても、いろいろと面倒。
どの項目とどの項目がセットなんだっけ?って毎回考える。
配列の入れ方を間違っていると、かなり追いづらい。

compareToの覚え方

以下のサイトが参考になった。

compareTo の戻り値仕様はリファレンスを見に行かなくても余裕 - Qiita

毎回、どっちがマイナスだっけ?って思ってたけど、一覧化してあると分かりやすい。
右側にゼロを置けば、等符号の向きが同じになるってのが、とても分かりやすかった。

デバックしていて、たまに混乱するから、こういう簡単な覚え方は、知っておいて損はないと思った。
コード規約に入れたいレベルで納得した。

メソッドサイズの制限

自動生成したコードのメソッドのラインが、65535バイトを超えてエラーになった。
初めてこんなエラーを見た気がする。。。

普通に実装してたら、そんなエラーに鉢合わせしないよね。。。

java — 「メソッドのコードが65535バイトの制限を超えています」の修正方法

不要な自動生成を削除するようにもっていくしかないか。。。

環境

リモートワーク

リモートワークやってるけど、若干不便なことがあった。

実装詰まったときに、軽いレビューをしてもらいたいことがあるのだが、わざわざ画面共有したり、通話環境つなげたりするのが面倒くさい。。。
簡単に相手と通話できる環境ができると楽なのだが、相手と通信確立させたりするのが面倒だと感じた。

あと、スケジュールが遅れると、かなり焦る。
サビ残するしかの思考に陥りそうになるんだよね。。。

愚痴

普段であれば、絶対にかかないようなコードを書くことを強いられている。
もっと良くなる方法を考えてると、スケジュールが間に合わないし、やることが多くありすぎて、頭のリソースが枯渇する。
結局、悪い習慣をそのまま書かざるを得ない状況にあるのは、良くないと思いつつも、やらねばならないプレッシャーが、結構キツイ。。。

自分の能力に疑問を持つようになり、悩むことが多いような気がする。
悩んでいる時間は無駄だとは思っているが、そう簡単に割り切れないんだよね。。。
悲観主義的な考えが、強くなった気がする。
スケジュール遅れや、何やっても上手くいかないのが、よりいっそう、そう思わせちゃうんだよね。。。
とりあえず、オンスケに戻せれば、少しは緩和できそうだが、そこまで持つかな。。。

あと、仕事で発破をかけるってことをやるやつが居ると思うが、やり方間違えると、人を追い詰めるだけだからね?
責任感が強ければ、下手したら自分を追い込んでダメになるケースもある気がする。
リーダー的立ち位置の人は、発破をかければいいと思ってるやつがいるけど、かけ方もよく考えるべきだと思う。

プログラミングの基本は、グルーピングだなって思いました。
データを扱いやすい単位にまとめられない場合、繰り返しや入出力でものすごい苦労する。

JJUG CCC 2020 Fall 参加報告

各種リンク

doorkeeper

【オンライン】 JJUG CCC 2020 Fall - 日本Javaユーザーグループ/Japan Java User Group | Doorkeeper

感想・まとメモ

jq を使いこなして、開発効率アップ

まとメモ

  • フロントとバックエンド推移

    • 前まで→サーバーで動的にHTML作成
    • 今→UIとサーバー処理で役割分担。両者の更新サイクルが違う
      1. データの受け渡しにJsonが普及
      2. jsonを読むツールが必要になった
  • jqのメリット

感想

  • 動画は、すでに撮影済みのやつを流してる?
  • 途中から、ゆっくり実況みたいな感じのやつが流れてたな。。。
  • データのアクセスは、javascriptチックでできる
    • jqが描かれてる言語は、javascriptなのかな?
  • フィルター周りから、ややこしくい。。。
    • 実際に使わないと、所見で理解は難しい。
    • あとで、調査
  • コメントがつけられる活用事例は、ちょっと厳しいな。。。
  • jsonの編集やスクリプトによる生成は、jqに慣れてからじゃないと難しそうな気がする。
  • 見るツールとして利用することしか頭になかったが、シェルで編集に使ったりもできるのが、新しい発見だった。

雑記

たまに、jsonビュアーとして使っていたけど、深い階層を読むためのツールが、まだ見つけられてない。
階層が分からなくなることが多い。vscodeで見てたりしてたけど、キツかった。jq使っても解決はしてない。使い方の問題かも知れないが。。。
jsonの深い層でも、迷わずに見れるやつはないだろうか?
音認結果や字句解析結果がjsonで帰ってくるのだが、似たような結果がいくつもあるので、階層を見間違えると、間違った方向でプログラミングしちゃって、手戻りあったりするのが辛かった。

結果整合性ができない開発者のドメインイベント活用例

感想

ドメイン駆動の話は、小難しい感じがどうしてもしてしまう。
個人的な理解としては、コードにストーリーをもたせる認識でいる。
やることに視点を置くのではなく、話の流れができるようにコーディングするのが、ドメイン駆動だと思ってる。
イベントは、タラレバのケースを書くだけの認識。

途中離脱

パフォーマンスのトラブルシュート入門

途中参加

まとメモ

  • 計測結果の分析
    • 結果の可視化
    • 正常と異常時の比較
    • 情報が足りなかったら、再計測

感想

再計測の判断が難しい気がする。
情報が足りないかどうかは、自分では判断できなかった。
パフォーマンス分析は、何回かしたことがあるが、可視化が面倒なイメージ。
だから、そういう可視化のツールが流行ってるんだと思う。

分析方法は、ログを正規表現で集計してやるってのが、今も変わらず主流か。
進化したのは、集計したものの表現方法かな?
どうやって見せて分析を楽にするかが焦点になるのだろうな。

分析するために、統計の知識とかあったほうが良いのだろうか?

Project Reactor でノン・ブロッキング、非同期処理を実装してみよう !!

まとメモ

  • mono→リソース1つに対して使う
  • flux→複数リソースを扱う場合に使う

感想

Mono?Flux?聞いたことあるけど、よくわかってない。

Reactive Streamsは実装じゃなくて仕様ね。

publisherは、デザインパターンのobserverみたいなやつだっけ?
前にreactiveについて調査したとき、そんな感じがした。
reactiveは、処理の方式を語ってるものが多い気がする。
最初、実装のことだと思っていたが、概念の話って理解するのに、時間がかかった記憶がある。

やってることは、効率的にリソース使いましょうねって感じかな?
ノンブロッキング処理は、リソースの専有期間を極力少なくしましょうって理解でいる。
クラウドでリソース共有することが多くなったから、こういうのが出てきたと思う。

pub/subは、pythonとかJSとかで、よく見かけるワードだね。

Java開発で感じたコードレビューと単体テストの体験談

ツール紹介はスルー

メンバー編の感想

実装者一人の時点で危険な香りが。。。
あぁ、数字だけみて、現状が理解できてないパターンだな。
人月は、増員したら解決というわけではない。増員したときのコストを度外視するのは、炎上でよくあるパターンだと思う。
増員した全員が、同じスキルで同じ知識だったら、通用するかも知れないが、無理だろ。。。
遅延が発生したときの責任が、どこに行くんだろうな。。。
こういう場合、だいたい現場の人が過剰に責任感じると思うんだよね。。。

これは、ビッグバンテストになる流れだな。。。

最終的に、訴訟問題になってそう。。。

リーダー編の感想

これは、メンバーのときで感じたことを、リーダーでもやりそうだな。。。

嫌われる勇気が足りなかったわけか。。。
断る勇気は、この業界では重要。

規約は、リーダーが作らないとダメなのでは?
レビューする人が作らないと厳しい気がする。
やっぱり、規約作った人がレビューするよね。

レビュー軽減は、findbugscheckstyle使うことが多い気がする。
マクロで対応は、そうとう正規表現に詳しくないとできない気がする。

自分は、メソッド名を付ける場合、codicを参考にすることが多い。
自分がいいと思うものより、一般的な命名を優先する。
最優先は、プロジェクトの語録だけど、それ以外ならcodic。
codicになければ、自分の経験則を信じるようにしている。
今の現場、外部とネットワークがつながらないから調べられないのがキツイんだよね。。。
ここでは、その話が出てこないな。。。
さすがに、ネット使って調査できる環境か?

フォーマットにこだわるのは、自動生成が目的だと思うけど、フォーマットを守ることが目的化していることがたまにある。
一番きついのは、フォーマットすらない記述箇所。
緩いくせに、レビューでフォーマットのことを指摘しだしてくる現場だったら、最悪だと思う。

規約は、なるべく無くしたほうがいい。
できれば、規約外になる実装は動かないようなFWならなお良い。
規約違反は、気づくタイミングをなるべく早くする処置が必要だと思う。

問題の先送りしないには、共感する。
プラスで、問題を早期発見する仕組みが必要だと思う。
問題に気づいた頃には、対処方法が限定されてることが多々あると思うんだよね。
時間の余裕があるときに気づける工夫が必要だと思う。

Head toward Java 15 and Java 16

まとメモ

  • Incubator→試験モジュール
  • Preview→試験機能
  • Standard→標準機能

Incubatorは、知らんかった。
だいたい、見るのは、PreviewかStandard

Java15

自分が調べた結果のリンク張っておく

suzaku-tec.hatenadiary.jp

JEP375

バインディングしてる値は、書き換え不可か。
調査したときは、概要把握だけだったから、そこまで見てなかったな。。。
よくよく考えたら、書き換えできたら不味いよね。

過去の調査リンクを張っておく

suzaku-tec.hatenadiary.jp

JEP384

DTOとかに利用するのが多いかもね。 Reflectionでも変更不可か。。。
jUnitとかで自動テストする際は、作りを工夫しないと苦労しそうな気がする。

JEP360

なるほどね、網羅性の確認がコンパイル時点でわかるわけか。
実装のメリットばかり気にしていたから、気づけなかったわ。。。

Java16

JEP381

ベクトル演算向けっぽいから、内容はよく分からなかったな。。。
科学計算とかで使うのだろうか?

Java 開発者のためのバイナリ管理入門

まとメモ

  • BinOps→バイナリ中心のCI/CDの自動化

感想

バイナリ管理は、バイナリ用のVCSを立てれば良いのではなかろうか?
プレーンテキストと混ぜるからややこしくなる気がする。

ブランチ管理をやってくれるって理解でいい?
使ってみないと、自分の知識レベルだと、理解が厳しい。。。

マイクロサービスアーキテクチャをあきらめないための、モノリスで始めるアーキテクチャテスト

感想

初期からマイクロサービスは無理だと思う。
いきなりマイクロで作ると、工数が多くなり、破綻のリスクがあると思う。
まずは、リリースを安定させることが重要な気がする。

ルールは、作るより保つほうが難しい。
ここは、やはり、同じか。。。

依存関係のテストって、どうやってやるんだ?
何を見てテストしてるんだろう?

ArchUnitは、気になった。

テストが失敗したときは、どうするんだろう?
テスト失敗=違反or設計が間違ってたのどちらかだと思うが、開発者レベルだと難しい気がするが、誰かにアラート上げるのかな?

FW作ってるところは、ArchUnit提供して欲しいなと思った。

TODO

  • ArchUnit試す

全体感想

昼休憩なしでぶっ続けなんだな。。。
ちゃんとタイムテーブル見ておけば良かった。
昼飯を事前に買ってくれば良かった。。。

オンラインになって、人数制限がないから、人気のセッションがちゃんと見れるのは良かった。
オフラインだと、どうしても部屋の制約がかかってしまうからな。。。
今回は、見たいものがちゃんと見れた。 あと、複数セッションを同時に見れるのは、新鮮だった。
僕は、聖徳太子ではないので、複数を同時に見るのは無理だったが。。。
あとは、他人の目がないので、飲食しながら見れたり、ながら見ができるのは気楽だった。
あと、セッションを途中で抜けたりできるのも良かった。
オフラインだと、無言の圧力で抜けにくいんだよね。。
セッションを拝聴して、なんか思ってたのと違った場合に、気軽に抜けられるのは良かった。

音声が乱れるときがたまにあった。
字幕付きの映像だとなお良かった気がする。

そういえば、IoTとかに関するセッションがなくなったな。
流行期は去ったのだろう。
今は、なんだろう?
パフォーマンス系が多かった印象がある。
今年は、インフラ周りが多いなって思った。
役割分担が進んだ結果なのかも知れない。

2020/10/19週 気づきと振り返り 文字見て頭痛が起きるのは初めて

業務こなしての問題・気づき

設計書関連

項番

案件対応で修正する際、項番ズレるの、どうしたらいいの?

すごい見落とすのがつらい。。。
視力落とす訓練をしているようだ。

ID管理

極力やめたほうがいい。
ID管理しだすと、ドキュメント量が増えるし、採番管理とかの必要性が出てきたり、簡易ミスが発生しやすかったりする。

意味のない文字や数字は、ものすごい間違いやすい。
現在進行系で痛感してるけど、大量に見てると、頭が痛くなるレベルで脳に負荷がかかってると思うんだよね。

ID管理のコストは、高いことを認識するべきだと思う。

その他

なぜなぜ分析

問題を発生した当人へのヒアリングは、しないほうがいいのではないかと感じる。
普通に考えたら、詰問してるようにしか見えないんだよね。。。
「責めてるんじゃない」って言われても、外部から見ると、詰問しているようにしか見えない。

当人も、問題を起こしたくて起こしたわけではないと思うんだよね。
実体験だが、なぜ失敗したか聞かれても、「分からねぇよ」ぐらいしか回答がない。
それを正直に言うとキレられるし、どうしろって言うのだろうか。。。
今のところ、適当にそれらしい理由つけて回答するようにしている。

トヨタのモノマネを安直にしようとした結果、当人を追い詰めてるような気がしてならない。
組織文化は、簡単に根付くものではないので、安易に他社でやっていることを真似るのは、ダメだと思う。

まずは、実態を正しく把握するほうが優先な気がする。
それができていないのに、他社の施策を真似ても、失敗するでしょうね。。。

はじめての動画投稿

ゲームのゆっくり実況を作ったのだが、なかなか面白いね。
Youtuber目指す子どもが一定数いるのが分かる気がする。

編集、構成を考えるのが、個人的に楽しかった。
現実が上手くいかないから、こういうので表現するのが楽しいと感じたのかも知れない。

自分で作った動画見て、自分で笑っているのを自覚したのだが、結構なナルシストではないかと思い、恐怖を覚えた。。。

作っていた思ったが、マシンパワーが足りない気がする。。。
Core i5だからだろうか?動画の作成に結構、時間がかかった。
7・8年前くらいに買ったやつで、メモリは増強したのだが、CPUは変えてないんだよね。
SSDも着けたいし、USBのポート数増やしたいとかもある。
冬のボーナスで、少し改造してみようかな?

インポスター症候群

インポスター症候群という自覚はしたのだが、なかなか立ち直るのが難しい。。。

どうしても、小さな失敗を過剰に後悔してしまう。
分かっていても、なかなか変えられない。
心の持ちようだけで変えるのは、無理があるのかもな。。。
やっぱり、環境を変えるしかないのだろうか?
今の御時世、なかなか現場は変えられないんだよね。。。
今年いっぱいで一区切り付くから、それまで持つかだな。。。

調べてまとめた内容のページへのリンクを載せておく。
同じ悩みを抱えてる人の手助けができればいいなと思う。

suzaku-tec.hatenadiary.jp