思ってることってこんなもんだよ
2007

さて、あと数分で2007年も終わりを告げ、2008年がやってくる。 2007年は、年初には思いもしなかった「いろいろな変化」がやってきた。ずっとこのブログや雑誌の記事執筆はやってきたが、それとは比べ物にならない飛躍の年と言えるかも知れない。 結婚 S2Wicketの開発と公開 java-jaとの出会い いくつかの非生産性向上系Eclipseプラグインの開発と公開 母校での講演 こみゅすけの開発と公開とMA3トリプル受賞 Sun Tech Days、Seasar Conference、丸...

Railsアプリのディレクトリの中で、テストケースを実行するために、 rake test と打たなければならないところを、 rails test と打ってしまうと、もれなくtestアプリケーションがテスト対象アプリの中にできあがる。 Railsアプリを「正しく」作っている(=ちゃんとテストコードを書いて品質を担保している)人々はきっと経験していることではないか、と想像してみるが、いかがだろうか。。。

学生の時は、それはもう嫌で嫌で仕方がなかった「冬休みの宿題」。当時の僕は「休みなのに宿題って、休みにならないじゃん」と納得がいかなかったが、30歳を過ぎると、自分で宿題を課すようになった。不思議なことであるが、しかし学生当時と違って、大人の宿題とは「好きなこと【だけ】をやる」であり、モチベーションもそりゃあ違うということだ。 で、今シーズンはというと・・・ Railsのfixturesをごにょごにょする。 activerecord-jdbcでごにょごにょする。 S2WicketとIren...

中部地区におけるJavaコミュニティ「Java Edge」が主催した第3回ライブセッションが昨日行われた。「こみゅすけの里帰り」という題目で、僕も話をしてきた。 | View | Upload your own ここで、驚くべき出会いが待っていた。僕が社会人2年目のときに、日経ソフトウェアで1年間連載をしていたのだが、その後にJavaの初心者向け連載をした「丸の内とら」さん、さらに「マスタリングJavaEE5」の著者である斉藤さんとお会いすることができた。今後きっと何か一緒にできること...

やたらと題名が長いJava-jaの勉強会。今回は「第一回チキチキ 『ant から maven2へ 』〜血があつい鉄道ならばこまるよね〜」と題して、maven2をテーマとして6名のスピーカーが思い思いのテクニックを披露した。僕はと言うと、昨日の丸レクの資料作成に全力を注いだ結果、今回のJava-jaの資料作成に踏み切るだけの元気は既に使い果たしてしまった状態。下の資料を見ればわかる通り、5枚のみの発表となった。 | View | Upload your own ま、とはいえ、何もしないの...

本日、「丸山先生レクチャーシリーズ RESTfulサービス技術の台頭」で話をしてきた。僕の題目はというと、「Ruby on Rails2.0におけるREST対応」。使用したスライドは下のものである。 | View | Upload your own PDFはこちら 個人的には、やっぱり練習をしていくべきだったかなぁ、と、話し方に関して反省である。何度もRESTとRailsを言い間違えたし、日本語として正しくないよなぁ、と思ってしまうほど文法上酷い言い方をしてしまった部分もあった。しかも...

JRuby1.0.3がリリースされたので、それにRailsを入れようとした。 なんと、すでに2.0.2がある。この前2.0.1がリリースされたばかりなのに。 というわけで、近日中に2.0.2リリースのアナウンスが正式に来るだろう。

先週の土曜日、JRubyの安定バージョンとして、1.0.3がリリースされた。これはマイナーバージョンアップであり、バグフィックスが中心となっている。 JRuby 1.0.3 Released - JRuby - Codehaus 参考までに、リリースに関する上記の内容を訳してみた。 --- JRubyコミュニティは、JRuby1.0.3のリリースをアナウンスしたことを嬉しく思っています。 Homepage: http://www.jruby.org/ Download: http://di...

RailsにおけるControllerの挙動をテストするために、functionalsテストがある。functionalsテストの対象は各種Controllerクラスのメソッドであり、Webブラウザのリクエストをシミュレートして、それに対するControllerおよび使用されたViewの結果の内容を検証するのが目的。つまり、rhtmlやrxmlなどのViewによってレンダリングされた内容についても、動的に変化する部分に関してはfunctionalsテストの範囲となる。 functional...

先日、嫁と一緒に自宅近くのDocomoショップに行ったときの話。 僕らは家族割引の変更をしたくて、Docomoショップの中で順番を待っていた。整理券の自動発券機が入り口の正面に置いてあって、自分の番号が来るまで、座ってるか商品を見て待っているのが、大人の振る舞いである。僕らの前には10人ほどいるはずなのだが、店内には10人も見当たらない。整理券だけ取ったけど、時間がかかるし今日はいいや、って感じで帰っちゃう人がいるのだろう。つまり、整理券に書かれている番号ほど待ち時間は長くない、ということ...

rhtmlのレンダリング結果を確認するために、assert_selectを使用する。この際、要素が持つテキストを確認するのではなく、ある属性の値を検証する必要も出てくるだろう。 ある要素のある属性値を確認するためには、以下のようにすれば良い。 assert_select element, '[name=?]', 'value' 上記の例では、ある要素elementに対して、それが持つ"name"属性の値が"value"であることを確認するコードである。つまり、CSSセレクタの属性セレク...

かなりもったいぶっている「Ruby on Railsでもfacebookアプリは作れます」シリーズだが、やっと今回からrfaceookプラグインを使って実際にfacebookアプリを作る話をしてみようと思う。 rfacebookプラグインを使ったRuby on Railsでのfacebookアプリの作り方は、前のエントリでも紹介した通り、 RFacebook Quick Start Guide for Rails Using Ruby on Rails with Facebook Pla...

来週の18日に控えている丸レクで使用する資料が、今日から以下のサイトで公開されている。 丸山先生レクチャーシリーズ2007-2008 「第2回「RESTfulなサービス技術の台頭」 僕の資料は、「第3セッションのハンズアウト」である。興味のある方は、ぜひ見てみて欲しい。もちろん当日会場に来てもらえると、もっと嬉しい。

やばい、IntelliJ、欲しくなってきた。一度使うと熱狂的ファンになるみたいだし、購入を考えてみようかな。。。 IntelliJ IDEA7がGroovyとGrailsサポートを追加 - InfoQ

見落としていたのだが、すでにRuby on Rails 2.0が、12月6日にリリースされていた。現在は、すでに2.0.1になっている。 root/tags/rel_2-0-1 - Rails Trac 今日時点で、例えば「jruby -S gem install rails --include-dependencies」すれば、2.0.1一式を得ることができる。ちなみに、僕のmacではヒープサイズが足りなくなったため、「-J-Xmx512m」オプションを追加することによりインストールをす...

昨日、自宅のルータの無線LANの調子が悪くなった。有線でつなげると元気なのだが、無線LANでルータとパソコン間の接続が確立され、そしてパケットを投げた途端に、ルータがほぼ100%ハングアップしてしまう。結婚してすぐだから、今年の2月から約10ヶ月使ってきた。寿命とはとても思えないが、いろいろ対策を施してみるも復活することはなく、残念ながら新ルータを購入することとなった。 近くの大手家電店Y電気に行き、ルータを物色。ふむふむ、今は11nなんて規格があるのか。まだドラフトらしいが、子機が11n...

前のエントリで、facebookアプリがRuby on railsでも開発することができるということを紹介した。数回にわけて、実際にアプリを作るための手順を紹介していこうと思う。もちろん、facebookにアカウントを登録してサインインしていることが前提条件。 まず、アプリケーション開発を行うためのアプリケーション「Developer」を、自分の登録アプリとしなければならない。Developerアプリを使用することで、新規アプリの登録が行えるようになる。Developerアプリの登録は、以...

facebookが「ソーシャルOS」と呼ばれる所以は、facebook上にアプリケーションを自作して登録し、facebookユーザに使ってもらうことができる、ということにある。自作アプリケーションは、当然facebookが持つ様々な機能と連携することが可能である。例えば、アプリケーションで起きたことをMini-Feedに追加したり、プロフィール画面にアプリケーション固有の区画を追加したり、あるいはアプリケーションを自分の友達に勧めたり、といったことが、比較的簡単に実現できる。とても面白い。...

RESTfulなサービスを実装するとして、対象リソースがその他のリソースとの従属(親子)関係があるときに、Ruby on Railsではmap.resourcesをネストして記述することが可能になっている。例えば、部署(Division)に所属する社員(Employee)のリソース定義であれば、 map.resources :divisions, :path_prefix => '/api' do |divisions| divisions.resources :employees, :...

気がついたら、17日の週は結構大変なことになってた。1週間の中で3回もスピーカーをやることに。しかも、テーマは見事にバラバラ。 [12月18日] 丸山先生レクチャーシリーズ2007-2008 「第2回「RESTfulなサービス技術の台頭」  【タイトル】Ruby on Rails2.0におけるREST対応 [12月19日] java-ja 「第一回チキチキ 『ant から maven2へ 』〜血があつい鉄道ならばこまるよね〜」  【タイトル】maven2 + apt で楽々ドキュメント作成...

「Active ResourceのREADMEを翻訳してみました」エントリでRESTサービスを叩くためのActiveResourceに関するドキュメントを翻訳したが、またもや勉強のために、今回はActionController::Resourcesに関するドキュメントを翻訳してみた。ActionController::Resourcesには、RESTfulサービスを実装するために必要な知識が記述されている。 ActionController::Resources 原文の中で「route」や...

ITproのサイトにある「ITアーキテクトの視点」。この中に「ブログ」コーナーがあり、僕も参加させていただいている。すでに他の方々の記事は掲載されているが、本日僕の記事も公開された。 【ブログ】ITアーキテクトとして最も面白く感じること かなり自由に書かせてもらっているので、思っていることを素直に書いてみた。が、やっぱり記事を書くのは難しいなぁ、と痛感。 ぜひ一読いただき、もしコメントなどあれば書き残していってもらえると、とっても嬉しい。

一昨日、家でソファーに座って原稿を書いていて、起き上がったその瞬間。 あの、あの恐ろしい腰痛が、なんと再発! 立てない。動けない。うなずくだけでも腰に響く。寝返りできない。踏ん張れないため、人生で片手ほどしかない便秘。すべての動作がスローモーション。 昨日、地元で有名な接骨院に行ったところ、「昔のぎっくり腰(=腰のねんざ)が治ってないよ。結構重症だね」と言われてしまった。ぐりぐりやられて、めっちゃ痛い。この腰痛のおかげで、楽しみにしていたEclipseプラグイン開発勉強会も行けなくなってし...

今日、家に帰ると嬉しいお知らせを目にした。 そして、今日の食卓には、世界一美味しいモツ煮が並んだ。 今日の日本海側は大雪。東京の夜も気温は5℃程しかない。でも我が家は、とっても温かい。

こみゅすけには、イベントの参加申込を受け付ける機能がある。参加申込時にはメールアドレスも入力させているのだが、ロボットに拾われてスパムメールの情報発信源になるのは避けたかったので、入力されたメールアドレスは表示しない(Ajaxのレスポンスにも含めない)ようにしている。 ただ、それだとイベントの主催側がリマインドメールなどを送信できないので、メールアドレスも含め、参加申込者の一覧をコミュニティ管理者にメール送信する機能を追加した。 コミュニティの登録時に入力したメールアドレスを入力して右の...

Sun&リクルート主催で行われたMash up Award 3rdのこみゅすけトリプル受賞からすでに1ヶ月以上経過しているが、先週サン・マイクロシステムズ賞の副賞が届いた。 スニーカー全面にDukeが6パターンちりばめられている。まさにJava好きにはたまらないシューズ。 これ、完全にオーダーメイドなので、1、2万円なのかと思っていたら、とんでもない。その4倍以上したらしい。しかも、Sunの方々の重い重い想い(=念)が詰まっているので、逆に普段履けない。 イベント事に参加するときには、こ...

Sun Tech Days 2007とSeasar Conference 2007 Autumnで、いくつかグッズを頂いた。 これはSun Tech Daysでもらったリュック。小さい割には結構いろいろ入りそう。 上は、Sun Tech DaysでもらったDuke Tシャツ。7分丈の袖と、Dukeの姿が特徴的。下は、Seasar Conferenceでもらったスタッフトレーナー。もともと頼んでいたわけではないのだが、余っていたらしく、まさたかさんから頂いた。昨日着てみたが、サイズがXL...

こみゅすけに登録されたイベント情報は、RSS FeedによってRSSリーダーなどで購読できるようにしている。また、Google Calendarから、イベント情報をGData APIを使ってインポートする機能も提供している。 id:yoshioriさんからの要望もあり、iCalendar形式でイベント情報をエクスポートできるようにしてみた。 これにより、こみゅすけに登録されたイベントを、iCalendar形式に対応したスケジューラ(Google CalendarとかmacのiCalとか)...

イベントの参加申し込みを受け付ける機能を持つこみゅすけ。今までは、参加申し込みページに直接行くことができず、こみゅすけ上でイベントの検索を参加申込者が自分で行わなければならなかった。これだと、利便性が良いとは言えない。 そこで、あるお方からの要望もあり、イベントの参加申し込みページにリンクを設置して、そのリンクを配布することにより直接参加申し込みページに行くことができるようにした。 コミュニティの登録は自由なので、コミュニティを主催されている方は、ぜひこみゅすけに登録して利用してみて欲しい。

多くのmacユーザは、Leopard(10.5)に移行したことだろう。僕も販売開始のその日にLeopardに移行した。Leopardには、Safariの新しいバージョン3が搭載されている。このSafari3でこみゅすけを見てみると、なんと見事に文字化けしていた。Safari2でも文字化けしていて直したというのに、だ。 Safari2では、dojoによって読み込まれるjsファイルおよびhtmlテンプレートファイルの両方が文字化けしていたのだが、dojoに手を入れて文字化けの補正をした状態でS...

11月11日に行われた「Seasar Conference 2007 Autumn」で、S2Wicketについてのセッションを行った。定員30人の部屋が満席になるほどの人々に来ていただき、Wicketの簡単な紹介とS2Wicketの機能や今後などについて語ることができた。 S2Wicketのセッションにいらしてくれた皆さん、心より感謝いたします。また、スタッフの皆さまにも、感謝いたします。ありがとうございました。 なお、事後アンケートを募集しているので、来場された方はぜひアンケートの回答を...

Rails 1.2から搭載され、Rails 2.0でいくつか改良されたActive Resource。これを使えば、RESTなWebサービスを簡単に利用できるようになる。これのREADMEが「ここ」にあるのだが、勉強がてら日本語に翻訳してみたので、公開してみようと思う。 ActiveResource_README_ja.txt RESTfulなWebサービスを利用するクライアントは、Active Resourceを使えばかなり簡単に作れることが、これを見てわかると思う。Active Res...

昨日のSun Tech Days 2007 Day-2にて行われたMash upに関するセッションに登壇し、こみゅすけについての話を行ってきた。その時のプレゼン資料が↓である。 | View | Upload your own 実際には3人(Sunの藤井さん、リクルートの川崎さん、僕)で担当。藤井さんが司会&全体のまとめ、川崎さんがWeb API提供側としてのMash upに関する話、僕が受賞作品の紹介と個人的に感じている今後のMash upの方向性についての話を行った。かな...

問題の局所化およびDRYによるメンテナンスビリティを考えられないプログラマがいるとは、驚きに値する。 人間がミスをおかしにくくするためには、問題領域をできるだけ狭めて、何事にも単純化を行う必要があると僕は思っている。そして、一旦でき上がったシステムを長期的にメンテナンスしていくためには、昔流行った「各コンポーネントがそれぞれ能動的に何かをする(そのためには同一処理が複数箇所で記述されることを許容する)」のではなく、DRY(Don't repeart yourself)の精神に従った最適化ロ...

本日開催された「JJUG クロスコミュニティカンファレンス 2007 Fall」をUstreamで配信していたのには、みなさんお気付きだっただろうか?同時に録画もしておいたので、もし残念ながら会場に来れなかった方は、ぜひご覧になってもらいたい。 [Part 1 丸山先生レクチャーシリーズ 第1回 Googleの分散処理技術] [Part 2 コミュニティパネル 「Webアプリケーション開発の今後を占う」 - 第1部 ポジショントーク Seasar代表 ひがさん] [Part 3 コミュ...

新宿で宇都宮線のグリーン車に乗るために並んで待っていると、頭の上が禿げた中年が列の反対側に立った。イメージ的には、下図のような感じ。 ○○○ ○←中年   ↑列の先頭 その中年は、ドラゴンボールの19号にそっくり。 僕は先頭から2番目。さすがに馬鹿じゃないよなぁと思っていたが、期待通りの馬鹿。電車が来た途端に列を無視して電車に乗ろうとしてきた。一刻も早く座りたいらしく、僕に軽くぶつかってきた。 思わず僕は19号に言った。「ちゃんと並べよ」と。 この言葉は中年の心にマイナ...

11月11日に行われるSeasar Conference 2007 Autumnで、「E3: S2Wicketの紹介」というセッションを行うことになった。 特にWicketは「存在は知ってるけど使ったことがない」という人がほとんどだと思うので、Wicketの簡単な紹介とWicket単体でのデモを行って、その後にS2Wicketの紹介をする予定である。なので、Wicketに関する予習をすることなくS2Wicketを把握することができるよう、敷居は低くするつもりだ。 Wicketに興味がある方...

Sun&リクルート主催のMash up Award 3rdで3部門同時受賞に輝いた「こみゅすけ」について,Sun Tech Daysのセッションで紹介させていただくことになった。 日付: 2007年11月8日(Day-2) 時間: 18時10分〜19時00分 セッション: 2-J1-6 Mash up Award Demonstration こみゅすけ開発のきっかけ,搭載している機能,技術的な解説,そして今後の展望などを,デモンストレーションを交えながらお話させていただく予定。「いろいろな...

機能追加をして久々にmongrelを再起動したら,こみゅすけが起動しなくなった。というか,4つ動かしていたrailsアプリが全滅。すっごい緊急事態。 稼働させているサーバは,Fedora Core 6。64bitのクアッドコアCPUで,uname -aの結果は以下の通り。 Linux chako 2.6.20-1.3002.fc6xen #1 SMP Mon Aug 13 14:21:21 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux yumを毎日自動...

稚北ナイトセミナー「Project Zero」の第2回に,先週の木曜日に行ってきた。僕の指名は「Ustream配信係」。200万画素の新しいカメラも買って,ノリノリで参加をした。講師はアークランプのゆーすけ氏。 今回の内容はGroovyの紹介。Rubyが流行ってしまった今日では,Groovyをやってみよう!という人は残念ながら減少傾向。つまりProject Zeroを知るためには,そんなGroovyをまずはちゃんと知らないといけないため,今回はGroovyの基礎編という内容となっていた。...

今年も気がつくともう10月。振り返ってみると,dojoを使う機会がすごく多くなった。とはいえ,使用しているのはdojo-0.4.2とか0.4.3。そろそろdojo-1.0が登場する予定なこともあって,0.9を見ておかないといけないぞ,と。dojo使いまくりのこみゅすけの起動速度が遅くなってきているのも気になるので,dojo-release-0.9を試してみることにした。 0.4.3から0.9の差分を中心として,ぱっと見で気になった点を以下にまとめてみる。 dojo一個だったのが,dojo...

一昨日の10月5日,java-jaの第4回目となるイベント「第一回チキチキ 19時だよ全員集合!!ライトニングトーク大会」を開催した。今回はプレゼンすることをみんな経験しちゃおうぜ!という主旨のもと,参加者全員がライトニングトークを行った。テーマは自由。真面目なテーマな人,自己紹介をテーマにした人,ホワイトボードな人,ウクレレな人,新デバイスな人,ダンスな人,バトルプログラムな人,などなど,個性出まくり。 僕も,体操をテーマに参戦。合言葉は「がんばれ!ニッポン!」 終電の都合上,後片づけ...

8月の初めから開発を初めた「こみゅすけ」。Sunとリクルートが開催した「Mash up Award 3rd」コンテストに応募していたのだが,この度なんと「3部門同時受賞」に輝いた。最優秀,マッシュ賞,アップ賞に続く第4位的な感じであり「大賞まであと一歩!」なのだが,とにかく嬉しい!めちゃめちゃ嬉しい!具体的には, サン・マイクロシステムズ賞 テクノラティ賞 面白法人カヤック賞 の3部門である。これはすごい。 こみゅすけでは,テクノラティ社提供のブログ検索Webサービスは使用しているの...

先週の金曜日(9月28日)に,「Wakhok Night Seminar」の「Project Zeroコース」の第1回に参加をしてきた。Project ZeroはIBMが始めたアプリケーション開発用のプラットフォーム。話の流れは,Project Zeroの背景として,Web1.0からWeb2.0への移り変わり,Webサービスの変革,そしてRESTという流れの紹介と整理が前半。後半はProject Zero自体の紹介という構成だった。 前半の背景の話は,想定している聞き手の想定が「RESTっ...

無事マッシュアップコンテストに応募することができた「こみゅすけ」。先日の22日に行われた「MA3 participant session」に参加をしてきた。これは,しっかりと作品を作り上げて応募した参加者限定で行われた,いわば「打ち上げ」である。約30作品の作者の方々が集まり,5分後との各作品の紹介を飲み食いしながら楽しむ,といった会だった。 事前に参加作品を一通り見て行ったのだが,使い方がわからないものも多く,デモを楽しみにしていた。率直な感想で言うと,使ってみてわからないものは,デモを...

勉強会やイベントなどをコミュニティが行う場合,予め「参加者を応募して人数を把握しておく」などが必要となることがある。そこで,こみゅすけにも,参加申し込み機能を追加してみた。 各ミーティングの吹き出しやミーティング情報に,以下のようなリンクを作ってある。 これをクリックすると,以下のような参加者一覧表示&申し込みフォームのパネルが表示され,ここで参加を申し込むことができるようにしてある。 メールアドレスを必須入力としているが,こみゅすけ上でメールアドレスを晒すことはしないようにするつもり...

こみゅすけは,未知のコミュニティを知り,そのコミュニティが行っている活動に参加する機会を増やす目的で作ったものである。もちろんリアルに参加して,実際にメンバーと顔を合わせることが重要である。しかし,二次会の場所を決めたり,参加の前にコアメンバーに雰囲気を聞いたりすることも,もちろん重要なコミュニケーションである。さらに,さまざまな情報をメンバーに伝えて共有知とすることも,コミュニティにおいて非常に重要な点である。 こみゅすけには,そんな管理外の非定型な情報を扱うために,コミュニティが主催す...

初期の段階では,コミュニティの登録や,イベントや勉強会などのミーティング登録は,Google Calendarの設置が必要だったために,非常に閉じた世界となっていたこみゅすけ。これでは敷居がかなり高いので,こみゅすけ上からコミュニティの登録やミーティングの登録を行えるように機能拡張した。登録は,Wikiの精神に則り,認証などを設けず,自由に行えるようにしている。 まずはコミュニティの登録。これは,上部のツールバーの左から6個目のボタンを押すと,コミュニティの情報を入力するためのフォームが表...

コミュニティは日本各地にいろいろな形で存在している。何も都内に住んでいる人が都内で開催される勉強会に参加することだけがコミュニティではない。遠方から都内で開催される勉強会やイベントに参加することもあるだろう。都内のコミュニティが地方でイベントを行うこともあるだろう。そうなった場合,「宿泊」ということをしなくてはいけなくなる。 そこで,会場の近く(2km以内)にある宿泊施設を「じゃらん Webサービス」を使って検索し,一覧表示および地図へのプロットを行う機能を「こみゅすけ」に追加してみた。 ...

勉強会などを主催する立場になると,「終わった後の二次会をどこにしようか?」というタスクも付きまとうようになる。いろんな人が勉強会には来るので,それぞれの好みなんて気にしている場合じゃない。それよりも,勉強会の会場に近く,しかも人数のキャパが多い,そんなところを探し当てなければならない。 そこでこみゅすけに,「ホットペッパー Webサービス」を使って,勉強会の半径1km以内にある飲食店を検索し,その一覧表示および地図上でプロットする機能を追加してみた。 リストは会場から近い順に並んでいる。...

車酔いを恐れず,果敢にブログエントリを試みる。 ギガプライズ勤務最終日だった昨日から一夜明け,今日は「Ruby ビジネス・コモンズ ドリコム・ノック」のお手伝いを行うため,九州に旅立つ。福岡には昨年いやというほど行ったのだが,長崎は初めての上陸。このエントリは,大宮から羽田空港に向かうバスの中で書いている。 「こみゅすけ」の開発に夢中になっている今日この頃だが,すでにRuby on Railsで作ったアプリは4本。10年以上ずっとJavaをやってきた僕が,こんなにRuby on Rails...

外国ドラマの「24」風な感じで,Ustreamを見るためのサイトを作ってみた。 題して,「Ustream24」。 ま,単にUstreamを四方に置いて,真ん中に黄色くLCD的なデジタル時計を置いただけ。ただそれだけ。しかし,何故かこれで見ると「ちょっとした臨調感」を感じれたりするので,勉強会とか,開発合宿とか,納期2日前のプロジェクトの風景とか,そんなものをこれで見ると面白いかもしれない。 Ustream24は,Ruby on RailsとDojoの組み合わせで開発した。もうJavaSc...

こみゅすけは,dojoというライブラリをかなりの勢いで使用している。dojoは数多くあるJavaScriptライブラリの中で,おそらく最も大きなコードセットだろう。イベント処理やIO関連,各種ウィジェットなど,Ajaxでアプリケーションを作る上で必要となる全ての分野について網羅している。今まではそのコードの大きさのために「遅いっ!!」という悪印象があり,利用を敬遠してきた人も多くいることだろう。しかし,0.4.2以降では,テンプレートの読み込みの削減など,動作の遅さを根本解決するための修正...

Sagoolの検索APIを利用して,ミーティングに関連する動画を検索する機能を追加した。 僕が顔を出してUstreamで録画している勉強会しか基本的に今は登録されていないため,僕のブログばかりがヒットしてしまう。今後登録してくれるコミュニティをもっと探して,いろいろと面白い情報が集まるようにしていきたい。

JJUGが主催した「クロスコミュニティ IDE」に参加をしてきた。例のごとく,今回もUstreamで模様をリアルタイム配信してみた。録画に失敗しちゃったかと思ったのだが,最初の17分間だけ何故か別動画になってしまっていただけで,一応全部録画できていた。ほっと一安心。 「最初の17分間」 「残り全部」 JDeveloper紹介者の佐藤さんとは,この前のJava Edge発足総会でご挨拶させていただいていたのだが,たけぞうさんときしださんとは初対面。かなり緊張していたのだが,親睦会にてご挨...

こみゅすけは,開催される勉強会やセミナーの情報,特に「どこで開催されるか」を中心的な概念として織り込んでいる。どこで行われるか?に関連する情報はいくつか考えられるが,例えば特に勉強会の当日になって気になるのが,「雨降ったりしたらイヤだな」という天候についてではないだろうか。 あるお方からの要望もあって,livedoorが提供している「お天気Webサービス」を利用して,地図上に天気を表示するようにしてみた。 これは,あくまで「操作している今日の天気予報」である。ミーティング当日の天気予報で...

こみゅすけにミーティングを登録するには,コミュニティ毎に登録されているGoogle Calendarに予定を登録します。 Google Calendarには「毎日,毎週,隔週」などの繰り返しや「終日」などの予定登録が可能ですが,現時点では,こみゅすけは「ある1日で時間が決定している」予定のみをサポートしています。具体的に入力して頂きたい項目は,以下の項目です。 タイトル: ミーティングの名前となります。 日付: ミーティングの開始・終了日時となります。○○月○○日○○時○○分〜○○月○○...

開発を始めて3週間ほど経った「こみゅすけ」。基本機能が揃ってきたので,いくつか面白系の機能を追加してみた。 「最寄り駅」機能 「関連書籍」検索機能 「関連ブログ」検索機能 最寄り駅の検索は,「SimpleAPI vol.2 最寄り駅Webサービス」を使って行っている。SimpeAPIという名前通り,非常に手軽に使えるサービスである。戻りのXMLの内容もシンプルであり,簡単に取り扱うことができた。検索結果を最大3件表示するようにして,最寄り駅をクリックすると,地図上で最寄り駅を中心にして...

勉強会に顔を出したり,あるいは主催側に回ってみたり,足を使った活動を徐々に増やしている今日この頃。僕がいるIT業界では,多くのコミュニティがそれぞれ「勉強会」と称したミーティング(≒飲み会)を行っている。 そんな勉強会,日々ググっている最中に偶然コミュニティに出会ったり,身近な誰かから聞いたり,といった感じで情報を得ているのがほとんどではないかと思う。せっかくなので,いつどこでどんな勉強会が行われているのか,という情報を提供するサイトを作ってみようと思い,そろそろ形になってきたので公開を開...

使用前。 使用後。 外人も。 【ニコニコ動画】愛を取り戻せ! もっとうまい外人。 【ニコニコ動画】雀の雲 愛を取り戻せ さらにSHOCKな外人。 【ニコニコ動画】【北斗の拳】DGM - You Wa Shock!! (愛を取り戻せ!)

お盆休み,高速道路は渋滞ばかり。電車でどっか行くにも,どこも混雑に違いない。しかし,灯台下暗し。住んでいるアパートから車でわずか10分のところに,東武動物公園がある。小学校のときに数回行ったことはあるのだが,13日に久々に行ってきた。動物を見に行ったわけではなく,「東武スーパープール」に芋を洗いに,だ。 流れるプールは人が多くて,大人が泳ぐことは全くできない。そして,魚雷と化したちびっこが後ろから追突してくる,という状況だった。 開園から1時間以上後に到着したため,日陰の場所は既に陣取...

先日の8月10日,java-ja主催の「第一回チキチキ そろそろ Wicket について一言いっとくか」,つまりWicket勉強会が開催された。 今回も,yoshioriさんの書道から始まった。 スピーカーは5人の予定だったのだが,仕事の都合で2名が時間までにかけつけることができず。一人は実務でWicketを使っている方だったので,非常に残念だった。 トップバッターはonkさん。Wicketの基本的な紹介とデモが主な内容だった。とはいえ,nekopさんやyone098さんからのするどい...

一昨日の8月9日,seasar.orgの中の人々にお会いすることができた。 かなりぶれてしまってるのだが,お会いできたのは次の方々だ。 よねさん まさたかさん mopemopeさん 太一さん 大谷さん 本間さん すっごい面々。僕一人では不安だったので(嘘),id:yoshioriさんも一緒に参加していただいた(大遅刻ごめんなさい)。 実はこの集まり,「よねカン」という名称がついていて,今回は第2回だったとのこと。すっげービビっていたのだが,実際はずっと笑いっぱなし。とても面白い飲みだ...

嫁とパナップを食べていたら,最近のパナップは「当たり」と「はずれ」があることが判明。 もちろん右が当たりパナップである。

Ajaxを多用したアプリケーションにおいても,Ruby on Railsの採用が今後どんどん増えていくと考えられる。Ajaxと言えば,言葉の通りXMLを連想するかもしれない。しかし,サーバから受け取った後の処理効率を考えると,JSONでやり取りを行ったほうがトータルで都合が良い。近年では,XMLではなくJSONを利用する機会が多いと考えられる。 Ruby on Railsの1.2から,全オブジェクトに対してto_jsonメソッドを呼び出すことができるようになった。これは,active_su...

昨日の8月3日,名古屋工業大学で行われた「Java Edge発足総会」に参加をしてきた。今回は,単に聴衆としてではなく,パネルディスカッションのパネラーとして僕も参加。 Java Edgeは,名古屋を中心として活動を行っていくJavaのコミュニティであり,JJUG(日本Javaユーザグループ)がバックアップを行っている。最近のJavaやRuby関連のコミュニティは,東京以外の都市を対象として,総会や勉強会,各種イベントを行うことが多くなってきている。Java Edgeに関しても,Javaを...

気がつくと,ある日からsubversionへのコミット履歴などをtracが拾ってくれなくなっている現象が発生するときがある。今まさに,その状況に直面した。「subversionのリポジトリが壊れたのかっ!?」とtracの表示を信じてしまったのだが,別のsubversionクライアント(subclipse)で覗いてみると,壊れていないっぽい。 ググって調べてみると,tracがsubversionの履歴を拾ってくれなくなったら,以下のコマンドを試すといいらしい。 trac-admin [sv...

ActiveRecordオブジェクトは, class Employee とするだけで,上記で言えばemployees表が持つ各種列に対応する属性が利用可能になる。例えば,employees表にname列が定義されていたとすれば, employee.name = 'Yoichiro' p employee.name というように,nameアクセッサを利用することができる。とても簡単だ。では, employee.name? とemployeeオブジェクトにメッセージを投げることが可...

来る8月10日,java-ja主催で, 「第一回チキチキ そろそろ Wicket について一言いっとくか」 と銘打ったWicket勉強会を開催する予定である。 POHP+フルJavaなWebアプリケーションフレームワークであるWicketは,Apacheのトッププロジェクトに名を連ねるところまで来ている。しかし,Wicketを使っているという話は,残念ながらあまり聞かない。 今回のWicket勉強会では,Wicketの初級的紹介から,実際に利用したときの経験談,そしてWicketをより便利...

最新MacBook Pro(2.2GHz,4GB)にしてみて,何がびっくりしたって,Windows XPの起動が恐ろしく速い。あまりの衝撃に,録画してみた。 Parallelsには「mac側のファイルのダブルクリックによる起動でParallels内のWindows XPにインストールされたアプリケーションでそのファイルを起動する」という機能があるのだが,この速度でOSが上がってくれれば,その機能の有り難さを感じることができる。 ハイエンドのPCにWindows XPネイティブインストール...

「脳内相性メーカー」より: とても嫁には見せられない orz

「lighttpdで稼働しているrailsアプリでリダイレクトが効かなくなった」件だが,結局原因は判明せず。どうもyumの自動更新によってlighttpdがバージョンアップされたらしく,そのタイミングで動作がおかしくなった模様。 apacheとlighttpdの組み合わせは,mongrelの自動機能の設定を行うのが面倒そう,という安易な理由で選んだのだが,やはり世の中はapacheとmongrelの組み合わせが多数派なようである。いつまでも放置していると,ユーザ(とっても目の肥えた数人)に...

昨日の7月27日に,Japan SpringFramework User Group主催の勉強会「SpringNightDream」に参加してきた。ちょっとお手伝いしつつ,総勢8名の方々のライトニングトークを楽しんだ。ひがさんを除いて(w,皆さんSpringにまつわる話を展開。nekopの上空からの突っ込み,そしてひがさんの鋭い突っ込みなども含め,なかなかレベルの高い勉強会となった。 そして,初の試みとして(参加者の皆さんが気がついていたかどうかわからないが),ustreamで勉強会の内容...

「約5時間かかったRuby on Railsの実行環境構築」で頑張ってみたRails運用環境だが,今日になって不具合が出てしまった。昨日までは元気に動いていたのに。。。 昨日の夜に,配置してあるRailsアプリに機能追加を行った。実際には2つRailsアプリを配置してある。形態は「apache2 mod_proxy lighttpd」という組み合わせ。修正は片方のアプリのみなので,もう一つは影響はないはず。加えて,apacheやlighttpdの設定ファイルはいじっていない。 しかし,...

データベースに格納される情報は,「作成日時」や「更新日時」を付与することが多い。ActiveRecordでは,作成日時や更新日時について,暗黙的にセットする機構が標準で備わっている。例えば, class CreateEmployees というように表を作成しておけば,created_atにinsertされたときの作成日時が,updated_atにはupdateがかかる度にその時の日時が更新日時としてセットされる。プログラマが改めて「emp.updated_at = Time.now」な...

「たたいた」を漢字変換して,びびった。なぜなら,第一候補が, 多対多 だったから。普通だったら「叩いた」が最初に出てくるはずなのに。 仕事のしすぎかもしれない。。。

ActiveRecordは,Rubyの動的な性質を存分に使って作られた,非常に利便性の高いライブラリだと思う。ActiveRecordをJavaにコピーすることは,きっとできないだろう。しかし,時に初心者(今の僕)は,その動的な特徴故に,期待した通りの動きにならずに苦戦することが多い。 ActiveRecordを使えば,モデル間の関連とそれに関する操作を数行で定義することができる。例えば,部署を表すDivisionモデルと,部署に所属する社員を表すEmployeeモデルがあった場合, c...

Lingr,Twitterと続き,最新のホットなWebサービスは,「Ustream」らしい。 ということで,はじめてみた。 うっかり音声をブロードキャストして情報漏えいしないように気をつけなければ。。。

遥か昔に制定した法律や決め事が今日のご時世に合わずに支障を来しているように,プログラムにおいても,過去に作ったものについて現在使って欲しくないという状況がしばしば起きる。実際のプログラミング環境では,「使って欲しくない」という作者の意図が何らかの形でプログラマに伝わらなければならない。 Javaでは,ソースコードに"deprecated"というキーワードを埋めておくことで,プログラマに「このメソッドは非推奨だから使ってはいけません!」と意思表示することができる。例えば,こんな感じ。 /*...

アプリケーションでは,データベース内に格納された各種マスタの一覧から1つ選択する,という行為が良く行われる。Webアプリケーションにおいて,マスタの内容を一覧表示する際は,selectタグとoptionタグの組み合わせが多く使われる。Ruby on Railsのactionpackに含まれるaction_viewヘルパーには,あるモデルの集合からoptionタグのセットを生成してくれる便利な機能が提供されている。それが,options_from_collection_for_selectメ...

以前「動的プロキシが循環参照していた際のシリアライズ問題」エントリにおいて僕が解決に至らなかった問題を紹介したが,見事に問題をクリアしたお二方からトラックバックを頂いた。 「動的プロキシが循環参照していた際のシリアライズ問題」- 矢野勉のはてな日記 「循環参照問題のよりエレガントな解法」- 矢野勉のはてな日記 「次期 S2Wicket 仕様断念の原因となった動的オブジェクトの循環参照問題をおいらもみんなのために解いたった!?」- 【見覚え】koichikのひとりごと【あります】 素晴らしい...

先日行ったいわき明星大学での講演を聞いてくれた学生から,いくつか質問を受けた。このエントリでは,その答えを紹介してみたいと思う。 --- Q. 将来の夢はなんですか? A. 尊敬される職人になること。幸せな家庭を築くこと。 --- Q. これはやっておいてよかった.もしくは,やっておけば良かったと思うことは何ですか? A. 好きなこと(ソフトウェア関連)に集中できたのは良かったこと。やっておけば良かったと後悔しているのは,英会話,海外旅行,経営学などなど盛り沢山。 --- Q. 今,まだ,...

嫁から「なんで『振る』っていうか知ってるー?」って聞かれ,確かに言葉の由来を考えずに今まで「振る」「振らない」って言ってきたな,と。ある本を見て,嫁も初めて由来を知ったらしい。 恋人と別れる際になぜ「振る」というのか。 それは「昔は女性が交際を断る際に振袖を振って断ったから」という昔の文化から来ている。そして,結婚してしまえば,もう袖を振る必要はないため,留袖を着ることになる,ということのようだ。 詳しくは, 「 恋愛で云う所の「振る」「振られる」の由来は振袖」- Sukima Windo...

お客様設定パスワードを失念し,ログイン不能。心当たりをいくつか試すも,ことごとく拒否される。 再申請をしたが,再度4週間以上待たなければいけない。俺としたことが。。。orz

Twitterclipseをバージョンアップした。修正内容は,下記の1点のみ。 TwitterのAPIで「source」属性が追加されたことに対応。 ご利用の方は是非バージョンアップを。

「昨日の講演」の中で,僕の卒業研究テーマを取り上げた。その時に作成したプログラム「CASL Simulator for Java」を,恥ずかしげもなく公開しようと思う。 CASL Simulator for Java Version 0.992 解凍後,「java MainWindow」で起動する。File-Openメニューで,同梱されているcslファイルを読み込み,「アセンブル&実行」でcslに書かれた内容が実行され,メモリの内容やレジスタの値が変化するのが見てとれるはず。ステップ実行や...

昨日(7/19),いわき明星大学(僕の出身校)の電子情報学科3年生を対象に,以下のテーマで講演を行った。 世間の荒波を乗りこなせ! 〜これから社会に出る皆さんにそろそろ一言いっておくか〜 そのときの写真や撮影した動画は,今後大学の方で公開してくれるとのことなので,ここでは講演に使った資料を先行公開する。 お世話になった方々への恩返しのつもりでお話をさせてもらった。聴衆の学生達は,「携帯電話持っている人」という問いに9割の学生が手を挙げないという積極性だったが,私語もあくびもなく聞いていた...

快調にRuby on Railsなアプリを開発。そして振り返ると,なーんにもテストコードを書いていない自分に気がつく。Rails上でのテストコードの記述は好きな部類に入るため,テストを書かねばと思い立つ。 あるモデルに対するテストを1メソッド作り,「rake test:units」を実行した。すると, ./test/unit/../test_helper.rb:18: undefined method `use_transactional_fixtures=' for Test::Uni...

体操は素晴らしいスポーツだ。 最後の技は,跳馬に胸をあてている格好から,通称「レントゲン」と呼ばれている。覚えておいて損はないだろう。

Ruby on Railsアプリケーションにおいて,実行環境依存で設定を変更したくなるときがある。昨日一応の完成を見た僕の処女作では,最初にログインする際のパスワードについて,正解のパスワードをデータベースからではなく,ファイルから読み込ませるようにしたかった。しかし,IntegrationテストやFunctionalテストのコード中にログイン処理のテストをコーディングする際に,正解のパスワードを記載しなければならないため,production時の正解のパスワードではなく,開発時もしくはテ...

今更ながらに,「emacsのキーボードマクロ最高!!」と世界の中心で叫びたくなった。 「GNU Emacs Manual - Keyboard Macros」- GNU Emacs Manual Eclipseにもキーマクロ欲しい。。。

Ruby on Railsアプリケーションの統合テストは,ActionController::IntegrationTestクラスを継承して作成する。統合テストは,ユーザが行うアクションを想定してコードでシミュレーションを行い,結果としてアプリケーションが正しく振る舞うかどうかを確認するためのテストである。一般的にWebアプリケーションの場合は,操作の結果としての出力の形式がHTMLという比較的複雑な文字列であるため,正しい動作を行ったかどうかの検証は難しい部類に入る。 Railsの場合,...

僕はPC88エミュを使って,各種RPGのミュージックモードでBGMを聞きながら仕事をする。 昨日はYs3。一昨日はドラスレ6。今日はハイドライド3の銀行で。 フィールドの雑魚キャラをサクサク切って切って切りまくるように,仕事もサクサクこなしている感覚を得ることが可能。 ただ,エミュを実行するためにWindows XPをParallels Desktop使って立ち上げているため,MacOSでの生産性低下は免れない。

Ruby on Railsにおいて,テスト環境がとっても気持ちがいいと「前のエントリ」で書いたが,実際にテストケースを書き始めると,やっぱり知らないことがいろいろと出てきて,サクサクっとはいかない。もちろん,それは俺がバンビーノだからなのだが。。。 datetime型な列があるappointments表のAppointmentモデルをテストすることを考える。fixtureには,こんな感じで記述するだろう。 first: id: 1 promise: 2007-07-10 13:30:00...

MacOS Xで作成したRuby on Railsアプリケーションを,今日Fedora Core 6に配備することにチャレンジした。もちろん一発でうまくいく訳もなく,いくつかハマり箇所があった。同じミスを繰り返さないためにも,ここに残しておく。 [rubyコマンドのパス] 作成したRailsアプリを,「約5時間かかったRuby on Railsの実行環境構築」エントリで紹介したlighttpd実行環境にファイル一式コピー。lighttpd.confおよびhttpd.confにそれぞれ設定を...

Ruby on Railsで採用されているERB(eRubyの実装)。これによって,HTML内にRubyコードを記述することで,動的なコンテンツを出力することが可能となっている。 いくつかのサイトや書籍を見ながらRoRアプリケーションを試していたところ,以下の点に気がついた。 「%>」と「-%>」,何が違うのか? マイナス記号が付いている場合と付いていない場合がある。例えば, 'edit', :id => user.id -%> といったように。 上記のコードの場合,マイナス記...

Javaな世界に10年以上どっぷりと浸かってきたが,Ruby on Rails(RoR)をやっていると「良く考えられているなぁ」と感心してしまう箇所が随所に見られる。とかくScaffoldやActiveRecordに関するコーディングに目が行ってしまいがちだが,僕個人的にはテストに関する環境が最も「おぉ」と感じている。 言うなれば,「JUnit + DbUnit + Cactus」な環境が標準で整備されている,ということだ。 JUnitについては,もちろんTest::Unitがそれに相当す...

ここ数日はJavaからほとんど離れて,Ruby on Railsのお勉強に多くの時間を割いている。確かにRoRがこんだけ騒がれる理由がわかる。railsの内部処理に踏み込むと宇宙な世界だが,railsの上でアプリケーションを書いて単体テストをしている分には,この上ない気持ちにさせてくれる。 しかし,RoRアプリの運用環境構築に5時間も苦戦するとは思わなかった。 RoRの運用環境は,現在では以下のパターンがあるらしい。細かく分ければ,もっと多くの組み合わせがあるだろう。 apache + ...

何ヶ月ぶりかになるが,S2Wicketをバージョンアップした。数ヶ月苦しんだ機能追加ができあがったのではなく,いくつかのバグフィックスを施したのが今回の内容。S2Wicketを使ってくれているNAGASEYASUHiTOさんからのフィードバックを元に,不具合修正を行った。 [JIRA - S2Wicket] バージョン1.2.1のChangeLog 1人でOSSを作っていると,なかなかテストや動作確認を完璧に行うことは難しく,叩いてくれる利用者がいてこそ品質の向上が図れる(残念ながらこれが...

「Webブラウザコンポーネントの利用」エントリで紹介したように,EclipseプラグインのViewなどにBrowserコンポーネントを貼り付けることで,効果的なEclipseプラグインを低コストで開発することができるようになる。「〜clipseな技術」の第2弾として,Webブラウザの起動方法について紹介してみたい。 何らかのWebサービスを利用したEclipseプラグインでは,Webサービスの提供元のWebページをWebブラウザ(not Browserコンポーネント)でブラウジングしたくな...

「Webブラウザコンポーネントの利用」エントリで紹介したBrowserコンポーネントを使用すれば,低コストでリッチなEclipseプラグインを開発できる。しかし,嬉しいことばかりではない。このエントリでは,発生し得るいくつかの問題点と,その解決方法について紹介する。 万能に見えるBrowserコンポーネントだが,Webブラウザであること故のデメリットもちゃんと対処してあげなければならない。〜clipseで行っている対処として,以下のものがあげられる。 コンテキストメニューの無効化 ハイパ...

昨晩,家に帰ると玄関に「夏到来!」な文字があった。 普段嫌いな夏だけど,今年の夏は元気に乗りきれそうだ。

「〜clipseな技術」の第1段として,Webブラウザコンポーネントの利用方法について紹介する。 近年,Web2.0的なアプリケーションが数多く登場している。これを支えているのは,RESTなどによる軽量なWebサービスが次々と公開されているという事実であることについては,誰もが認めるところだろう。多くのWebサービスがWebブラウザ上で利用あるいはマッシュアップされることを前提として提供されている。つまり,Webブラウザ上,しかもJavaScriptとの親和性という点が重要である。 何らか...

Twitterが「1時間に70回」というアクセス制限を始めた。これに伴い、Twitterclipseも「10秒に1回の更新」を止め、「60秒に1回」(これは初期値で更新頻度は設定で変更可能)に変更を行った。 古いTwitterclipseのままだと、数分のうちに「400エラー」になってしまうので、ご利用の方は是非アップデートをお願いしたい。

修正点は以下の通り。 検索履歴が10個溜まってしまうと,新しいキーワードが履歴として含まれなくなってしまう不具合を修正。 キーワード入力フィールドの大きさを修正。 興味のある方はバージョンアップをして欲しい。 そろそろ「〜clipseな技術」のエントリを始めようと思っている。ちょっとしたテクニックで面白いプラグインを作ることができるんだぜ,的な内容にしていくつもりだ。

変更点は以下の通り。 twitterサーバが返答したJSON内に含まれる日付のフォーマットが変更されたことへの対応。 「ぬるったー」「うまくいったー」「しくったー」機能の実装。 2つ目の機能追加は,Eclipse特有のものである。「ぬるったー」機能とは,何らかの理由でコンソールビューに「NullPointerException」が表示された際に,自分のステータスを自動的に「ぬるったー」に更新する機能である。「うまくいったー」「しくったー」機能は,JUnitテストケースの実行がうまくいっ...

先週の水曜日に発熱し,木曜日の夜に至っては高熱で一睡もできなかった。お腹も下してしまい,体力がどんどん削がれていく。じっとしていることができず,関節や筋肉の痛みも徐々に増してくる。明らかにただの風邪ではない。 さすがに病院に行って診断してもらう。医者は言う。 「食中毒の疑いが強いです」 どうやら細菌の感染による急性胃腸炎ということらしい。時に高熱が出ることがあるらしく,血液検査についても炎症反応があるために,ほぼ間違いないとのこと。2時間ほど点滴を受けながら,その間にお腹のエコー検査などを...

脳内メーカーを早速試してみる。 愛だろ、愛。

Japan SpringFramework User Groupの第4回勉強会に参加してきた。ミニレポートをエントリしてみたいと思う。 [JavaOne2007報告] 日立の河村さんのプレゼン。これは5月30日に行われたJavaOne2007報告会で行われたプレゼンとほぼそのままだったので,聞くのは僕個人的には2回目。前にエントリした通りの内容なので,そちらを参照のこと。 2回目を聞いた感想としては,やはりglassfish v3はやっとかないとあかんな,と。あとJavaOne報告会でなか...

昨日,さくらばさんとヨシオリさんと僕の3人で,java-ja 2.5と題して新宿タカノフルーツパーラーにスイーツを食してきた。 僕が食べたのは,マンゴーのパフェとワッフルのセット。そしてレモンアイスティー付き。税込1,470円だった。 甘いものは比較的好きな方であり,あっという間に胃袋に消えていった。 女性が含まれていれば,フルーツバーに入ることができて,食べ放題になるらしい。今度,嫁を連れていきたいな,と。 帰りの途中に「Personal Javaってあったよね」とか「JavaSE...

昨日開幕したWWDC(Worldwide Developers Conference)で,米Appleのスティーブ・ジョブス氏により,Webブラウザ「Safari」のWindows版が発表され,Public Betaが公開された。 Safari 3 Public Beta - Apple 「あぁ,またテストしなくちゃいけないプラットフォームが増えてしまう。」って思ったWebアプリケーション開発者は,それはそれは多いことだろう。僕もそのうちの1人。 今日では,Webブラウザは早ければいいって...

昨日、久々にDelphiで遊んでみた。僕は、DelphiのVer.1からのユーザ。最近のDelphiは「Turbo Delphi」という名前で公開されていて、「Turbo Delphi 2006 Explorer」が無償版である。 動的言語もいいが、WindowsでしかもGUIを伴ってexeさえ置けばオッケー、なんてツールは、僕にとってはDelphiで作るのが一番手っ取り早い。Object Pascal(今はDelphi言語って呼ぶらしいけど)についても、JavaやLLとは二味くらい違っ...

去る5月30日にJavaOne2007報告会がSun用賀で行われ,それに参加してきた。途中からの参加だったので,JavaSEについての岡崎さんのプレゼンは聞くことができず,その後のJavaEEについての動向のプレゼンから聞くことができた。 まず,やはり注目を集めていたのは,JavaFX。RIA向けの製品ということで,JavaFX MobileやJavaFX Scriptが中心だったらしいが,JavaFX EEという言葉もプレゼンの中で出てきていたのは面白い。それがプレゼン者の造語なのか実際...

Eclipseに検索窓を設置できるSearchclipseに機能追加をまたまた行った。 入力したキーワードを履歴として10個記憶し,[Page Up]と[Page Down]キーで履歴を取り出せるようにした。 [Shift]+[F4]キーでフォーカスをキーワード入力フィールドに移動させる際に,エディタで選択されている文字列をキーワードとして入力フィールドにセットするようにした。 我ながら,キーワード履歴は結構便利な機能だと思う。ぜひバージョンアップしていただきたい(インストールしてない...

先日,Googleから「Google Gears」とGoogle ReaderのGears対応が発表された。これに伴い,「GoogleがオフラインでAjaxアプリを使えるようになる技術を発表」と各メディアはこぞって伝えている。 しかし,なんか勘違いしていないか?「オフラインでAjaxアプリを使えるようになる技術」は誇張された表現じゃないか? もともとGoogleがGearsを作ってGoogle Readerに適用した動機として,「地下鉄に乗っているときなどネットワークが不安定(ぶちぶち切れ...

Ruby on Railsという言葉は誰しも知っている状況であり,さらにJava言語を推進してきたSunでさえJRubyを担ぎ出す今日。米国ではPythonで書かれた大規模サイトがスピード感を持って次々と登場してきている。昔からちょっとしたWebサイトにPHPやPerlといったスクリプト言語は広く使われてきたが,RubyやPythonによって,スクリプト系言語,つまりLLの印象は多くの開発者にとって大きく変わった。 LLがなぜこんなにももてはやされ,そして採用され始めているのか。大きく2つ...

アノテーションによってコンポーネント構築を目論んだ次期S2Wicketだが,いくつかエントリした通り,芳しくない結果に終わってしまった。助けてエントリをしてみるも,とてもありがたい「頑張ってください」エールはいくつか頂けたものの,具体的な解決策を得るまでに至らなかった。 もっと別の何かを閃くことができれば,忘れることができるだろう。しかし,思いついたことといえば,TwitterclipseだったりSearchclipseだったり。S2Wicketについては,未解決で終わった問題領域を悶々と...

またまたSearchclipseをほんのちょっとバージョンアップした。今回は機能追加を2つ行っている。 [SHIFT]+[↑]または[SHIFT]+[↓]キーで,検索サイトの選択を切り替える。 [ESC]キーで,アクティブなエディタまたはビューにフォーカスを移動する。 「キーワード入力フィールドへのフォーカス移動をショートカットキーで行えるのに,検索サイトの選択をマウスでしないといけない」という使い勝手の悪さを解決するのが,今回の機能拡張の目的である。また,「やっぱ...

Searchclipseをより使いやすくするための修正を行った。修正点は以下の2つ。 [Shift]+[F4]キーで,キーワード入力フィールドにフォーカスが移動する機能を追加。 内部ブラウザを開いたときに,入力されたキーワードをタイトルにセットするように修正。 Searchclipseをお使いの方は,ぜひバージョンアップしていただきたい。

いままでLingrclipseを使っていただいてきた皆さんはご存じかと思うが,今までLingrclipseでlingrにログインすることができなくなっていた。 原因は,APIのRoomにtimezone属性が追加されたこと。今のLingrclipseは,APIとJavaBeansクラスの形が完全に一致しないと例外を吐いてしまう。とりあえず,timezoneに対応したlingrclipse-core(1.3.1)を公開したので,lingrclipseをお使いの方はぜひバージョンアップしていた...

「macが要入院・・・」エントリで紹介した通り,macがこのほど入院してしまったのだが,思っていたよりもかなり早く,今日僕の手元に戻ってきた。修理内容は, 左右のファンの交換 I/Oボードの交換 バッテリの交換 という感じ。ロジックボードの交換はなかった。 今のところ,ちゃんと稼働している。放熱の効率が良くなることを期待していたが,筐体がすっごく熱くなるのは変化なし。残念。 それにしても,福○通運さん,住所に強くなっていただきたい。

Eclipseに検索窓を設置してくれるSearchclipse,さっそくバージョンアップを行ってみた。修正点は2つ。 キーワードをURLエンコードする際の文字コードを指定可能にした。 ブラウザ起動後に,入力したキーワードを消すか残しておくかを設定可能とした。 細かな点だが,使い勝手やサイト登録の可能性が広がるはずである。ぜひバージョンアップして欲しい。

先週から、macの調子が悪い。 バッテリの残量が40%~50%付近になると、いきなりシャットダウン。今日はもっとひどく、残量が80%くらいあるのに、何の前触れもなく電源が遮断される。怖くて何もできない。 アップルのサポセンに電話したところ、バッテリもしくはロジックボードの不具合だろうということだった。バッテリを取り替えて様子を見るかどうか聞かれたが、この際なので入院させてしっかり診てもらうことにした。明後日、僕の手から旅立つ予定。 何かしてしまった自覚が全くないのだが、ググってみると同じ症...

昔は白地にストロベリーの丸が3つあっただけだったが,今は。。。 スマイル!!:)

Rimoclipse,Lingrclipse,Twitterclipseと,どちらかというと生産性を低下させてしまうEclipseプラグインを開発してきたが,「〜clipse」シリーズ第4段として,Searchclipseの公開を開始した。 Searchclipseは,FirefoxやIE7に搭載されている検索バーのようなものだ。 検索サイトとして,インストール直後はGoogleやWikipedia,Exciteの翻訳サイトを登録してある。 検索サイトは,設定画面上で追加することができ...

java-jaの知り合いに頼まれたエントリ。それは「電車の中でのプログラミングのコツについて」。 僕はここ2,3年,電車や飛行機の中でプログラミングや記事(雑誌やブログなど)の執筆をすることが非常に多い。というか,毎日電車の中でパソコンを開いて,何かしらやっている。このエントリも,宇都宮線の中で書いている。 最近いくつか「〜clipse」というネーミングのEclipseプラグインを開発して公開した。今日もSearchclipseを作って公開を開始したのだが,これらの開発はほぼ完全に電車の中...

最近テレビCMで多く流されている「Docomo2.0」。まだ秘密らしく,その詳細はベールに包まれている。しかし,Docomo2.0というネーミングが前面に押し出されていることについて,僕は非常にやるせない気持ちになってしまった。 勝手な推測であるが,Docomo2.0というネーミング,これは間違いなく「Web2.0」を真似た表現だろう。特にIT業界やマーケティング業界において,Web2.0という言葉はもはや一般的な単語である。Docomo2.0と聞いて,「あ,Web2.0を真似たな」と思う...

何気なく今日Blogのアクセスログを見ていると、聞いたことのないOS名を発見。 RISC OS?RISCチップに最適化されたOSか? Wikipediaで調べたら、RISC OSは商用UNIXで、BSD系とSystemV系の両方があるらしい。MIPS社のUNIXマシン事業撤退に伴って、開発は凍結されたとある。 RISC OSはどんな画面だったかと興味が沸いたので、Googleイメージ検索を敢行。 全体的にグレー調でまとめられたウィンドウに、多色のアイコンが並んでいるのが特徴的。特にCo...

S2Wicketの新仕様を実装する際に問題となった,動的プロキシのシリアライズ問題だが,ここで直面した問題を整理したいと思う。そのために,問題領域に限定したコードを作成したので,興味のある方,解決策を知ってるぜ!という方は,ぜひここからプロジェクトをダウンロードして欲しい。 では,問題の簡単な説明をしていこう。まず,SwingやSWTなどのコンポーネント関連のクラスでよく見られるコンポジットなクラス構造を想像する。 Componentクラスはparentフィールドに他のComponent...

TwitterサービスをEclipseで利用するための「Twitterclipse」プラグインをバージョンアップした。 今回は,「@ユーザ名 ステータス」という書式で自分宛のステータスが受信されたときに,ダイアログを表示する機能を追加した。TwitterclipseをFast Viewで利用している場合に,ダイアログを表示するようにしておけば,自分宛のステータスを見逃さずに済むだろう。 是非バージョンアップされたし。 --- 追記: 2007/05/16 CodeZineにて本エントリが...

最近始めたGroovy。LLちっくな文法やメソッドが多く盛り込まれていて,非常に面白い。RubyかPythonに走ろうと思っていたが,やはり長年Javaをやってきた僕にとっては,Groovyが手に馴染みやすいのかもしれない。 さて,Groovyの文法において,Javaと比べて最も特徴的なものが,やはりクロージャではないかと思う。JavaSE7からクロージャがJava言語にも入るとか入らないとか議論されているが,Groovyではそんなクロージャをいち早く体感することができる。クロージャにより...

約2ヶ月間,Wicketをより使いやすくしようとチャレンジしてきたが,力及ばず断念することを判断した。 コンポーネントベース開発を採用しているWicketについて,コーディングの中心はコンポーネントの組み上げ処理であり,SwingやSWTなどのGUIアプリケーションと同じくらいの記述内容と記述量が求められる。コンポーネントの組み上げは「インスタンス生成」と「モデルとの関連付け」,そして「親コンポーネントへの登録」処理の連続であり,共通的に見える割には共通化が難しく,できあがったコードは非常...

先日公開を開始したTwitterclipseだが,さっそくバージョンアップを行った。修正点は以下の通り。 IE6で動作させた際にスクリプトエラーが発生してしまう不具合を修正。 サーバチェック後に毎回表示のリフレッシュがかかってしまう現象を回避するように修正。 ステータスの表示を更新日付でソートされるように修正。 ユーザ名の表示を設定されたURL(Blogなど)へのリンクに変更。 表示文字列中のHTMLエンティティ文字列をエスケープするように修正。 お使いの方はバージョンアップをお願いし...

自分が何をしているのか?友達や知り合いが何しているのか?こんなことを共有して楽しもうというサービスが,twitterである。そんなtwitterを,例のごとくEclipseから利用できるように,プラグインを開発した。その名も,twitterclipse。 eisbahn.jpのアップデートサイト(http://www.eisbahn.jp/update-site/)にtwitterclipseを配置しているので,Eclipse上でインストールを行うことができる。 機能としては, 予め登...

先ほど,lingrclipse-coreを1.3.0にバージョンアップした。昨日あたりからlingrclipseを使ってLingrサービスに入室ができなくなっているはずなので,ぜひすぐにバージョンアップを行って欲しい。 今回の修正は,LingrのAPIに変更が生じたために必要となった。具体的には,Room情報にcreated_at属性(たぶんそのルームが作られた日時)が追加された結果,JSONからJavaBeanへのマッピングに失敗してしまうことが修正理由である。現状の作りは,JSONに含...

「Javassistを使った動的プロキシの作成」エントリと「替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()」エントリを組み合わせると,実行時にその場で作った動的プロキシクラスを元にnewしたインスタンスをシリアライズし,異なるJavaVMプロセスにてデシリアライズできるようになる。今回はその具体的な方法を紹介しよう。 まずは,動的プロキシの対象となる抽象クラスを以下とする。これは「Javassistを使った動的プロキシの作成」で取り上げたもの...

とある理由で情報の統計・分析についてのお勉強をすることに。うーん、なんで今まで避けて通ってきたんだろう、と思うくらい、なかなか面白い。 キーワードだけでも、 OLAP、OLTP 多次元データベース データマイニング データマート データウェアハウス VLDB スライシング ドリリング ドリルアップ、ドリルダウン ダイジング ディメンション 時系列 ファクトテーブル ディメンションテーブル キューブ メジャー と盛り沢山。OLAPにもROLAPとMOLAPがあり、特性が違うらしい。 知る...

今回は「動的プロキシとシリアライズ」エントリで取り上げた通り,writeReplace()メソッドとreadResolve()メソッドの使い方について紹介してみようと思う。 あるオブジェクトをシリアライズしたくなったとする。しかし,時として,そのオブジェクトをそのままシリアライズすることができない理由が出てきたりする。そのままシリアライズしてしまうとサイズが非常に大きくなってしまう,などがすぐに思い付く代表例だろう。その場合,シリアライズしたい情報を自分で決定し,さらに情報を加工するなどし...

前回の「動的プロキシとシリアライズ」エントリで紹介した通り,今回はその第一歩として,Javassistを使って動的プロキシを作成するための方法を紹介してみようと思う。 Javassistは,動的プロキシを作成するためのライブラリというよりは,バイトコードを操作するためのライブラリである。とは言っても,バイトコードに対する低レベルな処理は,Javassistに完全にお任せで大丈夫である。JavassistのAPIを使っている限りでは,バイトコードに関する知識はほぼ0で良い。Javassist...

一般的なDIコンテナに大抵標準装備されている機能に,AOPがある。例えば,あるオブジェクトのあるメソッドが呼び出された際に,そのメソッドを処理する前に何らかの処理を挟み込む,などがAOPである。この機構を実現するためには,動的プロキシと呼ばれる機能が必要となる。 デザインパターンのProxyパターンは,あるオブジェクトと同等のインタフェースを持つProxyクラスを作成し,そのProxyクラスの中から本来のオブジェクトを呼びだすようにする。クライアントは本来のオブジェクトを触っている感覚なの...

4月13日の金曜日,java-jaの第1回ミーティングが行われた。下はその様子。実際にはもう少し人が増えて,20人近い人に来ていただいた。ちなみに,幽霊のような残像が,java-ja発起人のyoshioriさん。 まず,会場の提供と準備&後片づけをしてくださったATL Systemsの皆さん,アークランプゆーすけさんに感謝の意を述べたい。今後も素敵なラウンジをお借りできると,とっても嬉しい。 さて,第1回の内容はこんな感じ。親睦がメインな目的だった割には,自分も含め真面目なプレゼンが続い...

まさか「ラオウ」とは・・(w 「Java-jaミーティングに行ってきました」- じゃばてな 生産性低下の神様は私の中では身長185センチ、体重90キロ、というのを想像していましたごめんなさい。どういうわけか世紀末覇者的な方かと思っていましたごめんなさい。 Biographyのページに,身長と体重,全体写真(2007/04/14時点)を載せることにより,少なくとも外見は「ラオウ」ではないことがわかるようにしておこう。

2日から6日まで,新婚旅行でケアンズ(オーストラリア)に行ってくる。ほぼ全員に, 「PCを持って行く」=「成田離婚」 と言われているが,そう言われると余計に持っていきたくなるのが男というもの。ま,飛行機の中とか空港での待ち時間とかいろいろとあるので。 ホテルの部屋はネットが使えるらしいしかし,ネットにつなぐのが夜になるのは確実。すぐに返事を返すのは無理だが,何かあればメールをしておいて欲しい。海を見ながらOSSのコーディングをしたいが,うーん,それこそ離婚になってしまうので,自粛予定。 お...

LingrをEclipse上で使用できるようになるLingrclipseに,以下のちょこっとした機能拡張を施した。 入室時のパスワード指定。 メッセージの「画像表示」「YouTube表示」「リンク表示」「顔文字表示」に対応。 開発時には外部に漏らしたくないことを話すこともあるだろう。ま,Lingr自体そういった機密情報の話に向いているかというと非常に疑問だが,例えば仲間だけを入室可能にしたいとかの時には,ルームにパスワードをつけることができる。今回のlingrclipseでは,入室時に...

前のエントリで,S2Wicketの今後の方向性として,以下のコードを示した。 public class HelloWorldPage extends WebPage { @WicketModel private LabelModel helloModel; @WicketComponent private Label hello; @WicketComponent private Link link; @SeasarComponent private HelloService hello...

さて,以下の抽象クラスがあったとする。これは,コンストラクタの中からfoo()メソッドを呼び出すが,foo()メソッドはサブクラスで実装を提供することを意味している。 abstract class C1 { C1() { foo(); } abstract void foo(); } そして,上記のクラスを継承した下記のクラスがあったとする。ここでは,インスタンスフィールドvalueを宣言し,宣言と同時に値1を代入するように記述している。コンストラクタ内でvalue値を表示し,foo(...

Lingrclipseに,通知機能を追加してみた。新しいバージョンは,lingrclipse-view 1.3.0である。 通知機能とは何かと言うと,Lingrclipseのビューが隠れていた時,例えばFast Viewにしていたとか,他のビューをアクティブにしていたときとかに,入室したルームで誰かが発言をしたことがわかるようにした,ということである。 具体的には,Eclipseの下部のステータスバーに,通常だと, というアイコンが表示されるが,もし誰かが発言したときにビューが表に出てな...

前のエントリでちょっと触れたS2Wicketの方向性。現在,考えていることが実際に実現可能かどうかを検証している段階である。で,とりあえず次期S2Wicketを使うと,これがこーなります,というコードを掲載しよう。 例えば, public class HelloWorldPage extends WebPage { private LabelModel model; private Label hello; private Link link; @SeasarComponent priv...

Wicketは,WebアプリケーションをSwingなどに代表されるGUIアプリケーションと同じように開発することができるようにと考え出されたフレームワークである。機構自体は非常に複雑だが,その複雑さは表には一切出てこない。 コンポーネントベースという点ではJSFと同じだが,JSFは拡張性やVisualな開発ツールを意識するあまり,APIセットがプログラマに全くもって親しくない。そして,結局JSPをデフォルトとして採用しているため,相変わらず開発メンバーのロールをはっきりとすることができなく...

java-jaにて,ある方からLingrclipseに以下の修正願いを頂いた。 メッセージの字を小さくして欲しい(上司に見つからないように) 参加者のアイコン画像を表示しないようにして欲しい(上司に見つからないように) さっそく上記2つの修正を行ってみた。 IEでも程よい大きさの文字にしたつもりなので,まともに利用して頂けるようになったと思う。あと,Viewの右上にあるボタンで,アイコンを表示するかどうかを切り替えられるようにした。すでに受信したメッセージのアイコンを消すことはできな...

先日公開したLingrclipseだが,さっそくバージョンアップを行ってみた。 追加機能は,認証機能である。Lingrにアカウント持っている人は,予め設定(Preference)画面にてメルアドとパスワードを入力しておけば,入室時にLingrにログインされる。もちろん,退室時にはログアウトも行われる。それだけ。 この認証機能,Lingrのヘビーユーザは真っ先に欲しいと思う機能のようだ(僕も思ってたけど)。びっくりしたことに, 「スゲーっすよ Eclipse の lingr プラグイン」-...

AjaxとCometによるリアルタイムなチャットサービスが,Lingrである。そのEclipseプラグインを開発してみた。その名も「Lingrclipse」。eisbahn.jpのアップデートサイトにてLingrclipseの公開を先ほどから開始した。 eisbahn.jp アップデートサイト http://www.eisbahn.jp/update-site/ 上記アップデートサイトから,下記のプラグインをインストールすると,Lingrclipseを使用することが可能になる。 ling...

さっそくだが,知り合いのブログのエントリより。 「Eclipse のプラグインは超簡単にできるよ」- Yoshioriの日記 Eclipseのプラグインは超簡単に作れます!! いや、マジで。 その通り。特に「画像を表示する」「Webページを表示する」「何か一覧を表示する」ようなViewを作りたいだけだったら,BrowserコンポーネントやCanvasコンポーネント,TableコンポーネントなどのSWTコンポーネントの使い方をAPIドキュメントなどで把握するだけで,あとはウィザードがよろし...

完全制覇したってわかってても,ドキドキしてしまう第3ステージ。 おめでとう!

ちょっと興味が出てきたので,軽くテスト。 Python 2.3.5 (#1, Jan 13 2006, 20:13:11) [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> class Foo(object): ... def p(self): ... ...

Welcome to Darwin! beloved:~ yoichiro$ irb irb(main):001:0> print "test" test=> nil irb(main):002:0> quit beloved:~ yoichiro$ python Python 2.3.5 (#1, Jan 13 2006, 20:13:11) [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin Type "help", "co...

誠に恥ずかしながら,今日初めてRubyコードを書いた。 Weclome to Darwin! beloved:~ yoichiro$ irb irb(main):001:0> print "test" test=> nil irb(main):002:0> "Hello world!"ではなく,"Hello Ruby!"でもなく,"test"。 うーん,センスなし。orz

2007年2月23日に,Lingr APIにいくつかの機能追加が行われた(現時点の最新のAPIは3月6日リリースのもの)。その中で, The room.enter method now supports a new idempotent parameter. というものがある。「idempotent」って何だろうか。さっそくググると,「冪等(idempotent)」というような言葉が多くヒットする。 ん?初めて見る漢字。まず,読めない。しかも,漢字からその意味を全く推測できない。自分の学...

Rimoclipseでお送りするRimoサービスの開発日記が始まった 「戻るボタンを付けました」- Rimo(リィモ)開発日記 番組をスキップしすぎたとき前の番組に戻れるように「戻るボタン」を付けました。 Rimoに追加される機能は,Rimoclipseでもそのまま有効となるはずだ。なぜなら,Browserコンポーネントに貼り付けているだけなので。。。 どこかに「GyaoよりもRimoの方が閲覧者が多いらしい」と書かれていたが,スタンスがまるで違うサービスなので単純に比較するのは間違い。...

「Javaナイトセミナー(Vol.3)」で宿題(?)だった「AOPの適用」について,僕なりの意見を以下に述べようと思う。 AOPはトランザクションやロギング,ベースとなる機構で必要な前処理などを適用することが代表例なのは揺るぎのない事実だろう。そして,AOPのこれらの処理に対する適用は,プログラマからテクニカルで毎度毎度のお決まりコーディングを削減することができ,さらに継承やTemplateパターンなどを駆使することなく前処理を実行できるため,対象のクラスを汚す必要がない(何らかのクラスを...

27日にSun用賀で行われた「Javaナイトセミナー(Vol.3)」に参加をしてきた。 題材はSpring Framework2.0の新機能の紹介。ビールで乾杯から始まるセミナーは,いやでもノリ♪なテンションになり,雰囲気はとても良かった。講師の方はとても面白く,しかし聴衆からの質問には冗談を交えながらもポイントをしっかり突いた回答で,さすがだなぁと思いっぱなしだった。僕は対人恐怖症なため,真似はできない。誰も信じてくれないけど。。。 来ている人々は,スーツ姿が結構な割合を占めていた。ま,...

気軽に声をかけてください。対人恐怖症ですが,頑張ります。

今日の20時25分頃,宇都宮線の小山駅で信号トラブルが発生。その結果,2時間半以上も電車は止まることになってしまった。もう一度言う。2時間半もだ。20時30分に出発した人は,家に到着するのは少なくとも22時30分を過ぎる。 システムというものは,ダウンタイムが少なければ少ないほど良い。もちろんダウンしないシステムなど存在しないので,冗長にしたり,ダウンする前に交換する,などの工夫を施しながら,ダウンをできるだけ避ける努力をする。性善説ではなく,性悪説が基本だ。 しかし,JRのトラブルは酷い...

Eclipse上で翻訳を行うプラグインである「TranslationView」プラグインを1.1.4にバージョンアップした。今回は, 翻訳前,翻訳結果のテキストボックス内でCtrl+Vなどをしたときの不具合修正 翻訳結果を持つレスポンスの文字コード指定を追加 の2点を機能追加した(ここに投稿された依頼より)。 Excite翻訳でしか確認していないのだが,どうも他の翻訳サイトを利用したときに,レスポンスの解析に失敗して文字化けしてしまうらしい。文字コードは「JISAutoDetect」で...

自宅のサーバのバックアップスクリプトを作成しようとして,Antのビルドスクリプトを着々と書いていた。特にCVSのリポジトリは多くのファイルがあるため,tar形式でファイル群を1つにまとめようと思い,tarタスクを書いた。 ... ... いざ実行してみると,ほとんどのファイルがtarに入れられず,エラーになってしまった。 [tar] Entry: yoichiro.eclipse.plugins.translationview/src/〜/internal/ui/messages...

WicketとSeasar2を統合するS2Wicketだが,先ほどVersion 1.2.0をリリースした。 今回のリリースでは,パッケージ名とクラス名,そしてフィールド名について,正規表現でパターンを与え,それに一致するフィールドをインジェクション対象とするFieldNamePatternFieldFilterフィールドフィルタ実装クラスを新たに提供している。これを利用することによって,@SeasarComponentアノテーションすら書かなくても,規約に従ってインジェクションが施される...

maven2のsiteゴールは,標準Webページや各種レポートの出力により,プロジェクトの情報共有を行うためのWebページを簡単に生成することができる。もちろんこれだけでも十分魅力的なのだが,特にオープンソースなライブラリなどを開発するプロジェクトであれば,そのライブラリの使用方法やチュートリアル,ダウンロードページなどを追加して,siteゴールのみでコンテンツ全てを賄いたくなってくるだろう。今回は,siteゴールで自作のWebページを追加する方法を紹介しようと思う。 まずは,siteゴー...

はてなが新しく公開を始めたサービス,それが「Rimo」である。現在は,YouTubeの人気動画を集めてテレビ化されている。 特に意味はないのだが,Rimoを見ながらプログラミングができるよう,Eclipseプラグインを作成してみた。 その名も「Rimoclipse」。 eisbahn.jpのアップデートサイト「http://www.eisbahn.jp/update-site/」からインストールすることができる。Eclipseの対象バージョンは3.1以上とした。インストール後,「Windo...

Wicketの特徴として「Javaで何でも書くことにより,Javaプログラマが生き返る」ということがある。これは確かにそのとおり。特にJDK1.1の頃からJavaに携わっている開発者にとって,Wicketでアプリケーションをコーディングした結果は,あの頃のGUIアプリケーションに非常に近い。近年の多くのWebアプリケーションに比べて,自分の時代が戻ってきた!という感覚を開発者は持つだろう(Webアプリしか知らない人には体感できないかも)。 ただしこれは「アプリケーションの記述言語としてJa...

maven2によって管理されているプロジェクトは,siteゴールを使用することによって,さまざまな情報をWebページとして自動的に出力することができる。これについては,「maven2のsiteゴールによる標準Webページの出力」エントリで紹介した。今回は,プロジェクトの成果物に関する各種レポートをWebページとして出力するための方法を紹介してみよう。 Javaソフトウェア開発では,ソースコードを元にしてさまざまな2次的成果物を作成することになる。コンパイラによるclassファイルの生成や,...

ついにJudeでER図が描けるようになった。 「JUDEのER図,できました!」 - An Agile Way 今後、UMLとERとマインドマップを交えた、新しい方法論にチャレンジしますので、ご期待ください! さっそく使ってみた。使用感は,ERWinに近い気がする。僕はERWinに慣れているので,非常に描きやすい。 今日では,データベースアクセスを行う際には必ずと言っていいほどO/Rマッピングを行うため,ER図の中のエンティティからクラス図の中のクラスへ,そしてその逆へ,ハイパーリンク...

ソフトウェアを構成するファイル群やそれらに対するコンパイルやパッケージング,依存関係などを管理してくれるmaven2。プロジェクトに存在するさまざまな情報や処理結果をチームで共有することが開発に必要なのは明らかであり,多くの場合はそのプロジェクト用にWebページを構築して情報をチームメンバーに公開することが行われる。しかし,Webページの更新作業について,手作業ではなかなか難しく,ついつい更新が滞ってしまうことが多くのプロジェクトで見られる。アジャイルやイテレーティブな開発プロセスを採用し...

来る2月27日に,Sun用賀で「Javaナイトセミナー (Vol.3)」が開催される。 Javaナイトセミナー (Vol.3) 〜Spring Framework 2.0:   デファクトスタンダードDIコンテナの現在と未来〜 あまり(というか全くと言っていい程)こういうセミナーに参加してこなかったのだが,java-jaで出会った人に実際に会えるかもしれないということもあり,超重い腰を上げて参加しようと思っている。Spring2.0も気になるところだが,いろんな人々と話をすることで刺激を得...

現在はJavaが利用言語トップ3に陣取るIT業界であるが,10年前はJavaと言えば少数派だった。「Javaをやってます」と言えば,「おぉ,先進的ですねぇ」なんて言われたものだ。 今思うと,Javaは登場の最初からコミュニティが支えてきたのではないかと思う。ほとんどのJava牽引者は,最大のコミュニティであったJavaHouse-MLをホームグラウンドとして活動を行い,Q&Aを日々蓄積し,その結果Java人口が増えていった。その成果は,Topicとしてまとめられている。まさにコミュ...

WicketからSeasar2を利用するためのS2Wicketのバージョン1.1.0を本日リリースした。 1.0.0では,@SeasarComponentアノテーションをフィールドに付与することによって,インジェクション対象としていた。1.1.0ではそれを進化させ,どのフィールドをインジェクション対象にするかを判断するロジック(フィールドフィルタ)を,アプリケーション開発者が自作して登録することができるようにした。つまり,インジェクション対象のフィールドをどれにするかという規約を定義するこ...

2007年2月3日に婚姻届を某市役所に提出し,晴れて結婚いたしました。 これもひとえに皆さんのお力添えがあってのことです。今後はより一層このIT業界に貢献できるよう,頑張る所存でございます。 しかし,今朝すがすがしい気持ちで仕事を始めようとした矢先に,市役所から電話が入る。 「新しい本籍が書かれていませんので,書きに来てください」 現在,僕は結婚しているのか,まだ独身なのか・・・。これぞグレーゾーン。orz

seasar.orgにて,S2Wicket 1.0.0をリリースした。 これは,wicket-seasarとして先日公開したライブラリを,Seasarブランドに仕立て直して再公開したものである。主な変更点は,プロダクト名の変更,パッケージ名の変更,それに伴うサイトの文面の変更があげられる。ソースコードに関しては,パッケージ名以外は変更していない。 とりあえずこれでwicket-springと表面的には肩を並べたわけだが,S2の冠を受けたからには,更なる機能追加をしていかなければならない。具...

「早!,もうかよ」と思うだろうが,先日公開したWicketとSeasar2の統合ライブラリは,S2Wicketとして公開し直すことにした。seasar.orgからの承認も得て,近日中にhttp://www.seasar.org/の中にサイトも移行する予定。wicket-seasarは,Seasarブランドの仲間入りをすることになる。移行後は,http://s2wicket.sandbox.seasar.org/ がS2WicketプロジェクトのサイトURLとなる。 それに伴う作業を現在行っ...

Wicketは,POHPソリューションの代表として今後広く普及するであろうフレームワークである。そして,WicketでDIコンテナの恩恵を受けるために,Spring Frameworkとの統合を行う拡張ライブラリ(wicket-spring)も提供されている。 最近,僕の回りではSpring Frameworkよりも,Seasar2をDIコンテナとして採用する事例がとても多い。さらに,以下のようなエントリを見つけてしまった。 「Webアプリ作成前に考えたこと」 - めそらぼ - mesol...

「フレークワークに依存しないっていうけどさ」 - ひがやすをblog アプリケーションのコードは、フレームワークに依存せずに済ませられるなら、それに越したことはありませんが、依存して楽できるなら別にいいんじゃないのというのが私の考え。 フレームワークに依存した状態で,更に「それに対する単体テストコードの記述の敷居が高くならなければ(※)」フレームワークに依存したコードを記述することを選択することが最もハッピー。 但し,多くのプロジェクトでは,「※」の条件をクリアすることは実装者にとって...

2007年1月14日時点での,Wicket1.2からWicket2.0への変更点について,以下のURLのページで発表されている。 Migrate-2.0 - Wicket wiki 要約すると,以下のような感じである。英語は苦手なので間違っている箇所があると思うが,構わずに掲載してしまおう。 JavaSE5以上が必須になる。 onAttach()の親実装を先に,onDetach()の親実装を最後に呼び出すように推奨される。 Generics/パラメータ化された型への対応 コンポーネントが...

DIコンテナの設定情報,つまり「オブジェクトの依存関係」や「オブジェクトの設定内容」について,規約重視で暗黙のものとするか,ファイルに記述することで形式のものとするかは,個々人によって主張が異なるようである。何が何でも設定ファイルを書かない,あるいは,何が何でも設定ファイルを書く,といった「原理主義者」も多く,多くの場合は彼らの説明に「コンテキスト」が含まれない。よって,主張を聞いても,実際に何らかのDIコンテナを使う際をイメージした場合,その主張に沿う部分と沿わない部分が僕個人の中で発生...

日本が価値点向上に乗り出した。 「体操高難度の演技にボーナス点付加を設定」 - 日刊スポーツ アテネ五輪までの体操は,C難度やD難度の技の組み合わせによって全体の価値点を上げ,その完成度が評価された。つまり,単発の大技を出しても,高得点に直接結びつかない。それは,アテネ五輪での中野大輔選手の平行棒種目別決勝の演技に対する評価が表していた。 しかし,現行のルールでは,姿勢欠点などの減点の割合が,全体の演技価値点と比べて,とても低いように感じる。多少姿勢が崩れても,難しい演技をやったほうが高得...

java.sun.comから,こんな記事が掲載されている。 「Accessing Resources From JavaServer Faces Custom Components」 - java.sun.com JSFのカスタムコンポーネントで,Ajaxによるファイルアップロード系の処理をするためにShale RemotingやDojoを使った例である。全体のコードが掲載されておらず,ポイントしかわからないかもしれない。もし全コードを見渡したい人は,「Java PetStore 2.0e...

WicketはPOHPのソリューションとして非常に素晴らしいが,やはりUIに対するライブラリであり,ビジネスロジックに関してはDIコンテナを採用してAOPなどの恩恵を受けることが今日の開発スタイルにマッチすると考えられる。 Wicketでは,DIコンテナであるSpringFrameworkと連携するための2つの方法を提供している。 ApplicationオブジェクトにDIコンテナ管理下のオブジェクトをセッターインジェクションして,各WebPageオブジェクトからgetして利用する。 各W...

携帯端末向けにアプリケーションを開発する場合,作成するコンテンツが小さいために,とにかく余計な記述なしにサクサク開発をしたいと考えるだろう。XHTMLでページを作成していけるソリューションを採用すれば,さらに開発効率は向上するはずだ。そう,Wicketの出番となる。 ただし,WicketはもちろんFirefoxやIEなどのWebブラウザを標準のターゲットにしているために,そのままでは不都合がいくつか存在する。 まず,Wicketの標準では,Webブラウザのマルチウィンドウ対応を行うために,...

IBM WebSphere6.1(WAS)とBEA Weblogic9.2(WL)のどちらを採用するかを検証する機会が昨年あった。政治的な理由でWASに大きく傾きかけていたのだが,致命的な問題がWASに存在することが発見された。 それは,commons-loggingとlog4jの組み合わせをWebアプリケーションで使っていた場合に,WLやTomcatの場合と比べて,出力ログパターンによって処理性能が著しく低下するというもの。具体的には,「%C」「%M」といった,保守や不具合の原因の発見に...

箱根駅伝を見ていると,かなり高い頻度でサッポロビールのCMが流れてくる。 「ないものは,つくるしかない。」 - サッポロビール 同じ言葉を何度も何度も連呼される。なんか自分が洗脳されかけている気がして,不快だ。

Eclipse上で翻訳を行うプラグインである「TranslationView」プラグインを1.1.3にバージョンアップした。今回は, 翻訳結果で「全て選択」機能(Ctrl+A)を追加 翻訳要求時のパラメータの文字コード指定を追加 の2点を機能追加した(ここに投稿された依頼より)。 個人的には,Exciteの翻訳サイトでしか動作確認していないのだが,Yahoo!翻訳などではMS932ではなく,UTF-8でパラメータを送らないといけないらしい。そこで,設定画面にて文字コードを指定可能とした...