• トップ
  • ブログ一覧
  • JJUG CCC 2019 Fallにスタッフとして参加してきました!
  • JJUG CCC 2019 Fallにスタッフとして参加してきました!

    エンジニア記事エンジニア記事
    2019.12.19

    IT技術

    JJUG CCC 2019 Fallに当日スタッフとして参加!

    神田先生

    (株)ライトコードの神田です!

    11月23日(土・祝)になりますが、『JJUG CCC 2019 Fall』に当日スタッフとして参加しました。

    JJUG CCCとは、日本Javaユーザー会(JJUG)が主催しているクロスコミュニティカンファレンス(Cross Community Conference、CCC)で、2007年秋から毎年春と秋の2回開催されております。

    今回が25回目ということになります。

    セッションについてはJavaに関係なく、様々なテーマが登場します。

    のちほど登場しますが、今回は「オブジェクト指向プログラミング」「ドメイン駆動設計」「Go言語」「Kotlin」などいろんなテーマが登場しました。

    では、今回は参加レポートをお届けします!

    会場到着

    会場に8時50分集合だったのですが、前日の疲れが抜けきれず着いたのは午前9時ちょっと過ぎに…

    会場に着くなり、参加者へ配布するパンフレットの準備をしつつ、9時半より受付開始。

    その直後から、人がごった返しました。

    申込者数で1200人ちょっとでしたが、雨だったこともあり実参加は800人近くとのことです。

    さて、聴講したセッションついて触れていきたいと思います。

    Javaで学ぶオブジェクト指向プログラミングの基礎知識

    DevLoveにも登壇されている、「ギルドワークス」の「増田亨さん」のセッションでした。

    気になったキーワード

    ▼オブジェクト指向プログラミングにはモジュール性とシームレス性がある。

    ▼モジュール性はプログラムの分割単位。型(値の種類)でプログラムを分割する技法。

    ▼シームレス性は分析→モデリング→プログラミング→保守の一連の活動の継目をなくす開発手法。

    ▼型は抽象的概念で、以下の2つの特徴がある。
    ・値の範囲を制限すること
    ・値の操作を制限すること

    ▼カプセル化は型の定義をカプセル化し、型とクラスを結びつけるもの。

    ▼オブジェクト指向プログラミングには以下の2つのモードがある。
    ・定義済の型だけを用いるもの
    ・独自の型を定義するもの

    ▼定義済の型だけを用いるものの場合
    ・型の消費者と呼ばれアプリケーション固有のロジックを手続き的に記述する。

    ▼独自の型を定義するものの場合
    ・型の生産者と呼ばれアプリケーション固有の型がそのままモジュール単位となる。

    DDD(ドメイン駆動開発)というと、マイクロサービスでしばしば登場しますが、実際にマイクロサービスで設計しようとすると機能で分割したものの保守性が担保できず結果的に破綻するケースが見受けられます。

    確かに独自の型を作るというのは容易なことではありません。

    勿論、有識者がいなくなった時等の保守性の問題も出てきます。

    ただ上手く現実に沿った独自の型ができるようになれば、改良も容易になるのではないかという気がしました。

    まとめ

    セッション資料

    【資料】
    https://www.slideshare.net/masuda220/java-objectoriented-programming-primer

    最新:Azure Spring Cloudのご紹介

    「マイクロソフトコーポレーション」の「寺田佳央さんのセッションでした。

    気になったキーワード

    ▼AzureではSpringのサポートをしており、Spring InitializerでのAzureサポートもしている。

    ▼VSCodeにはJavaに関する拡張機能が色々と用意している。

    ▼AzureにはDevOpsに関するサービスが用意されている。

    ▼Java用のPaaS(App Service for Java)があり、Docker上に以下ミドルウェアが乗っかっている。
    ・Java SE
    ・Tomcat
    ・Wildfly(APサーバで元々はJBoss)

    私自身マイクロソフトといったらWindowsというイメージでした。

    しかしここ数年はAzureに注力していることもあり、OSSにも積極的に動いているという印象を改めて感じました。

    寺田さんの話によると、数名のJava Championが、ここ数年でマイクロソフトに移られたとのことでした。

    しかも、Springを提供している「Pivotal社とマイクロソフト社が仲が良い」というのも驚きではありました。

    Azure Spring Cloudのロードマップ

    セッション資料

    【資料】
    https://www.slideshare.net/tyoshio2002/jjug-ccc-2019-fall-azure-spring-cloud

    Where is my cache? Architectural patterns for caching microservices by example

    ここからは、当日スタッフとしてタイムキーパーをしながら聴講しました。

    このセッションは、「Haselcast社」というインメモリデータグリッドプラットフォームを提供している会社のクラウドエンジニアをされている「Rafal Leszkoさん」のセッションでした。

    Haselcast社とはどんな会社?

    まず、Haselcast社とはどんな会社なのか?ということを簡単にご説明すると…

    Java用の分散型インメモリデータグリッドプラットフォーム(Hazelcast IMDG)を開発している

    Hazelcast IMDG以外にストリームエンジンのHazelcast Jet、Hazelcast IMDGをクラウド上で扱うHazelcast Cloudを扱っている

    正直、私自身、初耳の会社なので分かっておらず、すみません…。

    ちなみに、Hazelcast Cloudは調べても和訳がなく、以下サイトにて構成等は記されています。

    【資料】
    https://jaxenter.com/hazelcast-cloud-ga-157327.html

    気になったこと

    ▼Pure Javaにはキャッシュはなく、Guava Cacheなどのライブラリを入れる必要がある。

    ▼アプリケーション層のキャッシュについて、Spring Frameworkではキャッシュ機構がありConcurrentHashMapを用いているが扱いに注意が必要。

    ▼組込みキャッシュの場合のメリット及びデメリットは以下の通り。
    ・メリット:設定やデプロイがシンプル、低レイテンシーでアクセスが出来る
    ・デメリット:柔軟な管理ができない
    ・クライアントサーバ型、クラウド型キャッシュの場合のメリット及びデメリットは以下の通り。

    ▼メリット:アプリケーションからデータの分離ができ、管理も分けられる

    ▼デメリット:運用が大変になる上に高レイテンシーになってしまう

    ▼サイドカー型キャッシュの場合のメリット及びデメリットは以下の通り。
    ・メリット:設定が容易で、プログラミング言語にとらわれない
    ・デメリット:コンテナ環境に限定され柔軟な管理ができない

    ▼リバースプロキシサイドカー型キャッシュの場合のメリット及びデメリットは以下の通り。
    ・メリット:設定ベースかつプログラミング言語にとらわれない
    ・デメリット:キャッシュの無効化が難しくプロトコルベースとなる

    英語のセッションかつ通訳なしで聞いていた故、あまり理解しきれていないところはあります。

    キャッシュの扱いについては構成次第で長所短所が変わるため、注意が必要という感じになるのでしょうか。

    余談ですが、サイドカーとは、Kubernatesをやっている方はご存知だと思いますが、Pod(コンテナの集合体)の中で、主となるコンテナを補助する様なコンテナを持つPod構造を持ったPodのことだそうです。

    詳細は以下をご確認ください。

    https://qiita.com/MahoTakara/items/03fc0afe29379026c1f3

    セッション資料

    【資料】
    https://www.slideshare.net/RafaLeszko/where-is-my-cache-architectural-patterns-for-caching-microservices-by-example-193756666

    Evaluating ZGC with HBase

    「LINE株式会社」の「吉田真也さん」のセッションでした。

    当初は、別の方が登壇される予定だったのですが、急遽代打で登壇されたとのことでした。

    気になったキーワード

    ▼GCの回収方法にはSweep/CompactionとCopyの2種類存在する。

    ▼JavaのGCには以下の種類がある。ただ回収方法は殆どCopyとのこと。
    ・Young GC
    ・Old GC
    ・G1GC
    ・ZGC
    ・Shenandoah

    ▼GCの中でもZGCはJavaのバージョンが11、Shenandoahは12以降でないと使用できない。

    HBaseとは、JVMベースで動くNoSQLとのことです。

    聴講していてGCの種類は色々あるものの、バージョンによっては使用できないものがあったりするようです。

    また、スループットやCPUコア数、メモリサイズ等様々な要因を考慮し最適なものを選択するのが一番良いのではないかと感じました。

    セッション資料

    【資料】
    https://speakerdeck.com/line_developers/evaluating-zgc-with-hbase

    Oops-Less Operation

    自動型パフォーマンスモニタリング(APM)のプロダクトを提供している「Instana社」の、デベロッパーアドボケイトでいらっしゃる「Chris Engelbertさん」のセッションでした。

    Instana社とは、マイクロサービスに特化したAPM(アプリケーションパフォーマンスモニタリング)ツールを提供する会社です。

    他にも「インフラの可視化(IQM)のツール」や「エンドユーザーの体感の可視化(EUM)のツール」も提供しているとのことです。

    気になったキーワード

    ▼ハードウェア障害やヒューマンエラー等でシステムがダウンしても復旧する必要がある。

    ▼障害原因の切り分けがハードウェアなのかネットワークなのか等横断的となる故懸念がある。

    ▼単一障害点が存在しない等いくつかのルールを決める必要がある。

    (間違っていることを書いている可能性があるかもしれませんが、)主にDevOpsの話が中心でした。

    最後の方で、IaC(Infrastructure as Code)に関する話が出てきますが、とにかくDevOpsを自動的に回して効率よく運用していくとHappyではないのかなという感じがしました。

    セッション資料

    【資料】
    https://www.slideshare.net/ChristophEngelbert/oopsless-operation

    企業ブースにて

    企業ブースは2ヶ所あり、受付してすぐのロビーと会議室にありました。

    今回は、その中の1つでクイズを解くと景品がもらえるところがありました。

    では、急ですが、そこの中で私が間違えた問題を出してみたいと思います!

    問題:JVMがDNSの名前を解決する時

    1、OSネイティブの仕組みに(一部の)処理を移譲しており、libc環境や/etc /resolv.confファイルといった環境に依存する
    2、独自の環境非依存なDNS実装で処理が完結している
    3、JVM独自だがOS環境毎のDNS実装で処理が完結している

    分かりましたか?

    答えは、1番目になります。

    私は知らなかったのですが、DNSの名前解決はOSネイティブの仕組みに移譲しているとのことでした。

    ちなみに、キャッシュは JVM固有の実装とのことでした。

    そんな出題をされた会社さんはこちらでした。

    3問出題されて2問正解したので、WebCAMのカバーシールを頂きました。

    懇親会にて

    気になる懇親会ですが、参加した人はざっくりですが200人以上という大規模なものでした。

    食事

    食事には、お寿司が出たり

    スポンサーに星野リゾートさんが入られていたので『よなよなエール』などのビールがあったりと超豪華でした。

    LT大会

    LT大会もあったのですが、その中でまさかの生演奏があったり、次回のJJUG CCCの開催日の発表があったりと本当に賑やかなものでした。

    その後、2次会もあったようですが、時間も遅かったため、私は帰宅しました。

    でも、「懇親会も含めJJUG CCCなのだな」ということを改めて感じることができる1日でした。

    さいごに

    私自身は、過去にも何度か参加していますが、今回も Java にとらわれず様々なセッションがありました。

    今回は聴講できなかったのですが、設計技法だけでなく、BigQuery のことや AWS、JVM に関するセッションなど改めて振り返ると聴きたかったものが多かったと感じました。

    今回は、海外のスピーカーの方のセッション運営を担当をしました。

    英語のプレッシャーはありましたが、海外のスピーカーの方も合わせてくださったのでスムーズに事が運んだ感じでした。

    懇親会では様々な登壇者の方と話が出来た上に、LT もかなり面白かったです。

    JJUG CCCは、一見Javaのカンファレンスと思われがちですが、セッションの内容はJavaに特化することなく様々だったりします。

    また、外国人の登壇者とのコミュニケーションが取れる貴重な場だとも思っています。

    「私は英語が苦手だ」と思わず、カタコトの英語でも良いので話してみると新しい価値観が生まれてくるはずです。

    次回は、2020年5月とのことですので、機会が合えば是非参加してみてはいかがでしょうか?

    また次回ないし、次々回に当日スタッフで関われたらと思いました。

    今回のJJUG CCCの様子は、togetterにもまとまっていますので、気になる方は以下も確認してみて下さい。

    【togetter】
    https://togetter.com/li/1433984

    では、また次の記事でお会いしましょう!

    エンジニア記事

    エンジニア記事

    おすすめ記事