怒Mは思いつきでモノを言う

やったことメモなどなど

JJUG CCC 2018 Spring に参加してきた。

2018年5月26日にJJUG CCC 2018 Springが行われました。
今回で2回目の参加です。そして今回もボランティアとして参加しました。
今回セッション内容については、書いていません。日記です。

前日

前回、入口・出口を手書きで準備したので、事前に用意しようと思ってslackに投げたのですが、さすがの幹事会の方々準備済みでしたw
常に改善をしていく姿勢はJJUGの良いところだなと感じました。

お客さんとの約束で麻雀を0時まで打って、 帰りに電車の人身事故により帰宅が2時過ぎになってしまいました。(自業自得)

当日

f:id:do_m_gatoru:20180529235735j:plain f:id:do_m_gatoru:20180529235819j:plain f:id:do_m_gatoru:20180530001155j:plain

コンディション最悪の中の参加でした。 朝一、赤坂見附で乗り換えのつもりが、青山一丁目まで行ってしまって集合時間に 5分遅れたのがこの日の最大のハイライトだったでしょうか・・・

今回は色々セッションを聞こうと思っていましたが、何故だろう働くことが楽しくなっちゃって落ち着いて聞いていられないという。 ある意味ボランティア参加向いていないまであります。
スピーカーの方々が公開してくださっているスライドを漁って見ているところです。

github.com

部屋付き担当だとセッション聞けるんですけど、部屋でじっとして聞いていて尚且つ、 退場時の準備とかやれる自信がないのです。 なので比較的自由に動く遊軍が好きでしょうがないのです。

ボランティア感想

2回目のボランティアなので、全体の動き方や仕事の把握はスムーズでした。 椅子を大きく移動させることもなかったので、会場自体も大きな混乱がなかったと思います。 一時、待機列が長くなった際に「最後尾列を分かるようにしてほしい」と参加者の方から言われたので、 終盤にはなりますが気をつけて見ました。
コミケみたいな最後尾列カードを次回導入すると良さそうでね。

セッション終わりの誘導で端っこで1人ずつ遊軍がいると、もっとスムーズになるのかと思います。 あと遊軍が少し楽になりますw
今回はボランティアの方が少し秋に比べて少なかったのでしょうがないのですが、人数に余裕があれば 遊軍2人がベストの配置だと思いました。

懇親会

f:id:do_m_gatoru:20180530002742j:plain f:id:do_m_gatoru:20180530002755j:plain f:id:do_m_gatoru:20180530002811j:plain f:id:do_m_gatoru:20180530002825j:plain

これが噂のLINEさんの寿司か・・・凄かったです。
興奮が冷めない私。そして、穴子推し。

LT大会も楽しかったです。
前回と違うのは少しは知らない人とも会話するようになったことでしょうか。
進歩でしょう。
ボッチ仲間いたー(失礼)という気持ちになった。

takeda-san.hatenablog.com

懇親会2

すでにクタクタ過ぎていつも以上に静かでしたw
英語力の話になりましたが、無いよりは有った方が楽しいことは多いだろうなと思いました。
けど、「じゃあどうしたら・・・」となってしまい・・・。
じゅくちょーさんが3年前まで英語ができなかった中で、 どうやって勉強していたのかを聞いてみたく質問しました。 教えていただき、ありがとうございます。

以下のブログでも書いていますが、JavaOneなどの海外セッションの内容を通勤中などに聞いたり、
英会話ラジオを聞いたりしていたとのことで、参考にしたいと思います。

www.sakatakoichi.com

後は圧倒的に単語力とか文法力が中学生以下レベルなので、そこをどう補おうかと考え中です。 とりあえず、TOEICの優しい単語集みたいなのを買ってみました。 寝る前に2ページ読むことにしています。

懇親会2の印象に残っているのは、宮川拓さんによる「秋は何喋るんですか?」というプレッシャーw
CfP書いて登壇しよう!と。うーん。ネタも技術も勇気も無いです・・・

最後に

今回も非常に楽しかったです。次もボランティア参加かどうかは悩み中ですが、きっとボランティアかなw
そういえば今回、知り合いと1名会えたのが結構嬉しかったです。

「Java Day Tokyo 2018」に行ってきた。②

2018年5月17日(木)に開催されたJava Day Tokyo 2018に行ってきました。 基調講演は途中から参加で、用事があった夕方頃までセッションを聞きました。

で、気になった点をメモ書き。パート2。

[JSE-2] Project Valhalla

以下の2点の話し。

Project Valhallaには「VarHandles」があるけど、今回は対象外。
JJUG CCC 2018 Spring で話す予定。

プロジェクト名の由来

「Valhalla == Value Types」が似ているから、だそうですw

オブジェクトとプリミティブ

オブジェクト
  • ヒープで格納される
  • ヘッダがある
  • ポインタ参照
  • ミュータブル
  • Monitor がある
プリミティブ
  • どこでも格納できる
  • ヘッダがない
  • 値を直接渡す
  • イミュータブル
  • Monitor がない

オブジェクトの配列の場合、 配列の要素の中にヘッダを含めたオブジェクトが格納される。
オブジェクト ⇨ 参照の利用 ⇨キャッシュ・参照のミス ⇨ パフォーマンスの問題。
これは非効率。

そこで、Value Types。

Value Types

Value Typeの特徴として、 プリミティブと違ってクラスのような構成を持ち、 プリミティブのパフォーマンスを出す。

また、「だいたいintのような動きをするだろう」みたいな、 大雑把なルールで動く。
オブジェクトとプリミティブの要素を持つ感じ。

ジェネリクスの特殊化 (Generic Specialization)

Value Typesがオブジェクトの要素を持つとなると、ジェネリクスはどうなるのか?
構想としてはValue Typesをジェネリクスでも使えるようにしたい

ArrayList<int>みたいなことをやりたい!

Java 8からStream APIが実装されたけど・・・

  • java.util.stream.IntStream
  • java.util.stream.FloatStream
  • etc・・・

作る方もツライ!
Customer<T>ToIntFunction<T>は作りにくいよう。

ジェネリクスの問題として、プリミティブの親クラスって何?
これはまだ解決していない。

最後に

Project Valhalla の目的としてパフォーマンス改善が挙げられるが、 それだけではなく、使いやすくなることも目的がある。

「Java Day Tokyo 2018」に行ってきた。①

2018年5月17日(木)に開催されたJava Day Tokyo 2018に行ってきました。 基調講演は途中から参加で、用事があった夕方頃までセッションを聞きました。

で、気になった点をメモ書き。

[JSE-1] Java in a World of Containers

コンテナサイズを小さくしたい話

Docker ImageにJDK9の全てをインストールすると600MBくらいになっちゃうから 小さくしたい!という場合に、いくつか選択肢があるよーという話し。

Install JDK サイズ
Full JDK 568MB
java.base 46MB
netty 60MB

最小のJDKモジュールとして、java.baseというのがあるとのこと。
JDK9から導入されていて、java.io、java.lang、java.utilとか基本的なパッケージが含まれています。

java.base (Java SE 9 & JDK 9 )

Nettyは、非同期のイベントドリブンWebアプリケーション用Frameworkです。
知らなかったのですが、軽量なんですねー。

Netty: Home

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

jlinkを使って必要なモジュールだけに絞るやり方があるようです。

docs.oracle.com

一連のモジュールとその依存関係をカスタムランタイムイメージにしてくれる!ようです。
必要な分のモジュールだけにするから軽くなるってことなんですね。
モジュールの依存関係についてはjdepsを使うと分かるとのこと。

docs.oracle.com

そもそもモジュールを理解していないので、そこから学ばねばならないです。

LinuxのDocker Imageは「Alpine Linux」がおすすめ。なんと4MB。

これらの情報をもとにすることで、小さいDocker Imageが作れます。

スタートアップ時間とかJVM間のデータ共有の話

ここはキーワードだけ。

Class Data Sharing(CDS) docs.oracle.com

Ahead of time(AOT)
まだ実験中?

コンテナリソースの制限の話

ここもメモメモ。 CPUとMemoryのリソースを適切に行いましょう。 CPUについては、PCのCPUは把握していたけど、 使っていいCPU数がわからなかったけど、ちゃんと割り当てできるようになった。

[JSE-6] Java Mission Control 6.0 と新しい Java Flight Recorder

JDK9からJMCのバージョンが6.0になりました。 前回のJava Day Tokyo 2017はリリース前で概要の話とか、 JMC5.5の使い方がハンズオンであったと記憶しています。

Java Mission Control(JMC)、Java Flight Recorder(JFR)については、 以下のサイトを参照してください。

docs.oracle.com

Eclipseのpluginでインストールして使用することができます。

f:id:do_m_gatoru:20180520231450p:plain

jmcコマンドでJMCそのものを起動することもできます。(こっちが普通?)
JFRは現時点では本番環境で利用する場合は、商用ライセンスが必要です。
個人利用や検証目的の利用の場合は無償で利用できます。

JDK11からはOpen JDKでも利用でき、無償で利用できるようになります。
JDK11は2018年9月リリース予定です。

Java Mission Control 6.0 リリース・ノート

気になるところをピックアップします。

フライト記録の自動分析

Java Mission Controlにフライト記録の自動分析機能が追加されました。搭載されたルールとヒューリスティックによりアプリケーション内> で問題が起こっている場所やパフォーマンスの問題の発見を手助けしたり、チューニングのヒントをくれたりします。

Automated Analysis Results f:id:do_m_gatoru:20180520231337p:plain

新しいナビゲーション

ページ間のナビゲーションは側面・ビューという新しいJFRエディタの中に移動しました。自動分析結果は各ページに関連付けられており、それぞれのページに関係する結果が見つかった場合、ページアイコンのオーバーレイに表示されます。

f:id:do_m_gatoru:20180520232131p:plain

f:id:do_m_gatoru:20180520232214p:plain

f:id:do_m_gatoru:20180520232231p:plain

問題がありそうな場合や、そうではない場合で、アイコンが変わります。 アイコンをClickすると自動分析の内容が表示されます。

仕事とかで使ったことないんですけどね!

終わりに

他にも、以下の2つを聞いてましたが、メモ書きはまた今度。

  • [JSE-2] Project Valhalla
  • [TEC-4] Java in Serverless Land

これから、どんどんJavaの機能が追加されて、できることが増えていくんでしょうね。
最近特に思うのは、英語力が欲しいという点。 高校の実力テストで27点とった時に「お前、ふざけてんの?」と英語教師に言われたのがトラウマで英語の勉強に身が入らなくなった病気にかかってしまい。 けど、Globalのコミュニティに参加するのも楽しそうだなーと感じる今日この頃。