テックコミュニティの運営側で、その技術分野を常に追いかけているエンジニアの方々にお話をうかがうインタビュー企画。ホストは関満徳が務めます。新型コロナ禍のさなか対面での取材を避け、リモートで行います。第2回目のゲストとしてお迎えしたのは、テクニカルプリセールスとして活躍する石田真彩氏です。
石田氏は、クラウドベンダーにて公共系業界特化のテクニカルプリセールスとして従事。その傍( かたわ ) ら、Java 女子部運営、PyLadies Tokyoオーガナイザー、日本Javaユーザーグループ(JJUG)幹事として、Java/Pythonの勉強会やイベント運営など積極的に活動されています。
関: 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というコマンドを使った自動変換を実行したあと、変換できなかったところやバグを潰せばよいです。
JavaやPythonをこれから学習する方へ
関: 普段フロントエンドをやっている人が、これからJavaを学習しようとする場合、何から着手すればよいのでしょうか?
石田: 昔は、いきなり全部作ってコンパイルして、とやらないと動作確認ができず、学習もつらい状況でした。しかし、Java9からはJShell[1] が登場し、Hello Worldをまず最初に出力したあとに、どんどん拡張していきながら徐々に上位階層を実装していく、ということが可能になりました。これからJavaを学習する方は、コマンドラインベースで試すところからチャレンジし、徐々に拡張していくとよいです。
Javaはもともと体系立った言語ということもあり、基礎文法や初級レベルの内容は少し前の内容と大きく変わっていません。検索結果が多少古い記事だったとしても(初学者であれば)大きな考え方の齟齬( そご ) には至らないとは思います。ただし、微妙な文法の違いや、現在使える記法との互換性や考え方の違いなどを知る必要はありますので、できる限り最新の入門書やWeb記事の情報を見ていただくとよいですね。
最新のJavaの状況を知りたい場合は、OpenJDKのサイト をチェックするとよいです。いろいろな議論が見えますし、本当の最新情報が確認できます。日本語で情報を得たい場合は、Java界隈の有名人のブログ[2] をチェックしていただくのがよいでしょう。
関: Javaのフレームワークは、どれを選べばよいのでしょうか?
石田: 最近のシステムで多く使われているWebフレームワークは、Spring Bootかと思います。Java EEというフレームワークもよく使われていますが、こちらはJakarta EEというオープンソースへの開発移行中となっています。どちらも初心者の目線で見れば、機能レベルでメリットやデメリットはそんなにありません。やり方や書き方が違うだけです。とはいえ最近では、Spring Bootのほうが圧倒的にバージョンアップが早いようです。ただし、たまに破壊的なバージョンアップもあります。全部のバージョンを追いかけていくとなると大変になる傾向はありますが、使っている会社も圧倒的に多く情報もネットで検索しやすく、仕事でも使いやすいです。日本Springユーザー会(JSUG)と呼ばれるSpring Framework専門のコミュニティ もあり、定期的にイベントをやっているので、そちらもチェックするとよいでしょう。
関満徳 氏
関: Pythonのフレームワークは、どんな状況なのでしょうか?
石田: Pythonのフレームワークは、軽量なものからフルスタックなものまでたくさんあります。そんな中でも、複数人で仕事で使われるフレームワークとしては、Djangoを採用している会社が多い印象です。逆にスピード重視、Webサイトをさくっと作りたい、という方であればFlaskを採用している方も多いのではないでしょうか。機械学習系であればKerasですね。
関: Javaの開発環境はどれを選べばよいのでしょうか?
石田: 数年前からさほど変わっておらず、EclipseかIntelliJ IDEAがメジャーだと思います。小さいコードを書くならVisual Studio Codeでもよいかもしれませんが、そんな小さいコードをJavaで書くことはあまりないですからね。コミュニティイベントでデモをするときにはIntelliJ IDEAを使われている方が比較的多いかなという印象です。
関: Pythonの開発環境はどれを選べばよいのでしょうか?
石田: Pythonの開発環境は、ちょっとスクリプトを書けばよいという方はVisual Studio Code。Web開発や差分管理をするならVisual Studio CodeかPyCharm(パイチャーム) 。分析界隈の方々は、分析ロジックの開発のニーズとして自分のPCで自分自身が解析できればよく、ソースコードの差分を比較してという文化が薄い傾向にあるため、リアルタイムに変更・実行が行えるJupyter Notebook(ジュピターノートブック)に人気があるようです。
JavaやPythonのコミュニティ状況
関: JavaコミュニティやPythonコミュニティのオンライン開催状況はどのような感じなのでしょうか?
石田: Javaコミュニティですが、JJUGは毎月1回オンラインで定期的に開催しています。毎年春と秋に開催するJJUG CCCについては、2020年5月のイベントはオフライン開催中止、オンラインにて小規模イベント開催となりました。2020年秋のイベントはオンラインにて大規模開催予定で、公募セッションの選定も完了しました。この記事が読まれるころには参加申し込みも始まっていますので、参加していただけたらうれしいです。
Pythonコミュニティですが、もともとリモートワークをやっていた方が多く、オンライン開催に対して抵抗感が少ない人が多かったのではないかという印象を持っています。一方JJUGでは、コミュニティ幹事・参加者ともにオンライン開催への温度感が異なっていると感じています。たとえば、オフライン開催にこだわりたい、という要望を持っている人も一定数いることは事実です。
どちらのコミュニティも、オンライン開催をしたことで初めて参加した層もあり、参加者層が入れ替わったなぁという雰囲気を感じることもあります。
関: オンライン開催を何度も開催してきた中で、あらためてオフラインで開催するメリットや価値はどのようなところだったと考えていますか?
石田: オンライン開催とオフライン開催での大きな違いは、雑談にあると考えています。雲の上の人だと思っていた人が懇親会で急に隣にいてお話しする状況になったり、休憩時間にほかの参加者との雑談から得た情報があとで調べたらとても重要だとわかったり、たまたま議論している輪になんとなく入って一緒に議論したり、ということにも価値がありますよね。オンライン開催でも、主催側が頑張って懇親会や雑談用のチャンネルなどを提供したり、参加者側がそういったチャンネルへ意図的に移動したりすることはもちろんできますが、休憩時間や懇親会などで登壇者や参加者がわいわいしゃべっているのを漏れ聴く、というのをオンラインで実現するのは、現状ではまだ難しいと感じます。
関: オンライン開催の参加価値をさらに上げる方法などはありますか?
石田: 一番大事なのは、運営のオンラインイベントに対するやる気ではないでしょうか(笑) 。聴講者としてリアルタイムでオンラインイベントに参加しているときは、YouTubeやZoomなどのチャットウィンドウにたくさんコメントをするとよいと思います。こんな質問をコメント欄に書いてもいいのかな?と最初は怖いかもしれません。しかし、コメント欄に質問が書かれると登壇者も実はうれしいんですよ。意外と質問を拾って答えてくれたり、説明しなおしてくれたりする登壇者も多いです。
録画を後日YouTubeで観るときは、2倍速で観るのも1つの手ですね。
写真1 PyLadies Caravan in 愛知でプレゼンする石田さん
読者へのメッセージ
関: 最後に、本誌読者のみなさんへのメッセージをいただいてもよいでしょうか?
石田: JavaもPythonもある程度歴史のある言語ですが、みなさんからのフィードバックはこれからも必要なはずです。コミュニティイベントに参加する、ブログを書く、オンラインイベントをやるなど、ご自身ができる範囲でなんらかのアクションや貢献をしてもらえたらうれしいです。派手じゃなくてもよいので、楽しく、一緒に業界を盛り上げていきましょう。
特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現!
特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう
特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT