Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JJGU CCC 2019 Springまとめ~Java歴1年なりの意見を添えて~

JJGU CCC 2019 Springまとめ~Java歴1年なりの意見を添えて~

This slide is summary of JJUG CCC 2019 Spring .

chan_kaku

June 07, 2019
Tweet

More Decks by chan_kaku

Other Decks in Programming

Transcript

  1. JJUG CCC 2019 Springのまとめ
    ~Java歴1年なりの意見を添えて~
    京都Devかふぇ#6
    〜JJUG CCC 2019 Spring 参加報告会(非公式)〜
    フリュー株式会社
    角田 拓己 a.k.a. chan_kaku

    View Slide

  2. Who
    Twitter @chan_kakuz
    フリュー株式会社
    サーバサイドエンジニア
    時々フロント
    普段はJava,Kotlin,Vueとか
    好き
    chan_kaku

    View Slide

  3. 今回の京都Devかふぇ
    のテーマは

    View Slide

  4. View Slide

  5. View Slide

  6. 1人くらい振り返りやら
    ないと、、、

    View Slide

  7. 今回話す内容
    ● 今回のCCCで話されていた内容の振り返り
    ● Java歴1年のペーペーエンジニアが感じたこと

    View Slide

  8. Valhalla, update and future(David Buck)

    View Slide

  9. Valhalla, update and future
    ● Project Valhallaについての紹介
    ● 今後どうしていくか

    View Slide

  10. The Goals of this Project is to provide a venue to explore and incubate
    advanced Java VM and Language feature candidates such as:
    ● Value Types
    ● Generic Specialization
    ● VarHandles
    ● Nestmates
    About Project Valhalla
    https://wiki.openjdk.java.net/display/valhalla/Main

    View Slide

  11. Value Types
    オブジェクト プリミティブ
    String
    Integer
    float
    int

    View Slide

  12. Value Types
    オブジェクト プリミティブ
    String
    Integer
    float
    int
    Value Types

    View Slide

  13. Value Types
    個人的に面白そうなところ
    ● ジェネリクスの型への型パラメータについて

    View Slide

  14. Nestmates
    Nastedとは
    Class A
    Class B

    View Slide

  15. Nestmates
    class A {
    class B{}
    }

    View Slide

  16. Nestmates
    コンパイルすると、、、
    A.class A$B.classと言う2つのクラスファイルにコンパイルされる

    View Slide

  17. Nestmates
    A.class A$B.class
    JVMの解釈

    View Slide

  18. Nestmates
    public class Outer {
    private int i = 0;
    public class Inner {
    public int i() {
    return i;
    }
    }
    }

    View Slide

  19. Nestmates
    クラスファイル(Outer.class)のバイトコードをみてみる(Java Version <= 10)

    View Slide

  20. Nestmates
    誰や???

    View Slide

  21. Nestmates
    access$000()の正体
    インナークラスがクラスがprivateへのアクセスはコンパイラによって
    Outerクラスのパッケージprivateなアクセッサメソッド
    access$000()に変換される
    jasmとか使えばどこからでもprivateにアクセスでき
    てしまう

    View Slide

  22. Nestmates
    Java Version >= 11

    View Slide

  23. Nestmates
    Java 11以降ではaccess$000()を外部から呼べなくなった(多分)

    View Slide

  24. 感じたこと
    NestMatesについてはJava11らへんで調べていた
    Javaの実装がどうなっているかはあまり気にしたことがなかったが、ちょっと興味が出て
    きた

    View Slide

  25. テストエンジニアが教える 
    JUnitを書き始める前に考えるべきテスト
    (風間 裕也)

    View Slide

  26. 内容
    ● テストの目的
    ● テストファーストで行うことの良さ
    ● 何をテストすれば良いのか

    View Slide

  27. テストの目的
    ● 欠陥の検出
    ● 対象ソフトウェアの品質が十分であることの確認
    ● 意思決定のための情報の提示
    ● 欠陥の作り込みの防止
    テストの7原則的にはテストは「欠陥があること」しか示せ
    ない

    View Slide

  28. テストの目的
    ● 欠陥の検出
    ● 対象ソフトウェアの品質が十分であることの確認
    ● 意思決定のための情報の提示
    ● 欠陥の作り込みの防止
    テストの7原則的にはテストは「欠陥があること」しか示せ
    ない
    実装前に行うことも!

    View Slide

  29. 何をテストすべきか?
    例題
    http://www.slideshare.net/takashiyamasaki378/ss-55384920

    View Slide

  30. 何をテストすべきか?
    パスワードは4文字以上12文字以下の
    英数字のみを許容する
    パスワードを3分以内に4回以上間違って入力すると
    アカウントを5分間 ロックする
    文字列長
    文字種
    期間管理 回数管理
    誤入力 誤入力
    ロック保持期間 状態遷移
    許容しないとどうなる?
    (ボタン制御orエラー画面)
    5回目の入力はどうなる?

    View Slide

  31. 何をテストすべきか?
    実はこの例では何もプログラムを書いていない
    - 実装前にテストをすることができる!
    - 実装前のレビューで指摘できれば、Fコストも大幅に削減することができる!

    View Slide

  32. どうやってテストケースを作るのか?
    何個の選択肢をテストするのか?

    View Slide

  33. 答え1
    プルダウンの一番上と下をテストする
    - 最後の項目まで動くかどうかチェックする
    - 特に1番最後は大事!
    - 配列の最後の選択を i[46]ではなくi[47]にしていたり、、、

    View Slide

  34. 答え2
    都、道、府、県の4パターン
    選択したら以下の図のように出力されるような場合

    View Slide

  35. テストケースを作るときに大事なこと
    なぜそのテストをするのか理由を考える
    - この理由がそのままテストの名前にすることができる

    View Slide

  36. テストケースはいくつ?
    テストケースは時間さえあれば無限に作れる
    テスト設計技法
    - 同値分割法
    - 境界分析
    - などなど、、、

    View Slide

  37. 境界値分析
    4 12
    有効
    無効 無効
    パスワードは4文字以上12文字以下
    3 13
    テスト原則:欠陥の偏在

    View Slide

  38. 感じたこと
    CCCでワークをしたのは初めてだったので、結構楽しかった
    人によってどれくらいテストした方が良いのかと言う幅が違くて、結構難しいと思っていた
    ので、観点がわかったのはよかった
    テストのモチベーションが上がった

    View Slide

  39. CCCの全体の感想

    View Slide

  40. 今回のCCCの感想
    前回までは、KotlinやScalaなどJava以外の話が多かったイメージ
    今回はJavaの話が多く、特に設計の話が多く、個人的には最近設計にはまっているの
    で、とても有意義であった
    だんだんと英語のセッションも増えてきている印象
    英語頑張る

    View Slide

  41. fin

    View Slide

  42. 参考
    ● https://www.slideshare.net/DavidBuck7/valhalla-update-jjug-ccc-spring-2019
    ● https://speakerdeck.com/nihonbuson/jjug-ccc-2019-spring

    View Slide