
18下期 JavaGold勉強会レポート Vol.2
1.今回のテーマと内容
1–1.受講生の学習状況の確認
受講生たち全員が、しっかりと開始時間前にセミナールームへ集合しました。受講生の全員がそれぞれの業務終了後ですが、これからがっちり勉強をするぞ、という意欲に満ちあふれているように見えますよ。
この勉強会は、必ず受講生全員の勉強の状況共有から始めているとのことです。そういえば、前期の勉強会もそんな感じでしたね。
さて、受講生の状況はいろいろでした。ちゃんと進めている人、頑張っているけれども壁にぶつかっている人、残念ながらあまり進んでいない人…。
大石講師は一人一人の状況共有へしっかり耳を傾けて、コメントを返します。それらのコメントを聞いていると、「毎日ちまちまやりなさい」「合格者の声をちゃんと読みなさい」が、大石講師の口癖のようです。
勉強の進み具合は受講生それぞれでしたが、大石講師からもらったコメントを参考にして、どんどん勉強を進めていってほしいですね。
1–2.スレッドとは何ぞや
今月の講義内容は「スレッド」というものだそうです。スレッドはGold試験でも難易度が高いものだとのことで、受講生は話の内容を吸収すべく、しっかりと聞き耳を立て始めました。
ここでスレッドについての説明資料が配られるのかと思いきや、大石講師は自分で書いたというENGINEER-CLUBの記事を使って説明を始めました。うーん、これはずるいというべきか、効率的というべきか、ちょっと判断に迷うところです。
Javaのスレッド(Thread)を使いこなすコツを、基礎からしっかり伝授 https://www.bold.ne.jp/engineer-club/java-thread
大石講師に後から聞いたところ、「これは初心者向けの記事なので、スレッドとは何ぞやというレベルの人への説明にはもってこい」なのだそうです。また、「あらかじめ勉強会での講義で使うことも考えて記事を書いた」のだそうですよ。
講義では、大石講師の説明が続きます。スレッドはどういうことに使うのか、スレッドを使うと何がうれしいのか、スレッドをJavaプログラム上で使うための方法、スレッドを使う時の注意事項について、一つ一つ説明がされました。
スレッドは、どうやらとてもややこしく、理解が難しいもののようです。大石講師も分かりやすい説明をするのが大変そうではありました。でも、なにせ記事を書いた本人からの説明ですから、受講生が感じる分かりやすさもひとしおのようでしたよ。
1–3.超速習Executorフレームワーク
次に、大石講師がちょっと時間を気にしながらも、「Executorフレームワーク」の資料にプロジェクタの表示を切り替えました。これは、Gold試験のとても大事なところだそうです。
ここでいきなり、大石講師がスレッドへの恨み辛みを語り始めました。
・ちゃんと動くマルチスレッドプログラムを作るのは難しい
・スレッドプールの管理は面倒で、自分ではやりたくない
・Runnableが戻り値を戻せないのは不便の極み
・解決すべき不具合がぜんぜん再現しない
きっと、大石講師が今までしてきた仕事での経験なのでしょう、言いたい放題です。受講生たちは「大石さんはどうしちゃったんだろう」という微妙な雰囲気を漂わせつつも、話にじっと聞き入っています。
大石講師の話では、これらのJavaプログラマの恨み辛みがExecutorフレームワークが生まれた背景で、それらの問題がきれいさっぱり解決するのだそう。そして、その背景の理解こそが重要なのだとも。
その後、正気に戻った大石講師から、Executorフレームワークの説明が続きました。以下のとおり、内容は盛りだくさん。受講生からの質問にも即回答しつつ、ガンガン説明していきます。
・フレームワークで使うクラス・インターフェイスの役割
・プログラムサンプルの行ごとの意味
・CallableとRunnableの違い
・Futureは処理結果との引換券である
・ExecutorServiceの処理実行メソッドの違いの図説
そのうち、講義時間の終わりがやってきました。大石講師は不完全燃焼気味で、「え、もう終わり? 時間がぜんぜん足りねー!!」と悲鳴を上げます。それでも、大事なポイントはしっかりと伝え終わったみたいですよ。
最後に大石講師から「何か質問はありますか?」と聞かれた時には、受講生は「ありません!!」と言わんばかりの満足げな表情を浮かべていました。
2.次回予告
次回の講義では、Javaで日時を扱うための新しいフレームワーク「Date and Time API」の説明を行うとのことです。
もし今回の調子が続くなら、大石講師がJavaプログラミングで経験してきたことの恨み辛みの物語がまた始まるかもしれません。受講生のみなさんも、大石講師の愚痴を我慢して聞いてあげてくださいね。
3.受講者の声と評価
今回の講義の受講生からの評価は、平均で97点だったそうです。講義のクォリティに満足できなければ、辛めの点数を情け容赦なくつけるBOLDのエンジニアたち。それからしてみれば、なかなかのものかもしれません。
受講生からの声には、以下のものがあったとのこと。今回の講義が、スレッドの理解にしっかりと役立ったようですね。
・忘れていたことを思い出すことができました
・非常にわかりやすかったです
・講義を聞いていてさっぱりわからないというような部分がありませんでした。Gold範囲の学習の導入として、最適だと感じます
・問題を解く時は、スレッドの動きや使用している変数に注意したいと思います
・Threadの不便さを語る大石さんの熱の入りっぷりから、現場の大変さがリアルに伝わってきました
4.勉強会で伝えたいこと
プログラムをじっと眺めているだけでは、スレッドの正しい理解には絶対に到達できません。自分でプログラムを書いて動かして、いろいろいじって失敗してみなければ、実感は決して得られないのです。
知識としても、プロセスとスレッドの違いの理解や、スレッドがJava仮想マシン上やOS上で動く時の具体的なイメージを知らなければなりません。それに、マルチコアやマルチプロセッサなどの、コンピュータアーキテクチャの理解も求められます。
そういう経験や理解を積み重ねていけば、「ああ、そういうことだったのか」と思える時が必ずやって来ます。この勉強会を通じて、受講生にはそんな体験をたくさんさせてあげたいのです。(談:メイン講師 大石さん)