2014/10/11

◆Java SE 8勉強会◆女子部もラムダ式に挑戦!

このエントリーをはてなブックマークに追加

Java 女子部のイベントで Project Lambda のセッションとハンズオンの先生役をやってきました。

事前に初心者が多いことを聞いていたので、ハンズオンの資料は以前のラムダ道場ではなくて、もうちょっと簡単なラムダお稽古を作成しました。資料は GitHub で公開しています。

 

Lambda Okeiko https://github.com/skrb/LambdaOkeiko

 

しかし、このハンズオン資料の作成に思いのほか時間がかかってしまって、セッション資料はほぼ使い回し。スイマセン ^ ^;;

それでも、セッション資料も 1/3 ぐらいは差し替えたんですけどね。とはいうものの、基本的には沖縄で使用したものと同じなので、こちらを貼っておきます。

 

 

さて、セッションとハンズオンの内容ですが、初心者向けということでかなり内容を絞りました。今回、扱ったのは

  • Lambda 式
    • 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

2014/10/02

JavaOne San Francisco 2014 最終日 (仮)

このエントリーをはてなブックマークに追加

初日の Technical Keynote は尻切れトンボで終わってしまったわけですが、なんと再演が決まりました。

Community Keynote の前にやるのだと。それはよかった!!

Keynote は懐かしの Marriot。Sun 時代はここで BOF を多くやってました。

ということで、今日聞いたセッション

 

  • Intel Keynote
  • Technical Keynote
  • Community Keynote
  • DistributableStream: A Java 8 Stream Computational Model for Big Data Processing [CON2152]

Keynote

Intel のキーノートはあまり興味がないので、パス。Hadoop の話をしてました。

続いて、Tech. Keynote の続き。前半の振り返りはパスで、後半の Project Lambda のところから。はじめにちょっとだけ Mark が喋って、すぐに Brian Goetz にバトンタッチ。そして、Jigsaw も軽く触れる程度。

ここからが日曜日に飛ばしてしまったところ。再び Brian にバトンタッチします。

通常、オブジェクトの配列を作成すると、配列に入るのはオブジェクトの参照だけで、オブジェクトはヒープの別の場所にあります。でも、これは参照をたどるのもムダだし、オブジェクトにヘッダをつけなくてはいけないということもムダです。

なので、直接フィールドを配列に書けるようなものを定義してしまえということになります。それが Value Type。

クラスとプリミティブの中間ぐらいの粒度ですかね。

Optional も Value Type 化するようです。

でも、配列だけにしておくのももったいない。ArrayList などでも Value Type 使いたいわけです。そこで、ジェネリクスでプリミティブを扱えるようになるのだと。これを Specialization と呼びます。

Java のジェネリクスはイレージャで、パラメータの型は消えてしまいます。これに対して、Specialization を使用するとパラメータに対応したクラスを生成してしまうようです。

これがあれば、IntStream なんてものがなくても済むわけです。実際には Stream<int> と書かれると、裏では IntStream を使うようになるかもしれませんけど。

こういう仕様をまとめているのが、Project Valhalla と Project Panama になります。

それぞれ、以下のような仕様を含んでいます。

  • Project Valhalla
    • Specialized Generics
    • Value Types
    • Var Handles
  • Projet Panama
    • Foreign FUnction Interface
    • Data Layout Control
    • Arrays 2.0

その後、Brian Oliver, John Rose, Charles Nutter, James Gosling、そして Brian も加わって Q&A セッション。ハッシュタグの #j1qa でツィートされた質問を Mark が他の人たちに降っていきます。

Mark はツィート見るのに夢中で、あまり人の答えを聞いていなかったりww

きしださんの blog に書かれているように、写真撮っていたので、質問はメモしておらず。なので、ぜんぜん覚えてません ><

 

Community Keynote の MC は Jim Weaver。Jim さん、かなり緊張してましたね。

Community Keynote はいつもと同じように、Java に関するいろいろな取り組みの紹介。

紹介されたのは、ロボットや株の取引アプリ、RoboVM に Android 向け JavaFX、JavaFX を使った教育ソフト、車の自動運転テスト用のロボットなど。

この中で、ロボットの話をした Andrea Keay さんのスピーチがすごいうまい。この人はちゃんとスピーチのトレーニング受けてますね。

内容はともかく、話のもっていき方や、ポスチャーなど、ほんとに隅々まで行き届いた感じ。他の人のスピーチが下手なのが引き立っていまいました。

その後、James Gosling がちょっとだけスピーチ。去年は自分の仕事の話もしていたけど、今年は Java のことだけ。Duke は Fung だったんだよ、など昔話。

まぁ、James は出てくるだけで、いいんですよ。話の内容はどうでもいいんです。

そして、最後に恒例の T シャツ投げ。今年もとれなかった...

DistributableStream: A Java 8 Stream Computational Model for Big Data Processing [CON2152]

スピーカは Oracle の Garret Swart。

今の Stream は共有メモリ型のマルチコアに適しているのですが、ネットワークでつなげた複数のマシンでも実行できるようにという話。いってみれば、Hadoop の Stream 版です。

実際に動いているものがあるわけではなく、アイデアのみのようなのですが、なかなかおもしろいです。

でも、もうちょっと具体化しないと、どうなるか分からない感じ。

というわけで、今年の JavaOne もおしまい。

2014/10/01

JavaOne San Francisco 2014 第 4 日 (仮)

このエントリーをはてなブックマークに追加

とりあえず、簡単な感想だけ。帰国してから、写真なども加えて、改訂予定です。

 

昨日、ホテルに帰ったら、いくらカードキーをかざしても部屋の鍵が開かない!

カードキーがおかしくなったかと思って、フロントに戻ってキーが開かないんだけどと。カードキーをリセットしてもらって、再び部屋へ。ところが開かない。

もう 1 度、フロントに戻ってダメなんだけどというと、今度はスタッフも一緒に来てマスターキーでトライしてくれました。ところが、開かない。

なんと、カードキーのレシーバーの方が逝かれちゃったらしいのです。

しかたなく、急遽別の部屋を用意してもらいました。でも、よく部屋あったなぁ。満室だったはずなのに。

明日の朝イチに業者が来るので、待っていてくれといわれたわけです。

ノート PC の充電器は持っていたものの、カメラやスマートフォンのは持っていません。もちろん、写真も PC に取り込めず。これはイタい。

まぁ、最悪の場合でも、買えばいいだけなので、どうにかなるでしょう。

で、今朝 8 時ぐらいに電話で、部屋が開いたと。で、行ってみたら、やっぱり鍵が壊れていたらしいです。もうこの部屋は使えないので、昨夜泊まった部屋に移動してほしいと。

幸いにも荷物は全部無事でした。それらを急いでまとめて、部屋を移動。カードキーも 1 泊だけになっていたので、リセットしてもらって、再び昨日の部屋へ。

まずは充電と写真の取り込み。今日の夜はライブがあるので、それに備えてカメラのバッテリーはフルにしておきたいのです。

そんなことをやっていたら、午前中の 2 セッションは聞けず。まぁ、しかたないです。

ほんと今年はついてない。

 

で、今日、聴講したセッション

  • Plugging into the Java Compiler [CON4265]
  • Extreme GUI Makeover [CON3474]
  • Building Custom JavaFX Controls [CON3064]
  • Introduction to Java DIO APIs [CON5394]

 

Plugging into the Java Compiler [CON4265]

スピーカーは Google の Christian Gruber と Éamonn McManus.。Java SE で Google の人のセッションは珍しい。まぁ、Android ではないですからね。

ちなみに、Éamonn は JDK のチームにいた人。JMX をやってましたけど、Google に行ってしまっていたとは。髪型が変わっていたので、全然気がつきませんでした。今は App Engine をやっているそうです。

このセッションでは アノテーションプロセッサーを使っていろいろやってみましょうというセッション。

メインは アノテーションで DI を行う Dagger の話。

櫻庭はアノテーションプロセッサを書いたこともあるので、だいたい知っていることでしたけど、便利なんですよね。アノテーションというと使うばかりで、自分でアノテーションを定義することはほとんどないかもしれませんけど、やってみるとおもしろいですよ。

Extreme GUI Makeover [CON3474]

スピーカーは Canoo の Hendrik Ebbers。Mastering JavafX 8 Contorls の著者でもあります。

Extream GUI Makeover というと、JavaOne 伝統のセッションタイトルでかつての Swing チームの Charles Haase などが行っていたセッションなのです。それを意識しているのか、偶然なのか....

かつての Extream GUI Makeover はおもしろかったんでけど、今回はつまらない。どうも話が薄いんですよね。Tips を並べただけという感じ。

やっぱり作っていた人たちの話と、作られたものを使っているだけの人の話は違うのかもしれません。

ちょっと残念。

Building Custom JavaFX Controls [CON3064]

で、今度は作っている人の話。スピーカーは Jonathan Giles。彼は JavaFX チームの人なのですが、サンタクララではなく、オーストラリアで活動してます。

また、FXExperience で毎週 JavaFX のニュース集めている人です。

で、去年もこのセッションに出たのですが、内容はほとんど同じでした。Jonathan もうちょっと考えようよ!!

とはいうものの差分が 0 というわけではなく、Java SE 8 で変わった部分はちゃんとアップデートしてました。変わった部分としては

  • SkinBase が公開 API になった
  • CSS API がさらに増えた
  • BIDI のサポート
  • Modena
  • 新しいコントロール
  • ラムダ

って、最後は JavaFX じゃないし...

SkinBase と CSS API が公開されたのはいいですね。

今年も 3 種類のコントロールの作り方。CSS だけの変更、レイアウトを自分でやるもの、全部自分で書くの 3 種類。後の方が、難しくなります。

しかし、資料のコードが読めない。一番前に座っていたのに、それでも読めないって... 写真に撮って拡大して確認してました ><

これはちょっとひどい。

Introduction to Java DIO APIs [CON5394]

スピーカは Jen Dority。この人ははじめてだ。

センサーなどを扱うための API で、DIO は Device I/O のことです。櫻庭的には DIO というとデジタル I/O で、アナログ I/O の AIO と対になることばなんですけどね。

DIO といっても独自の I/O ではなく、既存の I/O の規格を Java から使えるようにしましょうというもの。現状でサポートするのは以下の 4 種類。

  • GPIO
  • SPI
  • I2C
  • UART

それぞれ、コード例を出してました。この 4 種類を扱うための統一的な API というわけではなく、それぞれやり方が違うのがちょっとという感じ。まぁ、それもしかたないとは思いますが。

それにしても、この Jen さん、こういう場で話すのははじめてだったようで、こちらにも緊張が伝わるほど、ガチガチ。しかも、デモをしようとしたものの、結局動かず。もうちょっとちゃんとやろうよ。

これでセッションはおしまい。

今日はこれからトレジャーアイランドに移動して、エアロスミス!!!

2014/09/30

JavaOne San Francisco 2014 第 3 日 (仮)

このエントリーをはてなブックマークに追加

とりあえず、簡単な感想だけ。帰国してから、写真なども加えて、改訂予定です。

 

今日、聴講したセッション

  • Lambda: A Peek under the Hood [CON4180]
  • Going Native: Bringing FFI to the JVM [CON3979]
  • The Modular Java Platform and Project Jigsaw [CON5435]
  • Productive JavaFX 8 [CON2265]
  • The New Real-Time Specification for Java [BOF4957]
  • Troubleshooting with Serviceability and the New Runtime Monitoring Tool HeapStats [BOF3108]

朝イチのチュートリアルはおもしろそうなのがなかったので、自主休講

 

Lambda: A Peek Under the Hood [CON4180]

おなじみの Brian Goetz。今年は Project Lambda 系のセッションを全然聴講しなかったで、Brian のセッションはこれだけです。

しかし、ほとんど去年と同じでした。まぁ、Lambda Expression の中身がそんなに変わるわけがないので、あたりまえといえば、あたりまえなんですが。というか、3 年連続で同じ内容のセッションを聞いていました。

もうどういうセッションをとるか、学習しよう。

一緒に bitter_fox さんと聴講していていたのですが、セッション後 Brian と写真を撮りたいというので、カメラマン役。もちろん、Brian は bitter_fox さんのことは認識していて、OK をもらいました。

ちゃんと撮れて、よかった、よかった。

 

Going Native: Bringing FFI to the JVM [CON3979]

JRuby の Charles Nutter のセッション。Charles だからとったセッションなのですが、たまたま、Java SE 9 の注目プロジェクトである Project Panama の中心構成要素である FFI の話でした。

セッションサーチで Panama をキーワードにしても、何も出てこなかったのですが、まさかこんな形で聴講できるとはラッキーです。

Panama は JNI に変わるネイティブコードを実行するためのフレームワークを構築するためのプロジェクトで、Array 2.0 なども含まれています。以前は JNI の次は JNA だと思っていたのですが、どうも違ったらしいです。

で、Charles たちが提案しているのが、JNR。そして、その基盤となっている層が FFI というわけです。FFI は Foreign Function Interface の略で、すでに github でプロジェクトも公開しているようです。

https://github.com/jnr/jffi

カバーしている OS や CPU も幅広く、一覧表をだして、ここに載ってないのがあるなら教えてほしいといっていたぐらい。でも、HP-UX が抜けてましたww

ただし、FFI は直接開発者が使う API ではなく、あくまでも JNR の基盤です。使うのは JNR。

JNR では C の #define 的なものが使えたり、POSIX の API をコールできるようにしてあります。その他にも Unix Socket などを使えるようです。

パフォーマンスも、JNA の 10 倍速いというではないですか! まぁ、すべての場合ではないようですけど。

それにしても Charles 早口!

Brian も早口だけど Charles も早い。早口のセッションを連続で受けると、疲れます ><

 

The Modular Java Platform and Project Jigsaw [CON5435]

スピーカーは Mark Reinhold と Alan Bateman。しゃべりはもっぱら Mark で、Alan はデモのみというのも、だいたいおきまりのパターンです。

Jigsaw はほんとになかなか決まらないのですが、どうやらやっとちゃんと動き始めた様子。OpenJDK の Jigsaw の ML も最近流通量が増えてきているので、Java SE 9 に向けて再び動き始めたようです。

しかし、どうやらかなりシュリンクした模様。

というか、今まで風呂敷を広げすぎていた感があるので、これはこれで歓迎すべきでしょう。

で、今まで jmod だ、 jpkg だといろいろコマンドが並べられていましたが、jlink に統一したようです。ファイル名は jmod のままのようですが。

そして、依存関係もファイルとして記述していたのをやめたようです。

おもしろいのが、jlink で JVM Image を作れるようになったこと。アプリケーションで使用する最低限のモジュールで構成されたイメージを作れるデモをやっていました。

いまいち jlink でどこまでできるのか把握していないので、帰国したら調べてみようっと。

 

Productive JavaFX 8 [CON2265]

スピーカーは Adam Bien。

この人はカバーする範囲がすごい広い人で、Java SE や JavaFX から Java EE まで、なんでも知っている人。このセッションではどうやって、JavaFX で MVP と DI でアプリを作るかという話だったのですが....

しかも、資料ははじめの 2 枚だけで、後はライブコーディングだけ。

そして、去年と内容が一緒だというのです。なんだかなぁ....

ちなみにサンプルは公開されていて、Maven の groupID が com.airhacks、artifactId が afterburner.fx だそうです。

彼の方式だと、P を先に作って、それから View に相当するクラスを作成し、そこから FXML をロードしています。ライブコーディングだけなので、イマイチ分からないのですが FXML のコントローラはどうなっていたんだろう。

M につなげるために、P に DI でインジェクションするようです。

ライブコーディングの様子をすべて写真に撮ったわけではないので、内容をよく思い出せず。ライブコーディングもいいんですけど、要所要所はちゃんと資料で説明してほしいなぁ....

 

The New Real-Time Specification for Java [BOF4957]

ここから BOF。このセッションも 10 人ぐらい。リアルタイムの話だから聴講者が少ないのはわかるけど、他の BOF も同じようなものだったらしいです。ほんと BOF はどうにかならないのかなぁ....

スピーカーは James J. Hunt。大学の先生なのかな?

Java でリアルタイムというと JSR 001 ですが、さすがにもう時間が経ちすぎているので、RTSJ 2.0 を提唱しています。でも、聴講者でリアルタイムプログラミングをやった人は 3 人ぐらい、RTSJ 1.0 を知っている人は関係者のみらしく、スピーカーのテンションがダダ下がりでした。

RTSJ 1.0 ではメモリ空間をソフト RT とハード RT に分けて、ソフト RT は専用の GC、ハード RT は GC を行わないという構成だったのですが、RTSJ 2.0 はどうやらスコープが全然違う模様。

確かに、CPU の性能も上がっているし、ソフト RT だけでカバーできる範囲は広がっているのかもしれません。その他にも割り込みイベントの話などをしてました。

Troubleshooting with Serviceability and the New Runtime Monitoring Tool HeapStats [BOF3108]

もともとは、この裏の Project Sumatra のセッションに出るつもりだったのですが、予定を変更して高尾さんと sugarlife さんの HeapStats のセッションへ。

このセッションも 15 人ぐらい。登録では 60 人以上いたということらしいのですが、なんでこんなにも減ってしまったのか....

HeapStats はヒープの使用量などをモニタできるツールです。ツールはなかなか高性能でおもしろいのですが、セッションはもうtyとと考えた方がよかったかもしれません。

まず、2 人とも座っていたのが.... やっぱり立ってやらないとダメなんですよね。座っているのは守りになってしまうのです。攻めにいかないと。

そして、ネイティブの言語でないのでしかたがないとは思うのですが、原稿を読んでいるのが....

セッションの内容も、もうちょっと工夫できたと思います。

ぜひ来年、再挑戦してほしいです。

 

この後、もう 1 つ BOF に出るつもりだったのですが、10 人ぐらいの BOF って英語が苦手な人にはなかなかつらいのです。

というのも、BOF が議論になってしまうから。そういうグループでの会話は一番苦手。ほんと何を話しているのか全然聞き取れません。急に話題を振ってもらっても答えられないし....

ということで、自主的にキャンセルして sugarlife さんたちとごはんに行きました。

ここでもいろいろあったのですが、それはまた後で追加します。

2014/09/29

JavaOne San Francisco 2014 第 2 日 (仮)

このエントリーをはてなブックマークに追加

とりあえず、簡単な感想だけ。帰国してから、写真なども加えて、改訂予定です。

 

今日、聴講したセッション

  • JavaFX CSS API [TUT3227]
  • JavaFX 8: New and Noteworthy [CON3255]
  • Introduction to HotSpot Internals [CON3294]
  • Faster Object Arrays [CON5659]
  • The Java Time API in Java SE 8: What You Need to Know [CON4078]
  • JavaFX Controls: Debugging Controls [BOF3234]

 

JavaFX CSS API [TUT3227]

今年から月曜、火曜の朝一はチュートリアルもしくはハンズオンのみ。で、JavaFX の CSS の話から。

セッションのレベルが Introductory なので、JavaFX の CSS の書き方をやるのかと思ったら、CSS を操るための API の方でした。しかも、かなり深いレベルなんですけど...

でも、カスタムノードを作る時の参考になりました。

 

JavaFX 8: New and Noteworthy [CON3255]

JavaFX 8, 8u20, 8u40, 9 の簡潔な機能紹介。8, 8u20 はともかく、8u40 と 9 です。

8u40 の機能で紹介されたのが

  • Accessibility
  • New Controls
    • Spinner
    • Filtered Text
    • Dialog
  • LCD Text on Canvas
  • 3D User-Defined Normals

Accessibility が入ってくると、ようやくちゃんとした GUI という感じがでますね。コントロールは特にダイアログが注目されますけど、Swing の JOptionDialog のようなファクトリークラスを作るわけではなさそうです。

最後の Normal は法線ベクトルを自分で定義できるということ。これは 3D をやっている人には結構うれしいです。でも、シェーダーの話はどこにいってしまったのだろう.....

9 は全部クエスチョンマークつきで、実際はこれからという感じ。でも、このペースでほんとに 2 年のリリース周期を守れるのだろうか?

とりあえずあげられていたものだけ。

  • Jigsaw
  • RichTextEditor (?)
  • Image Writing (?)
  • Formatted Text (?)

 

Introduction to HotSpot Internals [CON3294]

HotSpot のコードの読み方教えます的なセッション。

メモリモデルや、スレッドと Java スタック、クラスローディングなどの話。インタプリターの話はちょっとあったけど、JIT や GC の話はありませんでした。

知っている話も多かったけど、HotSpot のソースの共通してみられるパターンなどがおもしろかったです。もちろん、C++ のソースです。

たとえば、マクロで機能を構成するようなパターンです。

Java のライブラリのソースはよく見ますけど、HotSpot の C++ のソースまで見ることはほとんどないのです。でも、時間があったら見てみたい。

Faster Object Arrays [CON5659]

YaSuenag さんに Valhalla のセッションがあると教えてもらったので、登録しようとしたらすでに Full。キャンセル待ちでなんとか潜り込みました。

一番後ろの席だったのはしかたないとして、資料のフォントが小さい! しかも、一番下までビッチリと書いているので、全然読めません。それに加えて、マイクの調子がよくないのか、音も小さいので全然聞こえず。

一番後ろだったので、デジカメを頭の上に持ち上げて資料だけは撮ったので、後で確認します!

でも、Valhalla とは全然言及していなかったなぁ...

The Java Time API in Java SE 8: What You Need to Know [CON4078]

このセッションが今日、一番つまらなかった。

でも、スピーカーはスペックリードの Stephen Colebouneではなくて、Oracle の Roger Riggs だけ。その時点で予想はできたけど、これほどつまらないとは思いませんでした。

API を一通り説明しただけで、その背景とかには全然言及せず。ISO 8601 にもほとんど触れず。 

まぁ、Roger だからと言ってしまえばそうなんですけど、もうちょっとどうにかしてほしかったなぁ....

JavaFX Controls: Debugging Controls [BOF3234]

ここから BOF セッション。

今日だけは BOF の会場が Moscone Center です。ところが、メイン会場の Hilton や Parc 55 から離れているからか、目の前の Haward Street でレセプションをやっているせいか、人が少ない。JavaFX だけでなく、他の分野の BOF も聴講者が少ない様子でした。

このセッションは、200 人以上はいれる部屋に 10 人ぐらい。つらい。しかも物理的に寒い。

少人数だとちゃんとセッションをやるよりも、議論になってしまって、英語が苦手な私にはとてもつらいのです。お願いだから、こっちに降らないでと祈るばかりです。

このセッションもグダグダな感じで始まったのですが、途中はちゃんと資料通り話をしてました。意外に役に立つ情報もあったので、よしとしましょう。

この後も JavaFX の BOF に出ようとしていたのですが、この調子でいくとさらに少なくなると思ったので、ここで切り上げ。私が聞こうとしていたセッションに参加した人がいたので聞いてみたら、やっぱり少なかったと。

それにしても、Oracle の開催になってから BOF がつまらなくなりました。こんな大きい部屋じゃなくていいので、小さい部屋でいっぱいやってほしいなぁ。

以前はこれから海のものとも山のものともつかないような技術についてのセッションがいっぱいあって、そういうのがおもしろかったのに...

ホテルで開催しているんだから、部屋はいっぱいあるはずだし、ぜひそういうセッションを増やしてほしいなぁ...