JUG CCC 2020 Fall

Sat, Nov 7
Timezone: Asia/Tokyo (JST)
10:00
  • Added to My Schedule
    keyboard_arrow_down
    Yuji Koyano

    Yuji Koyano - 痒いところに手を届かせるArchUnitの利用法 〜アーキテクチャーテストからアプリケーション解析まで〜

    schedule  10:00 - 10:50 AM place Track A people 5 Interested

    TNG Technology Consulting GmbH社によって開発されているArchUnitは
    アプリケーションのアーキテクチャーをテストするためのOSSです。

    ArchUnitはJavaなどのJVM言語で記述されたアプリケーションコードに対して
    リフレクションやJavaバイトコード解析を実行することで
    クラス・メソッドなどのコンポーネント間の依存関係を収集します。
    そして得られた依存関係が、開発者が望むアーキテクチャーの制約に違反していないかの検査を可能にします。

    ArchUnitはテストのルールをライブラリが提供する様々なAPIを用いてJavaコードで記述できるため、
    アプリケーション開発者が柔軟にルールを定義できるといった特徴があります。
    さらにその柔軟性の高さゆえ、アーキテクチャーのテストだけには留まらず、
    アプリケーションの解析ツールとして利用することも可能です。

    そこで本セッションでは

    - パッケージ間の依存関係の制約によるバグの防止
    - クラス・メソッド間の依存関係の制約によるライフタイムが長いブランチの削減

    といった標準的なArchUnitの利用事例から

    - 以下のような複数アプリケーション間の依存関係に関するドキュメントの自動生成
      - Androidアプリのどの画面が何のAPIに依存しているのか
      - マイクロサービスの各APIエンドポイントが他のマイクロサービスのどのAPIに依存しているのか
      - マイクロサービスの各APIエンドポイントがデータベース上のどのテーブルに依存しているのか
    - コミットのファイル差分の影響範囲の解析による自動テストやレビューの効率化
      - 差分が影響を与えうるクラスだけに絞ったテストケースの実行
      - 差分が影響を与えうる影響範囲の自動検知・Pull Request上での共有

    などいった応用的な利用事例をArchUnitの仕組みや技術的な背景を踏まえながら紹介していきます。

  • Added to My Schedule
    keyboard_arrow_down
    Hiromi Takahashi

    Hiromi Takahashi - Eclipse MicroProfileの進化状況と利用方法の展望について

    schedule  10:00 - 10:50 AM place Track B people 4 Interested

    皆さん、Eclipse MicroProfileについてご存知でしょうか?話題のQuarkusでも利用できるJava仕様であり、Jakarta EEとは一線を画すスピードでの進化を遂げています。

    直近の状況と、利用方法の展望について自分なりにまとめましたので、お聞きいただければと思います。

    Eclipse MicroProfileはJakarta EEの仕様の一部にプラスしてクラウドネィティブ向け独自仕様を持っています。私がその中で特に気になっている仕様はMicroProfile LRA (Long Running Actions)です。イベントまでにはEclipse MicroProfileの4.0がリリースされていると思いますので、最新バージョンで、デモを交えて説明できればと思います。

  • Added to My Schedule
    keyboard_arrow_down
    Shinya Mochida

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

    schedule  10:00 - 10:50 AM place Track C people 4 Interested

    jq は軽量かつ柔軟に使えるコマンドラインベースの JSON 処理ツールです

    以下のようなケースでよく利用されます。

    • テストなどで API を curl で呼び出した際に、レスポンスを整形したり、レスポンスを加工して関心のある値だけを取り出す
    • クラウドサービスの API レスポンスから別の API を呼び出すためのデータを抽出する
    • json の設定ファイルから別の異なる json を作り出す

    サービスやソフトウェア開発にまつわる各種のデータは json で表現されることが多々あるので、 json のデータを手軽に扱えるツールの操作を身に着けておくことは、開発効率の向上につながります。本セッションで jq の使い方、ノウハウを身につけて、エンジニアの仕事道具を磨いてみるのはいかがでしょうか?

  • Added to My Schedule
    keyboard_arrow_down
    Shin Tanimoto

    Shin Tanimoto - アンカンファレンス

    schedule  10:00 AM - 06:00 PM place Track D

    Zoomを使ってフリースタイルで裏番組を開設する予定です。

    何をやるかはまだ決まっていませんが、自由参加のアンカンファレンス、パネルトーク、ゲストトーク、LT、その他Java関連の小噺などを考えています。

11:00
  • Added to My Schedule
    keyboard_arrow_down
    Chihiro Ito

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

    schedule  11:00 - 11:50 AM place Track A people 7 Interested

    本セッションでは、Java に限らず一般的な性能問題の基礎知識を理解し、どのように問題を特定していき、どの様に改善するべきかを紹介します。

    次に Java に特化した内容として JDK Flight Recorder と JDK Mission Control を中心に Java 標準のツール群の使い方、これらを使用して問題を特定する方法を紹介します。

    最後に、いくつかのケースを使用して性能問題を特定し、改善へと繋げることを試みます。

  • Added to My Schedule
    keyboard_arrow_down
    Kenji HASUNUMA

    Kenji HASUNUMA - Jakarta EE: The First Parts

    schedule  11:00 - 11:50 AM place Track B people 1 Interested

    Jakarta EEはアプリケーション開発に必要な様々な道具を納めたとても大きな道具箱です。道具箱のフタを開けてみると、そこには沢山の説明書きがあります。では、その中で最初に取り出すべき道具は一体何なのでしょう?

    このセッションでは、アプリケーション開発で最初に使うことになるであろうJakarta EE API(とMicroProfile Config API)について取り上げ、次のステップへのつなぎとしたいと思います。

  • Added to My Schedule
    keyboard_arrow_down
    Takashi Minemura

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

    schedule  11:00 - 11:50 AM place Track C people 9 Interested

    ドメイン駆動設計において「コードはユビキタス言語を語らなければならない」とされています。
    そのためユビキタス言語をコード(モデル)で表現する表現力が重要です。
    モデルの表現の幅を広げる手法として「ドメインイベント」の活用例を紹介します。
    ドメインイベントはドメイン内で発生する「○○したら××になる」といった出来事を表現するドメインモデルですが、すぐには思い浮かばないモデル概念の一つです。

    Webサービス開発において定番の処理である認証関連処理に適用した事例を紹介します。
    以下のようなアプリケーション内に複数あるアクセストークンを削除するユースケースを、抽象化して一つのモデルにまとめることができた事例です。
    * ログインIDを変更したらアクセストークンを削除する
    * ログインパスワードを変更したらアクセストークンを削除する

    複数の集約をまたがる処理で「結果整合性」とともに語られることが多い「ドメインイベント」ですが、「結果整合性」を厳密に担保しようとすると「べき等性」「リトライの仕組み」など乗り越えなければならない壁も多いです。
    「結果整合性」をがんばりたいけどがんばる余裕のない開発者でも、ドメインイベントを活用してモデルの表現の幅を広げられればよいなと思います。

    私たちのプロジェクトではとりあえず「結果整合性」は忘れてドメインイベントを活用できるようなコーディングのガイドラインを採用しています。
    その取り組みについても併せて紹介します。

12:00
  • Added to My Schedule
    keyboard_arrow_down
    YOSHIO TERADA

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

    schedule  12:00 - 12:50 PM place Track A people 6 Interested

    本セッションでは、Project Reactor の基本から実装例までを実例を交えながらわかりやすく紹介します。

    Project Reactor やリアクティブ・プログラミングにご興味のある方はどうぞご覧ください。

  • Added to My Schedule
    keyboard_arrow_down
    Ryohei Seki

    Ryohei Seki / Tsukasa Mannen - Spring Boot ユーザの方のための Quarkus 入門

    schedule  12:00 - 12:50 PM place Track B people 5 Interested

    我々の所属するソフトバンクの IT 本部は、主にキャリア事業を支える IT システムの開発、保守、運用を担っています。

    キャリア事業はユーザーの生活を支える重要なインフラであるため、堅実なキャリア品質のシステム構築として、ベンダーのサポートのある Java EE アプリケーションサーバ上で稼働するシステムを数多く開発してきました。一方で、近年ではビジネス環境の変化に伴い、Spring Boot に代表される、アプリケーションサーバを必要としないフレームワークの採用も進んでいます。

    本セッションでは、もっともっと Quarkus 人口が増えることを願ってQuarkus に興味のある Spring Boot ユーザの方々をターゲットに、両方のフレームワークで商用システムを開発した経験を踏まえ、比較を交えながら紹介してみたいと思います。

  • Added to My Schedule
    keyboard_arrow_down
    Yuki Tagami

    Yuki Tagami - RL4J で始める深層強化学習

    schedule  12:00 - 12:50 PM place Track C people 4 Interested

    このセッションでは、様々な分野で応用が進んでいる深層強化学習とそのJVM製フレームワークであるRL4Jについて、アプリケーションエンジニアの視点で紹介していきます。

    最初に深層強化学習の概要にふれて、それを実現するためのフレームワークとしてEclipse DeepLearning4j、RL4Jの実装方法について見ていきたいと思います。

    今回 実装の題材としては、とっても簡素化した「ビールゲーム」に挑戦してみます。

    従来のルールベースのプログラミングではなく、状況判断をもとにエージェントが自ずと最適な行動を起こしていく様子をセッションの中で見ていきましょう。

13:00
  • Added to My Schedule
    keyboard_arrow_down
    Koichi Sakata

    Koichi Sakata - Javaコードが速く実行される秘密 - JITコンパイラ入門

    schedule  01:00 - 01:50 PM place Track A people 6 Interested

    昔Javaは遅いと言われていたことを聞いたことがある人もいるかもしれません。これを言い換えると今はJavaは速くなっているということですが、どうして速くなったのでしょうか。Javaでは、マイクロベンチマークでの速度計測に意味はないと言われます。それはどうしてでしょうか。その答えは、JITコンパイル(Just-In-Timeコンパイル)にあります。JITコンパイルとはメソッドやその一部を機械語にコンパイルすることで、JITコンパイルを実行するものがJITコンパイラです。実行速度向上を目的にかなり前のバージョンからJVM(Java仮想マシン)にはJITコンパイラが搭載されています。そして、JITコンパイラについて知るというのは、知的好奇心を満たすとても楽しい活動です。このセッションでは、JITコンパイラの深淵の最初の階層に入ります。

  • Added to My Schedule
    keyboard_arrow_down
    Yoshihisa Wada

    Yoshihisa Wada - 認証・認可基盤に Keycloak を使って開発生産性を上げた話

    schedule  01:00 - 01:50 PM place Track B people 10 Interested

    自社で開発を進めている BaaS ( Banking as a Service ) プロダクトにおいて Keycloak を導入することで要件に見合った認証・認可基盤の構築を生産的に進めることができた。特に Keycloak には以下のような特徴・優位性があるため、デモやサンプルコードを交えながら解説を行う。

    • OpenID Connect や OAuth 2.0のサポート

    • Docker イメージの存在による容易な導入
    • Java (特に Spring Boot )と親和性の高いクライアントアダプタの存在

    今後は他社が提供する認証・認可基盤との SSO ( Single Sign On ) を実現し、エンタープライズアプリケーションにおいても十分に適用できることを確認していきたい。

  • Added to My Schedule
    keyboard_arrow_down
    Satoyuki Tsukano

    Satoyuki Tsukano - 気になる方のための量子コンピュータの「いま」と「これから」

    schedule  01:00 - 01:50 PM place Track C people 1 Interested

    ここ数年、量子コンピュータに関するニュースが増えています。IBMやAmazon等がクラウド上の量子コンピュータを操作できるサービスを提供し、実機を動かせるようになりました。一方で「気になっているけれど、よく分からない、もっと知りたい」という方が増えているのではないでしょうか。また、量子コンピュータの現状・今後と期待感には乖離があり、誤解も生じているように感じます。

    そこで、このセッションでは次の内容についてご紹介し、多くの人が気になっていることが解消できるようにします。

    • 量子コンピュータの特徴(理想)
    • 量子コンピュータの現状(AWSの量子コンピュータで何ができるの?)
    • 量子コンピュータのよくある誤解
    • 量子コンピュータの今後
    • 初心者が量子コンピュータを学ぶのためにオススメの書籍やウェブ・コンテンツ
    • Java製シミュレータ(OSS)を使った量子プログラミング

    このセッションでは数式を使わないため、量子コンピュータに興味ある方はどなたでもご参加ください。

14:00
  • Added to My Schedule
    keyboard_arrow_down
    Natsuki Oshiro

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

    schedule  02:00 - 02:50 PM place Track A people 8 Interested

    私は、開発を行う上で「バグの早期発見」を重要なポイントの1つとして考えています。

    バグを早い段階で発見することが出来れば、後続の開発工程でバグを発見した時よりも 関連作業への影響や作業の手戻りが少なくなるため、 結果的に作業時間とコストを最小限に抑えることができると考えています。

    今回は私が開発現場の中で感じたことを交えながら、 コーディング後から最初のテストである単体テストの工程を中心とした体験談や 「バグの早期発見」に向けた案を共有しようと思います。

    この内容が少しでも皆さんの開発現場を良くするためのヒントに繋がれば幸いです。

  • Added to My Schedule
    keyboard_arrow_down
    Tatsuya Kurebayashi

    Tatsuya Kurebayashi - 3つの視点(Biz Dev Ops)から見たQuarkusの威力

    schedule  02:00 - 02:50 PM place Track B people 6 Interested

    Supersonic. Subatomic. Java.という触れ込みのQuarkusについて、Biz Dev Opsそれぞれからの視点で何が従来のJavaから変わったのかについてお話します。
    Javaといえば「アプリをデプロイしたあとの動作はネイティブアプリに比べて遅い」「メモリやCPUの扱いが独特でOps側からはよくわからない代物」といったネガティブポイントがつきまとっていましたが、Quarkusはそれらをまるっと解決します。(個人の感想による)
    Javaの今後をかえていくQuarkusにご期待ください!

  • Added to My Schedule
    keyboard_arrow_down
    Manabu Matsuzaki

    Manabu Matsuzaki - LINE ShopチームでのSREの取り組み

    schedule  02:00 - 02:50 PM place Track C people 5 Interested

    LINEのコンテンツ販売プラットフォーム(LINEのスタンプ・絵文字・着せかえ機能。社内での通称はLINE Shop)のサーバサイドはJava,Spring Boot,Armeriaを使って実装されています。

    これらの機能はLINEの主要機能であるコミュニケーションサービスの一部であり、数百万以上のユーザーの日常的なコミュニケーションで利用されていて、 普段のピーク時は80k RPS、年始のピーク時は120k RPSのリクエストをさばいています。

    このセッションでは、サービスを安定稼働させるための取り組みについてお話しします。

15:00
  • Added to My Schedule
    keyboard_arrow_down
    Yuji KUBOTA

    Yuji KUBOTA - Head toward Java 15 and Java 16

    schedule  03:00 - 03:50 PM place Track A people 9 Interested

    まいどおなじみ最新のJava技術について新機能だけでなく伝わりづらい細かい変更点まで詳細にお届けします!

    本セッションでは2020年9月にリリースされたJava 15、そして2021年3月にリリース予定のJava 16についてどのような機能や変更点が入ったのか・入る予定なのかを紹介することで、「このセッションさえ聞けば今の最新状況が分かる!」を目指します。

    特にJava 15ではいわゆる新たな二種類のクラス `Hidden Class`や`Sealed Class`の導入やBiased Lockingの無効化、また試験機能であった二つのGC(ZGC、Shenandoah GC)をはじめ数々の機能の標準化などのアップデートが行われており、今後の開発や運用に良い影響を与える変更が加わっています。未だ止まることなく進化を続けるJavaを余すどころなくお伝えしていきます!

    This session will show what features and changes have been in Java 15, released in September 2020, and or will be in Java 16, scheduled for release in March 2021. You can get up to date on what's new now if you just attend to this session! 

    Especially for Java 15, two new classes `Hidden Class` and `Sealed Class` have been introduced, Biased Locking has been disabled, and the two experimental GCs (ZGC and Shenandoah GC) have been standardized. It's been done and changes have been made that will have a positive impact on future development and operations. We'll keep you up to date on the constant evolution of Java.

     

  • Added to My Schedule
    keyboard_arrow_down
    Yuji Masaoka

    Yuji Masaoka - Azure Cosmos DB で始める Java NoSQL 開発

    schedule  03:00 - 03:50 PM place Track B people 3 Interested

    Microsoft Azure (Microsoft 社が提供するクラウドサービス) には、グローバル分散が可能で、読み取り/書き込みの処理に特化した NoSQL データベースのサービス「Azure Cosmos DB」があります。

    Cosmos DB には、SQL API に対応した Java SDK が提供されており、Java コード上からデータの読み取り/書き込みに関するクエリ実行や、データ更新の差分情報をストリーミングで取得できる変更フィードの取得などが実行できるようになっています。

    本セッションでは、これまで Java で NoSQL を使った開発を行ったことがない方を対象に、Java SDK の解説や Azure Cosmos DB を使用して簡単に NoSQL のアプリ開発を始めるための Tips についてお話しいたします。

  • Added to My Schedule
    keyboard_arrow_down
    Okutomi Takumi

    Okutomi Takumi - 分散トレーシングAWS:X-Rayとの上手い付き合い方

    schedule  03:00 - 03:50 PM place Track C people 2 Interested

    X-Rayを導入した経緯とプロダクト独自に拡張したポイントついて話そうと思います。

16:00
17:00
  • Added to My Schedule
    keyboard_arrow_down
    Tomoaki Takaichi

    Tomoaki Takaichi - Selenide Cucumber で実現する UI テスト自動化 BDD

    schedule  05:00 - 05:50 PM place Track A people 5 Interested

    このセッションは、Java 言語での UI テストを自動化をしている、またはこれからしようとしている方向けの内容です。
    アジャイル開発においても UI テストの自動化や BDD は重要な役割を担っています。そこで今回のセッションでは、個人的に作成している Web サイトを例にとって、基本的な Selenide と Cucumber を使った UI テストの自動化から、UI テストを自動化する上で必要になってくる考え方についてお話しようと考えております。

    セッションでは以下のような内容でお話しようと考えています。

    • Java 言語で UI テストが自動化できる Selenide とは
    • 自然言語でテストケースを記述し、実行できる Cucumber とは
    • Selenide と Cucumber を組み合わせた自動 UI テスト
    • BDD で1シナリオを実装する流れのデモ
      • BDD のサイクル (ATDD + TDD)
    • Cucumber アンチパターン
    • 創発的設計
  • Added to My Schedule
    keyboard_arrow_down
    Yuu Kawanami

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

    schedule  05:00 - 05:50 PM place Track B people 9 Interested

    マイクロサービスアーキテクチャにチャレンジしたい!しかし、プロダクト立ち上げ時においては、

    • 業務ドメインに対する知識の少なさから、適切な粒度のサービス分割が難しい
    • そもそも売れるか分からない、仮説検証を高速にまわしていかなければいけない段階で、MSAで開発・運用するオーバーヘッドが大きい
    • 手段が目的化している感

    といった理由から、モノリシックなアプリケーションとして開発を開始するケースは少なくないと思います。一方で、あとから分割すればよいと開発を始めたモノリスで、いざ分割を検討する段階でアプリケーション内の依存関係が複雑に絡み合い、分割したくとも解きほぐすのが困難になってしまっているケースも少なくないはずです。

    モノリスで適切なモジュール分割を実現するためにドメイン駆動設計や、具体的な設計パターンとしてクリーンアーキテクチャやレイヤードアーキテクチャなどの方法をとることが多い最近のソフトウェア開発において、モノリシックなアプリケーションを構成するレイヤーやドメイン、各パッケージ・クラスの依存関係をいかに適切に維持し続け、将来アーキテクチャを発展させる可能性を残すか。

    この発表ではその1つの有力な方法としての「アーキテクチャテスト」についてお話します。

  • Added to My Schedule
    keyboard_arrow_down
    Noriaki Machida

    Noriaki Machida - アジャイル人材を育てるための技術的な研修をフルリモートで実施した話

    schedule  05:00 - 05:50 PM place Track C people 4 Interested

    新型コロナウイルスの影響のため在宅勤務が主流となり、社内研修も開催方式の変更を余儀なくされています。
    今回、以下研修についてEclipseCheを利用した研修環境を作成し、フルリモートで研修を行いました。

     ①高速なアプリケーション開発をできるようにするための技術的な知識に関するハンズオン研修
      例:開発支援ツール(Git・Gradle・JUnit・Jenkins等)、コンテナ技術(Docker・Kubernetes) 
     ②新人のJava知識、アジャイルソフトウェア開発の理解向上を図るためのハッカソン

    開発ツールやコンテナ、アジャイルソフトウェア開発の考え方は世間的では広く知られていますが、当社では利用実績が少ないため、この研修を通じて社内への認知度向上と素早いアプリケーション開発を行える人材を増やすことを目指しています。本セッションでは実施した研修内容、環境について説明いたします。またリモート研修を実現するための環境面や注意すべき点についても説明いたします。

18:00

Thu, Jan 1
Timezone: ()