2017/05/20

JJUG CCC 2017 Spring

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

Java Day Tokyo の後は、CCC です。前回の秋は出なかったので、1 年ぶり。

今回は、Project Jigsaw です。

しかし、今月になって Jigsaw の JSR 376Public Review Ballot が否決されてしまうと波乱があったばかり。こんな状態で、なんの話をすればいいのでしょう?

Ballot の意見を見ていても、結局は過去とのマイグレーションをどうすればよいかという点が指摘されています。OpenJDK の Jigsaw の ML でも、マイグレーション関連について活発に議論されています。

しかし、このあたりのことは Java Day Tokyo でのキーノートや Jigsaw のセッションでは一切触れられていませんでした。

そこで、このセッションでは発表時点で分かっていることはなるべく盛り込んで、話をしています。しかし、セッション後にやはり変更された点や追加議論が必要とされている項目も出てきています。

そういう点については、また稿をあらためて紹介できればと思っています。6 月の Public Review Reconsideration Ballot の後ですかね。

さて、発表資料はこちら。

すでに、ほぼ確定の module-info.java の書き方や、ビルド/実行の方法などについて触れた後、残りの 1/3 の時間を使ってマイグレーションについて話をしました。

特に既存の JAR ファイルをモジュールとして扱う Automatic Module について紹介しました。しかし、その Automatic Module が JCP での議論のトピックになっているわけです。とりあえず、セッションでは改定案を紹介しましたが、最終案がこうなるとはかぎりません。

あっ、1 点だけ、セッションで失敗したと思ったことが...

標準で提供されている Platform Module を調べるために java コマンドに --list-modules オプションがあります。これで調べた結果を示したのですが、JRE の java コマンドを使ってしまいました ><

JDK の java コマンドと JRE の java コマンドだと使えるモジュールも異なるのです。たとえば、jdk.jshell などは JDK の java コマンドだけです (もちろん、JRE でも --add-modules すれば使えます)。その点をすっかり忘れて、JRE でやってしまったのでした。

 

このセッションでは質問を受け付けるために sli.do というサービスを使いました。

Java Day Tokyo で @bitter_fox さんが、このサービスを使っていたので、私もまねしてみたわけです。

セッション中にオンラインで質問を投げられるし、それに対して「いいね」をすることもできます。なかなかいいですね、これ。次回も使ってみよう!!

というわけで、セッション中にいただいた質問をここで答えておきます。

 

Q. JASRACのひとがやってくる危険が危なくないですかww?

A. あー、あー、聞こえない、聞こえない

Q. mavenでは、moduleとどうやって整合とるのでしょう

A. Maven の動きをあまり追いかけていないのですが、問題となるのは Jigsaw のモジュールと artifacts が違うものだというこということにあると思います。どうやって折り合いをつけるかということは、まだ決まっていないようです。

プレゼンテーションにも登場させた Stephen Colebourne がこの件についてブログで言及しているので、ご参考までに。

Java SE 9 - JPMS modules are not artifacts

Q. メタ情報なのに.javaっていうのがちょっと嫌。JSONじゃダメなんだろうか。

A. Java で JSON を扱うのは意外に面倒なので... module-info.java を扱うのは javac なので、Java の構文解析がそのまま使えるのがいいのではないでしょうか。

プレゼン中にも言及しましたが、JSON-B が Java SE でも使えるようになったら変わるかもしれません。あくまでも個人的な意見ですが。

Q. moduleやrequires, exportsなどのキーワードはmodule-info.javaでのみ有効な予約語?の位置づけでしょうか

A. module-info.java のみで使用できる予約語です。

Q. モジュール化した場合としない場合でアプリの起動時間にどのくらい差がでてきますか?

A. 大きいシステムでモジュールを多くロードするようなシステムであれば差がでると思いますが、私自身は試してないのでよく分かりません。小さいシステムだと、それほど差がないように感じます。しかし、計測を行ったわけではないので、あくまでも感想レベルだと思ってください。

Q. module-info.javaが小文字始まりになった理由は何かあるのでしょうか

A. パッケージの情報を記述する package-info にならったのだと思います。

Q. // puckage export typo?

A. タイポはなかなか気がつかないので、ご指摘ありがとうございます! 公開している資料では修正してあります。

Q. モジュール版のmavenセントラルができることになるんですか?

A. 今のところそのような予定はないです。個人的には Maven セントラルが利用できれば一番いいのではないかと考えていますが、そのためには前述した artifacts とモジュールのすり合わせを行う必要があります。まだ、道は遠そうです。

Q. 昔、jarの中にjarを入れるsuper packageみたいな話があった気がしますが、そっちの話はどうなったのでしよう

A. JAR をまとめたパッケージングに関しては JSR 277 で JAM (Java Archive Module) というのが提案されていましたが、棄却されています。super package は言語側の拡張提案で、JSR 294 で提案されていましたが、こちらも棄却されました。これらを受け継いだのが、Project Jigsaw になります。

Q. Jigsawにはバージョンを管理する仕組みはないのでしようか? モジュール名にバージョン番号を入れる?

A. バージョンをつけることは可能です。バージョンをつけるには、jar コマンドの --module-version オプションで記述します。ただし、そのバージョンを使用して、バージョンを指定してビルドするなどは、現状ではサポートされていません。

Q. exportsで指定したパッケージのサブパッケージは公開されるのでしょうか?

A. 公開されません。公開するにはサブパッケージも exports 文を記述する必要があります。

Q. MANIFEST.MF に名前がなかったらどうするのでしょう

A. ファイル名が使われると思いますが、確認はしていません。

Q. testだけでパッケージを公開(exports, opens)したい場合やmoduleをrequiresしたい場合はどうするのが良いのでしょうか?

A. これは非常に難しい問題で、現状 Jigsaw では同じパッケージを複数のモジュールに分割することはできません。そのため、ファイルツリーを src と test に分割している (ビルドしたクラスファイルも別ディレクトリ) 場合はモジュールにしてしまうと、テストを実行することができません。

櫻庭もこれに対する最適解を見つけている最中なのですが、現状はテストの時はモジュールとして扱わないようにしています。コンパイルや実行に他のモジュールが必要な場合、--module-path と --add-modules オプションを使用して必要なモジュールをロードするようにしています。

2017/05/17

Java Day Tokyo 2017

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

今年も Java Day Tokyo で講演してきました。

講演内容は Java SE 9 の全般。資料はこちらです。

裏話を書いてしまいますが、私のセッション、内容がなかなか決まらなかったのです。

当初、Jigsaw についてを要望されたのです。しかも、Alex Buckley が Jigsaw の応用的な話をするので、入門編をやってくれということでした。

というか、Alex ですよ!! Jigsaw の JSR 376 のスペックリードですよ!! 私ごときが、Alex と同じ話題を喋るなんて、恐れ多い。

でも、結局 Alex と Bernard Traversat さんが Jigsaw を話すことになったわけです。

その他に、Java SE 9 関連だと JShell を @bitter_fox さんが話すので、Java SE 9 の注目 2 機能はとられてしまったわけです。

そこで、Jigsaw と JShell 以外の全般について話すことになったわけです。

話題的には次の 3 つ。

  • コンパティビリティ
  • 新機能
  • 改良された機能

特にコンパチの話は、今まで使えていたけれども使えなくなるモノがいろいろあるので、それを中心に説明しました。

メソッドもほんとに使えなくなったり、Deprecated になったものが多くあります。多くは Jigsaw に起因するメソッドですが、Jigsaw では今後いろいろと隠されてくことになるはずです。

ツールもいろいろなくなっています。個人的には VisualVM がなくなってしまうのがイタい。便利なのになぁ...

新機能としては、主に Reactive Streams を紹介しました。

残念ながら、Java SE 9 では Reactive Streams を導入しただけで、それ以上の機能は自分で作りこまなくてはいけないのがつらいところです。Publisher だけは実装クラスである SubmissionPublisher クラスが提供されていますが、Subscriber は実装する必要があります。

改良された機能は、Milling Projet Coin と Stream API、そして Collection を紹介しました。

Collection のファクトリメソッドである of メソッドは、Java SE 9 で導入されたメソッドの中で一番のヒットではないかと思っております。

また、String クラスの内部構造が変更されたことなどにも触れてます。

もっと多くの機能について触れたかったのですが、講演時間は限られているので、これぐらい。

ITpro の 最新 Java 情報局 でより詳細な情報を執筆しているので、ぜひそちらも参考になさってください。

 

さて、こういう多くのトピックがある話題を話すプレゼンって、とても難しいです。

単に、「続きましては...」とかで次のトピックにつなげていくだけにしてしまうと、ぜんぜんおもしろくないどころか、聞いている方は退屈してしまいます。

実際、こういうセッションをしている人が過去に何人もいたのです。そして、聞いている私は、完全に退屈してしまったわけですww

トピックがズラズラと続くだけなので、盛り上がりにも欠けてしまいます。

「いつまでこの調子で続けるの?」と思われてしまっても、しかたないですよね。

そのために、今回はどうやったかというと、トピックをツリー状に構造化して、今話しているトピックが全体の中のどこに位置しているかを分かるようにしてみました。

具体的には、こんなツリーになっています。

Topic Tree

ツリーの葉は 3 つ以上にならないようにしています。それ以上になってしまうと、聞いている方が今どのあたりを話しているかを把握できなくなってしまうからです。

そして、話している時も、なるべく今話しているトピックが分かるように、かつ、なるべくトピック間に関連をもたせるように話してみました。さて、結果はどうだったんでしょうね。

2017/05/14

JOnsen 2017

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

伊豆の下田で行われた JOnsen というクローズドなイベントに参加してきました。

基本的には、Steve Chin さんが招待した人だけのクローズドなイベントなんですけど、なんかオープンなイベントのように受け取られている人が多いようなので....

来年はどうなるか分からないですけどね。

海外からの参加者は Steve が直接招待した人たち。主に Java Champion です。私とてらださんも Steve に直接招待されました。

後は日本の JUG の代表ということで、@cero_t@jyukutyo

他は日本の Oracle から伊藤敬さん、 @chiroitoロジ子さんの中の人、David Buck。後は US のオラクルの人。

はじめ、登録していた日本人が伊藤さんと私しかいないので、結構焦りました。だって、そんな英語話せないし.... すぐにてらださんが登録してくれたので、少し安心したのは事実です。

総勢、23 名かな。

で、何をやるかというと、アンカンファレンスです。参加者が自分が話したいトピックをあげて、それに興味を持った人が集まって議論するということの繰り返しです。

初日

この日は夕方から。

自己紹介と、1 人 1 つ以上の議論したいトピックの洗い出し。

下の写真のように車座になって、自分の話したいトピックを説明します。

_DSC7217

みながトピック出し終わったら、それを付箋でホワイトボードに貼って、それを整理するところまでで今日はおしまい。

_DSC7234 _DSC7229

それにしても、いきなり英語はつらかった。プレゼンテーションなどは事前に準備できるからまだいいですけど、何も準備もなしに議論しろとか絶対ムリ ><

まぁ、それでもなんとか初日は乗りきりました。

夕飯はホテルで和洋食のブッフェ。

洋食はいいのですが、和食を説明するのはたいへん。大葉の天ぷらがあったのですが、これは何と言われても.... 大葉は日本のバジルのようなものだといったのですが、バジルが通じない。ハーブは何とか通じました。

後で調べてみたら、シソはほんとに Japanese Basil と呼ぶらしいです。いい線ついていたんだけどなぁ。でも、発音はバジルではなく、ベイジル。それじゃ、通じないわけだ。

わらび餅も説明がたいへんだった。ワラビなんて訳せないし。柔らかいグミのようなものだと説明しましたけど、分かったかなぁ。

_DSC7269 _DSC7272 _DSC7260

そして、この日、参加者の 1 人、Andres Almiray さんの誕生日。サプライズでケーキ用意されてました。

照れる Andres。

_DSC7282 _DSC7319

そんなこんなで 1 日が終ったのでした。しかし、疲れた...

2 日目

Beach

今日は午前はアンカンファレンス、午後はみんなで水族館へお出かけ。ほんとは寝姿山にハイキングの予定だったのですが、雨なので。

朝ご飯はホテルで。よくある和洋食のビュッフェ。

Breakfast

アンカンファレンスの開始は 9 時。9 時ちょっと前に会場にいったら、ぜんぜん人がいない。いるのは日本人ばかり。日本人、まじめだなぁ。まじめそうに見えない人もいましたけどw

JOnsen 2017

昨日、トピックだしをしたので、今日は 2 グループに分かれて、そのトピックに関しての議論。

Java に関する話題はサーバー系の話が多かったので、私は Java にはあまり関係ないトピックの方に参加してました。Java チャンピョンが日本で少ないというトピックや、JUG をどうやって活性化すればいいかなど。

今、日本には 2 人しか Java Champion はいないのですが、私が Java Champion になったのはかなりラッキーでした。

Java Champion のプログラムが始まったばかりで、アジアから Champion を選出したいという Sun の意向があったことと、ちょうどその時に東京で JavaOne があったことが大きかったです。その時に、Sun の本社の人たちと知り合いになれたというのと、Java の開発をしていた人に推薦をしてもらえたので。

今は Java Champion は Champion の互選なので、Champion の人たちに知られていないと Champion になれないのです。

なので、日本では有名であっても、世界に向けて発信している人じゃないと Champion になりにくいんですよね。みんな、英語で発信しよう!

JOnsen 2017 JOnsen 2017

それにつけても、議論に入っていけない >< みなが言っていることはある程度理解していたとしても、議論に入っていくタイミングが難しいし、自分の考えを英語でいうのも難しい。一番はじめのポジショントーク的なことは話せても、議論の途中に割って入ったりするのはムリ。

やっぱり、英語やりなおさないとなぁ....

そういえば、Jigsaw の話題がなかったのは、みんな空気読んでいたのかなぁw

ランチは朝食と同じ場所。

洋食で前菜、スープ、メイン、デザートとけっこうちゃんとしているランチでした。でも、ポーション少なすぎ。

実をいうと、人数のカウントが間違っていたのか、2 人分余っていたのですが、私と Sebastian が全部いただきました。なので、2 人分食べたんですけど、そんなおなかいっぱいという感じではないです ^ ^;;

ランチは結構、英語で話ができたので、よかった!

Michael Hoffer さんが抹茶アイスがおいしいところを探していたので、青山のななやをお勧めしておきました。こういう話だったら、いくらでもできるんですけどね。

Lunch Lunch Lunch Lunch

さて、午後は下田海中水族館へ。

下田海中水族館といえば、イルカ。ちょうど最後のイルカショーにまにあったので、みんなで鑑賞。けっこう楽しんでくれたようです。イルカ、クジラの議論し始めるようなひとがいなくてよかったw

それにしても、水族館に来ると分かっているのであれば、望遠レンズ持ってきたんだけどなぁ...

結局、閉館時間までここですごしたのでした。

Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium Shimoda Floating Aquarium

今日の夕飯は下田駅に直結しているさかなや道場へ。

JOnsen Reception, 下田漁港直送 さかなや道場 伊豆急下田店 JOnsen Reception, 下田漁港直送 さかなや道場 伊豆急下田店 JOnsen Reception, 下田漁港直送 さかなや道場 伊豆急下田店 JOnsen Reception, 下田漁港直送 さかなや道場 伊豆急下田店 JOnsen Reception, 下田漁港直送 さかなや道場 伊豆急下田店 JOnsen Reception, 下田漁港直送 さかなや道場 伊豆急下田店 JOnsen Reception, 下田漁港直送 さかなや道場 伊豆急下田店

こうやって座敷で食べるというのも、欧米だとないんだろうなぁ。さすがに、箸が使えない人はいませんでした。

ここで問題発覚!!

なんと Breandan Considine さんがいないのです。誰も人数とかチェックしていないので、ぜんぜん気がついてませんでした。

水族館からは帰っていることはタクシーに一緒に乗車している人がいたので確かなのですが、それからが分からない。で、ホテルに電話してみたら、ホテルにいました!!

水族館から帰った後、疲れて寝てしまったようです。よかった、行方不明でなくて。

最終日

Morning

昨日の雨は明け方にやっとあがりましたが、スッキリ晴れとまではいかない微妙な天気。

今日は、午前は再びアンカンファレンス。ランチ後、ラップアップをしておしまいです。

今日はこの 2 人がおそろいの T シャツでした。Sebastian はこの T シャツ気に入っているようで、よく着てます。

JOnsen 2017

今日はワークライフバランスやツールの話題などの議論に参加しました。

ツールといってもビルドツールの話に始終してしまい、Maven か Gradle になってしまったのが残念なところ。私自身はそれほど大きいシステムは作っていないし、ビルドでいろいろやらないといけないような状況にないので、Maven でも Gradle でもどっちでもいいんですけどね。

JOnsen 2017 JOnsen 2017 JOnsen 2017

Sebastian はなんで裸足だったのだろう?

ランチは昨日と同じ感じ。

ランチ後にラップアップ。

外国からのゲストはほとんどの人がもう一泊するのだと。で、天気も回復してきたので、午後から寝姿山にハイキングにいくことになったらしいです。

日本人はみな帰途に。てらださんが車を出してくれているので、熱海まで乗せてもらいました。

ということで、JOnsen は終了。

来年は、今年よりはオープンにするらしいです。でも、あまり日本人が多すぎると日本人で固まってしまうので、つまらないかも。

外国人より日本人が多くならないようにした方がいいと思っています。まぁ、来年にならないと分からないですけどね。

D810 20 万枚

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

JOnsen にいっている間にいつのまにか D810 で撮った写真が 20 万枚を超えてました。

D810 を購入したのは 2014 年 7 月 17 日なので、だいたい 3 年使ったわけです。去年ぐらいからちょっと写真を撮るペースがダウンしてきてますけど、それでも年に 7 万枚ぐらいでしょうか。

でも、ぜんぜん写真うまくなっていないような気がする ><

とりあえず枚数撮れば分かってくるものもあるんだけど、ある程度いくと撮っているだけじゃダメなのは確かだからなぁ....

20 万枚目の写真はイマイチだったので、199,994 枚目の写真。下田プリンスホテルの正面です。

20 万枚も撮るとカメラもいろいろとガタがくるので、ここらへんでメンテナンスしないと!!