JJUG CCC 2011 Fallに参加してきました。(Jugemより移植)

Posted by johtani on Tuesday, October 18, 2011

目次

JJUG CCC 2011 Fallに参加してきました。 個人的にはかなり久々のJavaのカンファレンスです。(※あくまで「Javaの」という話で。SolrやHadoopとは別という意味です。)

概要やタイムテーブルはこちら。 予定があったので、残念ながら最後の2つのセッション(Scala、Twitter)しか参加できませんでした。 Hadoopの話も聞きたかったのですが、しょうがないかと。 いつものごとく、メモを個人的に取ったので。


★楽々Scalaプログラミング
 浅海

 ◎OOPからOFPへの道しるべ
  ・関数型の使い所、プログラミングのコツ
  ・つながりの部分

 ◎最近の活動
  モデリングからモデル駆動によるソース生成などに利用。
  Scala、2008年から使い始めている

 ◎Scalaと他の機能との比較図
 ◎Scalaの用途
  ・高い生産性
   体感で3倍。コード量が少なくなる。
   IDEのサポートを考えるとまだ、Java+Eclipseのほうが高い!
  ・DSL
   ドメインモデルの記述
   フレームワークAPI
  ・並行プログラミング
   Many Core
    消費電力的に複数のコアで動かす=関数型のほうが並行性が上がる(スレッドさわるJavaだけだときつい)
   Parallel Everything

  Object指向+関数型が扱いやすい。

 ◎関数型言語とは
  ・公開関数をあつかえる
   関数を値として扱える、引数と返却地に関数を渡せる。(やさしめ)
    <=>
   数学(ラムダ計算、圏論など)的にプログラムを記述できる(きびしめ)
  ある程度使えるはず。厳しめの部分も
 ◎関数型言語の長所と短所
  長所
   ・高階関数を使った技が使える
     List(???)

  短所
   ・メモリ、関数実行オーバーヘッド、スタックの大きさが読めない(再帰的)

 ◎関数型言語の系譜
  純粋関数型言語
   pure Lisp
  伝統的関数型言語
   OCaml
  新世代関数型言語
   Haskell
   Scala
   型クラス
    代数データ型、モナド
    Parametric polymorphism
 ◎関数型でしたいこと
  DSL(Domain Specific Lanuguage)
  昨年の資料を参考に!
 ◎準備
  scalaの文法
 ◎並列コレクション
  スレッドを利用しないで並列に動作実行させるか?
  ※List().par.map(sitelen).sum
   これで並行実行させられる。
 ◎Future
  (これってJavaでもあるよね?=あるよ)
  処理を非同期で先行実行し、あとから結果を取得可能
  Scalaではアクターライブラリでサポート(cala.actors)
   関数合成するとFutureの実行結果を取り出す所でブロックされる!!
 ◎Promise
  Futureより強力
  関数合成すると、合成関数全体が非同期実行される!
  scalazを利用してた

 ◎5つのコツ
  コツ1: y=f(x)
   引数がひとつの関数が基本
   関数合成のビルディングブロックになるよ
   引数が複数ある関数は他の関数(map関数とか)で合成しにくい
    対処方法:カリー化(関数の戻りを関数とする)
     addc(a: Int)(b: Int) : Int = a + b
     とすることで、
  コツ2:分割統治
  コツ3:演算は転換
   flatMapとかfoldLeftとか
  ※永続データ構造
   前に作ったデータ
  コツ4:オブジェクトの世界と関数の世界を分ける
   更新指示書の形でObjectに渡す?
   関数型データ構造
  コツ5:新しいデザインパターン
   関数型プログラミングの用語
    ・Functor(関手)
    ・Subgroup(半群)
    ・Monoid(モノイド)
    ・Monad(モナド)
   OOPのデザインパターン的に考えれば、数学的なところまで理解しなくてもよさそう?
★Twitterとオープンソース @yusukey
 http://dev.twitter.com
 http://bit.ly/tdt-ja
 id:twj_dev

 ◎OSSとの関わり
  支援してます。
   Apache、Eclipse、Open Invention、JCP、OpenJDK
  パフォーマンス系のためにもOpenJDKに参画してる
 ◎Twitter API
  オープンなAPIで無償提供
  13言語でAPIライブラリがあるよ
 ◎Twitter4Jのこれまで
  ほぼ全てをカバー
  APIはだいぶ落ち着いてきていて、追加変更は少なくなってる。
 ◎立ち位置
  Twitterはコミュニティを活発にするためにもライブラリを出さないらしい。
 ◎Twitter4Jのこれから
  キャッシング
  ストリーミングAPI利用を簡単に
  モックテスト
   レートリミットの影響を受けると辛いから。。。
  ツイート/ユーザの永続化機能
  jClouds対応?
  ライブラリからフレームワークへ
  半公式ライブラリへ
   github/twitter/twitter4jへ
  JSR Social API
   Twitter4Jが参照実装に???
 スケーラビリティの話。
 Hadoopはユーザのデータ解析とかに使ってる。
 メッセージはキューイングしている。デモ。
  memcachedプロトコルなんだけど、値を取ると値が消えるよ。(memcachedとは動きが違うよねー。プロトコル的にはクライアントがいっぱいあっていいよねー)
  RubyのGCがきつかったのでJavaベースに変更
 Kestrel(Scalaで記述。)
  Kestrelのフォーカス外
   メッセージの順序保証(してないよ)
   トランザクション
  memcachedプロトコルの拡張1
   ブロックフェッチ
    コンシューマから取りに行くというのが特徴
  memcachedプロトコルの拡張2
   リライアブルフェッチ

ということで感想。

Scalaは前から気になっていて、本までかってるのになかなか手を付けられていない始末でした。 そんな時にこのJJUGの話があったので、ちょうどいいと聞きに。 関数型やScalaのぼんやりしたイメージのみを持って聴いていたのですが、思った以上にキーワードが多くてついていくのがやっとというイメージ。 で、いつものごとく、Twitterでつぶやいていた所、色々な反応が。(わからずにつぶやいたのもあり、波紋を呼んだ模様) お陰で、Scala関連の方たちをフォローできたので結果オーライでした。 話の内容自体はサラっとながす感じだったので、再度資料を見る+Scalaをもっと勉強しないと理解出来ないなぁという印象でした。 ちなみに、資料はこちら

次は、最近Twitterの中の人になった山本さん(@yusukey)の話しを聞きました。 Twitter4Jの話と、TwitterのOSSへの関わりの話。あとは、実際にTwitterが作成しているOSSのひとつKestrelについて。 TwitterはRubyベースで色々と作ってきていたのだが、Java(JVM上で動く言語(Scalaなど))に徐々にシフトしているというのが一番の印象です。あとは、Lucene、Hadoopなど私の興味のあるOSSも利用しているなど。 Kestrelについてはデモを交えながら、実際の動きを説明されていたのでとてもわかり易かったです。 プレゼン中もTweetを表示しながらという、さすがTwitterの中の人という印象でした。 Twitterでは少し前から知り合いだったのですが、実際にお会いできた(イケメンでしたよ!)のも収穫でした。 次はStormの話も聞きたいかなぁ

で、2セッション(山本さんの話のあとにLT大会にも参加)だけですが、全体の感想を。 「クロスコミュニティカンファレンス」というだけあり、Java以外の話題(CouchDBとか名前がありました)もちらほらあったようです。 ただ、最近の他の勉強会やカンファレンスに比べると人が少ない印象でした。 私が参加したセッションは比較的大きな部屋だったせいもあり、40~50人くらい入っていたと思うのですが、ガラガラな印象でした。良い意味で、Javaも安定してきているため、参加者が少なかったのかなぁと あとは、年齢層がHadoopなどに比べると高めかなぁという印象(かく言う私も年齢層を上げている一人ですが。。。)。Javaも長いですからねぇ。 午前中から参加していると違った印象だったかもしれないですが。。。 あと、初めて行った会場で、しかも大きめの施設でした。午後の途中から行ったせいもあるかもしれないですが、 案内が出ていなくて若干迷子に。。。 ただ、セッションの部屋自体は各席に机があり、電源も比較的多めにあったので、PC持ち込みでメモを取るには最適でした。


comments powered by Disqus

See Also by Hugo


Related by prelims-cli