こんにちは、アソビュー技術広報チームです。
アソビューでは、毎週「テックトーク」という社内エンジニア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
にも触れ、OffsetDateTime
、ZonedDateTime
といったタイムゾーン関連クラスについても説明がありました。(でもサマータイムが出てきたら渋い顔しましょうとのこと)
- Java 8で導入された
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の歴史を表現するのにマッチしていたのでご紹介しました
- かつては使いづらかった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
【権利表記】 本記事は、インターネットミーム「好きな惣菜発表ドラゴン」にインスパイアされた企画を含みます。