Scalaを触ってみたよ

0 コメント

なんで触り始めたかは覚えてないんですが、
下記サイトを参考にScalaを触ってみました。

今からでも遅くない これから始めるScala(前編)

インストールでちょこっとつまずいたのでメモなど。

zipをダウンロードして、SCALA_HOMEを設定したのだけど、
なぜかコマンドプロンプトで起動しようとすると
「\Java\jdk1.6.0_20\bin\java.exe の使い方が誤っています」
とメッセージが出てきて、起動できない。

ググってみたら、scalaの起動バッチを修正することで、
起動出来るってことが書いてあった。

scala.batがだめっぽい

上記リンクはscala.batにしか言及してないけど、
scalac.batも同じようにバッチを修正してやらないと、
コンパイルできません。というか出来ませんでした。
ちなみにscalac.batも32行目をコメントアウトしてやればおk。
scaladocとかはまだ試してないけど、多分同じ症状が起きる予感。

上記リンクに書いてあるように、
この現象は64bit版のWindowsで起きる現象の模様。

最初はノート(Windows7 Home 64bit)で試してたのだけど、
後に母艦(Windows7 Pro 64bit)で試してみたら、なぜか上手く行った。

何が違うのかと思って調べてみたところ、
ノートに入ってるJDKは32bit版用で
母艦に入ってるJDKが64bit版だったことが判明。
バッチがこけてる訳だから、JDKが32bit版だろうが64bit版だろうが
JDKの中身は関係ないと思うんだけど、64bitOSに32bit版のJDKを
インストールしようとすると、デフォルトのインストール先が
「C:\Program Files (x86)」になる。
(64bit版だと「C:\Program Files」)
こいつのせいでJAVA_HOMEのパスが上手く動かないのかなーとか妄想しました。

結論
64bitOS上でscalaを動かす場合は

・scalaのバッチを修正する
・JDKは64bit版を入れる
・32bit版のJDKを入れる場合はインストール先を Program Files に変更する
(これは試してないんで、これで問題が解消するかどうかはわかりません)

の3つの方法があります!
ということでした。

それではみなさん良いScala Lifeを!

ubuntuのデスクトップをMac風に

0 コメント

ubuntuのデュアルブートに成功させたので、
ubuntuもといLinuxに慣れようと色々イジって遊んでます。

ubuntu10.04になってから、
外観がかなりMac風になってるのですが、
どうせならMacにしちゃえってことで、
以下の記事を参考にMac風に仕立て上げてみました。

UbuntuのデスクトップをMac OSX Leopard風にするチュートリアル


もとい仕立て上げようとしました・・・が、
どうやら AWN manager インストール方法の部分が古いらしくて、
AWN managerのインストールが上手く行きません。
ググってみたら同じようにハマってる人が、
ubuntuフォーラムにいました。

https://forums.ubuntulinux.jp/viewtopic.php?pid=54561

んで、なんとかAWNのインストールに成功したので、
そのメモなどを記述しておきます。

上記URLのフォーラムにも書いてありますが、
現状のLinuxにAWNを入れるには下記のリンク先に
書いてあるようにやるといいらしいです。

http://wiki.awn-project.org/DistributionGuides#Testing_Package_Archive

ハイ。英語デスネー。

というわけで合ってるかどうか保証は出来ませんが、
以下自分がやった手順です。

①システム→システム管理→ソフトウェア・ソースをクリック

②他のソフトウェアタブをクリック

③追加ボタンを押して、 ppa:awn-testing/ppa と入力し、ソースを追加をクリック
この時、既に上記のリンクで
deb http://ppa.launchpad.net/awn-testing/ubuntu hardy main
deb-src http://ppa.launchpad.net/awn-testing/ubuntu hardy main
を追加してるならば、先に削除しておいたほうが無難です。
というか自分は削除しました。
(上記URLが書いてある所をクリックして削除ボタンを押せばおk)

④端末で $sudo apt-get install awn-settings-trunk を実行する。

といった手順でインストールできれば、
システム→設定の所に Awn 設定 という項目が追加されているハズです。

ただ、ここまで書いておいてなんなのですが、
AWNが新しくなったせいか、GUIが刷新されており、
上記のブログとはイメージが違うし、
ダウンロードした Eleganto glass のテーマも
tgzファイルだからかなんなのかわからないけど、
テーマファイルとして認識してもらえずで
結局あんまり役に立ってないような気もします・・・w

んで、結局 Docky を別立てでインストールして、
Dockは実現しました。
Dockyのインストール方法については下記記事を参考に
実施して問題なく出来たのでここでは割愛。

独自プロジェクトに分離したGnomeDoのDocky《Ubuntu 9.10対応》


とりあえず、これでデスクトップの見栄えはMac風にすることに成功しました。

完成図


ななみちゃんver


後々細かい点等修正がありそうだったら、
記事を修正するかもしれません。
しないかもしれません。

JCMT 2010に参加してきたよ! Cacoo裏側編

0 コメント

はい。先週のブログに書いた通り、
個人的に一番面白いと感じた
「Seasarで動いているWebサービスCacooの裏側」
のセッションについてのメモ等をさらそうかと。

とりあえず、資料はこちらにさらされてます。
一応このブログにも埋め込んでみる。

Tags: Etc

資料内のアジェンダにも書かれてるけど、
今回お話してた内容は、
・Cacooとはなんぞや?
・Cacooが動いてるアーキテクチャの構成
・Cubbyで拡張して何をどう実現してるか
・デザイナーさんとの協業方法
・レスポンスの改善
・質疑応答
って感じでした。

以下、セッションを聞きながらのメモを時系列で。
資料と重複してる部分や、意味不明な所は抜いた・・・はず。

 Cacooはヌーラボが運営・開発している

ヌーラボの仕事
→カクー、Backlog、受託開発を行っている

受託で作ったものをOSSに還元して、
その作ったものをさらに自分たちのサービスで使用している

Cacooとは?
VisioのWeb版
いろいろかけるよ!
・フローチャート
・UML
・ネットーワーク図
・座席配置図

図を描くだけでもなかなかイケてるけど、
リアルタイムコラボレーションもできるよ!

同じオブジェクトを触っている場合先勝ちになる。

別オブジェクトの場合マージされるよ

何のために作ったか?
本社が福岡のため、東京のお客さんとBacklogで文字だけでやり取りするのは結構きつかった
図も使ってたけど、pptで書いてpngにして、と面倒くさかった
ほかの人が編集できなかった
というわけで、図を直接みんなで編集できたりしたらいいなぁということで作った。

図が描けるツールが当時はあまりなかった

最初はUMLをWeb上で書くことができるようなプロトタイプを作った
JSONで情報やりとり

その後FlexやFlashを使えばクロスブラウザ問題を解決できそうだったので
ので社内で利用する為のプロトタイプを作成

社内プロジェクトで運用してみて、いけそうだったので、
Webサービスとして提供した

7ヶ月でユーザー数が現在4万4千超
国数は120カ国以上
ユーザーは英語版が57%以上
英語じゃない問い合わせが来てたりして、ユーザー対応が結構大変・・・

Cubbyで拡張
        ・脱Strutsを目指した
        ・T2も同じ感じ?
  
Plugin
    AOPを使わずに拡張していく  
    それぞれフックできるポイントが提供されている。   

Mayaa
    ・テンプレートの切り替えができる
    Cacooはリリース以前から多言語対応を念頭においていた
    多言語対応用に日本語・英語のリソースをすぐに切り替えられるようにした
  
    1.最初に開発者のみでプロトタイプHTML・機能を作成
    →使いやすさを追求
  
    2.次にイメージを作成
    →イメージをデザイナに伝えて、デザイナにサイトデザインを作ってもらう
  
    3.出来上がったイメージはイラレやPNGだったりするので、デザイナさんに
    それぞれパーツとして切り出してもらい、HTMLコーダーにパーツを渡し、コーディングしてもらう
            id/classのルールが重要
          
            Cacooではs_で始まるid/classは開発者側で使うというルールを規定し、
            それ以外はHTMLコーダーに自由にやってもらった
          
    4.出来上がったHTML/CSSからMayaaで仕上げる
    →動的なコンポーネントを含める
        →JavaScriptでDOMで表示するようなものを含めてもらう
      
    5.日本語の表示が終わったら多言語対応
    →翻訳したい単語・文章をリストアップして、翻訳者に渡す
  
        失敗したと思ったこと。
            翻訳者のCacooへの理解が足りず、翻訳してもらったものが
            ちょっとオカシなものになっていた。
            →実際にユーザーに指摘してもらって修正した

Mayaaとは
    ・最初がはまりやすい
    →公式ドキュメントを参照しましょう
        すでにメーリングリストで質問されている事がたくさんある
       →JSPと同じ考え方で表示しようとするとハマりやすい。
  
    Cubbyのカスタムタグの連携を用意にする拡張もあったりする。
  

レスポンスの改善

    通信速度・距離の問題
    アメリカからCacooやBacklogにアクセスしてみたところ
    画像が表示されないという問題が発生。
  
    サーバーキャッシュ→Ehcacheで解決(主に画像)
    RMIで複数台で分散してキャッシュをするようにしている。
  
    基本はネットワーク通信を減らす・DBアクセスを減らす
  
    ブラウザのキャッシュ
    タイムスタンプが重要

    Mayaaの応用
    InjectionResolverを拡張して、pom.xmlのバージョンを設定、
    JSのバージョン等を動的に変更させるようにした
  
    Hudsonでリリースモジュールを作成することによって、
    リリース漏れをなくすようにした。
  
    回線速度やレイテンシの問題
    →今EC2に乗っけるかどうかを検討している。
  
    現状海外からのアクセスが国内からのアクセスに比べて30倍位遅くなっている。
  
    InjectionResolverを用意しておくことによってEC2に乗り換えたときも
    リソースのパスなどの修正もあまり入らないと考えている

まとめ

CacooはSeasarプロダクトを基盤として動作しています。
  
Seasarを使うことによってサービス開発に集中できました

Seasarを使って魅力的なサービスをじゃんじゃんつくっちゃいましょう!

Javaだって今風なWebアプリ作れるぜ!



質疑応答
・HTML5導入は?
当時検討もしたが、当時はIE優勢だったので、見送った。
HTML5に切り替えればロードが早くなるのは
わかっているので是非やりたいと考えている。
Canvasは早いことはわかっている

英語じゃない質問はどうしてるの?
質問をGoogle翻訳で邦訳し、英語で返答している。

開発チームの人数は?
リリース直前は4名
3,4ヶ月で開発

インフラ構成は?
アプリケーション4台、DB2台?でかなり余裕
現状はたぶん2,3台でまわせる


以上。
最近話題になっているであろうCacooの裏側の事情が聞けて、
非常に興奮しました。

Windows7にUbuntu10.04を入れる

0 コメント

こないだ買ったAcer Aspire One 752(以下AO752)に
入れたくなったので入れました。
実行した手順は以下の通り。
リカバリディスクの作成方法等が
違うだけで、基本的には他のネットブック等でも
応用可能だと思います。
まぁ、試した訳じゃないので、
出来なくても責任は持ちませんけど。


前準備:リカバリディスクの作成
AO752には標準で「Acer eRecovery Management」
というツールが入っており、外付けDVDドライブと
空DVDさえあればすぐにリカバリディスクが作成できます。
基本的には画面の誘導に従えば出来るので、
詳細な手順は省きます。
①ubuntu10.04のLiveCDを手に入れる。
    これは多分CDでもUSBでも構いません。
    外部からブートできる媒体であればOKです。
    ちなみに自分はUSBでした。
    LiveCDの作り方はググればきっと一杯出てきます。


②Windows7のパーティションを分割する。
    Windows Vista以降、Windowsは空き容量さえあれば、
    自前でパーティションを分割することが出来るみたいです。
    詳しくはここを見ながらやりました。

    パーティションの拡張と圧縮 Windows Vista / Windows 7  
   
    なお、リンク先にも書いてありますが、
    リンク先のような行為はシステムを復元不能にしうる
    可能性もあり得るので、しっかりと熟考し、
    バックアップを取った上で実行しましょう。
   
    パーティションを分割した部分の領域は
    未割り当てのままで大丈夫です。

    あと、パーティション分割しようとすると、
    デフォルトの分割値が分割するドライブの半分とか
    になっちゃってますけど、勿論そんなにいりません。
    自分はものすごい余裕を持って40G(40960)にしました。
    40Gでも多すぎるとは思うんですが、
    色々遊ぶ予定なので余裕を持っておきたいなと・・・
   
③①で用意したCD or USBを用いてUbuntuのLive版を起動する。
    当たり前ですけど、再起動するときはちゃんと、
    ブートの順番を変えないとダメですよ?
   
④起動するとインストールか、お試しかを聞かれるので、インストールを選択する。
    この後の詳細なやり方は
    以下を参考にしました。
   
    USBメモリへUbuntu10.04をフルインストール
     
    上のリンクはUSBメモリへのフルインストールの方法なので、
    今回のはちょっとだけ手順が違います。
   
    上記リンク手順の7で、
    "「手動でパーティションを設定する」のラジオボタンにチェックを入れて「進む」。"
    とありますが、今回は内蔵HDDの未割り当ての領域にインストールするので、
    "それぞれ別のものとしてインストールし、起動時にどれを起動するか選択"
    を選びます。
   


   
    ここで「進む」をクリックすると、以下のようなちょっと怖い確認画面が出てきますが、
    勇気を出して「続ける」をクリック。




   
    また手順13でブートローダのインストール先を変更していますが、
    これも今回の場合はWindows7、ubuntuが共に内蔵HDDに
    インストールされてますので、変更は不要です。

    あとはインストールが始まるので、
    インストール終了後に再起動するだけです。
   
    自分の場合、
    インストール終了後にubuntuではなくWindows7を起動したのですが、
    なぜか、Windows7が起動途中で止まってchkdiskが実行されたので
    かなり焦りましたが、chkdisk終了後はなんの問題もなく、
    Windows7、Ubuntu共に動きました。
    原因がなんだったのかは不明です・・・
    未割り当て領域だったところにいきなりデータが
    書き込まれてたからかなぁ?
   
    まぁ、そんな感じでデュアルブートネットブックの出来上がりです。
   

Java Cloud Meeting Tokyo 2010に参加してきたよ!

0 コメント

お久しぶりの更新です。
というわけでJCMT2010に行ってきたので、その所感など。


参加したセッション
1時間目    :    Seasar3がやってくる
2時間目    :    SeasarFoundation社員総会
3時間目    :    デベロッパーのためのAWS講座
4時間目    :    Seasarで動いているWebサービスCacooの裏側
5時間目    :    AWSハンズオンセミナー
6時間目    :    AWSハンズオンセミナー

以上のセッションに参加してきました。
以下、各セッションについての所感

■Seasar3がやってくる
ひがさんが来るべきエンタープライズクラウド時代に向けて、
今後のSeasarをどういう方向で開発していくかをお話してた。
結論から言うと、今のところ考えてるのは、
Springをベースにして、既存のSeasarで行えていたことを
実装していくという方針だとか。
今のところはHotReloadingを
クラスキャストエクセプションが起きないように
実装する、なんてのを考えているらしい。

ただし、これは現段階の考えであって、
今後他の人たちともっと話しをして、
最終的に決めていきたいとのこと。

■SeasarFoundation社員総会
SeasarFoundationとして、
コミュニティの枠を広げていきたいとかどうとか

■デベロッパーのためのAWS講座
一応今日のメイン目的のセッション。
講師がAmazon本社のAWSエヴァンジェリストで、
セッションは翻訳者付で行われた。

基本的にはAWSのサービスの概要説明だとか、
どんなサービスがあるかとかを話していた。
AWSで最近RDSという、クラウドでRDBMSを利用できる
サービスを展開しているが、これはMySQLを
利用しているため、既存のDBがMySQLの場合
簡単に移行できるらしい。

ちょっと驚いたのは、RDSは自動的にログを取っているのだけど、
そのログからDBのバックアップが可能だということ。
そんなのって普通のRDBMSでもできるの?

■Seasarで動いているWebサービスCacooの裏側
タイトルの通り、使ってるアーキテクチャやら、
開発時の苦労話等。
個人的にここが一番濃かったので、
ここについては別で記事をあげようと思う

2010/06/20追記
記事アップしました。
JCMT 2010に参加してきたよ! Cacoo裏側編


■AWSハンズオンセミナー
wktkして行ったけど、ちょっぴりガッカリなセミナーだった。
自分が情報収集しきれてなかったのが悪いのだけど、
アカウント取得前提というのを聞いてなかったので、
実際にハンズオンには参加できなかった。

あと、ガッカリな理由としては、2時間使った割には、
内容がホントの入り口の部分しか触れられなかったところ。
ちょっと前口上というか、AWSについての説明が多かった。
AWSの説明は説明で勉強になったのだけど、
ハンズオンていう位なんだからもうちょっと、
インスタンス作って、あれやこれやイジくって
というセッションにしてほしかったなーなんて思ったり。


以上。そんなとこっす。