エンターテイメント!!

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

2020/03/16週 気づきと振り返り

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

Swiftのキャスト

やたらとキャスト書くことがあるのだが、実装が間違っているのだろうか?
画面遷移で値を渡したいときとか、UITableView使うときとかに必ず書くような気が。。。

Javaでキャスト書くと、かなり違和感を覚えるので、Swiftでもあまり書きたくはない。
それとも、知らないだけでキャストを回避できるやり方があるのだろうか?

雑記

JavaのLTS

3バージョン毎かと思ってたが、正しくは6バージョン毎だったらしい。。。

最後のLTSがJava11だったので、次回のLTSは、Java17ということになる。

ずっと、3バージョン毎かと思ってた。。。
どこかで聞き間違えたのかも知れない。。。

トイレットペーパー

みんな買いすぎだろ。。。
みんな、超快便なのだろうか?
1年かかっても、トイレットペーパーのセットが消費できないのだが、俺が異様なのだろうか?

nedbのビュアーを作った

きっかけ

electron使ってnedbでデータを永続化しているのだが、現在のnedbの状態を見るのが面倒になったので作った。

github

GitHub - suzaku-tec/nedb-viewer

やれること

nedbのファイルを参照して、表を表示するだけ。

最終的には、登録・削除・更新ができるようにしたい。

使ってるもの

electronを使って作った。

画面表示には、以前に調査したことのあるtabulatorを使った。
tabulatorの使用方法が変わっていたので、若干手間取った。

悩んだこと

nedbがrendererプロセスからだと読み込めないため、かなり悩んだ。
mainプロセスで読み込んで、rendererに渡すように変えたら、すんなり動いた。。。
そういえば、rendererプロセスからだとindexdbの方を見るらしいみたいな記事を見た気がする。。。
振り返ると、悩んでたのがアホらしく感じる。。。。

作ってみての感想

electronのmain/rendererのプロセスの違いがよく分かってない。

デスクトップアプリ作ろうと考えると、どうしてもelectron一択になってしまう。
得意なJavaで作れればいいのだけれど、JavaFXいろいろと準備が大変だから、手っ取り早いelectron+jsを選んでしまう。

electronやってると、cssとかでデザインを凝りたくなる衝動がある。
だけど、それをやると、真にやりたいことが厳かになるな~って感じた。

jsを覚えたのは、かなりメリットがあったなと感じる。

2020/03/02週 気づきと振り返り

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

なし

コロナ対策のため、自宅待機命令が出たため、一週間、ほぼ外出してない。
家で、ほとんどポケモンのランクマッチしてた。

個人的に気になったことの調査

electronでnedb

rendererプロセスでは、dbファイルの読み込みはできない。
なぜなのかは、不明。

これに、かなり悩まされた。。。

雑記

ポケモンのランクマ

ポケモンのランクマッチは、シングルはすぐにマスターボール級に上がれたのだが、ダブルバトルは、かなり苦戦する。
スーパーボール級をウロチョロしてた。
前期使ってたキョダイマックスリザードンのキョダイゴクエンの固定ダメージで、ジリジリ削っていく構成を使ったが、なかなか勝てない。
勝率は3割くらい。

砂パのバンギラスがキツイ。。。
晴らしても、ダイソウゲンで吹っ飛ばせないからな。。。
バンギラス対面は、ちゃんと読んでローブシンとか当てないと無理。
一撃で倒せないと、弱点保険でズタズタにされる。
もう、トラウマだよ、バンギラスドサイドンの弱点保険は。

あとは、お前も岩技持ってるんかい!って感じのやつにダイロック決められてワンパン、ダイサンダー連打でかなりキツイ。
アイアントが岩技持っているとは思わなかったわ。。。
自分が使ってる技構成で考えてしまうのが、いけないのかもな。。。
ダブルバトルだと、いわなだれが結構強いから、誰が使えるのか把握してないと、リザードンがあっさりやられる。

あと、アシレーヌもツラい。
あいつの夢特性は、卑怯としか思えない。
ハイパーボイスが水技になるせいで、リザードンのHPがごっそり削られたのを最初見て、ハァ?ってなった。
リザードンと組ませてるヤミラミのサイドチェンジで、リザードンへの直撃をかわせないのも痛い。
アシマリ夢特性が欲しいのだが、なかなか手に入らないんだよね。。。
ニャビー夢特性は、かなり出回ってるけど、アシマリは見たことない。
でも、夢特性じゃなくてもアシレーヌは、かなり強い。
自分は、リザードンの後詰めとして、めいそうで積んで残りを一掃するような構築にしてる。

P5Sやろうとも思ってたが、剣盾ばっかりやってしまう。

家の中で

家の外に出たのは、食材買う以外では、ほとんど出なかったな。。。
家で豚汁を何回か作った。
豚汁作るんだけど、なんか違うな~と思うのだが、だしをきちんと取ってないのがいけないのだろうか?
不味くはないのだが、もっと美味い豚汁を食ったことがあるので、どうやって作ってるのかが気になる。
水が悪いのかな?
東京の水は、不味い。
飲めないわけではないが、なんというか、薬品っぽい味がする。
新潟に居た頃の水道水と比べると、かなり違う。

外食はあまりしないけど、新潟の飲食店と東京の飲食店のレベルも、かなり違う気がする。
新潟の飲食店だと、東京の美味いとされる飲食店レベルが、ゴロゴロある。

新潟は、観光するところはまったくないけど、飲食店のレベルの高さは認めざるを得ない。

【読書ノート】やさしく学べるWeb Components

まとめメモ

Web Componentsとは

基本概念

Web Componentsとは、アプリ内でよく使うコンポーネントを、独自定義したHTMLを使っていつでも呼び出せる技術
HTML/CSS/JavaScriptを含めてコンポーネント化するため、独立したスコープを持ちつつ、再利用性を高めている。

構成技術

  • Custom Elements
    • 独自DOM要素の仕様
  • Shadow DOM
    • スタイルとマークアップの仕様
    • 通常の子要素と分離されたDOMツリー(Shadowツリー)が作成される
    • 利用者は、中身の詳細を知る必要がなく、提供される機能だけ理解すればいい
  • HTML Template
    • DOMのテンプレート宣言の仕様
    • ページ読み込み時には使用されず、JavaScriptを利用してインスタンス化されてドキュメントに挿入される
    • template要素で囲むことでテンプレートを宣言する
    • アクティベートされるまでは、描画・スクリプト実行・画像ロードなどはされない
    • body, frameset, head, span属性を持たないcolgroupに設置できる

HTML Importsは、廃止された。
代替仕様は策定中

感想

2章以降は、実行例だったので、知識としては1章でだいたいは掴めた。
仮想DOMとか、web系の知識で追いつけてない箇所があったけど、大まかな概要は掴めたかな?という印象。
詳しくやるなら、実行例を手元で動かしながらって感じだろうか?

Polymerは、早いとこキャッチアップしておきたいと思う。

2020/02/17週 気づきと振り返り

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

git のブランチ切り替えでやらかしちゃった。。。

stashせずにブランチを切り替えてしまった。。。

死にたい。。。

実装し直したけど、流石に一回目よりは早く実装できたな。

雑記

ブログ書くのがのびのびになってしまった。。。
家に変えると、ポケモンのランクマを速攻でやってしまうので、書くの忘れる。

最近、マスクがないのがキツイ。。。
この時期、鼻に来るから、マスクが手に入らないのは、かなり痛い。
見えないマスク?ってやつを使ってるけど、時間が立つと効力がなくなるってのが、最近わかった。

Java14事前調査まとめ(言語・JVM系)

調査結果

suzaku-tec.hatenadiary.jp

suzaku-tec.hatenadiary.jp

suzaku-tec.hatenadiary.jp

他にもJEP 368: Text Blocks (Second Preview)JEP 361: Switch Expressions (Standard)があるけど、大きな仕様変更は内容だったので、jdk14の調査としてはスルー

APIGC系は、Java外の知識がかなり必要になってくるため、スルーした。
FlightRecoderとかGCは、手がつけにくい。。。

感想

java14とかで検索すると、java 1.4 の情報が出てくるのに、思わずニヤリとしてしまいましたわ。。。
調査していて思うのは、周辺知識がないと、GCやらAPIは、理解しづらいと思った。
僕の頭のメモリだと、言語とJVMで満杯です。。。

バージョン違いでビルドできないってのにハマってしまったのが痛かった。。。
early accessの入手ルートは、sdkmanが一番楽そう。

参考サイト

Java 14新機能まとめ - Qiita

Head toward Java 13 and Java 14 #jjug

Java14事前調査 JEP 305: Pattern Matching for instanceof (Preview)

環境

$ java -version
openjdk version "14-ea" 2020-03-17
OpenJDK Runtime Environment (build 14-ea+34-1452)
OpenJDK 64-Bit Server VM (build 14-ea+34-1452, mixed mode, sharing)
$ VER
Microsoft Windows [Version 10.0.18362.592]

JDK14

JDK 14

JEP 305: Pattern Matching for instanceof (Preview)

JEP 305: Pattern Matching for instanceof (Preview)

概要(超要約)

instanceof で型チェックする際に、型変換も同時にするようにしたよ。

なぜ入ったのか

今までの実装だと、下記のように String s = (String) obj; するケースが多かったと思う。

if (obj instanceof String) {
    String s = (String) obj;
    // use s
}

instanceof を使う場合、高確率でこういう使い方をやり、コードが煩雑になっていくことがある。
ダウンキャストがある状態は、参照してはいけない変数やメソッドが参照できるようになるので、あまりよろしくない。

テストコード

public class JEP305 {

  public static void main(String[] args) {
    Object obj = "hello saga!";
    
    if (obj instanceof String s) {
      System.out.println(s.length());
    } else {
      System.out.println("not String");
    }
  }
}

とりあえず、安定のhello sagaで。

実行

$ javac --enable-preview -source 14 JEP305.java 
$ java --enable-preview JEP305
11

変換したString型として使用できているのが分かる。

感想

もっと早く導入されていても良さそうが気がした対応では?と心のなかで感じた。