社内LT会で「好きなJavaクラス発表ドラゴンLT」を開催しました

こんにちは、アソビュー技術広報チームです。 アソビューでは、毎週「テックトーク」という社内エンジニアLT会を実施しています。 テックトークでの発表内容は開発組織の皆に共有したいことならどんなテーマでもOKとしています。
先日、開発メンバー企画のJavaをテーマにした「好きなJavaクラス発表ドラゴンLT」を開催しました。このブログではそのレポートを掲載します。

イベント開催の目的

今回の「好きなJavaクラス発表ドラゴン」LT会は、インターネットミームの「好きな惣菜発表ドラゴン」にインスパイアされた企画です。 気軽にJavaのクラスについて好きな理由や使い方、あるある、思い出などを発表することで、組織内の関係性構築を目的としています。

普段の開発でよく使うクラスや、個人的に思い入れのあるクラス、もはやクラスの枠組みを越えたものも含めて、様々な切り口での発表がありました。

それでは発表!

7名の「ドラゴン」達の好きなJavaクラスはこちら!

  • LocalDate (発表者: 小池さん)

    LocalDate
    • Java 8で導入されたjava.timeパッケージのクラス。
    • LocalDateというかjava.timeパッケージが好みとのこと。
    • それ以前の日付型のjava.util.Dateにくらべて、LocalDateはコードも短くなり、出力フォーマットなども扱いやすい。
    • java.util.Dateの印象があまり良くなかったので、逆に LocalDate の印象がめっちゃ良いそうです。
    • LocalDateTimeにも触れ、OffsetDateTimeZonedDateTimeといったタイムゾーン関連クラスについても説明がありました。(でもサマータイムが出てきたら渋い顔しましょうとのこと)
  • Appletクラス (発表者: 竹村さん)

    Applet
    • ブラウザ上でJavaプログラムを動かす仕組みで、Java初期(Java 1.1〜1.4あたり)のクラス。
    • 1996年頃、雑誌で見たAppletのプログラム(金魚が泳ぐもの)を写経したことが、プログラミングを始めるきっかけになったそうです。
    • Flashの先輩的存在ですが、現在ではFlashもろとも使われなくなってしまい、名実ともに「思い出のクラス」となってしまいました。
  • StringBuilder (発表者: 服部さん)

    StringBuilder
    • 文字列結合において、+演算子ではなくStringBuilderを使うことの利便性や効率について説明。
    • +による文字列連結は、ループ処理など大量に行う場合に新しいStringインスタンスが繰り返し生成されて非効率になるが、StringBuilderは効率的に文字列を構築できる。
    • StringBuilder sb = new StringBuilder();のように変数名をsbにしていたなどは、あるあるでは?とのこと(たしかに)
  • Javaのswitch文の進化 (発表者: 五十嵐さん)

    Switch
    • かつては使いづらかったJavaのswitch文が、Javaのバージョンアップを経て大きく進化してきた過程を紹介
    • 初期は数値・整数のみ対応、、、だった頃を経て、Java 5でEnum、Java 7でStringへ対応(これだけでだいぶ使いやすくなった古の記憶が)
    • Java 14からはbreakが不要になって返却(yield)も可能に
      • みなさん break 忘れで泣いたご経験はありますよね・・・?
    • Java 21以降は型マッチングやnull判定も可能になり、さらにJava 25ではプリミティブ型にも対応予定とのこと(劇的な進化を感じますね)
    • Javaのバージョンアップと共にswitch文が非常に便利になり、Javaの歴史を表現するのにマッチしていたのでご紹介しました
  • List (発表者: 竹内さん)

    List
    • Java 9でコレクションフレームワークに追加されたList.of()メソッドについて。MapやSetにも同様のof()メソッドがある。
    • 以前はリスト作成にnew ArrayList()と要素のaddが必要だったが、List.of()を使えばシンプルに記述できる点がお気に入りらしい。
    • 生成されるリストは immutable(変更不可)であり、null 要素も不可。引数なしで空のリストを作成する場合も型安全であることや、Optionalとの組み合わせ例も紹介されました。
    • 可変長引数と固定引数版がある理由にも触れました。
  • JUnitのテストクラス(特に3系) (発表者: 進藤さん)

    TestSuite
    • JUnit3系のフレームワークには今でも静かな愛着があるそうで、今回のLTではTestSuiteを紹介。
    • 文系出身からエンジニアへ転身。研修で学んだ基礎と現場で目にしたコードの緻密さとの間に大きな隔たりを感じ、「読む力」を鍛えることを決めたそうです。
    • その過程で出会ったJUnitのコードは、CompositeやTemplate Methodといったパターンが自然に息づく“動く設計の教科書“だったとのこと。
    • 中でもTestSuiteクラスに惹かれたのは、そのJavadocに書かれた「このクラスはスイスの2773mの山頂で生まれた」という記述に、遊び心と思想が同居する美しさを見たからだそうです。XPの「楽しく、クリエイティブに書こう」という精神が、そこには息づいていたのでしょう。
    • 技術と思想、その両方を無理なく表現するTestSuiteは、今でも特別な存在のようです。
  • Optional (発表者: 長友さん)

    Optional
    • Java 8で導入されたjava.util.Optional。
    • Javaが記法レベルでオブジェクトがnullか否かを型で表現したり、その時の振る舞いの記述をサポートしていない
    • そこで登場するのがOptionalと紹介
    • Nullになり得るものをそのまま扱うパターンとOptionalを使った場合のコードの比較を行い、OptionalのNullがあり得ることを伝える明示的な契約が可能なことや、そういったオブジェクトに対して関数型チェーンが組めることのメリットを紹介
    • 最後にOptionalの使いどころをプロダクトコードから抜粋して紹介し、みんなOptionalを使おうね!と締め括った

終わりに

各ドラゴンが思い出やあるあるなど交えて語ってくれたことで、かなり盛り上がったLT会となりました。 アソビューでは、今回のようなちょっと遊びの要素も入ったようなLT会も開催し、エンジニア同士の知識共有や交流を深めています。

カジュアル面談のご希望も随時お受けしておりますので、お気軽にエントリーください!
www.asoview.com


【権利表記】 本記事は、インターネットミーム「好きな惣菜発表ドラゴン」にインスパイアされた企画を含みます。

  • 著作者: ンバヂ
  • 原曲: 『好きな惣菜発表ドラゴン』(YouTube