教えて! 最新技術―テックコミュニティの現場から

第2回 Java/Pythonのこれまでとこれから

この記事を読むのに必要な時間:およそ 3.5 分

テックコミュニティの運営側で,その技術分野を常に追いかけているエンジニアの方々にお話をうかがうインタビュー企画。ホストは関満徳が務めます。新型コロナ禍のさなか対面での取材を避け,リモートで行います。第2回目のゲストとしてお迎えしたのは,テクニカルプリセールスとして活躍する石田真彩氏です。

石田氏は,クラウドベンダーにて公共系業界特化のテクニカルプリセールスとして従事。そのかたわら,Java 女子部運営,PyLadies Tokyoオーガナイザー,日本Javaユーザーグループ(JJUG)幹事として,Java/Pythonの勉強会やイベント運営など積極的に活動されています。

画像

石田 真彩(ISHIDA Maaya)さん

日本マイクロソフト⁠株⁠でAccount Technology Strategist として,公共・官公庁業界担当のテクニカルプリセールスに従事。

GitHub:mahya8585
Twitter:@maaya8585
URL:https://hotchpotchj37.wordpress.com/

関:JavaやPythonと出会ったのはいつぐらいなのでしょうか?

石田:私のキャリアのスタートはJavaでした。その後何度か転職しましたが,その中でベンチャーに在籍していたころ,ほかの言語も扱うことがあり,そのときにPythonとも出会いました。

関:現職ではどのような役割を担っているのでしょうか?

石田:公共・官公庁業界担当のテクニカルプリセールス,特にヘルスケア領域の案件で,クラウドアーキテクチャ,カスタマーサクセスや技術相談窓口の役割を担っています。

関:JavaやPythonの業務経験やコミュニティ活動を通して得た経験は,現職にどのように活かされているのでしょうか?

石田:Javaコミュニティ界隈の方々の中にはアーキテクトをやっている方が多く,アーキテクチャやコンポーネントの考え方,クラス分け,ドメイン駆動など,基本的なことから応用までしっかりやってきている方がたくさんいらっしゃいました。今の仕事は考え方を説明することが多いので,マイクロサービスの切り分けの知識や,あの方がそういえばあのときこんな考え方をしたと言っていたなぁとかそういうのが,現職でもすごい役に立ちました。とてもありがたいですね。

Javaのアップデート状況

関:Javaのアップデート状況について教えていただけますか?

石田:Javaはここ数年でバージョンアップの方法が変わり,チャレンジングなことをやる傾向が強くなっています。かつては3年に1回ぐらいしかアップデートがなく,互換性も強く,アップデートごとにソースコードを変える必要もありませんでした。しかし2017年9月にリリースされたJava 9以降,Javaのリリースサイクルを変える動きがあり,半年に1回メジャーバージョンアップをすることになりました。

しかしながらエンタープライズシステムに対して半年ごとにバージョンアップをお願いするのは現実的ではないこともあり,3年に1回リリースされるJavaの長期サポート(LTS)版を使うことを推奨している状況です。3年もあるとバージョンアップの情報量が多過ぎて対応が大変というデメリットはありますが,過渡期のライブラリに振り回されないというメリットもあります。たとえばLTS以外のバージョンでは開発中の機能のプレビューなどが含まれたりしますが,LTSに組み込まれたときには仕様が変わることもあります。

半年ごとのバージョンアップに追随するのであればきちんと半年ごとにバージョンアップを行う,LTSだけを追うのであれば3年の間に準備を進めておく,というようにそれぞれのリリースに応じたサイクルを社内で作り出すことが大切です。

Javaはここ数年で機能も大幅に増えました。ScalaやKotlinなどの他JVM言語で有用と判断された機能をJavaに逆輸入しているものもあります。たとえば,Scalaの関数型プログラミングの良いところを享受し,ストリームAPIなどの機能がJava 8で提供されました。

これから初めてJavaのバージョンアップをされる方は,バージョンアップにかかる費用を最初から予算に積んでもらうのがよいでしょう。特に,Java 8からJava 9のバージョンアップが破壊的で,削除・追加された機能も多いです。現状はJava 11がLTSで,2021年に予定されているJava 17が次のLTSです。バージョンアップに対するリスクは十分理解しますが,セキュリティもソースコードレベルでバージョンアップしていますし,メモリ効率や利便性,目に見えない部分も向上しているので,できれば追随して追いかけていっていただきたいと考えています。

関:OracleのJavaに対するアプローチに変化があったと聞いています。

石田:はい。有償のOracle版JDKにあった機能がOpenJDKへ寄贈されるようになりました。たとえば,Javaアプリケーションの状態調査に役立つプロファイリング情報を集めるJava Flight Recorderなどですね。これまでは有償のOracle版JDKにしか存在しなかったものを,徐々に徐々にOpenJDK OSSコミュニティへ寄贈しています。プレビューから始まり,少しずつ使えるようになってきています。

Pythonのアップデート状況

関:Pythonのアップデート状況について教えていただけますか?

石田:Pythonは基幹系やOS内部で採用されることが多いこともあり,バージョンアップはゆっくりで,現時点のメジャーバージョンはPython 3となります。マイナーバージョンアップは,Javaと違って定期的なサイクルがあるわけではなく,⁠こんな改善を行っています」という情報が公式サイトに上がってくるので,都度その情報を追いかけるような形になりますね。

Pythonのアップデートですが,⁠次のシステムを入れるときはバージョンを上げましょう」としてもよいかもしれません。しかし,Python 2はすでにサポート終了になっていますので,もしまだ使っている方は早めにPython 3にしてもらいたいと考えています。Python 2からPython 3へのバージョンアップは,2to3というコマンドを使った自動変換を実行したあと,変換できなかったところやバグを潰せばよいです。

著者プロフィール

関満徳(せきみつのり)

グロース・アーキテクチャ&チームス㈱でプロダクトオーナー支援スペシャリスト,ディスカバリーコーチとして,エンタープライズ領域の企業にDX化のコンサルティングサービスを提供。

GitHub:fullvirtue
Twitter:@fullvirtue
URL:https://fullvirtue.com/