天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

寺田さん×きしださんに聞く Java開発の第一線に参加してきた

findy.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

様々なアプリケーションの土台となっているJava、言語としての性能の高さはいうまでもなく、大規模な開発をはじめとして現在でも多くの現場で利用されています。
本イベントでは、日本人で2人目のJava Championである寺田 佳央(@yoshioterada) さんと、Javaスペシャリストとして知られ、登壇、執筆、コミュニティ活動を通してJavaの認知拡大・普及のために活動しているきしだ なおき(@kis)さんのお二方にJavaの最新情報について、お話しいただきます。

会の様子

講演1〜Javaは今どうなっているの?〜

はじめにきしださんから講演がありました。

より学習しやすく

Pythonに初学者が奪われている状況から、初学者にとって実行しやすくなってきているというお話がありました。

具体的には、以下のような点が工夫として挙げられているということでした。

  • Java11から、javac不要で実行できるようになっている
  • (Java23からの予定)public static void mainから脱却し、void mainだけで動かせるようになる。
  • そのうちではあるが、System.outも消せるようにする動きがでている
スレッドモデルの改善

Java21ではグリーンスレッドが「仮想スレッド」として導入されているということで、OSスレッドがオーバースペックな状況で利用できるようになっているということでした。

また、タスクの構造がコードの構造に一致するように、構造化並列が利用されているということです。

オブジェクト指向からデータ指向へ

オブジェクト指向はモジュール化技術といえますが、そもそもモジュール化は既に行われているため、オブジェクト指向は不要になりつつあるということです。

そのため、データ指向に移り変わってきているということで、データの操作だけ公開することで変更に強い型を定義できるようにしたり(=抽象データ型)、値を組み合わせる直積型や直和型を使えるようにするという型の組み合わせ指針が定義されたり(=代数データ型)、ポリモーフィズムではなく条件分岐で対応することが推奨され、switchが書きやすくなったりしてきているということでした。

また、データ指向は新しい技術というわけではなく、今実務でやっていることを説明しているものだという補足もありました。

講演2〜AI を活用した Java アプリケーション開発生産性の向上について〜

続いて寺田さんから、GitHub Copilot/GitHub Copilot Chatに関する講演がありました。

GitHub Copilotの活用

GitHub CopilotはGitHub上のコードから学習したデータを基にAIを利用してコードの自動生成を行えるもので、コードはもちろんテストやドキュメントも自動生成できるという話がありました。また、ユーザーのコードも学習するため、提案したコードを修正することでより好みに近いコードが書けるという話がありました。

また、企業で安心して利用できるような設定も導入されているという補足がありました。

GitHub Copilot Chatの活用

GitHub Copilot Chatは開発課題に対してチャット形式で対応してくれるものであり、自動コード生成やエラー時の原因究明ができるということでした。

Open AI SDK

GitHub CopilotやGitHub Copilot ChatではなくOpen AI SDKを使うことで自分たちで開発することもできるということで、Javaに関するOpen AI関連ライブラリの紹介がありました。

  • (簡単なものを作りたいならおすすめ)Microsoft Java SDK
  • (複雑なものを作りたいならおすすめ)Semantic Kernel for Java
  • (中規模〜大規模な開発なら)Spring AIやLangchain for Java
  • (自分自身でアプリを使える)OpenAI-Java
デモ

てらださんが作ったワークショップ用のコードに関してデモがありました。

github.com

Q&A

講演のあとはQ&Aがありました。以下、質問と回答を常体かつ一問一答形式で記載していきます。

Java8しか使えない環境でどのように開発していくとよいのか?

  • データ指向自体はJava8でも使えるので活用してほしい
  • 最新の機能を使いたいなら新しいバージョンのコードを作ってあげてJava8からRESTか何かで呼び出すという手はある

KotlinからJavaへの回帰はあるか?

  • 今Kotlinを使っている人はJavaに戻ることはないが、人材が足りずJavaに戻るとかは全然あると思う

会全体を通した感想

お二人の話が同時に聞ける機会は貴重なので参加できてよかったです。

きしださんの発表では、自分が学習を始めたときに学習コストが高かったポイントが現在のJavaではどんどん解消方向に向かっているという話が聞けて面白いなあと思った反面、質問では新しいバージョンのJavaが使えないという話に共感が多く寄せられていて、厳しい現場がまだまだ多そうなことを実感しました。