kagamihogeの日記

kagamihogeの日記です。

java-ja 第六回感想 - そうだ java-ja 関西、行こう。

そんなわけで先の土曜は関西で行われた java-ja 第六回に行ってきました。充実した時間を過ごすことができたんで、スピーカの方々や懇親会でお相手してくれた人、会場を提供してくださった人ひっくるめて java-ja 関西の方々ありがとうございました。

Javaからみたスクリプティング(Rhino/JRuby,Scala)

keisuken によるトーク。Java に関連のあるスクリプトの概観話とお前ら Scala 使え、という話。発表資料は こちら

  • JVM 上で動くスクリプトは野良を含めるとたくさんある。ちょっとたくさんありすぎるので、最近の流れのひとつとして、Java Scripting Framework に統合していこう、というものがある。*1
  • Java Scripting Framework とは? カンタンに言うとテキストをランタイムにぶち込むと動いちゃうよ、というもの。まだ試験段階で、対応してるのは Rhino(らいの) ぐらい。
  • JRuby - rubyjava 版。JIT で動くからそれなりに早い。Rails も動いちゃう。
  • Scala ここからトークの本題が始まる。
    • Java 的な OOPLispHaskell関数型言語の要素を融合した言語。
    • Scala はまだ用途が謎いのでみんな使って採用事例を増やしてほしい。

ここのところ web 上でも Scala は盛り上がりを見せていたので興味深い話が聞けた。型推論やパターンマッチング、trait とか implicit とか、ちゃんと理解はできてないけどなかなか面白い。Java との違いって視点でみると新鮮だった。

java-jaとHudson

id:cactusman によるトーク。java-ja って何するところ? Hudson って何? の 2 本立て。

  • java-ja って何?
    • java-ja に所属するには、自分が java-ja 所属と言った瞬間から構成員。楽しさ = 正義。java ビギナー歓迎。
    • 発端 - なんか java って堅苦しいよね? じゃあ気楽に交流できる場所作ろうよ、という理念から生まれた。
    • java-ja でメダツ人の紹介。
  • Hudson って何?
    • 高○名人は 1000spakers ではウケがよくなかったらしい……あちらさんは世代がずっと若いのか?!
    • CI - システム・インテグレーション作業のサポートツール。
    • CI の意義 - いつでも動くものを提供する。デグレ・手戻りコストの軽減を図る。
    • Hudson の特徴 - 初期導入がカンタンで設定は web ベースでできる。
    • 大事なこと - ツールは開発作業の補助をしてくれるだけで、開発のやり方をカイゼンしてくれるわけじゃない。テスト大事!習慣大事!

発表の最後にあった「テスト大事!習慣大事!」が最大の肝だよねぇ。これまでの開発のやり方を変える行為―たとえば自動テストとか―をチームに導入するのは中々むつかしい。そういう新しい「習慣」をチームにうまく持ち込む方法が知りたいと思った。でもまぁ結局は自分自身が有用性を示してみせることしかないんだろうなぁ。

WEBアプリとセッション管理

あきぴーによるトーク。Web アプリケーションフレームワークの歴史を概観し、セッションまわりで起こる様々な問題とその解決策について昔ながらの泥臭いものから新しめのものまでざっとまとめてみた、という内容。

  • Web アプリケーションの歴史
    • CGI -> JSP/Servlet -> 会社単位のアレなフレームワークの乱立 -> MVC2(Struts) ->
    • EJB 永続化と分散 - でも結局みんな Stateless Session Bean しか使わなかった。
    • SOAP SOA の本命 ネットワーク越しの RPC
    • EJB も SOAP もおそすぎ and ふくざつすぎて使い物にならなかった
  • 本来、Web アプリケーションのフレームワークってシンプルなもんなんじゃね? と皆思い始めた
    • ステートレスだとスケールアップはステートフルに比べるとカンタン、だけど、GUI が絡むとステートフルのほうがプログラム書きやすいよね。
  • で、途中状態を持つ必要が出てくるんだけど、Web アプリで問題になるのはセッション管理。
    • セッションはグローバル変数、ハッシュみたいなものだからタイプセーフでないのが怖い。
    • 「(ブラウザの)戻る」問題。泥臭いやり方はまぁ結構ある。
      • Continuation(継続)の概念を使って、リクエスト後の処理をクロージャで書けば上手く整理できるのかも?
      • viaWeb(Lisp) kahua(Gauche) というフレームワークがすでにある。
    • 2 度押し問題。
      • トランザクション・トークンとか、色々解決策はあるけど、やっぱりロジック複雑になっちゃうよね。
      • 最近のトピックとしては、PUT メソッド、Rest のアイデアの画面の状態を URL で持つやり方、継続を使う、方法など。
  • その他よもやまな話題。
    • view と Controller の間のレイヤー
      • Helper とか Validation とか。必須だけどこの辺のプログラミングってツマランよね。
    • クッキーにセッション ID を持たせる。
      • ex. amazon のクッキーログイン(半ログイン) これはブラウザ閉じてもログイン状態が残ってるように見えるので、割りとユーザにとって優しい。技術的にはちとキモいが。
    • view に Ajax, GWT を使う。開発はちょっとメンドイけどユーザにとっては恩恵がある。


セッションはグローバル変数。DB もグローバル変数。さらに、リクエストパラメータでフラグが渡されたりなんかするともう死ぬ。このあたりのメンドイ事情はどんどんフレームワーク側に隠蔽されていくとはいえ、Web アプリである以上、この辺の問題からマッタク目をそらしていられる日はまだまだ遠そうだ。

java からみた Haskell

ujihisa によるトーク。発表資料は こちら

  • java で効率的にコードを書くには?
  • たとえば java を避ける。そこで極端に関数型言語Haskell の出番。
  • キーワードとしては、遅延評価、参照透明、再帰、モナド
  • 実演としてその場で FizzBuss コーディング。

Haskell への愛が溢れすぎて Java 厨の俺はマッタクついてなかった内容。ただ、関数型言語は一度でいいから実用レベルに達せずとも触れとかないといかんなぁと認識を新たにした。極まるレベルまでいくと逐次処理的な書き方ができなくなるらしいからなぁ…… それにしても Haskell ヘンタイすぎるw

AS for Javaer

id:nitoyon によるトーク。ActionScript 3 は swing っぽいから Java な人たちにもオススメですよ、な話。

  • AS は元々 Flash に動きをつけるためのものだった。が、OOP 取り入れたりモロ java の影響受けたりして ActionScript 3 は java の人にも親和性高い代物になった。
  • AS -> ABC(AS ByteCode) -> SWF
    • AS -> ABC にコンパイルは asc.jar が、ABC -> SWF のリンクは mxmlc.jar がやる。この jar の中身は java で書かれてる。ちなみにオープンソース
  • AVM2 - これはソース非公開。Adobe は(一応)Flash Player モドキの作成を禁じている。
  • その他の AS 関連の話題。
  • というわけで AS/Flexjava な人にオススメ。
    • Flex 勉強会は java 経験者多いよ、とのこと。
    • AS の文法は Java っぽいから―今日のトークの Haskell とかと比べると―うっとうしいと思う人もいるだろうね。IDE 前提の代物なんだろう。

FlexJava な人にオススメなのは今俺が現在進行形で実感してる。View を担当する mxml は HTML と javascript のあいのこっぽいし、ActionScriptJava っぽい。サーバ側との通信は S2Flex2 はじめ色々選択肢がある。環境に縛りをかけられる業務アプリなら、リッチクライアントの選択肢に Ajax でなく Flex は良い選択肢になると感じている今日この頃。

懇親会

今回急きょ java-ja 関西の勉強会行ってみよう、と思ったきっかけは 2 つある。

ひとつは先に行われた java-ja 第八回の懇親会で id:t_yano に聞いた大阪のエンジニア事情。どんな内容かというと「大阪は、今、東京に人も仕事もどんどん流れ出してる。だから、大阪のエンジニアは生き残ろうと必死になっている。だから東京人は気をつけたほうがいい。なぜかって? 必死になって生き残ってきた大阪のエンジニアに仕事とられかねないから。しかも安い。オフショアとかいってるけど、東京にとっては札幌・博多・大阪とかのほうがよっぽど脅威だと思うよ」

……といった話を聞いたので、これは一度大阪の人の話を聞いてみたいなぁ、とそのとき感じた。で、この一週間後に java-ja 勉強会を関西でやるよー、ってことだったので渡りに船と参加してみたワケです。

で、その辺の話を聞いてみたんだけど、そういう傾向はあるよね、って話は何人かから聞くことができた。しかし、優秀なエンジニアがどんどん流れ出してる現実は、技術空洞化の危険もはらんでいるんだよなぁ、という話も聞けた。二律背反な感じなんだろうなぁ。大阪でがんばってやるぜ、でも、東京は色々と魅力的なんだよなぁ、みたいな。

もうひとつの理由は、俺の地元が名古屋なので何時かは戻りたいなぁと漠然と考えていて、名古屋圏に近い関西圏の労働事情はどんなもんなんかな、と聞きたかったから。

モヤモヤとした考えだったので、それほど多くの情報は得られなかった。けど、関西人的な地理感覚などの話は貴重な話だった。通勤時間の感覚とかは実際に暮らしてる人に聞いてみないとわからないからね。

でまぁ、名古屋でなく関西圏で働くのもアリなのかなぁと思った。今回、名古屋の実家から大阪に向かったんだけど、名古屋-新大阪間はのぞみ新幹線で 50 分。今回の勉強会は 1600 からだったんだけど、理論上は実家を 1400 に出れば間に合う計算だった。それを考えると、大阪意外に近いんだな、と。実家のある名古屋と距離的にこれだけ近い土地なら大阪のどっかで働くのも選択肢のひとつなのかも、と感じた。

あと、桜水産のメニューにナチュラルにたこやきが鎮座してて驚いた。関西 SUGEEEE って驚いたら「フツウじゃね?」って返されてさらに驚いた。

最後になったけど id:cactusman に感謝を。twitter で「関東から関西? 飛行機でひとっとびですよ!」の発言がなかったらタブン行ってなかったと思うw

*1:最新の○○2 のゴニョゴニョなソースが jdk1.6 じゃないとコンパイルできなかったのはこれのせいか……