エンターテイメント!!

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

Java Advent Calendar 2017のまとめ

随時更新予定

Java Advent Calendar 2017

公式サイト

Java Advent Calendar 2017 - Qiita

今年も Advent Calendar の季節がやってきました。

Java をネタにしたブログを公開してしまいましょう。

Java といえば、サーバーからクライアント、クラウドに組み込みと、さまざな分野で使われており、そこで使われている技術もたくさん。

Java の Tips でもいいし、ライブラリの使い方でもいい、自作のツールの紹介など、Java に関していれば何でもかまいません。ぜひこの機会に、Java のブログを書いてみましょう!!

qiitaのアドベントカレンダーを使用していますが、もちろんqiita以外からの投稿もできます!
普段お使いのブログがあるかたはそちらでご参加ください!

Supported by JJUG.

内容・まとめ

[12/01] 2017年のJavaとこれからのJavaの話

2017年のJavaとこれからのJavaの話 - Qiita

Javaの2017年を振り返る記事ですね。
個人的に一番大きかったのは、Java9とリリースモデルの変更ですかね?
Java9は、リリース前から勉強してたので、さほど驚きはしませんでしたが、リリースモデル変更のニュースは、リアルにファッ!?って感じでしたわ。
話を聞いて、リリースモデルの変更には納得しているので、あとはそれをきちんと実行できるかどうかですね。
他者の営業の人と話すことがあって、嫌Javaの流れがあるらしいので、なんとか歯止めがかかればいいなぁ~とは思ってます。

あと、私事ですが、Oracle Certified Java Programmer, Silver SE 8を取ったこともあったな~とか思ってます。
本当は、Goldまで取る気でいたのですが、ちょっと舐めすぎてましたね。。。
年末に再チャレンジ予定です。

[12/02] 時間文字列を絶対変換してやる!

時間文字列を絶対変換してやる! - Qiita

ビックデータ解析しようと思ったけど、日付がフォーマット違ったりするのをどうやって差分なくすかの話。
よくある話だと思うが、経験したことないひといるのだろうか?
他システムと連携でなやんだことが結構ある派のおいらです。

やっていることは単純で、想定できるフォーマットをすべて保持しておき、パースして合致したフォーマットを使ってる。
パースのよくわるパターンですね。
意外と思いつかないもんですけど。

見てて思ったけど、テストコードあると理解が簡単。
使う想定が分かるから。
コードの説明は、テストか例を挙げて説明しないとダメだと感じた。

[12/03] Gaugeで自動テストする

Gaugeで自動テストする - Qiita

Gaugeっていうテストツールの紹介。
実際Githubで公開されてるテストソースで試したけど、結果が日本語で見えることより、テストを日本語でかけるほうが、なんか違和感を感じた。
いつも英単語に接してるせいからかも知れない。
どっちかというと、テストようのツール的なものを作って、文章でテストケースをかけることに価値があると思う。
使えるAPIを提供ところが出てくれば流行りそうな予感はする。
懸念としてあるのは、テストの2重管理にならないかなぁ~って思いました。

これ、Step複数つけられたりできないのかな?
多言語対応されたらおもしろそうだな~って思った。

[12/04] JMX接続をひたすらやっていく

JMX接続をひたすらやっていく | Developers.IO

お金がなかったので、EC2はしなかったですが、docker使ってElasticsearchを起動してJMXで接続してみた。
jconsoleは使ったことなかったけど、案外、簡単に接続できた。
有用そうなのは伝わってくるけど、いまいち、スレッド数とかメモリ使用率とか、どうなると悪いのか分かんないんだよね。。。
実際に、運用管理してみないと分からない分野なのかもしれない。

ココらへんは、弱い認識がある。

[12/05] JUnit実践入門のMockitoの部分をJMockit (version 1.37) でやってみた

JUnit実践入門のMockitoの部分をJMockit (version 1.37) でやってみた - bati11 の 日記

JMockitは、使ったことあるから、内容は最新バージョンに置き換えた見た系。
知らない単語があったので、いろいろと変わってそう。
あとでキャッチアップする。

[12/06] JavaのCyclicBarrierを使って平行処理を行う

JavaのCyclicBarrierを使って平行処理を行う - Qiita

タスクの同期処理。
CyclicBarrierっていう存在はしらなかった。
使ってみて思ったけど、問題は、各スレッドで使った値をどうやって連携するかだね。。。
バグりそうだから、どうやって値連携するかが課題になりそう。

ちなみに、サンプルで参考にしたのは、下記のサイト

Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい - argius note

[12/07] Java 9時代のAES 256暗号

Java 9時代のAES 256暗号 - Qiita

なんとなく暗号化は知っているから、話はわかった。
ココらへんは、政治的な意図で変わってるんだな〜と素人的に考えてしまった。

[12/08] 日本語でのJavaDocの書き方

日本語でのJavaDocの書き方 - 水まんじゅう

書き方は知っていたので、お作法的なほうが参考になったかな。
サマリーと詳細の書き分けは、クセで改行を無意識にいれてた。

タグから開始するのが一般的なのか?
普段は、改行とかいれるの面倒くさいから、<pre> タグで囲んでたわ。
@Throws は、発動条件を書いてるから、なんとなく似通ってはいるんだな。
ですます調や用語統一は、文章書くうえで必然ですね。

知らないルールが他にもありそうな気がしてならない。
冬休みにちょっと調べてみる。

[12/09] Javaにおけるインタフェースの使い道を今一度考える

Javaにおけるインタフェースの使い道を今一度考える - Qiita

インタフェースのメリットについての再考話。
Javaの良い点は、インタフェースがしっかりしていることだと、俺は思っている。
ダメな現場ほど、インタフェースが上手く使えてないことが多い。
インタフェースを抑えることがJavaで一番重要だから、再考したりするのは、一定の価値があると思います。
自分の中の考えを整理する上でもね。

[12/10] Payara Micro の設計と実装 - 2017 年版

Payara Micro の設計と実装 - 2017 年版 - notepad

Payaraって知らなかったけど、nodejsみたいなもん?
要するに、JavaEEをIoT製品に乗っけて、サーバーを動作させて外部連携するためのライブラリって理解でいる。
実際に、自分もそれに近い製品を作っているから、イメージ的にそんなもん。

Java9には、まだ未対応か。。。
対応が終われば、もっと軽量化できそうな気がする。
まだ、行末を見守りますか。

[12/11] Eclipse Collectionsのイケてるところイケてないところ

Eclipse Collectionsのイケてるところイケてないところ - Qiita

Eclipse Collectionsの存在は知っていたのですが、使ったことはないですね。
データ構造に焦点を置いたライブラリなのかな?って印象。
とりあえず使ってみないと、なんにもいえないので、冬休みに使ってみて、感想あげます。

[12/12] RxJavaがしてくれるというThread管理に、混乱したのでコードで実験

RxJavaがしてくれるというThread管理に、混乱したのでコードで実験 - Qiita

RxJavaの検証ですね。
RxJavaは、知っているのですが、本で読んだだけで実験段階まで踏み込めていない分野でした。
内容的には、Observerの実装ですかね?
業務ではよくかくデザインパターンなので、自分も一回使ってみようと思います。
とりあえず、タスク行き~

[12/13] ふわっとStreamで試したいこと試してみた。

ふわっとStreamで試したいこと試してみた。 - Qiita

streamのベンチマークですね。
Java8出てきたときに、ベンチマークは自分もしていたし、扱う要素が小さいと差が出ないことも知っていた。
Java9の新機能は、まだ試したことはなかったかな?
ReactiveStreamの方に目が行ってしまっていた。

ちゃんと検証しないと、置いて行かれそうだから、冬休みに実験します!

[12/14] Javaでお手軽に絵文字を使うライブラリ emoji-java の紹介

Javaでお手軽に絵文字を使うライブラリ emoji-java の紹介 - Qiita

見た感じSlackっぽいな~って思ったら、似せてるのか。
フロントにJava要素があるってのが珍しいな。
JavaFXとかだと、利用価値があるかもね。

[12/15] ReactorでN+1問題な処理を実装してみた話

ReactorでN+1問題な処理を実装してみた話 - 谷本 心 in せろ部屋

Reactorを使った、ノンブロッキング処理、ブロッキング処理の比較。
おそらく、今後はCPUの限界が見えてきたので、いかに効率的に処理するかが焦点になってくると思うんですよ。
そのためにも、ノンブロッキング処理というのは重要で、感覚を養っておいたほうがいいと思ってます。
今は、Java使ってないけど、TypescriptだとJavascriptがシングルスレッドだから、ノンブロッキングJavaよりシビアに考えないといけない。
おかげで、ちょっとばっかし、ノンブロッキングの概念はつかめたかな~?とも思っている。
暇な時間を見つけたら、試し実装してみたい。
また、冬休みタスク行きですな。。。

[12/16] 【JDK 10】varを使った型推論

【JDK 10】varを使った型推論 - Qiita

まだ早期ビルド版、試せてないんですよね~。
Typescript使っているから、想像は容易なんですけど、あのJavaが!って言った感じですわな。
理屈を考えると、意外と簡単にわかる。
要はローカル変数にジェネリックスが適用されていると考えればいい。
型情報がどこかにあれば、あとは自明だよね?って理屈ですよね。
まだ試せてないので、落とし穴があるかもしれない。
また、冬休みタスク行きですな。。。

[12/17] CDI 2.0をJava SEから使ってみる

CDI 2.0をJava SEから使ってみる - ひらおかゆみのなげやりブログ

JavaSEでCDI使うデモ。
SpringBootで似た感覚を味わっているから、それほど驚きはしなかった。
JavaEEもSpringBoot化しているかな?って思った。

[12/18] Javaのコンストラクタの挙動について確認した。

Javaのコンストラクタの挙動について確認した。 - 怒Mは思いつきでモノを言う

コンストラクタの話ですね。
Javaのコンストラクタは、staticメソッドの順番が入ってくるとややこしくなるイメージがある。
コンストラクタのオーバーロードは、覚えるのに苦労した思いがあるけど、覚えてしまうとなんてことはない。 あと、継承関係とかで悩んでいたことがあったなぁ~と思い出してしみじみしてた。

[12/19] Java Stream APIチートシート

Java Stream APIチートシート - Qiita

Stream APIは、覚えるんだけど、種類が多くて、毎回調べる事が多い。
最初見た時は、全然分からなかったけど、一回、自分の考えが腑に落ちると分かりやすさがます。
最近は、もっぱらTypescript使っているけど、StreamAPIの利用方法は、すごく役立つ。
普遍的な知識として、確実に覚えておいたほうがいい。

最近だが、チートシートつくる人が多い印象がある。
流行ってるのかな?

[12/20] 鬼が笑う。2018年Java界隈あえての一択。

鬼が笑う。2018年Java界隈あえての一択。 - Qiita

ごめんなさい、まだMaven使っているものです。。。
Mavenが普及しすぎてしまっているからかもしれないが、なかなか乗り換えられない。
GradleでもMavenリポジトリ使えるのは知ってますけど、Mavenとの差別ポイントが明確になってない気がするんですよね。

画面に向いてないのは、同意。
JS専用のプラグインがあるのかも知れないが。。。
ちなみに、重いのは、Preiadesでごちゃごちゃプラグイン入っているせい。素のやつを使うと、ものすごく早い。ただ、機能が少ないけどね。。。

VisualStudioCodeは、JUnitに対応したりしていて、開発環境として「あり」と最近思い始めてきた。
Typescriptを触っているので、開発は、Visual Studio Code使ってる。
JavaもTypescriptも同じ環境で使えるので、違和感なく使えるのは、いいなぁ~と思う。
なんか、フロントエンドとサーバーサイドの両方見る人にとっては、重宝しそう。

IntelliJも、使いたいとは思っているが、なかなか手が出せてない。
最近、Javaを書くことが少ないってのもあるが。。。
IntelliJ IDEAハンズオン」買ったのだが、読む機会がないんだよね。。。
冬休み中に読まないと。。。

[12/21] 3分で理解するG1ガベージコレクション

3分で理解するG1ガベージコレクション - Qiita

G1GCの説明ですね。
内容は、一通り知っていたので、分かっていました。
図示されているのが分かりやすいと思いました。

GC周りは、そこまで気にしたことがなかったので、概要を知っている程度です。
仕事でよく使うようになったら、集中的に学習するんですけどね。。。

[12/22] 分散トレーシングシステムのZipkinを使ってみた話

分散トレーシングシステムのZipkinを使ってみた話 - Qiita

Zipkinというトレーシングライブラリの話。
マイクロサービスのためのライブラリって印象。
マイクロサービスは、どこでエラーが発生しているのかわかりにくいので、それを明解するためのライブラリ。

環境構築が大変そうなので試すのは、冬休み入ってからにします。。。

[12/23] 『Java本格入門』を片手に Java の勉強を始めた息子のために

『Java本格入門』を片手に Java の勉強を始めた息子のために - Qiita

Java本格入門』の書評かな?
読んだことあるので、さら見程度で終わらせた。

[12/24] Java9(OracleJVMに基づく)キャッチアップ

Java9(OracleJVMに基づく)キャッチアップ - Qiita

Java9のまとめ。
javase9 what's newをベースに翻訳した感じかな?
主要なのは知っていたけど、細かいのまで把握しきれてないな~と気づいた。
冬休みに復習しておかないといけないと、強く思う。

[12/25] 【SpringBoot】 RestAPI チュートリアル

【SpringBoot】 RestAPI チュートリアル - エンジニアだけどブログを始めてみた

SpringフルスクラッチCRUDアプリの作成ですね。
SpringDataや、Swaggerは知っているけど、使ったことない。

特にSwaggerには、興味がある。
リアクティブなドキュメント生成に、かなり興味が惹かれる。
早いうちに試してみたい。

感想

知らないことは、ほとんどない。
ただ、知っているだけで、試したことがないのが多い。
業務でJavaを使ってないってのもあるが、乗り遅れてるな感が半端ない。
ソースを書く習慣が、まだ身についてない。

来年は、実装をもっと重視する年にしたい。

タスク

  • jconsoleの活用方法を覚える
  • JMockitキャッチアップ
  • CyclicBarrier
  • JavaDocの通例
  • Eclipse Collectionsの勉強
  • RxJavaを試し実装
  • Java9のStream
  • Spring5のReactorを試す
  • Java10を試す
  • IntelliJ IDEAハンズオンを読む&試す
  • Zipkin試す
  • Java9(OracleJVMに基づく)キャッチアップを読んで試す
  • Swagger