2008年8月31日日曜日

Zopeやらねば



転職して8月1日から新しい会社で勤務しているワタクシです。

今までの会社では企業相手に業務アプリケーション作る仕事をしていましたが、
新しい会社は自社でインターネット上でのサービスを展開している会社。
文化も全く違うわけです。

業務アプリ作る仕事だと言語は一つに決まるしフレームワークとかも決まってしまうわけですが、
今度の会社では自社のサービスの開発で自由度も高いので、
サービスごとに言語が違ったり、同じ言語でもフレームワークが全然違ったり。

その中の一つにCMSもあって、ZopeというオープンソースのCMSを使っています。
CMS自体今まで遣ったことなかったのですが、さらにZopeはPythonで動いていて、
ある程度複雑なことをやろうとするとPythonのスクリプトを書かないといけなったりするわけで。
ちなみにPythonは今まで全く使ったことありません・・・。

とりあえずはZopeについてひととおり勉強して、
そのあとはPythonやるかなぁと思っている今日この頃。
Pythonはオブジェクト指向言語で、ZopeのつくりもPythonの思想が色濃くでてます。

Webサーバとしての機能+コンテンツ管理機能を持っているので、
内部向けのあまり機能やプレゼンテーションにこだわらないのであれば
Javaとかでゼロから作るよりも、こういうの使ったほうが絶対お手軽だと感じました。
特にインターネットでサービス展開するような仕事であれば
スピードも大事なので、ビジネスに直結しない部分には
あまりお金や時間かけてはいけないですからね。

ほかにもPHPとかRuby on Railsとか(言語)、
PostgreSQLとかMySQLとか(DB)、
SpringMVCとかVelocityとか(Java関連Framework)。。。
覚えること山盛りです・・・。

2008年7月12日土曜日

Mashup Caravan in TOKYO

Sunの神宮前オフィスで開催された、Mashup Caravan in TOYOに参加。



Mashup CaravanというのはMashup Awards 4(MA4)の開催に伴って実施される、
協力企業や過去の受賞者によるセミナー。
それぞれの詳細については公式ページを参照のこと。

Mashupといのは公開されているWebサービスのAPIを組み合わせることによって
新しいサービスを生み出すこと。もとは音楽用語だったとか。

Mashup Caravanの内容としては各協力企業が、それぞれが提供しているAPIについて
技術的なことを含めて説明するというのが主な内容。
どんな企業が参加しているかは公式ページに譲るとして、今日のセッションの中で
一番興味を引かれたのは、富士フィルムの顔ラボが提供している「顔検出WebAPI」。
これを使うと人の顔が映った写真の中から、自動的に人の顔を検出してくれる。
最近サイバーショットで笑顔検出というのがあるけれど、そういったものの基本的な技術らしい。

これを使ったアプリがいくつか顔ラボサイトで公開されていて、
その一つのホントはみんな怒っているサービス「カチッ(怒)」っていうのをつかうと、

たとえばオペレータの人がにこやかに対応しているのかなー、
と思っていたら・・・





      ↓ボタンを押すだけで、
クレームに怒り心頭中な画像になったり、







みんなで一つの目標に向かっているのかと思ったら、





      ↓1クリックで、
みんなで一つの目標に怒っている写真になったりとか。





こういうサービスが気軽に使えちゃうのがすごいです。
今までMashupに興味はあったんだけど、WebAPIを使ってみるには至らなかったので、
これをきっかけに自分でも使ってみたいと思う今日この頃。
うまく使えばちゃんとビジネスにもなるだろうし。

ちなみに今日のMashup Caravan参加者にはいろんなノベルティが配られて、
その中にDuke金太郎飴があったので写真を載せようとしたのだけれど、
自分の携帯では接写できず断念。。。

2008年6月26日木曜日

Spring ちゃんと入門

 仕事のユーザ企業の独自フレームワークで取り込んでいるので、なんとなく使っていたSpring。
最近Spring(特にAOP)の壁を感じたので、ちゃんと入門。



 DIやAOPの思想は知っていたものの、今まではBeanの取得用ぐらいにしか使っていなかったのだけど、
やっぱりちゃんとつかうとかなり便利っぽい。
ソースから業務の本質以外の部分はほとんど追い出すことができるのでは。
今の案件では排他管理(DBなどでの厳密な排他ではなくて、業務要件的な特殊な形の排他)や
権限管理などをこれから実装しなくちゃいけないので、DI&AOPを使えないか画策中。
業務的な部分は実装・単体テストまで終わってる部分もあるので、AOPではめ込めたら楽かなぁ、と。

ただ使ってて思うのは、DIとかAOPはソースに直接記述しない分、可読性はどうしても落ちるかな。
DIやAOPを十分知ってて、そのアプリがどんな設計になってるか分かってる人なら
逆に読みやすいのかもしれないけど、ソースだけ見てアプリの内容を理解しようと思うと、
この動きはどこのソースでそーなってるんだっ、としばらく悩むことに。
最近のフレームワークはXMLの設定ファイルたくさん使ってるので、
むしろソースに書いてあったほうが可読性としては高い気もする。

出勤前のマックで技術書読んでの勉強なので、まだあんまり手を動かして確認できてないのが痛いところ。
ThinkPadのX61あたりがほしいなぁ~。(X300は高すぎて手が出ません。。。)

2008年6月15日日曜日

RubyとJavaの違い

とりあえず「たのしいRuby」の入門の入門をやってみての
RubyJavaの違うところ.

以下にも入門編の例を挙げると、"Hello, World!"という1行を出力するプログラムは、
Javaだとこんな感じ.

public Class Hello{
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}

これがRubyだと、

puts("Hello, World!")

という1行だけ.

JavaとRubyのコード量は両極端、とか聞いたことがありますが、
これは確かにRubyの生産性の高さを期待させます.

あと少し細かいところでの違いとしては、

  1. Rubyでは文字列区切りにダブルクウォート(")だけでなくシングルクウォート(')も使える。(改行コードなどがそのまま出力される。)
  2. Rubyではメソッドの括弧()が省略できる。
  3. Rubyでは変数の使用に型宣言不要。
  4. Rubyでは配列オブジェクトの要素数は可変。
  5. Rubyでは正規表現を言語の組み込み機能として使用可能。

といったとこでしょうか。
今までJava使いな自分としては、2番のメソッドの括弧省略とかはまだかなり違和感あります。
なれればこっちの方が見やすいんですかね。
とにかくコード量はJavaと比べたらかなり少なくてすみそう。

2008年6月11日水曜日

Ruby始めました。

前からやってみたいと思っていたRubyをやっとこさスタート。
JavaOne2008報告会の帰りに入門書を買ってきました。



環境としてはVMWare上にインストールしたubuntu8.04にRubyをインストール。
ちなみにtarボールを落としてきて普通に./configureするも失敗。
apt-getでインストールしようとすると今度は権限なしで怒られる。
でもubuntuってインストールのときにrootのパスワードとか指定しないしなぁ。

ネットで調べるとubuntuでrootユーザになる時は下記のように実行。

$ sudo su -

rootになるにもsudoが必要なのね。
そしてapt-getでインストール。

# apt-get install ruby

今までLinuxってRedHatとかFedoraCoreとかばっかり使ってたので、
Debian系はubuntuが始めて。色々勝手が違いそう。
RedHat系だとapt-getじゃなくてyumとかrpmだし。。。
インストール後に確認してみると、ちゃんとRubyがインストールされてるっぽい。

$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]

とりあえずはテキストエディタで基本を勉強。
ある程度やったらEclipseとかNetBeansとか使ってみようかな。
そしてRuby on RailsとかJRubyもやる予定でっす。

2008年6月10日火曜日

JavaOne2008報告会報告(6) DON'T BE SHY! ~ハンズオンラボ/BOF/パビリオン体験レポート~

5つ目のセッションは、Sunの大渕さんによる、
「DON'T BE SHY! ~ハンズオンラボ/BOF/パビリオン体験レポート~」。

BOFというのははじめて聞きましたが、Birds Of a Featherの略で、
日本語の「類は友を呼ぶ」という意味に相当するんだとか。
コンピューター関連のカンファレンスなどで、(一般的には) その日のセッションが終了したあとで
開催される、インフォーマルなミーティングのことらしいです。(インテル用語辞典より)
ということで、メインのTS(テクニカルセッション)以外の部分の紹介という内容でした。

JavaOneのセッション資料はすぐにサイトからPDFでダウンロードできるようになるので、
情報を集めるだけであれば現地に行かなくても同じだけの情報は集められるそうですが、
行かれた方はみなさん、情報収集以外の部分、他の技術者とのコミュニケーションや
お祭り気分を味わったりといったところを楽しんで、さらにモチベーションをあげているようです。

大渕さんも当日の様子をテンション高く楽しそうに語っていました。
JavaOneに限らずこういったセミナーやイベントの醍醐味は
やはり普段会えない人々とのコミュニケーションなんでしょうね。

このあとのライトニングトークを含めて、JavaOneに参加するには、ということで
自分で行くにはちょっと高額なJavaOneに会社のお金で参加するための作戦を紹介していました(^^;
私も自分ではとてもいけないので、どうやったら会社を説得できるかなぁと考える今日この頃です。

JavaOne2008報告会のセッション資料は
JJUG(日本Javaユーザグループ)のJavaOne2008報告会ページから
ダウンロードできるようになってました。

ちなみにJavaOne2008本体の資料は
SunのJavaOne Onlineからダウンロード可能です。

2008年6月5日木曜日

JavaOne2008報告会報告(5) 明日から使えるデバッグ/運用手法 from JavaOne

4つ目のセッションはエスエムジーの谷本さんによる、
「明日から使えるデバッグ/運用手法 from JavaOne」。

Javaの効果的なデバッグや運用手法の知識を得る、
っていうだけでなく、帰ったら手を動かして試せるような
ツールを紹介するという内容。

紹介されたツールは下記3つ。

1.JMX2.0
   ⇒ Java Management Extensions.
     Javaのアプリケーション管理・監視ツール

2.VisualVM
   ⇒ 統合デバッグツール。自分で拡張することが可能。

3.DTrace
   ⇒ システム内部の情報や呼び出しをリアルタイムに収集する。

この中で一番注目なのはVisualVM
今までこの手のツールってあまり使ったことがないので、詳しいことまでは分かりませんでしたが、
Eclipseのパースペクティブっぽい見た目で、お手軽にアプリケーションの状態をモニタリングできる。
さらに今までは複数のツールを使っている場合はそれぞれ独立して管理していたのが、
VisualVMでは他のツールをVisualVMのタブに統合することができる。

DTraceはSolaris10, OpenSolaris, MacOS Xでしか使えないという制限があるものの、
この環境を満たすならかなり使えそうな感じ。
予定されていたデモはOpenSolarisがインストールされたDELLのノートPCと
プロジェクタの相性が悪かったらしく、残念ながら見られず。
Windowsのときにはちゃんと映ってたのに。。。

そのほか雑感ということで紹介されていたもので興味深かったのは、
WebアプリFrameworkの比較セッション
TS-6517 Road Test Results of the “Big Three” Web Application Frameworks」。
Struts, JSF, Spring-MVCのパフォーマンスなどを比較していた。
ざっくりした結果としては、Struts1.x, Spring-MVC 早っ、Struts2.x, JSF 遅っ
パフォーマンス的にはかなり差がある様子。
Strutsなんて同じStrutsなのにバージョンで全く違うとは。導入のときは要注意ですっ。

2008年6月4日水曜日

JavaOne2008報告会報告(4) JavaSEとJavaFX:傾向と対策

3つ目のセッションは、横河電気の櫻庭さんによる、
「JavaSEとJavaFX:傾向と対策」。

今年のJavaOneのサプライズは、Neil Youngが登場してスピーチしたことだそうです。
完全エンジニア向けイベントに超大物アーティストが出てきてしまうあたりがアメリカっぽいところ。

で、セッション冒頭の内容は、Neil Young大好きな櫻庭さんによる、
「Neil Youngの傾向と対策」(笑)
結局20分ぐらいは続いていたんではなかろうかと。
細かいこと気にせず楽しめました。

で、本題のほうとしては、下記のようなワードが出てきてました。

・モジュラリティ
  JavaOne全体で見てもキーワードに挙げられてました。
  今までモジュールとしては、開発時はパッケージ、デプロイ時はJarファイルでしたが、
  開発時には複数のパッケージをまとめて扱う新しいアクセス修飾子である"module"が追加されたり、
  デプロイ時にはライブラリやツールなどを統合化した、Jarヘルの解消にも役立つ
  JAM(JAva Module)とかレポジトリが追加されたりしたらしい。アクセス修飾子が増えるとはびっくり。
・プロファイル
  大きくなりすぎたJavaのAPIは、使わないAPIが多いが切り離すことができない。
  そこで、プロファイルというものを導入して適切な範囲のAPIを導入しよう、ということかな、と。
  いまいち具体的なイメージがつかめてない。。。
・クロージャ
  BGGAによって提案され、{ => } でクロージャを表す。
  例えば、
    { int x, int y => x + y }
  みたいに書ける。
・JavaVM
  マルチランゲージ対応としてダイナミックコード用のバイトコードが作成されたり、
  DaVinci プロジェクトが紹介されたり、GCが改良されていたり。
・Java言語仕様
  例外のマルチキャッチ
  こんな風にかけるようになる。
try {
    ・・・
   } catch (AException, BException ex) {
    ・・・
   }
  アノテーション
  引数やジェネリックスなど時の修飾が可能
  @Nonnull, @Readonly, @Immutable, @Interned
・Java Plugin
  アプレットの復活
・JavaFX
  2008秋リリース
・ConsumerJRE
  JavaKernel(中心になる部分だけ先行でダウンロードする)
  Java Quick Startar(別プロセスで動作させておく)
  New Java Plusgin
  JavaFXのサポート

とかってところでしょうか。
JavaFXについては他のセッションでも言ってましたが、開発環境が今はまだほとんどないので、そこがポイントになってくるようです。

2008年6月3日火曜日

JavaOne2008報告会報告(3) JavaEE最新動向:JavaEE6とBeyond Java

2つ目のセッションは、野村総合研究所の野上さんによる、
JavaEE最新動向:JavaEE6とBeyond Java」。

野上さんは仕事柄J2EE周りのセッションに片っ端から参加してきたようで、
とにかく情報量豊富。JavaOneの資料はネットですべてダウンロードできて、
野上さんの参加したセッションのセッションNoを公表してくれているので、
あとで資料確認必須です。英語だろうけど。。。

主なネタは下記のようなものがありました。

GlassFish v2/v3
EJB3.1
インタフェースのオプション化やパッケージングの簡素化で3.0よりも作りやすくなったり、
  EJB LiteっていうのがEJB3.1 APIのサブセットであったり。
Servlet3.0
  Annotationによる開発容易化だったり、web.xmlのモジュール化(各々のフレームワークが
  フラグメントされた各自のweb.xmlを持てる!)によるプラグイン容易化だったり。
JavaPersistanceAPI 2.0
  参照実装としてEclipseLink
Intoroduction to WebBeans
  J2EEプラットフォームにおけるコンポーネント・モデルの統一。
  強力な静的型付けによる疎結合化。
  JBossSeam 2.0, Google Guice 1.0 など
JSF2.0
  あまり進展なし。Early Draftも未発表。
JavaEE
  Web Profile Options
NetBeans6.1
  次のバージョンは6.5
Eclipse3.4(Ganymede)
  2008年6月25日リリース
Hudson
Sprint2.5/3.0

また、Beyond Java(これからのJava)については、多言語サポートがポイント。
Javaは一つの言語というより、そのVMの上で色々な言語を動かすための
プラットフォーム的な位置づけになりつつあるよう。
それ以外の注目としてはOpenJDK7, GlassFish v3, Grails, JRuby, Groovy,
SCA, JavaプラットフォームでのSaaSなど。

聞いたことない言葉も色々出てきたので、あとでJavaOne資料をがんばって読まなくては。
個人的にはRubyに興味があるので、JRubyとかNetBeansとか興味あるところです。

2008年6月2日月曜日

JavaOne2008報告会報告(2) JavaOne2008ハイライト

JJUG会長の丸山 不二夫さんの挨拶の後、一つ目のセッションは
サンの増月さんの「JavaOne2008ハイライト」。

冒頭にはMr.JavaOneことJohn Gageから参加者へ向けてのビデオメッセージというサプライズ。
GreenITのイベントのときにお願いしてメッセージをもらったんだとか。

まず昨年のjavaOneのキーワードを挙げて、それと対比する形で今年のポイントを説明。
今年のJavaOneのテーマは「JAVA + YOU」。このYOUには、DeveloperやConsumerという
意味が含まれているとか。そしてJavaOneで重要なことは「Don't Be Shy!」だそう。
(ちなみにこれは毎年言ってるらしいです。)

で、今年のキーワードとしては下記を挙げていました。

 ・RIAs (Rich Internet Applications)
 ・JavaFX
 ・GlassFish V3
 ・OSGi
 ・Modularity

このワードについてはこのセッションだけでなく、これ以降のセッションでも
頻繁に登場したので、確かにこれからは要チェックなワードなのだと思われます。

上記以外についても、

 ・Project Hydrazine
 ・Project Insight
 ・JavaCard3.0
 ・JavaTV

などについても触れていました。

そのほかにはJavaOne全体の雰囲気だったり、テクニカルセッション以外の部分の雰囲気だったり、
JavaOneと同時(前日)開催のCommunityOneというイベントの内容の紹介もありました。

何しろJavaOneでは13セッションが同時進行しているようなので、
それが4日間もあったら内容としてはそれは盛りだくさんでしょうなぁ。

2008年6月1日日曜日

JavaOne2008報告会報告(1)

JJUG(日本Javaユーザグループ)による「JavaOne2008報告会」に参加してきました。

「JavaOne」というのは毎年サンフランシスコで4日間ほど開催される、
世界最大規模の開発者会議。2万人ほど集まるらしいです。
Sunが主催で、名前のとおりJavaがメイン。
さすがに簡単にサンフランシスコまではいけないので、行った人の話を聞こうじゃないかと。

報告会のスケジュールはこんな感じ。

13:00 - 13:05  開会あいさつ
 日本Javaユーザグループ
 会長 丸山 不二夫
13:05 - 13:50  JavaOne 2008 ハイライト
 サン・マイクロシステムズ株式会社
 増月 孝信
13:50 - 14:00  休憩
14:00 - 15:00  Java EE 最新動向 : Java EE 6 と Beyond Java
 株式会社野村総合研究所
 野上 忍
15:00 - 15:10  休憩
15:10 - 16:10  Java SE と JavaFX: 傾向と対策
 横河電機株式会社
 櫻庭 祐一
16:10 - 16:20  休憩
16:20 - 17:20  明日から使えるデバッグ/運用手法 from JavaOne
 エスエムジー株式会社
 谷本 心
17:20 - 17:30  休憩
17:30 - 18:30  DON'T BE SHY! ~ハンズオンラボ/BOF/パビリオン体験レポート~
 サン・マイクロシステムズ株式会社
 大渕 雅子
18:30 - 18:40  休憩
18:40 - 20:00  ライトニングトーク

1セッション1時間ほどで、内容は結構盛りだくさん。
なので、それぞれの内容についてはまた次回以降。

13:00 - 20:00までの長丁場でしたが、内容が面白かったので苦にならず、
最後にはじゃんけんプレゼントがあり、見事勝ち残り。
Mr.JavaOneことJohn Gageのサイン入りノートと、
OpenSolaris 2008.5のLiveCDをゲットしてきました。












そのうち実際JavaOne行ってみたいなぁ。