makopi23のブログ

makopi23が日々の生活で感じたことを気ままに綴るブログです。

「JJUG CCC 2013 Spring」に参加しました

2013/5/11(土) 「JJUG CCC 2013 Spring」に参加してきました。

JJUG CCC 2013 Spring
http://www.java-users.jp/?page_id=330

togetter
http://togetter.com/li/500961

Javaをテーマにした大きなイベントですね。参加者は300名弱くらい?でしょか。
私、仕事はほとんどJavaです。んで、Javaが好きです。なので参加することにした!
ちなみにCCCとは「クロスコミュニティカンファレンス」の略らしいです。

つーか、ウチの会社がシルバースポンサーになっていた件。
うむむ、弊社もCosminexusとゆーJavaのアプリケーションサーバを開発/販売してるし、JVMも作ったりしてるし。
そのへんでJavaイベントのスポンサーになったものと推測。


■総会(9:30-10:00)
総会から参加しちまった・・・!
なんか採決とか会計報告とかやってて、正直、場違いなトコから参加してしまった。。。と、チョト後悔。

んで総会が終わったあと、となりの席にイケメンが座り、爽やかに語りかけてくる。
んむ?どっかで見たイケメンやなぁー、と思いながら会話してたんですが、その後、ノートPCで発表スライドを作り始めます。
こ、これは・・・!?


午後に「失敗から学ぶAPI設計」という題目で講演される @yusuke 氏であった。



そんなこんなで午前の部が始まりました。
以下、各セッションでスライドに無い口頭説明部分を中心に、書き殴りの個人メモ。


■基調講演-1 Javaのこれからを考える
鈴木雄介氏 (日本Javaユーザーグループ 会長)
togetter: http://togetter.com/li/501597
Javaのこれからを考える - [JJUG CCC 2013 Spring from yusuke suzuki


■「オムニチャネル」という用語が出てきた。知らなかったのでググってみた。
→ 「2013年のWebマーケティング注目キーワード」第10回・オムニチャネル http://www.webdbm.jp/column/3279/

■今までは個別システムを担当している人がいて、どう連携するかを考えていた。
→ 今は、連携という概念すらない。最初から連携しているのが当たり前。

■変化にどう対応するかではなく、どう変化を感知するかが重要。

■世の中の流れがサービス型に変わってきている。



■基調講演-2 What’s New for JavaFX in JDK 8

Jim Weaver氏 (オラクルコーポレーション)
JJUG-Whats-New-For-JavaFX-in-JDK8 from Oracle Fusion Middleware


■Java FX: Swingを引き継ぐインタフェースを作るもの


■ H-1 Java EE 6 から Java EE 7 に向かって
寺田 佳央氏 (日本オラクル)
Java EE 6 to Java EE 7 from Oracle Fusion Middleware


■Java EE 7
・新しい機能が4個くらい追加される。
・既存の技術も簡単になっている。
・物足りなかったところが改善されている。
・Java EE 6との差分を押させていただければ、Java EE 7には比較的簡単に移行できる。

■2009/12/9 にJava EE 6がリリースされた。 (P.5)
・J2EE1.4で「使いづらい」という意見をたくさん受けた。
 → J2EE1.4以降で、OSSの良いところを取り入れていこう、とマインドが大きく変わった。
・世の中の意見を聞いてできたのがJava EE 5。
 → そのやり方ではじめて作ったバージョンだったのでいまいちだった。
・それを改善したのがJava EE 6。

■Java EE 6に含まれる技術 (P.6)
・P.6のスライドで、緑色がJava EE 6で新しく入ったところ。
・P.6のスライドで、オレンジ色が以前か大きく変わったところ。

■2010/1/27にSunがOracleに買収された。 (P.7)
 → 仕事が減った。その余暇でBlogでJava EE 6の良さを伝えようと思った。
 → その当時、まわりのJava EE 6に対する視線は冷たかった。ぜんぜん注目されてなかった。
 → 3年たって、Java EE 6がようやく注目されるようになった。

■Java EE 6のテーマ (P.9)
・拡張性が上がった
・過去の資産をどうしても組み込みたい場合に、以前に比べて設定がめんどくさくなくなった。
・web.xmlに複数のフレームワークの設定を書いたら保守性が悪くなる。
 → それがEE6になると、web-fragmentでフレームワークごとに設定をかけるようになった。

■Java EE 6のテーマの1つ「プロファイル」 (P.11)
・将来的にはJava SEにも入る。Java EE 5までは、P.11の薄い青色の部分。
・濃い青色がWeb Profile。
・すべての機能は必要ない、余分なものを取り除いたサブセットがプロファイル。

■Java EE 6のテーマの1つ「Pruning」 (P.12)
・古くなって使われなくなったAPIを整理した。
・JAX-RPCのSOAPは、JAX-WSに移行した。
・いきなり無くすのではなく、2段階プロセスでPruninngする。
・Java EE 6で「無くしますよ」とチェックがついた。Java EE 7で仕様的に使えなくなる。
・個々のアプリケーションサーバによっては、残すAPIがあるかもしれない。
・ただしJava EE 7の仕様的には無くす。なので、今のうちに移行してほしい。

■Java EEは開発生産性が悪いと言われていたが、以前のバージョンに比べ圧倒的に開発生産性や開発用意性、テストのしやすさが上がっている。 (P.14)

■EJB (P.21)
・Java EE 6からEJBコンテナをJava SEのアプリから立ち上げられるようになった。標準機能として提供される。

■Java EE 5まではフル・スペックを提供 (P.24)
・Java EE 5まではフル・スペックを提供しており、重すぎた。Tomcatで十分、と思われていた。

■Java EE 6からWeb Profileに対応したアプリケーションサーバを使えば、速くなる。 (P.25)
・Web Profileは、これさえあればWeb開発は十分というものを残している。

■パッケージング (P.27)
・パッケージングはこれまではめんどくさかった。
 例:Webアプリはwarにまとめて、ライブラリはjarにかためて、EJBはEarにまとめてとか。。。
 → 1つのwarのなかにejbとかも組み込めるようになった。

■XML設定地獄 (P.30)
・Java EE 5以降から、デフォルト値がすでに設定されている。
 → デフォルト値でいい人にとっては設定がすごく楽。

■Java EE 7のテーマ (P.37)
・シンプル化
・HTML5対応

■Java EE 7
・Java EE 7は6がベースになっている。
・なので、6から7の差分だけ押さえれば楽に移行できる。
・Java EE 7からBatch Applicationが追加される。

■JSON (P.40)
・JSON用のAPIは2種類の方法を提供している。
①Streaming API
②Object Model API

■Expression Language 3.0 (P.61)
・JSPの$とか#の書式が、Java EE 7から書式が大幅にアップデートされる。
・EL式のなかにラムダ式が書ける。


■H-2 Project Lambda Essential
櫻庭 祐一氏 (Java in the Box)

■Project Lambdaの目的
・closureのかわりではない。クロージャを導入するためではない
・parallel computingを簡単にするため。

■lambda Exp.とAPI
・どちらが重要かというと、API
・パラレル処理をするための基盤になる。
・lambda Exp. << API

■タスクをちっちゃくしてスケジューリングを簡単にしましょう。

■JAVA SE 7でFork/Join Frameworkが入ってきた。・・・使えないです。非常に使いづらい。
・lambdaと一緒に出る予定だったが、これだけEE7で単品で出てしまって使いづらい状況にある。

■lambdaは無名クラスを簡単に書くためのもの。
・シンタックスシュガーでしかない。
・なんでもlambdaで書けるわけではない。

■mapメソッドの処理は遅延される。
→ これは遅延評価の仕組みが取り込まれたのかな?と個人的な疑問。

■Steam APIは関数型の考え方を取り入れている。
・そのため、上司がわからないから使うな、といわれる可能性もある。。。

■lambdaでパラレルコンピューティングも非常に簡単になる


■R5-3 Type Annotation って何? それを使うとプログラムはどう変わる?
木村英一氏
R5 3 type annotation from EIICHI KIMURA


■Java8には82個のアノテーションが定義されている。Java 7は78。

■宣言に対して属性を与えるのがアノテーション。
・アノテーション型と型アノテーションは違う

■アノテーション型には2種類ある。
・これまでJava5~7にあったのは、宣言アノテーション。型利用に対するアノテーションはできない。
・今回Java8で増えるのは、型アノテーション。
・Java SE 8では型に対してもアノテーションが記述できる。

■Java SE 8からインスタンスメソッドにthisが書けるようになった。
・さらに型アノテーションをつけれるようになっている。

■型アノテーションの「意味」は規定しない (P.24)
・型アノテーションを書けるようになるけど、それには意味がない
・規定する側のJSRがサスペンド状態になっている。

■JSR308の型アノテーションを利用したチェッカがある (P.28)
→ Checker Framework

■Nullness checker (P.31~)
・NonNullチェック
・NonNullのアノテーションを付けておくと、コンパイルの段階でNonNullのチェックができるようになる。

■InterningChecker (P.37~)
・Internedがついているものとついていないものの比較はコンパイル時にチェックされる
・またs1とs2をeqaulsで比較すると、==で比較せよ、と警告がでる。
・開発者はinternedとなっていることを保証しないといけない。
・型アノテーションは実行時の属性まで保証してくれない。保証するのは開発者。

■型アノテーションをコメントアウトして書くと、JDK7でも通せる。


■H-4 失敗から学ぶAPI設計
山本 裕介氏 (サムライズム / Twitter4J)
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring from Yusuke Yamamoto


■Twitter4Jというライブラリを開発している。あんまり失敗してない(笑

■なるべく敷居をさげてたくさんつかってもらえるようにしている

■利点
・Javaなので、型安全に呼び出せる

■Twitter4Jの開発指針
・YAGNI
・JavaのインタフェースはJavaプログラマで理解していない人もいるので、なるべく使ってない。シンプルに。

■拡張
・拡張が出来過ぎると、簡単に使いたい人にとって邪魔になる。
・へたに拡張させることを想定すると設計がすごく難しくなる。
・finalなクラスにしている。継承させない。
・モックテストをしたい箇所はわざとfinalにしていない。そこにはコメントで、拡張しないでね、と書いている。

■デザインパターン
・デザインパターンをわからないエンジニアがいるので、デザインパターンは使わない。

■IDE補完
・importされていないクラスを呼ぶのはIDEでも大変。なのでなるべく同一パッケージに。
・一般的過ぎるクラス名にしない。一般的にしすぎるとIDE補完で衝突する。
・IDEで補完が活きすぎないように。使われたくないクラス名の先頭にZをつけるのは、最後に表示されるようにするため。

■互換性
・互換性のため、基本的でないクラスさえも、クラス名はバージョンアップ時に変えないようにしている。
・直列化形式の互換性を保つ
・シリアライズされてバイト列に変換されたものの互換性まで保つ。
・フィールドがなくなったりするとシリアライズされた状態が変わってしまったりするので、そういうことをしない。
・どういう変更が直列か形式に影響するのか調べる。
・deprecatedをアノテーションでつけておくと、コンパイル時に非推奨と表示がでる。
・パッケージを分けるのではなく、ソースディレクトリをわける。

■javadocで足りない場合は、テストに気を付ける。テストを読めば使い方がわかるようにする。
あと、ログに気をつかっている。


■R5-5 [BOF] Java読書会ライブ
高橋 徹氏 (Java読書会BOF代表)
20130511_jjug1.jpg

Java読書http://www.javareading.com/bof/
この日は実際にコアメンバー+参加者飛び入りでJava読書会の実演が実施されました。

・平均60ページくらい進む。
・事前に読んでこなくてもよい
・不明点はその場で調べたり宿題にしたりする
・本を選ぶプロセスは、参加者のweb投票。
・英語の書籍の場合は、事前に訳さないと辛かった。
・読書会に入門本は向かない。ある程度、自分で読むと読み飛ばすような本が読書会向き。
・積ん読になりそうな本がよい。
・その場でコードを実行することもあるが、しないこともある。
・朗読することで深い議論できたりする。


■R2-6 [BOF] 地方における勉強会事情
togetter: http://togetter.com/li/501590
地方における勉強会事情 from Soudai Sone


■地方だとコネクションの拡散が弱い。どこの勉強会へいっても同じ人がいる。

■エヴァンジェリストとか、Twitterでなんかつぶやいている時は暇だな、と思ってそのチャンスに講演を依頼する。

■パネルディスカッション

■勉強会の参加具合とかキャンセル率とか
・参加登録のタイミングが都市だと2、3日で埋まるがキャンセルも多い。
・地方は参加がなかなかこない。告知しても参加者がなかなか集まらない。
・地方だと、開催の前の週あたりから急に申し込みが増え出す。キャンセルは70人で2、3人くらい。
・ドタキャンすると、大体誰がしたかわかる。
・大阪も即埋まらない。参加希望なのに、様子見しちゃう。
・沖縄もぎりぎりまで登録しない人が大半。勉強会に来る人は同じ。定員に入るのは当たり前なので登録すらせずにその日に来るみたい。
・広島も当日いきなり来る人が多い。なので懇親会もお金を集めるとき困る。お金が関わる勉強会は開催しにくい。
・沖縄はスポンサー集めるの大変。
・札幌は、集まらずに赤字になったら主催者の自分が出す。
・大阪は、Jenkins勉強会とかはたくさん人がくる。でも懇親会はドタキャン多い。

■勉強会ネタはどう決めているか。
・jjugは公募。
・沖縄は、本土から沖縄へくる講師駆動で勉強会を開催する。
 → 沖縄から勉強会講師に呼ばれたから沖縄いきます、と会社に旅費を出してもらうように仕向ける。
・中国は、来たいといってくれる講師がいない。こっちからアプローチするしかないので、コンテンツ決めが中心。若い人に話してもらう場を設ける。
・札幌だと、主催者が興味があることをやる。あとは年に2、3回に東京に出て勉強会の講師をやって、札幌にも来てもらうように仕向ける。
・勉強会の感想blogを読んでくる人もいる。blogとかツイートで勉強会は楽しいものと露出度をあげるのが有効かも。
・ワークショップ系が食い付きがよい。ただハンズオンは準備が大変。
・ハンズオンだと参加者が多くてもサポートできない。
・ハンズオンだとPCが必要になるのもネックになったりする。

■海外の勉強会
・海外だとコミュニティが転職の場になる。
・国として意識が高い
・コミュニティで自分のバリューを上げようとする。

■勉強会の参加者
・「勉強会」という言葉がカタイかも。
・参加者は30代の人が多い。奥さんをフォローする仕組みがいるかも。
・javaはメインが30代で成熟してきたので、どうしていくかを考えないといけない。
・中国地方はrubyが強い。中高生もくる。学校でも教えているので。
・javaだとandroidに興味がある人がかろうじてくる。
・RDBとかカーネルとかになると、20代はほとんどこない。
・rubyとかjavascriptだと20代がおおい。
・javaだと30~35歳くらいが多い。
・有料セミナーは若い子こない。
・無料セミナーとしてきっかけ作りとか刺激をあたえるJavaの勉強会にする。
・作ったものが動いていると楽しい。
 → JavaFXのハンズオンとかは参加者を巻き込めるのではと思っている。
・参加費に500円とると、もう若い子がこない状況。
・女性の参加率は、oracleとかrubyとかだと比較的多い。
・女性のスピーカーが出ると、勉強会の女性の認知度もあがるのでは。
・意図的に多様性を取り込むのも策かも。25才以下でLT枠を設けるとか。まさかり禁止で。


★感想:
Javaの最新状況を知ることができて有意義な時間でした。楽しかったし、刺激をもらいました。
あと、jjugの講演とかをこの日いろいろ聞いた限りだと、今の世の中の「Javaのイメージ」として以下のようなものが大勢を占めているような印象を強く受けました。

・他の言語に遅れをとっている
・古臭い

私がJavaを学び始めたときは、「Javaってすげぇ斬新や!」ってな時代だったので、この日はそのギャップを感じて少々戸惑いました。
いやぁ、月日が経つのは早い。でも私はJavaがやっぱ好きです。

あと最後の勉強会事情のセッションでも講演者がおっしゃってましたが、勉強会に参加する理由は「楽しい!」からなんですよね。私も。
勉強会で学んだことを実践しないといけない、とか、何かを習得しないとけいない、とか堅苦しく考える必要は全然ないと思ってて、単純に「楽しい」から参加する。
その気持ちがまずあって、あとは自分の興味に合わせて学習のキッカケにしたりしてます。
もちろん、自分が興味がある勉強会を選んで参加してるわけだから、予習もするし、お話も注意深く聞くし、ディスカッションにも自然と熱が入るし、頑張ってハンズオンやろうとしたりするし、それで収穫も自然と多くなる。

あと、やっぱ刺激を受けるのが大きいかなぁ。
やべぇ、こんな凄いエンジニアが世の中にはいるのか、俺も頑張ろう!みたいな。

この日も、みんなJavaをネタに楽しそうに話している姿が印象的で、それだけで楽しい気分になれました。

こーゆうイベント、やっぱいいですねー
スポンサーサイト

FC2Ad