Java 女子部のイベントで Project Lambda のセッションとハンズオンの先生役をやってきました。
事前に初心者が多いことを聞いていたので、ハンズオンの資料は以前のラムダ道場ではなくて、もうちょっと簡単なラムダお稽古を作成しました。資料は GitHub で公開しています。
Lambda Okeiko https://github.com/skrb/LambdaOkeiko
しかし、このハンズオン資料の作成に思いのほか時間がかかってしまって、セッション資料はほぼ使い回し。スイマセン ^ ^;;
それでも、セッション資料も 1/3 ぐらいは差し替えたんですけどね。とはいうものの、基本的には沖縄で使用したものと同じなので、こちらを貼っておきます。
さて、セッションとハンズオンの内容ですが、初心者向けということでかなり内容を絞りました。今回、扱ったのは
- Lambda 式
- Effectively final
- Effectively final
- Stream
- Collection#stream
- Arrays..stream
- filter
- map/mapToObj
- flatMap
- forEach
- collect
Lambda 式は扱っても、インタフェースの default 実装や static メソッドは扱いませんでした。
また、メソッド参照もやりませんでした。メソッド参照はコンストラクタ参照などを含めると結構バリエーションあります。しかし、全部説明しても結局使うのは System.out::println ぐらいだし、逆に使いすぎると分けが分からなくなりがち。
厳密な Lambda 式と匿名クラスの違いなんかも触れていません。
Stream も 5 種類のメソッドだけで、reduce など他のメソッドはまったくやりませんでした。
でも、この 5 種類だけ使えれば、だいたい使えるし、Stream の基本的な使い方さえ分かれば他の補助的なメソッドも使えるはずと見込んだわけです。
でも、いろいろ想定と違っている部分も...
たとえば
- 匿名クラスを使ったことない
- NIO はもちろん、Thread も使ったことない
- Iterator は使ったことあるけど、拡張 for 文は書いたことがない
デスクトップアプリケーションばかり作っている櫻庭にとって匿名クラスを使わないということはありえないのですが、サーバー系だと使わないんでしょうね。Android をやっている人も少なかったし。マルチスレッドを使ったことがないというのも、サーバー系だからなのでしょう。
拡張 for 文は新人を教えるためのテキストが古いままになっているせいではないかと教えてもらいました。新人教育用のテキストなんてそんなに書きかえるわけもないので、そういうものかもしれません。でも、それはかなりまずいと思うんだけどなぁ....
まぁ、それはそれとしてそこそこ楽しんでいただけたのではないでしょうか。
さて、Java 女子部お菓子係としては、お菓子も忘れてはなりません。今日のお菓子は
- ラ メゾン デュ ショコラ の季節限定ボンボンショコラ
- ピエール エルメ パリ のサブレ イスパハン
をご用意いたしました。
たぶん、ハンズオンよりも、こちらの方が満足度は高かったのではww