ニュース

最新のJava技術を熊本でも――、Oracle Code Japan Tour in Kumamotoレポート

 日本Javaユーザーグループ(JJUG)によるOracle Code Japan Tourが、5月~6月にかけて、日本各地で開催されている。

 昨年はNightHacking Japan Tourとして全国9カ所で開催されたが、今年はOracle Code Japan Tourに改称。5月18日、東京で開催したのを皮切りに、名古屋、大阪、岡山、広島で開催している。5月28日には、東京以外では5カ所目として、熊本で開催された。

Oracle Code Japan Tour in Kumamotoの会場の様子

 「昨年は、9カ所の開催地のなかには熊本が入っていなかったが、ツアー終了後に、熊本Java勉強会から熊本での開催要望が寄せられたことから、今年は初めて熊本で開催することになった」(日本オラクル クラウド・テクノロジー事業統括 Fusion Middleware事業統括本部 ビジネス推進本部 担当シニアマネジャーの伊藤敬氏)という。

日本オラクル クラウド・テクノロジー事業統括 Fusion Middleware事業統括本部 ビジネス推進本部 担当シニアマネジャーの伊藤敬氏

 熊本Java勉強会を主宰している久保智氏は、「熊本でITエンジニアを目指している人たちは福岡などに出て行ってしまう傾向が強く、地元に残る人が少ない。だが、その一方で、熊本へのIT企業の進出も見られている。熊本Java勉強会では、Javaに関心を持つエンジニアや学生などを対象に、昨年は月2~3回程度の勉強会を開催していたが、今年は、今回が初めての勉強会の開催。これをきっかけにして活動を再び活発化させたい」と語る。

熊本Java勉強会を主宰している久保智氏

Javaの最新技術動向やユースケース、トレンドに関するノウハウなどを紹介

 5月28日に熊本市下通の未来会議室で開催されたOracle Code Japan Tour in Kumamotoは、日曜日の午後1時30分からスタート。午後6時までの4時間30分のセミナーであったにも関わらず、約20人のエンジニアが参加。すべての参加者が途中退席することなく、真剣なまなざしで受講していた。

 Oracle Codeはエンジニアを対象に、Javaの最新技術動向やユースケース、トレンドに関するノウハウや技術情報を提供するイベントであり、米Oracleが主催し、Javaユーザーグループが協力する形で、世界各国で開催されている。

 そして、今回のOracle Code Japan Tourでの最大の目玉は、米Oracle テクノロジーネットワークのディレクターであるStephen Chin氏と、全世界で200人が認定されているJava Championのうちの1人であるSebastian Daschner氏の2人によるセミナーだ。しかも、2人は各地の移動に大型バイクを使用。5月20日に東京を出発し、開催地をツーリングしながら各地で講師を務めている。熊本会場には当日朝に広島から移動。自らの講演時間前となる午後3時前に会場に到着した。これまでの移動では一度も雨に降られていないというから、その強運ぶりにも驚く。

いまでもJavaは進化を続けている

 Oracle Code Japan Tour in Kumamotoの最初の講演は、熊本Java勉強会を主宰する久保氏だ。

 久保氏は、「ここ10年における課題は、開発期間の短縮化、機器スペックの多様化、リッチUIの導入といった点にある」と前置き。

 「開発期間の短縮化に対応するには、ツールの活用が効果的である。Javaでは、デファクトスタンダードになっているJUNITによって、回帰テストの自動化が可能になっており、不具合の理由もわかり、カバレッジを取得して可視化できるというメリットもある。また、テスト工数の削減に向けては、Javaには数多くの静的解析ツールがあり、これらの活用によって、バグを早期に発見することができる。さらに、ビルドツールの活用によってビルドを自動化したり、本番適用を自動化したりといったことで、何回も繰り返す作業を自動化。これらによって、開発に3カ月も期間をかけずにすむようになり、同時に属人性を削減することにもつながる」と述べた。

 また、「機器スペックの多様化においては、巨大メモリへの対応が図られる一方、Compact ProfilesやPROJECT Jigsawにより、小さい環境への対応も図られ、JavaはIoT環境にも適したものになっている。そのほか、Javaの標準APIとしてJSONに対応。一方で、セキュリティパッチの定例化のほか、サーバー向けのServer JREの配布を開始したことで、クライアント向けJREから、ブラウザプラグインなどの機能を無効化できるようになっており、セキュリティの強化が進められている、さらには、マイクロサービスやリアクティブプログラミング、ノンブロッキングI/Oなどのクラウドに対応した新たな開発アーキテクチャが登場している点も見逃せない」とする。

 一方で、「リッチUIとしては、サーバーサイドでは、Javaフレームワークの乱立が見られるほか、サーバー/クライアント間のデータのやりとりでは、JSONを活用することができるようになっている。また、クライアントサイドでは、HiDPI対応や、AWT、Swingに代わる新たなAPI群が登場している。このようにJavaを取り巻く環境を見ると、いまでもJavaは進化を続けていることがわかる」などとした。

バージョン番号の変更に“グッと”くる

 続いて登壇した日本オラクルの伊藤氏は、5月17日に東京・品川のグランプリンスホテル新高輪で開催した「Java Day Tokyo 2017」の内容を紹介するとともに、JDK 9の概要について説明。

 Java 9で提供されるJigsawは7月のリリース予定に向けて議論を続けているところである。Java 8では段階的にしか提供できなかったが、モジュール化して提供することができる。jlinkはJigsawのためのコマンドツールであり、必要なモジュールだけをまとめたカスタムJREを作成できる」とした。

 このほか、「Java 9では、G1GCがデフォルトGCとなり、CMSはDeprecatedに移行している。Java 9からは、GCの選択に気をつけてもらいたい。また、JEP 260により、ほとんどの内部APIが利用できなくなる。だが、代替されるAPIが用意されており、そちらへの移行を推奨することになる。代替APIがないものは一時的に残ることになるが、ここでも早めに新たなAPIに移行してほしい。どのAPIを使っているかが変わらない場合には、JDK8に含まれてているjdepsツールで検出することが可能になる。どうしても従来のAPIを利用する場合には、コマンドラインのフラグ指定によって、従来のライブラリ利用を指定することで利用できる」とも述べている。

 また、バージョン番号の変更についても説明した。例えば、これまではJDK 1.9.0_25といったような表記だったものが、新たなJDK9では、JDK 9.1.9といったような表記方法へと変更。「新たな仕組みは、セマンティックバージョンに準拠し、JDKのファイル名も変更することになる」とし、「これまで、1.xというバージョン表記が内部的には22年間続いてきた。長年Javaにかかわってきた私にとっては、今回のバージョニングの変更には、グっとくるものがある」とのコメントには会場が沸いた。

 また、2017年7月にリリースされるJava EE 8の修正提案についても説明。「昨年9月から、コミュニティを対象に調査を行った結果、1690件の回答があり、その結果、JAX-RS 2.1やServlet 4.0、JASON-B1.0、JSON-P1.1などに優先して対応。一方で、当初盛り込まれていたMVCは、重要ではないとして、優先度が下がった。オリジナルJava EE 8のプロポーザルとは異なる結果があり、Java EE 8は、これらの声をベースに進化することになる。いまの時点では、Java EE 8の2017年7月のリリースはオントラックで進められている」と説明した。

トラブルシューティングの実例などを紹介

 3人目に登壇したのが、NTTのOSSセンタ Javaテクニカルサポートエンジニアの久保田祐史氏。「Little Deeper Java 9 Features for troubleshooting」をテーマに、Java 9の機能や診断ツールであるjcmdを通じて、トラブルシューティングの実例などを紹介。Java 8からのGCログの移行方法についても説明した。

NTTのOSSセンタ Javaテクニカルサポートエンジニアの久保田祐史氏

 「jcmdは、CLIのローカルJVM process診断ツールであり、ぜひ、JDK 9では使ってもらいたいツールである」と位置づけ、jcmdの各種機能をそれぞれ説明した。「Java 9では、jcmdを利用することで起動後もログ設定の変更が可能であり、手動により強制ログローテートが可能になる」といった便利機能などについても紹介してみせた。

 さらに、「Java 9からの数々の変更は、トラブルシューターにとっては死活問題でもある」とし、「Java 9では、JVMログが変更され、そのままではログ情報の中身がわからなくなるといった問題が発生する可能性がある。だが、アプリケーション側のログが変わることはないという点も注意しておきたい」と前置き。

 「JVMログは、出力内容に一貫性がなく、設定が多種多様であり、レベルやカテゴリ制御がないという問題があった。これが、新たなフレームワークを導入することで一貫性を保つことができるようになる。カテゴリ分け、ログレベルの導入などが行われ、特にGCログ周りに大幅に手を入れた。JVMログの設定方法は、シンプル化し、すべてXlogで設定できる」などと説明した。

 久保田氏は、「Java 9からログが統一される設定や出力が一新されて管理が楽になる。設定については、Xlog:all=debugからはじめて、フィルタリングしていくのがお勧めである」などとした。

 講演では、随所にクイズや具体的な使用例などが盛り込まれ、受講者の理解を深めていた。

メイン講師2人によるセミナーも

 午後4時10分からは、メイン講師である2人のセミナーが行われた。

 最初に登壇したのはSebastian Daschner氏。ドイツに拠点を持つDaschner氏は、全世界に200人しかいないJava Championの1人だ。Java Championは、別のJava Championからの推奨によって認定されることになる。ちなみに、日本人のJava Championとしては2人が認定されている。

Java ChampionであるSebastian Daschner氏。JJUGのTシャツを着て講演

 Daschner氏は、「Cloud Native Java EE」をテーマに講演。同氏が得意とするライブコーディングを通じて、Java EEを用いたクラウドレディなアプリケーションを構築する方法について解説した。

 冒頭、Daschner氏は、全世界には、314のJavaユーザーグループがあること、1000万人以上のJavaの開発者がいることを示したほか、昨年秋にサンフランシスコで開催されたJava Oneについてのエピソードなども紹介。さらに、「JOnsen」として、Javaのエンジニアが日本の温泉を訪問しているといった活動にも触れた。

JOnsenでは、Javaの公式キャラクターであるDukeが温泉に入っているイラストを採用

 ライブコーディングでは、Java EEの拡張機能を活用。コンテナテクノロジーやオーケストレーションに高い適応性を持っていることや、JSONを活用したコーディングなどを実演した。

 オープンソースのJava EEアプリケーションサーバーであるWildFlyを活用し、用意した2つのアプリケーションを同期。また、Docker上にプッシュしたり、そこから再度ダウンロードしたりするなど、一連の開発の流れを実演してみせた。

Daschner氏によるライブコーディングの様子

 最後の講演者となったのが、米Oracle テクノロジーネットワークのStephen Chinディレクター。これまでバイクで国内を走破してきた映像をみせて、熊本に到着した様子を紹介。「高速道路で、ユニークなクルマを見た」とアニメキャラクターがデザインされたクルマを撮影したことを放映。参加者から「痛車」と呼ばれていることを教えられ、「ちょっと痛い」という新たな日本語を学んでいた。

米Oracle テクノロジーネットワークのStephen Chinディレクター
バイクで移動している様子を紹介

 講演のテーマは、「Raspberry Pi with Java 9」。安価に入手できるRaspberry Piを使用し、Javaプログラミングによってさまざまな用途で利用できることを説明。5月に都内で開催されたOracle Codeでは、Raspberry PiとJavaとの組み合わせで、自分の好みに味にコーヒーをブレンドできることや、スマートフォンからの操作で、プラスチック樹脂を自由なデザインに切り抜けるというデモを行ったことを紹介した。続けて、会場内にテープを使って道路を制作。Raspberry PiとJavaにより、玩具のクルマを走らせる様子をデモする準備をしたが、今回の会場では、クルマの不具合によって実現しなかった。

会場ではテープで道路を作ったがネットワークの不具合で残念ながら動かなかった

 Chinディレクターは、これらのデモを通じて、Java 9によるIoT対応や組み込みでの活用を、具体的な事例として紹介。こうした取り組みを通じて、エンジニアの組み込み技術のスキル向上や、組み込み型のプロジェクトへの参画などにつなげてほしいとした。

 なお、2人の講演はすべて英語で行われたが、ライブコーディングや具体的なデモが中心となったことで、Javaのエンジニアであれば、英語を日常的に使用していない参加者にも理解しやすい内容であったといえる。

 Oracle Code Japan Tourは、5月29日には福岡で開催。今後、福井(5月31日)、仙台(6月1日)、札幌(6月3日)で開催する予定だ。