<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Sugmak</title><link>http://sugmak.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/probo" /><description>The world through the eyes of a freelance programmer based in Fukuoka, Japan.</description><language>en</language><managingEditor>noreply@blogger.com (Sugmak)</managingEditor><lastBuildDate>Tue, 02 Feb 2010 22:54:29 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">40</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="probo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item><title>WordCamp Fukuoka 2010</title><link>http://feedproxy.google.com/~r/probo/~3/Chye9MDml5k/wordcamp-fukuoka-2010.html</link><category>福岡で働くWebの人々</category><category>福岡</category><category>wordcamp fukuoka</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Tue, 02 Feb 2010 22:54:29 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-1178825015185867385</guid><description>&lt;p&gt;&lt;a href="http://2010.wordcampfukuoka.com/"&gt;&lt;img src="http://lh6.ggpht.com/_8r6rBJA736s/S2hGnpqnF5I/AAAAAAAAAS4/OlmGr5Gqzj8/0A2DB2F4-575A-4DA3-B287-71C45FBFB6CB.jpg?imgmax=800" alt="0A2DB2F4-575A-4DA3-B287-71C45FBFB6CB.jpg" border="0" width="468" height="60" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WordPress関連のイベントが福岡で開催されます。私は当日、運営スタッフの一員として裏方の仕事をやっていますので、ステージ脇や受付周辺をウロウロしていると思います。見かけた方は声をかけてくださると喜びます。&lt;/p&gt;

&lt;p&gt;話は変わって、私はWordPressにはもう4年くらい触っていないのですが、聞くところによると、最近ではブログツールとしてだけではなくCMSとして使われることが多いそうです。私はCMS自体を作ることに、仕事で毎日のように携わっていますが、既存の製品を使ったことは、まだ一度もありません。&lt;/p&gt;

&lt;p&gt;たぶん私の仕事は服飾でいうところのオーダーメイドなんだと思います。既製品の服は、ぴったりとカスタマイズすることは難しいけれども、廉価で手が出しやすいというメリットがあります。そうやって多くのユーザーが集まり、同じ製品を愛する人たちの知恵が集結すれば、オーダーメイドにも負けないような結果が出せるんじゃないか？ということを、このイベントで見極めたいと思っています。&lt;/p&gt;

&lt;p&gt;まだ定員まで余裕があります。興味のある方は是非ご参加ください。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-1178825015185867385?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-03T15:54:29.214+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2010/02/wordcamp-fukuoka-2010.html</feedburner:origLink></item><item><title>「Fukuoka Perl Workshop #14」の開催についてと雑感</title><link>http://feedproxy.google.com/~r/probo/~3/P4anD9H7nLY/fukuoka-perl-workshop-14.html</link><category>Fukuoka Perl Mongers</category><category>福岡</category><category>yapcasia2009</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sun, 18 Oct 2009 07:18:44 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-3503836606257552944</guid><description>&lt;p&gt;現在参加者募集中です。詳細はこちらからどうぞ。&lt;br /&gt;
&lt;a href="http://fukuoka.pm.org/2009/10/fukuoak-perl-workshop-14.html"&gt;Fukuoka Perl Mongers: 「Fukuoak Perl Workshop #14」開催のお知らせ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;前回の記事にも書きましたが、先月開催されたYAPC::Asia 2009にイベントレポータとして参加したお陰で、Perlを愛して止まない多くの方々とお会いすることができました。初日の懇親会ではShibuya.pmリーダーの竹迫さんとYokohama.pmリーダーの栗原さんと集まってお話することができました。他にも「機会があればFukuoka.pmへ参加したい」という方々が何人もいらっしゃいました。東京から1000キロ以上離れた場所にあるFukuoka.pmですが、その距離が一気に縮まったような気がしました。&lt;/p&gt;

&lt;p&gt;そのFukuoka.pmは2007年11月に設立されました。満2歳を向かえる来月、なんとJPA代表理事の牧大輔さんが、Fukuoka.pmへ参加されることになりました。牧さんには感謝この上もございません。また、このような繋がりが生まれつつあるのは、YAPC::Asiaのお陰であり、Perlコミュニティのお陰でもあります。本当に参加して良かったと思います。&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-3503836606257552944?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T23:18:44.817+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2009/10/fukuoka-perl-workshop-14.html</feedburner:origLink></item><item><title>YAPC::Asia 2009 大雑把な所感</title><link>http://feedproxy.google.com/~r/probo/~3/fGMdupdokd4/yapcasia-2009.html</link><category>perl</category><category>yapcasia2009</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sun, 13 Sep 2009 08:27:44 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-1461965675664647373</guid><description>&lt;p&gt;私は今回、&lt;a href="http://d.hatena.ne.jp/hiratara/"&gt;id:hiratara&lt;/a&gt;さんと共に、前夜祭も含めた全日程でgihyo.jpのイベント・レポーターなるものに挑戦しました。&lt;/p&gt;
&lt;a href="http://gihyo.jp/news/report/01/yapcasia2009"&gt;http://gihyo.jp/news/report/01/yapcasia2009
&lt;/a&gt;

&lt;p&gt;レポータをやっていて「これは今後使われるケースが増えていくんじゃないか?」と思った技術的なキーワードをざっとリストアップしてみました(既に流行っているものもありますが)。全体的にPerlでのWebアプリケーションの作り方が、また新たな局面を迎えた感があります。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP::EngineベースのWAF&lt;/li&gt;
&lt;li&gt;PSGI/Plack&lt;/li&gt;
&lt;li&gt;イベント駆動(AnyEvent)&lt;/li&gt;
&lt;li&gt;スレッド(Coro)&lt;/li&gt;
&lt;li&gt;非同期&lt;/li&gt;
&lt;li&gt;継続&lt;/li&gt;
&lt;li&gt;nginx&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;全てのセッションを聴講したわけではないので抜けがあると思います。その点はご了承ください。&lt;/p&gt;

&lt;p&gt;ちなみにMooseは、第一線ではもうすっかり定着している感じで、現在はHTTP::EngineのようにMooseをベースとした成果物、さらにはそれをベースとしたMoose三世くらいの時代に入っているのかなと思いました。&lt;p&gt;

&lt;p&gt;最後に、YAPCのボランティアスタッフの皆様、JPAの皆様、そしてスピーカの皆様、本当にお疲れさまでした、そしてありがとうございました。&lt;/p&gt;

&lt;p&gt;Perl大好き!&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-1461965675664647373?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-14T00:27:44.031+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2009/09/yapcasia-2009.html</feedburner:origLink></item><item><title>初めて本格的にJavaを使ってみていいと思ったところ</title><link>http://feedproxy.google.com/~r/probo/~3/lTjLJgP__l4/java.html</link><category>java</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Mon, 16 Feb 2009 22:34:26 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-1339271821443579763</guid><description>&lt;p&gt;昨年の4月頃から仕事で本格的にJavaを使い始めました。ちなみにそれまでの自分の仕事をざっと言語別にみると「Perl、ActionScript、JavaScript、(時々)PHP」という感じで、いわゆるスクリプト言語が殆どでした。しかしここ1年を見ると、サーバーサイド言語に関してはPerlよりもJavaが多くなり、クライアントサイドがJavaScriptとActionScript、そしてバッジ処理、テキスト処理等の部分でPerlを使うという具合に変わってきています。&lt;/p&gt;

&lt;p&gt;最初のうちはJavaという慣れないプラットフォームに戸惑いましたが、周囲にいらっしゃる優秀なJavaプログラマーの皆さんのおかげで、なんとか仕事で使えるレベルまで到達してきました。またスクリプト言語とJavaの双方を経験することにより、お互いの良いところ、あるいは足りないところを再認識できたのも、自分にとっての大きな収穫でした。&lt;/p&gt;

&lt;p&gt;そこで今回は、私の感じたプラットフォームとしてのJavaが優れていると思った点をメモしてみたいと思います。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;VMの存在

&lt;ul&gt;
&lt;li&gt;JavaVM(Java仮想マシン)のおかげで、開発環境や実運用環境の構築の際に、OSの種類やバージョン等に振り回されることが少なくなりました。JavaVMという仮想世界に閉じこもることのできないスクリプト言語では、そうはいかない場合が多いのです。そういう意味で、Perl6から導入されるであろう&lt;a href="http://www.parrot.org/"&gt;Parrot&lt;/a&gt;に期待しています。&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;DIとAOP

&lt;ul&gt;
&lt;li&gt;Depandency Injection(依存性注入)とAOP(アスペクト指向プログラミング)。これらの概念が最も浸透している言語のひとつがJavaだと思います。DIとAOPについての詳しい説明はここでは省きますが、極めて平たく言うと、部品(オブジェクト)同士の依存関係を切り詰めることによって、全体の柔軟性を高めることが可能となり、その結果、メンテナンス性が高まるとか、テストがやり易くなる等のメリットを享受することができるというものです。特に規模の大きなプロジェクトでその効力を発揮します。ちなみに私はSeasar2というフレームワークをメインで使っています。&lt;/li&gt;
&lt;li&gt;DIもAOPもスクリプト言語ではあまり馴染のない概念ですが、現在私はPerlのDIフレームワークである&lt;a href="http://search.cpan.org/%7Estevan/Bread-Board-0.03/lib/Bread/Board.pm"&gt;Bread::Board&lt;/a&gt;を弄っています。Perlの場合、Mooseあるいは将来登場するPerl6のように、成熟した純然たるオブジェクト指向で書けるようになるつれて、DIやAOPのような概念がどんどん普及してくるのではないかと思っています。そういう意味で近い将来に期待したいと思います。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;周辺技術の充実

&lt;ol&gt;
&lt;li&gt;IDE

&lt;ul&gt;
&lt;li&gt;スクリプト言語のコーディングやXHTMLのマークアップの際にはVimかEmacsを使いますが、Javaプログラミングでは専らElipseを使っています。Javaのように静的な型付けをする言語の場合、型を補完したりチェックしてくれるIDEがないとかなり厳しいと思います。定番と呼ばれるものには、それなりの理由があって、Eclipseの場合も慣れてしまえば本当に便利なツールになるはずです。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;

&lt;li&gt;Maven

&lt;ul&gt;
&lt;li&gt;プロジェクトのスケルトン作成、依存ライブラリの管理、ビルド、テスト、そしてデプロイ(サーバーへの配備)まで、一貫して面倒を見てくれるツールです。スクリプト言語の場合だと、複数のツールをいろいろ組み合わせて実現するようなことを、Mavenの場合には、これひとつで一貫してできるというのがポイントです。また意外と柔軟性もあって、豊富なpluginを使ってさらに便利に拡張することも可能ですし、Antやシェルスクリプトなど他のツールと組み合わせて使うこともできます。最初のうちはMavenの仕様というか哲学みたいなものを理解するのに時間がかかりましたが、理解が深まるにつれて、とても便利なツールだということを実感しました。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Tomcat

&lt;ul&gt;
&lt;li&gt;実績のある定番アプリケーションサーバーの存在は、特に実運用の際に心強いものです。スクリプト言語にもそれぞれ定番の運用環境はあるものの、Tomcatほど簡単に設置できるものは見かけません。やはりここでもプラットフォームの差異を吸収してくれるVMの存在が大きいのかも知れません。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;CIツール

&lt;ul&gt;
&lt;li&gt;有名なものとしてはHudsonとContiniumがあります。言語を問わずソフトウェアの品質を維持・管理する上で、「コンピューターにできることは、できる限り自動的にそして定期的にコンピューターにやらせる」というのはとても大切なことだと思います。私も今後はこのCI(継続的インテグレーション)という概念を、スクリプト言語にも積極的に取り入れたいと思っています。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;豊富な情報量&lt;/li&gt;

&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;これは書店の技術書のコーナーへ行くとわかるのですが、プログラミング言語の場合、おそらくJavaに関する書籍の数が最も多いのではないでしょうか?英語が苦にならないような現場ならば別ですが、大抵の場合、日本語の情報量が豊富というのは、かなり重要な要因になると思います。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上、大雑把ですが、ざっとまとめてみました。今後もJavaとスクリプト言語のお互いの良いところを取り入れながら、適材適所で上手く使い分けていきたいと思います。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-1339271821443579763?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-17T15:34:26.610+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://sugmak.com/2009/02/java.html</feedburner:origLink></item><item><title>LaunchBar 5の新機能</title><link>http://feedproxy.google.com/~r/probo/~3/u9E52NAwQOw/launchbar-5.html</link><category>launchbar</category><category>mac</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sat, 13 Dec 2008 21:39:39 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-9051618414663407918</guid><description>&lt;p&gt;NEXTSTEP/OPENSTEPの時代から、知る人ぞ知る&lt;a href="http://www.obdev.at/products/launchbar/index.html"&gt;LaunchBar&lt;/a&gt;ですが、ついに&lt;a href="http://www.obdev.at/products/launchbar/beta.html"&gt;バージョン5のβ版&lt;/a&gt;が出ました。
今回も期待を裏切ることなくさらに便利になっています。&lt;/p&gt;

&lt;p&gt;以下、新バージョンをざっと使ってみて、便利だと思った機能をリストアップしてみました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firefox3のブックマークや履歴をサポート。

&lt;ul&gt;
&lt;li&gt;以前のFirefoxのブックマークや履歴をLaunchBarのインデックス画面(Cmd+Opt+i)で削除してから、再度登録する必要があるようです。&lt;/li&gt;
&lt;li&gt;Firefoxで使われているSQLiteの性質上、 &lt;strong&gt;Firefoxの起動中はインデックスのアップデートをしてくれないようです。&lt;/strong&gt;&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;設定画面でホットキーがいろいろとカスタマイズできるようになりました。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clipboard History&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;クリップボードの履歴を再利用できます。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;クリップマージ&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cmd-C&lt;/strong&gt; を2回押すことで、選択したクリップボード履歴を現在のクリップボードに追加することができます。&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Quick Look

&lt;ul&gt;
&lt;li&gt;アイテムを表示した状態で &lt;strong&gt;Space(または Cmd+Y)&lt;/strong&gt; を押すとファイルの内容を閲覧できます。もう一度Spaceを押すと閉じます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cmd + Option + Y&lt;/strong&gt; でフルスクリーン表示。&lt;/li&gt;
&lt;li&gt;この機能の追加により、インデックス画面を表示するためのショートカットが、Cmd+Yから &lt;strong&gt;Cmd+Opt+i&lt;/strong&gt; に変更されたようです。&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;ファイルをフォルダーに送るときのキーバインド

&lt;ul&gt;
&lt;li&gt;ファイルを選択してから、Tabを押して送り先のフォルダを選択する。このとき

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cmd+Return&lt;/strong&gt; で移動(既存のファイルは上書きされます)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cmd+Option+Return&lt;/strong&gt; でコピー(既存のファイルは上書きされます)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;ファイルを選択するときに&lt;strong&gt;Cmd+A&lt;/strong&gt;で複数アイテム選択(LaunchBarで一覧表示されているアイテムが全て選択されます)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;iCalサポート

&lt;ul&gt;

&lt;li&gt;LaunchBarからiCalにイベントやTo-doを追加できるようになりました。

&lt;ul&gt;
&lt;li&gt;カレンダーを表示してSpaceを押すと入力できるようになります。

&lt;ul&gt;
&lt;li&gt;イベントの入力フォーマットは、 &lt;strong&gt;description @ date [and time]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;To-doの入力フォーマットは、&lt;strong&gt;description&lt;/strong&gt; または &lt;strong&gt;description &amp;gt; due date&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;新しいActionの追加

&lt;ul&gt;
&lt;li&gt;「Actions」の中にいろいろと便利なActionが入っていますので、是非一度目を通しておくと良いと思います。&lt;/li&gt;

&lt;li&gt;Actionの実体はAppleScriptやシェルスクリプトですので、 &lt;strong&gt;~/Library/Application Support/LaunchBar/Actions&lt;/strong&gt; の中に自作のActionを登録すれば、LaunchBarをさらに便利に拡張していくことができます。&lt;/li&gt;
&lt;li&gt;以下便利そうなAction

&lt;ul&gt;
&lt;li&gt;ファイルを選択して→ &lt;strong&gt;Compress&lt;/strong&gt; でZIPアーカイブ。&lt;/li&gt;
&lt;li&gt;ファイルを選択して→ &lt;strong&gt;Copy as PlainText&lt;/strong&gt; でファイルのパスをコピー&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Show IP Address&lt;/strong&gt; で現在のIPアドレスを表示。&lt;/li&gt;
&lt;li&gt;起動中のアプリケーションを表示して(Cmd+R)→ &lt;strong&gt;Quit Application&lt;/strong&gt; で終了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quit All Application&lt;/strong&gt; で全てのアプリケーションを終了&lt;/li&gt;
&lt;li&gt;画像ファイルを選択して→フォーマット変更、反転、回転などもできます。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;

&lt;li&gt;その他

&lt;ul&gt;
&lt;li&gt;Search Templateで &lt;strong&gt;Shift+Space&lt;/strong&gt; を押すと、最後に入力した検索文字列を再利用できるようになりました。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;電卓機能(Calculator)

&lt;ul&gt;
&lt;li&gt;かなり高機能になってます。&lt;/li&gt;
&lt;li&gt;bcベースになりました。&lt;/li&gt;
&lt;li&gt;対数、分数、指数、三角関数などが扱えるようになりました。

&lt;ul&gt;
&lt;li&gt;下記はショートカットの一部です。
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;P&lt;/strong&gt; →pow(|)
&lt;ul&gt;
&lt;li&gt;例)pow(2|3)で「2の3乗」&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Q&lt;/strong&gt; →Sqrt()&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;G&lt;/strong&gt; →log()&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S&lt;/strong&gt; →sin()&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C&lt;/strong&gt; →cos()&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;T&lt;/strong&gt; →tan()&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R&lt;/strong&gt; →1/()&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;D&lt;/strong&gt; →lD()&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS&lt;/strong&gt; →asin()&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;以前は数字キーを押すといきなりCalculatorが起動していたのですが、設定画面でそれを無効にできるようになりました。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;自動ソフトウェアアップデート機能が付きました。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-9051618414663407918?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-14T14:39:39.920+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2008/12/launchbar-5.html</feedburner:origLink></item><item><title>「The evolution of Perl frameworks」日本語要約</title><link>http://feedproxy.google.com/~r/probo/~3/z3prnhHp_AY/evolution-of-perl-frameworks.html</link><category>perl</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sat, 15 Nov 2008 00:46:54 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-8114567159106740570</guid><description>&lt;p&gt;原文は
&lt;a href="http://perlbuzz.com/2008/11/the-evolution-of-perl-frameworks.html"&gt;The evolution of Perl frameworks&lt;/a&gt;
&lt;/p&gt;

&lt;h4&gt;Perlフレームワークの進化&lt;/h4&gt;
&lt;p&gt;西暦2006年、Perl製Webフレームワークの土俵では重量級のCatalystと軽量級のCGI::Applicationが戦っていた。その後、Perl製フレームワークの選択肢は進化を遂げた。CGI::ApplicationとCatalystは共に人気を保っているものの、最近では新たな選択肢もいくつか登場した。以下でザッと説明しよう。&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;Titanium&lt;/dt&gt;
&lt;dd&gt;CGI::Applicationにお勧めのプラグイン集と統一されたドキュメントがバンドルされたもので、インストールは比較的簡単である&lt;/dd&gt;
&lt;dd&gt;ベースとなっているコンポーネントは既に使われている安定したもので、改名してあるものの、安心かつ安定して使えるものである&lt;/dd&gt;
&lt;dd&gt;将来、より簡単にインストールできるように、依存関係チェーンを盛り込んだパッケージダウンロードの仕組みが提供される予定である&lt;/dd&gt;

&lt;dt&gt;HTTP::Engine&lt;/dt&gt;
&lt;dd&gt;Catalystに見られるようなHTTPリクエストオブジェクトをMooseをベースで発展させたもの&lt;/dd&gt;
&lt;dd&gt;Webアプリケーションを様々なサーバーバックエンド上で動作させるための抽象化を取り入れている&lt;/dd&gt;
&lt;dd&gt;手短かに言うと、Webフレームワーク中のHTTP部分にフォーカスしたものである&lt;/dd&gt;

&lt;dt&gt;MojoとMojolicious&lt;/dt&gt;
&lt;dd&gt;Catalystの初期コントリビューターの一人であるSebastian Riedel氏率いるプロジェクトを代表するもの&lt;/dd&gt;
&lt;dd&gt;Mojoは"core Perl"に依存しないという特色がある&lt;/dd&gt;
&lt;dd&gt;MojoはHTTP::Engineのような低レベルなHTTPコンポーネントを提供している&lt;/dd&gt;
&lt;dd&gt;一方のMojoliciousは、Mojo上に一つの完成したフレームを構築可能なことを示すものである&lt;/dd&gt;
&lt;dd&gt;Mojoliciousの特徴的な機能として、目新しいディスパッチの設計があるが、これはRuby on Railsの"Routes"の精神に基づいている&lt;/dd&gt;
&lt;/dl&gt;

&lt;h5&gt;私の見る最近のトレンド&lt;/h5&gt;
&lt;dl&gt;
&lt;dt&gt;共通基盤&lt;/dt&gt;
&lt;dd&gt;Perlフレームワークが高レベルなところで歩み続ける一方で、私たちは引き続き、有用なモジュールを共有することで協力していく&lt;/dd&gt;
&lt;dd&gt;たとえばHTTP::FillInFormやData::FormValidatorのようなプロジェクトは、いくつかのフレームワークで使われているが、再発明されることはない。&lt;/dd&gt;
&lt;dt&gt;CGI.pm死すべし&lt;/dt&gt;
&lt;dd&gt;私たちが同じモジュールを共有する一方、HTTP::EngineとCatalystとMojoは全て固有のHTTPリクエストオブジェクトを考案しており、それらがCGI.pmの機能を置き換えている。&lt;/dd&gt;
&lt;dd&gt;そこには明らかに、CGI名前空間内に172のサブルーチンを詰め込んだ定番モジュールを越えた利益がある。&lt;/dd&gt;
&lt;dd&gt;(この点に関してCGI::Applicationは中立的な立場を維持しており、クエリーオブジェクトをアウトソーシングしている)&lt;/dd&gt;
&lt;dt&gt;収束の可能性&lt;/dt&gt;
&lt;dd&gt;CGI::ApplicationとCatalystではPluginの多くがかなり類似しているものの互換性は無い。これらはオープンソースなので、通常あるフレームワークから別のものへ移植することは簡単ではあるが、それは望ましいことでは無い。&lt;/dd&gt;
&lt;dd&gt;HTTP::EngineとMojoは共に「フレームワークのためのフレームワーク」のようなものである。&lt;/dd&gt;
&lt;dd&gt;軽量なフレームワークあるいは際立ったフレームワークを使いたがるプログラマー達には人目を引くような経験をもたらすとはいえ、私が思うに、プロジェクトにとっての将来性は、どちらかのバックエンドを使うということで落ち着くだろう。&lt;/dd&gt;
&lt;dd&gt;結果、それは広くPerlコミュニティにとって有益な"web framework plugins"ということになるだろう&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;Mark Stosberg氏は10年以上の間、WebプログラミングにPerlを使い続けてきました。氏はSummersaultにおける開発の主役であり、TitaniumやData::FormValidatorを含むいくつかのCPANモジュールのメンテナーでもあります。&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-8114567159106740570?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-15T17:46:54.446+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2008/11/evolution-of-perl-frameworks.html</feedburner:origLink></item><item><title>Catalystで一行掲示板</title><link>http://feedproxy.google.com/~r/probo/~3/dkkxbyrLvp0/catalyst.html</link><category>Fukuoka Perl Mongers</category><category>perl</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sat, 08 Nov 2008 08:29:01 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-4826741257285675632</guid><description>&lt;p&gt;&lt;a href="http://fukuoka.pm.org/"&gt;Fukuoka Perl Mongers&lt;/a&gt;の&lt;a href="http://fukuoka.pm.org/2008/10/12.html"&gt;第12回定例勉強会&lt;/a&gt;で発表させていただいた資料を公開します。アプリケーションとしては、かなり貧弱なものですが、Catalystの触りの部分だけでも理解していただければ幸いです。&lt;/p&gt;

&lt;h2&gt;&lt;a id="sec1"&gt;&lt;/a&gt;
Catalystで一行掲示板&lt;/h2&gt;

&lt;div class="contents"&gt;
&lt;dl&gt;
&lt;dt&gt;
&lt;a href="#sec1"&gt;Catalystで一行掲示板&lt;/a&gt;
&lt;/dt&gt;
&lt;dd&gt;
&lt;dl&gt;

&lt;dt&gt;
&lt;a href="#sec2"&gt;目的&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec3"&gt;今回実装した機能&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec4"&gt;開発環境&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec5"&gt;インストール&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;

&lt;a href="#sec6"&gt;開発用サーバー起動&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec7"&gt;初期設定&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec8"&gt;URIマッピングを決める&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec9"&gt;コントローラー(Controller)生成&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec10"&gt;Template Toolkit(TT)の初期設定&lt;/a&gt;

&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec11"&gt;テスト&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec12"&gt;データベース&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec13"&gt;テンプレート(View)作成&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec14"&gt;コメント投稿フォームを表示するメソッドを実装&lt;/a&gt;
&lt;/dt&gt;

&lt;dt&gt;
&lt;a href="#sec15"&gt;ログイン機能&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec16"&gt;動作確認&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec17"&gt;足りない機能&lt;/a&gt;
&lt;/dt&gt;
&lt;dt&gt;
&lt;a href="#sec18"&gt;Reference&lt;/a&gt;
&lt;/dt&gt;
&lt;/dl&gt;

&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;


&lt;h3&gt;&lt;a id="sec2"&gt;&lt;/a&gt;
目的&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;とにかくCatalystで動作するものを作ってみる。&lt;/li&gt;
&lt;li&gt;実装は簡単に。

&lt;ul&gt;
&lt;li&gt;ログイン/ログアウトは実装する。&lt;/li&gt;
&lt;li&gt;DBのテーブルリレーションは一箇所くらいやってみる。&lt;/li&gt;

&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;DBは設置が簡単なSQLiteを使う。&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;&lt;a id="sec3"&gt;&lt;/a&gt;
今回実装した機能&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;一行掲示板&lt;/li&gt;
&lt;li&gt;ログイン機能&lt;/li&gt;
&lt;li&gt;一覧表示機能&lt;/li&gt;

&lt;li&gt;コメント投稿機能&lt;/li&gt;
&lt;li&gt;バリデーションは実装していません。&lt;/li&gt;
&lt;li&gt;画面デザインは全くやってません。&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;&lt;a id="sec4"&gt;&lt;/a&gt;
開発環境&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Mac OS X 10.5

&lt;ul&gt;
&lt;li&gt;ターミナル&lt;/li&gt;

&lt;li&gt;テキストエディタ&lt;/li&gt;
&lt;li&gt;Webブラウザ&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Perl 5.8.8&lt;/li&gt;
&lt;li&gt;Sqlite3&lt;/li&gt;
&lt;li&gt;Catalyst (5.7014)&lt;/li&gt;
&lt;li&gt;DBIx::Class (0.08010)&lt;/li&gt;
&lt;li&gt;DBIx::Class::Schema::Loader (0.04005)&lt;/li&gt;
&lt;li&gt;Template Toolkit (2.20)&lt;/li&gt;

&lt;/ol&gt;


&lt;h3&gt;&lt;a id="sec5"&gt;&lt;/a&gt;
インストール&lt;/h3&gt;

&lt;p class="first"&gt;PerlとSQLiteは既にインストールしてあるものとして解説します。&lt;/p&gt;

&lt;h4&gt;Catalystのインストール&lt;/h4&gt;

&lt;pre class="example"&gt;
cpan -i Task::Catalyst
&lt;/pre&gt;

&lt;p&gt;もしテストが失敗して、インストールできないようだったら、&lt;/p&gt;

&lt;pre class="example"&gt;
cpan -if Task::Catalyst
&lt;/pre&gt;


&lt;h4&gt;アプリケーションのスケルトンを作成&lt;/h4&gt;

&lt;p class="first"&gt;適当なディレクトリへ移動してから、以下のコマンドを実行&lt;/p&gt;

&lt;pre class="example"&gt;
catalyst.pl MyBBS
&lt;/pre&gt;


&lt;h4&gt;アプリケーションのルートディレクトリへ入る&lt;/h4&gt;

&lt;pre class="example"&gt;
cd MyBBS/
&lt;/pre&gt;

&lt;p&gt;以下、ファイル名やスクリプトの実行などは、このディレクトリを基点に解説しています。&lt;/p&gt;



&lt;h3&gt;&lt;a id="sec6"&gt;&lt;/a&gt;
開発用サーバー起動&lt;/h3&gt;

&lt;pre class="example"&gt;
perl script/mybbs_server.pl -r
&lt;/pre&gt;

&lt;p&gt;プラウザで&lt;a href="http://localhost:3000/"&gt;http://localhost:3000/&lt;/a&gt;
にアクセスしてみる。&lt;/p&gt;

&lt;p&gt;停止させる場合は、
キーボードの Ctrl+c&lt;/p&gt;


&lt;h3&gt;&lt;a id="sec7"&gt;&lt;/a&gt;
初期設定&lt;/h3&gt;

&lt;p class="first"&gt;とりあえず使いそうなモジュールを追記しておきます。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
use Catalyst qw/
    -Debug
    ConfigLoader
    Static::Simple
    StackTrace
    /;
&lt;/pre&gt;


&lt;h3&gt;&lt;a id="sec8"&gt;&lt;/a&gt;
URIマッピングを決める&lt;/h3&gt;

&lt;dl&gt;

&lt;dt&gt;&lt;strong&gt;ログイン画面&lt;/strong&gt;&lt;/dt&gt;&lt;dd&gt;
/login&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;ログアウト画面&lt;/strong&gt;&lt;/dt&gt;&lt;dd&gt;
/logout&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;コメント入力画面&lt;/strong&gt;&lt;/dt&gt;&lt;dd&gt;
/comment&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;コメント一覧画面&lt;/strong&gt;&lt;/dt&gt;&lt;dd&gt;
/comment/list&lt;/dd&gt;
&lt;/dl&gt;

&lt;h4&gt;コントローラー名決定&lt;/h4&gt;

&lt;pre class="example"&gt;
Root.pm (既にある)
Login.pm
Logout.pm
Comment.pm
&lt;/pre&gt;



&lt;h3&gt;&lt;a id="sec9"&gt;&lt;/a&gt;
コントローラー(Controller)生成&lt;/h3&gt;

&lt;p class="first"&gt;以下のコマンドを実行すると上記のControllerが
&lt;strong&gt;lib/MyBBS/Controller&lt;/strong&gt;

ディレクトリ内に作られます。&lt;/p&gt;

&lt;pre class="example"&gt;
perl script/mybbs_create.pl controller Login
perl script/mybbs_create.pl controller Logout
perl script/mybbs_create.pl controller Comment
&lt;/pre&gt;


&lt;h3&gt;&lt;a id="sec10"&gt;&lt;/a&gt;
Template Toolkit(TT)の初期設定&lt;/h3&gt;

&lt;h4&gt;テンプレートクラス作成&lt;/h4&gt;

&lt;p class="first"&gt;下記のコマンドを実行します。&lt;/p&gt;

&lt;pre class="example"&gt;
perl script/mybbs_create.pl view TT TTSite;
&lt;/pre&gt;


&lt;h4&gt;テンプレートファイルの拡張子を設定&lt;/h4&gt;

&lt;p class="first"&gt;下の一行を加えます。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS/View/TT.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
TEMPLATE_EXTENSION =&amp;gt; '.tt2',

&lt;/pre&gt;



&lt;h3&gt;&lt;a id="sec11"&gt;&lt;/a&gt;
テスト&lt;/h3&gt;

&lt;p class="first"&gt;以下のコマンドを実行します。&lt;/p&gt;

&lt;pre class="example"&gt;
CATALYST_DEBUG=0 prove --lib lib -v t
&lt;/pre&gt;


&lt;h3&gt;&lt;a id="sec12"&gt;&lt;/a&gt;

データベース&lt;/h3&gt;

&lt;h4&gt;DBスキーマーの作成&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;mybbs.sql&lt;/strong&gt; というファイルを以下の内容で作成します。&lt;/p&gt;

&lt;pre class="example"&gt;
-- First drop everything
DROP INDEX if exists &amp;quot;user_id_pkey&amp;quot;;
DROP INDEX if exists &amp;quot;comment_id_pkey&amp;quot;;
DROP INDEX if exists &amp;quot;login_name_unique_index&amp;quot;;
DROP TABLE if exists user;
DROP TABLE if exists comment;

-- Create tables
CREATE TABLE user (
	id INTEGER PRIMARY KEY AUTOINCREMENT
	, login_name TEXT NOT NULL
	, password TEXT NOT NULL
	, email TEXT NOT NULL
	, name TEXT NOT NULL
	, delete_flag BOOLEAN NOT NULL default 'false'
	, created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP
	, updated_on TIMESTAMP
);

CREATE TABLE comment (
	id INTEGER PRIMARY KEY AUTOINCREMENT
	, statement TEXT NOT NULL
	, user_id INTEGER NOT NULL
	, delete_flag BOOLEAN NOT NULL default 'false'
	, created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP
	, updated_on TIMESTAMP
    , FOREIGN KEY(user_id) REFERENCES user(id) ON DELETE CASCADE
);

-- Create indexes
CREATE INDEX &amp;quot;user_id_pkey&amp;quot; ON &amp;quot;user&amp;quot; (&amp;quot;id&amp;quot;);
CREATE INDEX &amp;quot;comment_id_pkey&amp;quot; ON &amp;quot;comment&amp;quot; (&amp;quot;id&amp;quot;);
CREATE UNIQUE INDEX &amp;quot;login_name_unique_index&amp;quot; ON &amp;quot;user&amp;quot; (&amp;quot;login_name&amp;quot;);

-- Insert test users
INSERT INTO user
    (
    login_name
    , password
    , email
    , name
    )
    VALUES
    (
    'foo'
    , 'foo'
    , 'foo@example.com'
    , 'Mr. Foo'
    );
INSERT INTO user
    (
    login_name
    , password
    , email
    , name
    )
    VALUES
    (
    'bar'
    , 'bar'
    , 'bar@example.com'
    , 'Mr. Bar'
    );

&lt;/pre&gt;


&lt;h4&gt;データベース作成&lt;/h4&gt;

&lt;p class="first"&gt;上で作成した &lt;em&gt;mybbs.sql&lt;/em&gt; をsqlite3に読み込んでデータベースを作成します。
以下のコマンドを実行します。&lt;/p&gt;

&lt;pre class="example"&gt;
sqlite3 mybbs.db &amp;lt; mybbs.sql
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;mybbs.db&lt;/strong&gt; というファイルが生成されているのを確認します。&lt;/p&gt;


&lt;h4&gt;DBIx::Class&lt;/h4&gt;

&lt;p class="first"&gt;Perlの代表的なO/Rマッパーを使用しますが、今回のアプリケーションでは、ほとんどその存在を意識することはないと思います。&lt;/p&gt;


&lt;h4&gt;スキーマークラスを生成する&lt;/h4&gt;

&lt;p class="first"&gt;以下のコマンドを実行します。&lt;/p&gt;

&lt;pre class="example"&gt;
rm lib/MyBBS/Schema.pm;
perl script/mybbs_create.pl model DB DBIC::Schema MyBBS::Schema create=static dbi:SQLite:mybbs.db;
&lt;/pre&gt;

&lt;p&gt;データベース( &lt;em&gt;mybbs.sql&lt;/em&gt; )に変更があったときには、再度上のコマンドを実行してください。&lt;/p&gt;


&lt;h4&gt;リレーションシップの設定&lt;/h4&gt;

&lt;p class="first"&gt;上で作成したSQLが正しければ、すでに自動で設定されています。&lt;/p&gt;



&lt;h3&gt;&lt;a id="sec13"&gt;&lt;/a&gt;
テンプレート(View)作成&lt;/h3&gt;

&lt;p class="first"&gt;最初にエラーメッセージとステータスメッセージを表示する領域を追記しておきます。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;root/lib/site/layout&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
&amp;lt;div id=&amp;quot;content&amp;quot;&amp;gt;

&amp;lt;span class=&amp;quot;message&amp;quot;&amp;gt;[% status_msg %]&amp;lt;/span&amp;gt;
&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;[% error_msg %]&amp;lt;/span&amp;gt;
[% content %]
&amp;lt;/div&amp;gt;
&lt;/pre&gt;

&lt;h4&gt;コメント一覧画面作成&lt;/h4&gt;

&lt;h5&gt;Controllerを実装&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS/Controller/Comment.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
=head2 list

コメント一覧を表示

=cut

sub list : Local {
    my ( $self, $c ) = @_;

    # コメントの配列
    $c-&amp;gt;stash-&amp;gt;{comments} = [
        $c-&amp;gt;model('DB::Comment')-&amp;gt;search(
            undef,
            {

                # 取得するカラム名を指定します。
                # ここでは関連テーブルからログイン名(login_name)も取得しています。
                columns =&amp;gt; [qw/statement user_id.login_name/],

                # リレーション名を指定
                join =&amp;gt; 'user_id',
            }
        )
    ];

    $c-&amp;gt;stash-&amp;gt;{template} = 'comment/list.tt2';
}

&lt;/pre&gt;




&lt;h4&gt;テンプレート&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;root/src/comment/list.tt2&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
[% META title = 'コメント一覧' -%]

&amp;lt;table&amp;gt;
  [% FOREACH comment IN comments -%]
  &amp;lt;tr&amp;gt;

    &amp;lt;td&amp;gt;[% comment.statement %]&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;[% comment.user_id.login_name %]&amp;lt;/td&amp;gt;
  &amp;lt;/tr&amp;gt;
  [% END -%]
&amp;lt;/table&amp;gt;

&amp;lt;p&amp;gt;
  &amp;lt;a href=&amp;quot;[% c.uri_for('form_create') %]&amp;quot;&amp;gt;コメントする&amp;lt;/a&amp;gt;
  &amp;lt;a href=&amp;quot;[% c.uri_for('/logout') %]&amp;quot;&amp;gt;ログアウト&amp;lt;/a&amp;gt;
&amp;lt;/p&amp;gt;

[%# USE Dumper(Indent=1) -%]
[%# Dumper.dump(comments) %]
&lt;/pre&gt;



&lt;h3&gt;&lt;a id="sec14"&gt;&lt;/a&gt;
コメント投稿フォームを表示するメソッドを実装&lt;/h3&gt;

&lt;h4&gt;コントローラー&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Comment.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;

=head2 form_create

入力フォームを表示するメソッド

=cut

sub form_create : Local {
    my ( $self, $c ) = @_;

    # テンプレートをセット
    $c-&amp;gt;stash-&amp;gt;{template} = 'comment/form_create.tt2';
}

&lt;/pre&gt;


&lt;h4&gt;テンプレート&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;root/src/comment/form_create.tt2&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
[% META title = 'コメント入力' -%]

&amp;lt;form method=&amp;quot;post&amp;quot; action=&amp;quot;[% c.uri_for('form_create_do') %]&amp;quot;&amp;gt;

  &amp;lt;table&amp;gt;
    &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Comment:&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;textarea name=&amp;quot;statement&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
  &amp;lt;/table&amp;gt;

  &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;user_id&amp;quot; value=&amp;quot;[% c.user.id %]&amp;quot;&amp;gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;Submit&amp;quot; value=&amp;quot;Submit&amp;quot;&amp;gt;

&amp;lt;/form&amp;gt;

&amp;lt;p&amp;gt;
  &amp;lt;a href=&amp;quot;[% c.uri_for('/comment/list') %]&amp;quot;&amp;gt;コメント一覧へ&amp;lt;/a&amp;gt;
  &amp;lt;a href=&amp;quot;[% c.uri_for('/logout') %]&amp;quot;&amp;gt;ログアウト&amp;lt;/a&amp;gt;

&amp;lt;/p&amp;gt;
&lt;/pre&gt;



&lt;h4&gt;入力されたコメントをDBに保存する処理を実装&lt;/h4&gt;

&lt;h5&gt;コントローラー&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS/Controller/Comment.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
=head2 form_create_do

入力されたコメントをDBに保存する処理を実装します。

=cut

sub form_create_do : Local {
    my ( $self, $c ) = @_;

    # フォームで入力されたコメントと入力したユーザーのID(hidden)を取得します。
    my $statement = $c-&amp;gt;request-&amp;gt;params-&amp;gt;{statement} || 'N/A';
    my $user_id   = $c-&amp;gt;request-&amp;gt;params-&amp;gt;{user_id}   || 'N/A';

    # DBに保存します。
    my $comment = $c-&amp;gt;model('DB::Comment')-&amp;gt;create(
        {   statement =&amp;gt; $statement,
            user_id   =&amp;gt; $user_id,
        }
    );

    # コメント一覧画面ヘリダイレクトします。
    $c-&amp;gt;response-&amp;gt;redirect($c-&amp;gt;uri_for('list'));

}

&lt;/pre&gt;




&lt;h3&gt;&lt;a id="sec15"&gt;&lt;/a&gt;
ログイン機能&lt;/h3&gt;

&lt;h4&gt;必要なモジュールを追加&lt;/h4&gt;

&lt;p class="first"&gt;ログイン機能の実装に必要なモジュールを追記します。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
Authentication

Session
Session::Store::FastMmap
Session::State::Cookie
&lt;/pre&gt;


&lt;h4&gt;設定ファイル&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;mybbs.conf&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
&amp;lt;authentication&amp;gt;
  default_realm dbic
  &amp;lt;realms&amp;gt;

    &amp;lt;dbic&amp;gt;
      &amp;lt;credential&amp;gt;
        class Password
        password_field password
        password_type clear
      &amp;lt;/credential&amp;gt;
      &amp;lt;store&amp;gt;
        class DBIx::Class
        user_class DB::User
        id_field login_name
      &amp;lt;/store&amp;gt;

    &amp;lt;/dbic&amp;gt;
  &amp;lt;/realms&amp;gt;
&amp;lt;/authentication&amp;gt;
&lt;/pre&gt;


&lt;h4&gt;コントローラー&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS/Controller/Login.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
=head2 INDEX

ログイン機能を実装します。

=cut

sub index : Path : Args(0) {
    my ( $self, $c ) = @_;

    # フォームに入力されたログイン名とパスワードを取得します。
    my $login_name = $c-&amp;gt;request-&amp;gt;params-&amp;gt;{login_name} || &amp;quot;&amp;quot;;
    my $password = $c-&amp;gt;request-&amp;gt;params-&amp;gt;{password} || &amp;quot;&amp;quot;;

    # もしログインIDとパスワードがどちらも取得できたら、
    if ( $login_name &amp;amp;&amp;amp; $password ) {

        # ログインを試みます。
        if ($c-&amp;gt;authenticate(
                {   login_name =&amp;gt; $login_name,
                    password =&amp;gt; $password,
                }
            )
            )
        {
            # ログインに成功したら、コメント一覧へリダイレクトします。
            $c-&amp;gt;response-&amp;gt;redirect( $c-&amp;gt;uri_for('/comment/list') );
            return;
        }
        else {

            # ログインに失敗したら、エラーメッセージをテンプレートにセットします。
            $c-&amp;gt;stash-&amp;gt;{error_msg} = &amp;quot;Bad username or password.&amp;quot;;
        }
    }

    # ログインページを表示します。
    $c-&amp;gt;stash-&amp;gt;{template} = 'login.tt2';
}

&lt;/pre&gt;


&lt;h4&gt;ログアウト&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS/Controller/Logout.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
=head2 index

ログアウト処理を実装します。

=cut

sub index : Path : Args(0) {
    my ( $self, $c ) = @_;

    # ログアウトします。
    $c-&amp;gt;logout;

    # トップページへリダイレクトします。
    $c-&amp;gt;response-&amp;gt;redirect( $c-&amp;gt;uri_for('/') );
}
&lt;/pre&gt;

&lt;h4&gt;ログインフォーム用テンプレート&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;root/src/login.tt2&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
[% META title = 'Login' %]

&amp;lt;!-- Login form --&amp;gt;
&amp;lt;form method=&amp;quot;post&amp;quot; action=&amp;quot;[% c.uri_for('/login') %]&amp;quot;&amp;gt;

  &amp;lt;table&amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;td&amp;gt;Login Name:&amp;lt;/td&amp;gt;
      &amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;login_name&amp;quot; size=&amp;quot;40&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;

    &amp;lt;/tr&amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;td&amp;gt;Password:&amp;lt;/td&amp;gt;
      &amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; size=&amp;quot;40&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;

    &amp;lt;/tr&amp;gt;
    &amp;lt;tr&amp;gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;submit&amp;quot; value=&amp;quot;Submit&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;

    &amp;lt;/tr&amp;gt;
  &amp;lt;/table&amp;gt;
&amp;lt;/form&amp;gt;

&amp;lt;p&amp;gt;
  [% IF c.user_exists %]
  既に '[% c.user.login_name %]' としてログインしています。&amp;lt;br /&amp;gt;
  こちらから&amp;lt;a href=&amp;quot;[% c.uri_for('/logout') %]&amp;quot;&amp;gt;ログアウト&amp;lt;/a&amp;gt;できます。
  [% ELSE %]
  ログインしてください
  [% END %]

&amp;lt;/p&amp;gt;

&lt;/pre&gt;


&lt;h4&gt;ログインチェック機能&lt;/h4&gt;

&lt;p class="first"&gt;ここでは、ログインしていないユーザーが、認証が必要なページに直接アクセスした場合にできないようにチェックする機能を実装します。&lt;/p&gt;

&lt;h5&gt;コントローラー&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;lib/MyBBS/Controller/Root.pm&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="example"&gt;
=head2 auto

ユーザーがログイン認証済かどうか検査します、認証されていないユーザーはログインページヘリダイレクトします。

=cut

sub auto : Private {
    my ( $self, $c ) = @_;

    # とりあえず認証していなくてもログインページだけはアクセスできるようにします。
    if ( $c-&amp;gt;controller eq $c-&amp;gt;controller('Login') ) {
        return 1;
    }

    # 認証されていなければ、ログインページへリダイレクトします。
    if ( !$c-&amp;gt;user_exists ) {

        $c-&amp;gt;response-&amp;gt;redirect( $c-&amp;gt;uri_for('/login') );

        return 0;
    }

    # 認証済ならば1を返します。
    return 1;
}
&lt;/pre&gt;

&lt;p&gt;Catalyst v5.66&lt;/p&gt;




&lt;h3&gt;&lt;a id="sec16"&gt;&lt;/a&gt;
動作確認&lt;/h3&gt;

&lt;p class="first"&gt;以上で、ひととおりの実装が終了しました。&lt;/p&gt;

&lt;p&gt;下記の項目を確認してみます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ログインできること。

&lt;ul&gt;
&lt;li&gt;ログイン名とパスワードは、foo/foo もしくは bar/bar&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;ログインしていない状態では、ログイン画面以外のURLには行けない(ログイン画面に飛ばされる))こと。&lt;/li&gt;

&lt;li&gt;ログアウトできること。&lt;/li&gt;
&lt;li&gt;コメント一覧が表示できること。&lt;/li&gt;
&lt;li&gt;コメント投稿できること。&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a id="sec17"&gt;&lt;/a&gt;
足りない機能&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;フォーム・バリデーション&lt;/li&gt;
&lt;li&gt;コメントの削除&lt;/li&gt;

&lt;li&gt;ユーザー追加&lt;/li&gt;
&lt;li&gt;ユーザー情報の編集・削除&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a id="sec18"&gt;&lt;/a&gt;
Reference&lt;/h3&gt;

&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a href="http://cpansearch.perl.org/~zarquon/Catalyst-Manual-5.7013/lib/Catalyst/Manual/Tutorial.pod"&gt;Catalyst::Manual::Tutorial &lt;/a&gt;(English)&lt;/strong&gt;&lt;/dt&gt;&lt;dd&gt;
もう少し複雑なアプリケーション(書籍データーベース)を作る過程が、このチュートリアルで解説されています。

&lt;p&gt;具体的には、&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ユーザーの役割(role)による権限(Authentication)の管理&lt;/li&gt;
&lt;li&gt;DBに保存されるパスワードをSHA-1でハッシュ化する方法。&lt;/li&gt;
&lt;li&gt;揮発性メッージ(Flash)の使い方。&lt;/li&gt;
&lt;li&gt;FormFuを使ったフォームの生成やバリデーション。&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p class="quoted"&gt;などです。&lt;/p&gt;
&lt;/blockquote&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-4826741257285675632?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-09T01:29:01.122+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2008/11/catalyst.html</feedburner:origLink></item><item><title>Mac OS X 版のNetBeans(6.5RC1)上にCubby(1.1.1)の開発環境を作ったときのメモ</title><link>http://feedproxy.google.com/~r/probo/~3/5Nm8Vri6SdA/netbeans65rc1cubby111.html</link><category>java</category><category>cubby</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Wed, 29 Oct 2008 03:04:26 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-8190661095358657868</guid><description>&lt;p&gt;仕事では専らEclipseを使っていますが、試しにNetBeansでやってみたところ、 意外と簡単に開発環境を作ることができたので、ログしておきます。Mac OS X以外のOSでもやり方は変わらないのではないかと思います。&lt;/p&gt;
  &lt;p&gt;自分の環境は、&lt;strong&gt;Mac OS X 10.5.5&lt;/strong&gt;、JREは&lt;strong&gt;build 1.5.0_16-b06-284&lt;/strong&gt;(Leopardに付属のもの)、&lt;strong&gt;Maven 2.0.9&lt;/strong&gt;です。&lt;/p&gt;

&lt;p&gt;Cubbyはシンプルでとても使い易いフレームワークですので、是非NetBeansユーザーにもその「サクサク感」を味わって欲しいと思います。&lt;/p&gt;

  &lt;h4&gt;1. NetBeansをインストール&lt;/h4&gt;
  &lt;dl&gt;
    &lt;dt&gt;ダウンロード&lt;/dt&gt;
    &lt;dd&gt;&lt;a href="http://download.netbeans.org/netbeans/6.5/rc/"&gt;http://download.netbeans.org/netbeans/6.5/rc/&lt;/a&gt;&lt;/dd&gt;
    &lt;dt&gt;インストール&lt;/dt&gt;
    &lt;dd&gt;途中、「使用許諾」の次の画面の左下にある&lt;strong&gt;「カスタマイズ」&lt;/strong&gt;ボタンから&lt;strong&gt;「Apache Tomcat 6.0.18」&lt;/strong&gt;を追加しました。&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;h4&gt;2. Mavenプラグインをインストールする&lt;/h4&gt;
  &lt;dl&gt;
    &lt;dd&gt;NetBeansを起動する&lt;/dd&gt;
    &lt;dd&gt;&lt;strong&gt;ツール &gt; プラグイン&lt;/strong&gt;から &lt;strong&gt;「Maven」&lt;/strong&gt;を選択してインストールします。&lt;/dd&gt;
    &lt;dd&gt;なお、&lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;について一点補足ですが、私の場合は既に過去に自前でインストールしたMavenにPATHを通しており、今回は自動的にそのMavenが使われていました。しかし、NetBeansにMavenプラグインをインストールした時点で、オプション画面上に「Embedded Maven version: 3.0-SNAPSHOT」という文字が表示されるようになりましたので、ひょっとしたら、あらかじめMaven自体をインストールしておく必要もないのかも知れません。&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;h4&gt;3. Cubbyプロジェクトを作成する&lt;/h4&gt;
  &lt;dl&gt;
    &lt;dt&gt;&lt;strong&gt;「ファイル &amp;gt; 新規プロジェクト」&lt;/strong&gt;を選択する。&lt;/dt&gt;
    &lt;dt&gt;ステップ1 (新規プロジェクト)&lt;/dt&gt;
    &lt;dd&gt;&lt;strong&gt;カテゴリ =&amp;gt; Maven プロジェクト=&amp;gt; Maven Project&lt;/strong&gt;&lt;/dd&gt;
    &lt;dt&gt;ステップ2 (Maven Archetype)&lt;/dt&gt;
    &lt;dd&gt;&lt;strong&gt;Add&lt;/strong&gt;ボタンを押して、以下の項目を入力します。&lt;/dd&gt;
    &lt;dd&gt;
      &lt;p&gt;GroupId: &lt;strong&gt;org.seasar.cubby&lt;/strong&gt;&lt;br&gt;
      ArtifactId: &lt;strong&gt;cubby-archetype&lt;/strong&gt;&lt;br&gt;
      Version: &lt;strong&gt;1.1.1&lt;/strong&gt;&lt;br&gt;
      Repository: &lt;strong&gt;http://maven.seasar.org/maven2/&lt;/strong&gt;&lt;/p&gt;
      &lt;p&gt;(上記の入力作業は初回のみです。 次回、新規にCubbyプロジェクトを作る際には、 &lt;strong&gt;「Cubby Archetype」&lt;/strong&gt;という選択肢を選ぶだけで、次の「ステップ3」に遷移します)&lt;/p&gt;
    &lt;/dd&gt;
    &lt;dd&gt;&lt;strong&gt;「OK」&lt;/strong&gt;ボタンを押します&lt;/dd&gt;
    &lt;dd&gt;&lt;strong&gt;「Custom archetype - cubby-archetype」&lt;/strong&gt;が表示されるので、それを選択して&lt;strong&gt;「Next &gt;」&lt;/strong&gt;ボタンを押します。&lt;/dd&gt;
    &lt;dt&gt;ステップ3 (Name and Location)&lt;/dt&gt;
    &lt;dd&gt;
	 &lt;p&gt;これから作成するプロジェクトの雛形を作成します。&lt;/p&gt;
      &lt;p&gt;入力例)&lt;br&gt;
      Project Name: &lt;strong&gt;cubbysample&lt;/strong&gt;&lt;br&gt; Artifact Id: &lt;strong&gt;cubbysample&lt;/strong&gt;&lt;br&gt; Group Id: &lt;strong&gt;com.sugmak&lt;/strong&gt;&lt;br&gt; Package: &lt;strong&gt;com.sugmak.cubbysample&lt;/strong&gt;&lt;/p&gt;
    &lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p&gt;&lt;strong&gt;「Finish」&lt;/strong&gt;ボタンを押すとプロジェクトが作成されます&lt;/p&gt;
  &lt;h4&gt;4. 実行環境を指定する&lt;/h4&gt;
  &lt;dl&gt;
    &lt;dt&gt;作成されたプロジェクト・ルートを右クリックして&lt;strong&gt;「Properties」&lt;/strong&gt;を選択する。&lt;/dt&gt;
    &lt;dt&gt;カテゴリから &lt;strong&gt;「Run」&lt;/strong&gt;を選択する。&lt;/dt&gt;
    &lt;dd&gt;Server: &lt;strong&gt;Tomcat 6.0&lt;/strong&gt;を選択する。&lt;/dd&gt;
    &lt;dt&gt;&lt;strong&gt;「了解」&lt;/strong&gt;ボタンを押してプロパティウィンドウを閉じる。&lt;/dt&gt;
  &lt;/dl&gt;
  &lt;h4&gt;5. アプリケーションを起動する&lt;/h4&gt;
  &lt;dl&gt;
    &lt;dd&gt;プロジェクト・ルートを右クリックして、 &lt;strong&gt;「Run」&lt;/strong&gt;を選択する。&lt;/dd&gt;
    &lt;dd&gt;Webブラウザから&lt;strong&gt;&lt;a href="http://localhost:8084/cubbysample/"&gt;http://localhost:8084/cubbysample/&lt;/a&gt;&lt;/strong&gt;にアクセスしてみる(私の場合、Tomcatは8080ではなく8084で起動していました。)。ポート番号はTool &gt; Serverで変更可能です。&lt;/dd&gt;
    &lt;dd&gt;Cubbyのサンプル・アプリケーションのページ(グリーンのヘッダー)が表示されていれば導入成功です。&lt;/dd&gt;
  &lt;/dl&gt;

  &lt;h4&gt;6. その他(デフォルトのJDKを変更したいとき)&lt;/h4&gt;
  &lt;p&gt;Core2Duo搭載のMacで動作しているLeopardの場合ですと、/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/HomeというPATHにJDK1.6が入っていますが、それでもNetBeansはJDK1.5の方をDefaultのプラットフォームに設定するようです。JDK1.6をデフォルトにしたい場合には、&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;~/.netbeans/6.5rc1/etc/netbeans.conf&lt;/strong&gt;をテキストエディタで開く(無ければ作成する)。&lt;/dt&gt;
&lt;dt&gt;以下の1行を追記する。&lt;/dt&gt;
&lt;dd&gt;&lt;strong&gt;netbeans_jdkhome=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home&lt;/strong&gt;&lt;/dd&gt;

&lt;dt&gt;NetBeansを再起動する。&lt;/dt&gt;
&lt;dt&gt;&lt;strong&gt;Tools &gt; Java Platform&lt;/strong&gt;でJDK1.6(Default)になっていることを確認する。&lt;/dt&gt;
&lt;/dl&gt;

&lt;p&gt;セットアップは以上ですが、この先は、実際に開発を進めた訳ではないので、未知数なところもありますが、セットアップに限って言えば、&lt;a href="http://cubby.seasar.org/"&gt;Cubbyのオフィシャルサイト&lt;/a&gt;で説明されているような、&lt;a href="http://cubby.seasar.org/setup.html"&gt;コマンドラインからMavenを操作してプロジェクトをセットアップする方法&lt;/a&gt;よりは敷居は低いのではないかと思います。&lt;/p&gt;

&lt;p&gt;なお、Eclipseでは別途プラグインが必要な、*.propertiesファイルの日本語表示やSubversionとの連携などはプラグイン無しで実現できています。&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;
&lt;p&gt;
matsuokaさんからのコメントで、Windowsでも上記手順で動作したとの報告をいただきました。またWindowsでの文字コードの設定方法もアドバイスしていただきました。
&lt;p style="border:1px solid #ccc;background:#efefef;padding:1em;"&gt;
Windows でも同様の手順で動きました。
Windows ではファイルのエンコードが Shift_JIS で扱われるので netbeans.conf の netbeans_default_options に "-J-Dfile.encoding=UTF-8" を付け加えておく方がいいです。
&lt;/p&gt;
&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-8190661095358657868?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-29T19:04:26.178+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sugmak.com/2008/10/netbeans65rc1cubby111.html</feedburner:origLink></item><item><title>謹賀新年 - 最近の生活とお仕事</title><link>http://feedproxy.google.com/~r/probo/~3/KzzgydAt_og/blog-post.html</link><category>近況報告</category><category>福岡</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Mon, 27 Oct 2008 21:38:21 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-4779278101260609481</guid><description>&lt;p&gt;
あけまして、おめでとうございます。
&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;単身赴任しています。11月の初旬より、福岡市に単身赴任しています。住み慣れた山口の田舎に家族を残し、一人都会のワンルーム・マンションで暮らしております。&lt;/li&gt;
 &lt;li&gt;と書くと、かなり悲壮感が漂いますが、現在やっている仕事は、これ以上無いくらい楽しくやり甲斐のあるものでして、念願だったMac用のソフト開発、それからCatalystを使ったシステム開発を主にやっています。&lt;/li&gt;
 &lt;li&gt;「福岡で働くWebの人々」。という一風変わった名前のコミュニティを、昨年春に同志と共に立ち上げ、地道に活動を続けています。名前からだと一体どんなコミュニティか判り難いのですが、平たく言うと、Webの制作現場を少しでも楽しくしようというコミュニティです。&lt;/li&gt;
 &lt;li&gt;Fukuoka Perl Mongers(略称: Fukuoka.pm)というコミュニティを設立しました。こちらは非常に目的が判り易い集団で、プログラミング言語「Perl」を愛する人たちの集いです。私がリーダーとなって、昨年11月に設立しました。&lt;/li&gt;
 &lt;li&gt;昨年末に毎日新聞の福岡版に写真付きで載りました(先に断わっておきますが、悪いことをしたのではありません)。&lt;a href="http://mainichi.jp/area/fukuoka/pinpoint/"&gt;「ピンポイント」&lt;/a&gt;というコラム欄に掲載されました。簡単に言いますと、私自身の仕事とどういった経緯でその仕事をやっているかみたいな紹介がメインだったのですが、私は生来、直感と好奇心の赴くまま、いろいろやってみないと気が済まない質でして。気が付けば、随分ややこしい経歴の持ち主になってしまいました。今回の取材インタビューでお話しした内容は、そんな私の長くてややこしいプロフィールが、編集者様の努力により、すっきりと編集されていました。&lt;/li&gt;
 &lt;li&gt;会社設立２年目。良くも悪くも勉強になりました。元々直感とか好奇心で生きてきた人間ですので、今年はもっとその「内なる声」に正直になろうと思います。人生は短いのですから。&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-4779278101260609481?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-28T13:38:21.993+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2008/01/blog-post.html</feedburner:origLink></item><item><title>Googleの検索ページでVimライクなショートカットキーが使える</title><link>http://feedproxy.google.com/~r/probo/~3/sTNYOaAPluM/googlevim.html</link><category>雑記</category><author>noreply@blogger.com (mac)</author><pubDate>Tue, 23 Oct 2007 01:49:49 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-1774389127398544275</guid><description>&lt;p&gt;Digg経由で知りました。&lt;br /&gt;
&lt;a href="http://digg.com/software/How_Google_does_Vim"&gt;How Google does Vim&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
例えば、&lt;br /&gt;
&lt;a href="http://www.google.com/search?q=rattlesnake&amp;esrch=BetaShortcuts"&gt;http://www.google.com/search?q=rattlesnake&amp;esrch=BetaShortcuts&lt;/a&gt;&lt;br /&gt;
上記のページでは、右ソデに記載されているような、ショートカット・キーが使えます。通常の検索結果のURLに、&lt;strong&gt;&amp;esrch=BetaShortcuts&lt;/strong&gt;を追加するだけで、この機能が使えるようです。
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vimの編集モードと同じように、&lt;strong&gt;j&lt;/strong&gt;と&lt;strong&gt;k&lt;/strong&gt;で検索結果内を上下移動できます。&lt;/li&gt;
&lt;li&gt;ページの一番下あるいは一番上まで行くと、その次は前後のページへ移動するようになっています。&lt;/li&gt;
&lt;li&gt;カーソルが置いてあるURLへジャンプするには、アルファベットの&lt;strong&gt;o&lt;/strong&gt;もしくは&lt;strong&gt;Enter&lt;/strong&gt;キーをタイプします。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/&lt;/strong&gt;（スラッシュ）で検索ボックスへ移動し、ESCで抜けます。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;上記のURLにさらに&lt;strong&gt;&amp;complete=1&lt;/strong&gt;を加えると、検索フィールド上で、Googleサジェストの補完機能も使えますが、補完候補のリスト内ではショートカット・キーは使えないようでした。また現時点では、google.co.jpの方では、このショートカット機能は使用できませんでした。&lt;/p&gt;

&lt;p&gt;今のところ、&lt;a href="http://www.google.com/experimental/"&gt;experimental（実験的）な機能&lt;/a&gt;という事ですが、自分が慣れ親しんでいるエディターのショートカットキーを、おそらく最も頻繁に利用しているサイト上でも使えるのは、とても便利だと思いました。ソフトウェアだけでなくWebサイト上でも、ヘビー・ユーザーにとっての理想的なUIというのはショートカット・キーにあるのかも知れません。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-1774389127398544275?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-23T17:49:49.910+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/10/googlevim.html</feedburner:origLink></item><item><title>TwitterからJaikuへ</title><link>http://feedproxy.google.com/~r/probo/~3/QOpwp92HP-M/twitterjaiku.html</link><category>雑記</category><author>noreply@blogger.com (mac)</author><pubDate>Thu, 11 Oct 2007 09:02:43 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-8258185373489773544</guid><description>&lt;p&gt;1年ほど前から&lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;を使い始め、半年ほど前からは、&lt;a href="http://www.jaiku.com/"&gt;Jaiku&lt;/a&gt;も併用してきました。どちらも殆ど同じ様な趣向のサービスですが、自分の周囲では、Twitterの方がユーザー数が圧倒的に多いので、最初はTwitterをメインで使っていました。ところが、ここ一ヶ月位のことでしょうか？Twitterのシステム的な不具合が見受けられるようになったので、２週間ほど前に思い切ってJaikuをメインに切り替えました。&lt;/p&gt;

&lt;p&gt;以下の3点が、Twitterに比べてJaikuが便利だと感じているところです。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;@&amp;lt;ユーザー名&amp;gt;の発言がコメントになる。@（アットマーク）の後ろにユーザー名を付けて発言すると、Twitterでは特定のユーザーに向けた発言になりますが、Jaikuの場合、その相手ユーザーが最後に投稿した発言へのコメントという形で扱われます。ブラウザ経由で見ると解り易いと思いますが、メールやBBSでいうところの「スレッド表示」のように、一つの発言に対するコメントが、数珠繋ぎになった状態で保存されます。Twitterに比べると会話の流れを掴み易く、後からログを見返すときにも便利です。なお、この@（アットマーク）を使ったコメント投稿機能はIM（インスタントメッセンジャー）専用の機能です&lt;/li&gt;
&lt;li&gt;チャンネル機能。Jaikuにはチャンネル（channel）という概念があります。これは平たく言うとグループ機能みたいなものです。ユーザーは自分が興味のあるチャンネルを自由にfollowすることができます。#の後にチャンネル名を付けてから発言すると、その発言はチャンネルに対する発言となり、そのチャンネルをfollowしているユーザー全体に行き渡ります。ちょうどメーリングリストに投稿するのに似ています。チャンネルは誰でも自由に立ち上げることができます。&lt;/li&gt;
&lt;li&gt;外部RSSフィードを読み込める。Jaikuでは、自分が書いているブログやオンラインブックマーク等、外部のRSSフィードを読み込んで、それを自分の発言として自動的にポストしてくれます。したがって、読み込む外部RSSさえセットしておけば、例え放置しておいたとしても、端から見ると、それなりに投稿（発言）しているように見えます。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;以上、個人的な感想ですが、コミュニケーションの道具としては、TwitterよりもJaikuの方が便利だと感じています。なお、@などの各種コマンド機能については&lt;a href="http://jaiku.com/help/commands"&gt;こちらのページ&lt;/a&gt;が参考になると思います。&lt;/p&gt;

&lt;p&gt;さて、これまで僕の中では、Twitterはシステム的に不安定で遅いというイメージがありましたが、その点に関していえば、Jaikuは今のところ快適です。最近、僕の周辺でも、僕と同じ様な理由でTwitterからJaikuへ乗り換える人や、併用する人が増えていました。しかし、ユーザー数が増加することで、パフォーマンスが落ちることも考えられます。ところが、なんと昨日（10/10）、&lt;a href="http://jaiku.com/help/google"&gt;GoogleがJaikuを買収したという発表&lt;/a&gt;がありました。これから先、Jaikuがどのように変わるかは判りませんが、少なくとも僕が心配していたパフォーマンス面で、Jaikuは強力な後ろ盾を得たということになると思います。これを機にJaikuユーザーが一気に増加するかも知れませんが、Twitterのこともありますので、冷静に見極めたいと思います。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-8258185373489773544?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-12T01:02:43.947+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/10/twitterjaiku.html</feedburner:origLink></item><item><title>PiF &amp; FWD 合同勉強会開催のお知らせ</title><link>http://feedproxy.google.com/~r/probo/~3/87uQyfznOTE/pif-fwd.html</link><category>福岡で働くWebの人々</category><category>php in fukuoka</category><author>noreply@blogger.com (mac)</author><pubDate>Mon, 08 Oct 2007 21:47:30 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-7685280490307218889</guid><description>&lt;p&gt;僕も立ち上げメンバーの一人として、その運営に携わっている&lt;a href="http://www.fww.cc/"&gt;「福岡で働くWebの人々」&lt;/a&gt;ですが、今月の活動は、ちょっと趣向を変えて、「地元コミュニティによる勉強会の開催をアシストする」という役目に回ってみました。

&lt;p&gt;&lt;a href="http://www.fww.cc/2007/10/pif.html"&gt;PiF &amp; FWD 合同勉強会開催のお知らせ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;セミナーが「トップダウン」であるならば、勉強会というのは「ボトムアップ」な場所です。一方通行ではなく、参加者による積極的な意見や質問が飛び交い、そこから生まれるものに期待したいと思います。&lt;/p&gt;

&lt;p&gt;多数の皆様のご参加をお待ちいたしております。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-7685280490307218889?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-09T13:47:30.267+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/10/pif-fwd.html</feedburner:origLink></item><item><title>FWW Weekend Seminar Vol.2</title><link>http://feedproxy.google.com/~r/probo/~3/CMbHBs8q4No/fww-weekend-seminar-vol2.html</link><category>福岡で働くWebの人々</category><author>noreply@blogger.com (mac)</author><pubDate>Wed, 26 Sep 2007 07:49:28 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-8953129692917769390</guid><description>&lt;p&gt;
僕も立ち上げメンバーの一人として、その運営に携わっているコミュニティ「福岡で働くWebの人々」ですが、相変わらず「できることからコツコツ」と地道に活動を続けておりまして、今週末にもイベントを行ないます。
&lt;/p&gt;

&lt;p&gt;
今回は、雑誌&lt;a href="http://www.gihyo.co.jp/magazines/WSE/"&gt;「Web Site Expert」（技術評論社）&lt;/a&gt;で「中小企業が『勝つ』ためのWeb制作と運営ノウハウ」という連載記事を執筆中の&lt;a href="http://iddy.jp/profile/horri/"&gt;堀内敬子さん&lt;/a&gt;をゲストにお招きします。なお、今回は参加費は有料（1,500円）です。詳細は下記のリンクからどうぞ。
&lt;/p&gt;

&lt;a href="http://www.fww.cc/2007/09/fww-weekend-seminar-vol2.html"&gt;FWW Weekend Seminar Vol.2のお知らせ&lt;/a&gt;

&lt;p&gt;セミナー終了後には懇親会も予定されています。是非奮ってご参加ください。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-8953129692917769390?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-26T23:49:28.358+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/09/fww-weekend-seminar-vol2.html</feedburner:origLink></item><item><title>メキシコ</title><link>http://feedproxy.google.com/~r/probo/~3/hAkCmgSNmAY/blog-post.html</link><category>雑記</category><author>noreply@blogger.com (mac)</author><pubDate>Wed, 19 Sep 2007 18:09:36 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-3817569951406865634</guid><description>&lt;p&gt;
まだ訪れたことはありませんが、太陽の国&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%AD%E3%82%B7%E3%82%B3"&gt;メキシコ&lt;/a&gt;が大好きです。「&lt;a href="http://en.wikipedia.org/wiki/Zihuatanejo"&gt;ジワタネホ(ZIHUATANEJO)&lt;/a&gt;」というリゾート地がありますが、そこは映画｢&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000IU4MVU/probo-22/ref=nosim/a"&gt;ショーシャンクの空に&lt;/a&gt;｣で「約束の場所」として登場したので、ご存知の方も多いかも知れませんが、僕も是非死ぬまでに一度は訪れてみたいと思っています。
&lt;/p&gt;

&lt;p&gt;
どうして僕がメキシコに興味を持ったのか？
そのきっかけについてお話しします。
&lt;/p&gt;

&lt;p&gt;
20代の前半、僕は米国南部のジョージァ州にある小さな大学へ留学しました。
せっかく留学するのなら、
日本人があまり居そうにない
南部の片田舎にある小さなカレッジを選んだのですが、
そこでは日本人はおろか、白人すらもマイノリティで、
学生の半数以上はアフロアメリカンやヒスパニックでした。
&lt;p&gt;
&lt;/p&gt;
ある日のこと、僕が住んでいた部屋の向かいに、
メキシコ人の集団が引っ越してきました。
僕はそれまで、メキシコといえば、&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%A4%E6%96%87%E6%98%8E"&gt;マヤ文明&lt;/a&gt;と&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B9%E3%83%86%E3%82%AB%E6%96%87%E6%98%8E"&gt;アステカ文明&lt;/a&gt;、メキシコ人と言えば&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AB%E3%83%AD%E3%82%B9%E3%83%BB%E3%82%B5%E3%83%B3%E3%82%BF%E3%83%8A"&gt;カルロス・サンタナ&lt;/a&gt;と&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%AB%E3%83%BB%E3%83%9E%E3%82%B9%E3%82%AB%E3%83%A9%E3%82%B9"&gt;ミル・マスカラス&lt;/a&gt;程度の非常に乏しい知識しか持ち合わせていなかったので、パンチョを纏った新しいご近所さんに興味津々でした。
&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;
&lt;a href="http://picasaweb.google.com/sugiyama.makoto/MarsEditImages/photo#5092520613872310194"&gt;&lt;img src="http://lh3.google.com/sugiyama.makoto/RqxEhFk2l7I/AAAAAAAAAJ4/t5wurklfUM8/s144/IMGP0646.JPG" style="float:left;margin:0 5px 5px 0;" /&gt;&lt;/a&gt;&lt;p&gt;
しばらく彼らを観察していましたが、
本当に勉強しに来たのかと思う位、
いつも歌ったり、踊ったり、酒を飲んだりしていました。
一方、彼らの方では、僕のことをメキシコ人だと勘違いしていたらしく、
たびたび僕にスペイン語で話しかてきました。
僕が日本人だということを明かすと、
今度はかなり日本人が珍しかったらしく、
もっと頻繁に話しかけてきました。
そうこうするうちに、すっかり打ち解けて、
週末には酒を酌み交わす仲になりました。
お互い辿々しい英会話しかできなかったので、
コミュニケーションには苦労することもありましたが、
実際につきあってみたメキシコ人たちは、
素直で、屈託が無くて、人なつこくて、陽気で、
前向きで、バイタリティに溢れた人たちでした。
これが僕とメキシコ人との最初の出会いです。
&lt;/p&gt;

&lt;a href="http://picasaweb.google.com/sugiyama.makoto/MarsEditImages/photo#5092520631052179394"&gt;&lt;img src="http://lh3.google.com/sugiyama.makoto/RqxEiFk2l8I/AAAAAAAAAKA/U5LYZ2_0DY8/s144/IMGP0037.JPG" style="float:left;margin:0 5px 5px 0;" /&gt;&lt;/a&gt;&lt;p&gt;
その後もアメリカのいろいろな都市でメキシコ人と出会いましが、
彼らのことを知れば知るほど、その独特の価値観や人生観に
深い共感を覚えるようになりました。
特に、人生を徹底的に楽しもうとする彼らの姿勢には尊敬の念すら抱きました。
ただ、「楽しむ」と言っても、彼らは自分とその仲間内で「楽しむ」のはもちろんのこと、
周囲にいる無関係な人たちにも、
楽しそうで幸せそうなオーラをばらまいてしまいます。
あれはなかなか日本人には真似できない芸当だと思いましたが、
多分それがメキシコ人が持っている「幸せや喜びを感じ取る才能」ではないかと思います。
僕は彼らの母国での暮らしぶりを聞きましたが、
それは裕福とはほど遠いものでした。
しかし彼らは、
日常些細なことから、僕よりも遥かに多くの
「幸せ」とか「喜び」とか「感謝」などの
ポジティブな気持ちを感じとっていました。
それらは「お金」、「権力」、「地位」、「名誉」などとは無縁で、
普段の暮らしの中で、手を伸ばせばいつでも届く範囲にあるのです。
それとは対照的に、何か余計なものに囚われてしまって、
「生」を楽しめなくなっている自分（日本人）
という存在が浮かび上がってきました。
&lt;/p&gt;

&lt;p&gt;
では、具体的にメキシコ人の価値観というのはどんなものかと聞かれると、
言葉では説明するのは難しいのですが、
ちょうど、あるジョークに登場するメキシコ人の人生観が、
僕のイメージにとても近いと思ったので
紹介しておきたいと思います。&lt;br /&gt;
&lt;a href="http://www.asks.jp/users/hiro/9161.html?thread=204489"&gt;お金持ちの不思議。 : ひろゆき＠オープンSNS&lt;/a&gt;&lt;br /&gt;
彼らにとっての仕事は、人生を楽しむためのものなのです。
&lt;/p&gt;

&lt;a href="http://picasaweb.google.com/sugiyama.makoto/MarsEditImages/photo#5092520652527015890"&gt;&lt;img src="http://lh4.google.com/sugiyama.makoto/RqxEjVk2l9I/AAAAAAAAAKI/pYwzZxxPZbQ/s144/IMGP0038.JPG" style="float:left;margin:0 5px 5px 0;" /&gt;&lt;/a&gt;&lt;p&gt;
少し話は変わりますが、
こちらに自殺率の国際比較のデータがあります。&lt;br /&gt;
&lt;a href="http://www2.ttcn.ne.jp/~honkawa/2770.html"&gt;図録▽自殺率の国際比較&lt;/a&gt;&lt;br /&gt;
自殺率とは人口10万人あたりの自殺者数ですが、
日本は24.1人です。これは西側諸国の中では最悪の数字です。
一方のメキシコは3.1人で、これは世界最低レベルだと言えます。
まあ、あれほど人生をエンジョイしている人たちが
自殺に走る訳はないと言ってしまえばそれまでなのですが、
思うに、メキシコ人の死生観は、
少なくとも日本人のそれよりは、
遥かに「明るくてポジティブ」で、
かつ「普段の日常生活に溶け込んでいる」
のではないかと思います。
例えばメキシコでは「The Days of Dead」（日本の「お盆」のような期間）には
親戚一同が墓地に集まり夜通し酒盛りをするそうです。
また、メキシコ人たちが持っていたアクセサリや置物には
死体とか骸骨をモチーフにしたものが沢山あります。
ドクロを象ったお菓子をもらったこともあります。
「死んでからが本当の人生だよ」という言葉を耳にしたことがあります。
日本人から見ればちょっと不気味な死生観かも知れませんが、
僕には、それが「神秘」と言う言葉を信じながらも、
死を怖れずに、生と真正面から向き合っているように見えました。
案外、「生」を楽しむ秘訣というのは、
「死」に対する考え方の中にあるのかも知れません。
いずれにしろ、現在の日本が
「世界で最も自殺率の低い国」から学ぶことは
多いのではないかと僕は思っています。
&lt;/p&gt;

&lt;p&gt;
僕は前出の留学中に
コンピュータとプログラミング言語に出会いました。
それらが現在の自分の生業にもなっていますので、
アメリカ留学それ自体は、僕の人生において、
大きな意味を持っていたかも知れません。
しかしながら、正直アメリカ人の人生観に共感を覚えることは少なかったですし、
概してアメリカという国が、それほど魅力のある国には思えませんでした。
一方、メキシコ人の価値観や人生観に触れることができたのは、
とても貴重な経験だったと思います。
彼らには「豊かさ」の本当の意味を教えてもらったような気がします。
今でもメキシコ製の小物（写真）を見る度に、
あの陽気な連中のことを懐かしく思い出し、
同時に自分自身に問いかけています。
&lt;/p&gt;

&lt;p&gt;
「たった一度だけの人生、楽しんでる？」
&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-3817569951406865634?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-20T10:09:36.485+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/09/blog-post.html</feedburner:origLink></item><item><title>LaunchBarで検索するためにdel.icio.usのブックマークをローカルファイルに保存するPerlスクリプト</title><link>http://feedproxy.google.com/~r/probo/~3/SbM0tUrPQyM/launchbardeliciousperl.html</link><category>launchbar</category><category>mac</category><category>perl</category><author>noreply@blogger.com (mac)</author><pubDate>Thu, 30 Aug 2007 11:39:17 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-8142590981542528087</guid><description>&lt;style type="text/css"&gt;&lt;br /&gt;&lt;!-- .PreProc { color: #00af87; font-weight: bold; } .Statement { color: #5f5fff; font-weight: bold; } .Identifier { color: #dfdf87; } .String { color: #ffaf5f; background-color: #262626; } .Special { color: #5fffff; background-color: #262626; } .Operator { color: #5fafff; } pre { font-family: monospace; color: #dfdfff; background-color: #080808; padding: 1em; overflow:auto;} .lnr { color: #444444; } --&gt;&lt;br /&gt;&lt;/style&gt;
&lt;p&gt;
情報収集の面では、かなりdel.icio.usに依存しているのですが、オンラインブックマークというのは、素早くアクセスしたいときに、その都度ブラウザを経由するのが面倒に感じることがあります。そこで自前のPerlスクリプトを使って、全てのオンラインブックマークをローカルのファイルに保存し、そのファイルに対してLaunchBarで検索をかけています。LaunchBarはNetScape形式のブックマークファイルであれば、「Custom HTML Bookmark File」として、そのファイル内のブックマークを検索することができます。&lt;/p&gt;
&lt;p&gt;このスクリプトでは各ブックマークのタイトル内にタグも加えているので、「タグ名」、「タイトル」、「URL」を補完キーワードにしてLaunchBarによる検索が実現できます。ブックマークのタイトルはHTMLエンティティに変換しています。当然このスクリプトはMac OS XのLaunchBarユーザーにしかメリットはないと思いますが、一応設置手順をメモしてみました。Perlのバージョンは5.8.8（MacPortsからインストール）です。自己責任でどうぞ。
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ターミナルで次のコマンドを実行
&lt;pre&gt;
cd ~;
mkdir .delicious;
cd  .delicious;
touch config;
touch fetch.pl;
chmod 0600 config;
chmod 0700 fetch.pl;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;上で作成されたconfigというファイルをエディタで開き、以下の5行を記述。
&lt;pre&gt;
user=del.icio.usのユーザー名
pswd=del.icio.usのパスワード
updates=/Users/[Mac OS Xのユーザー名]/.delicious
title='My del.icio.us bookmarks'
offline_file=/Users/[Mac OS Xのユーザー名]/.delicious/MyDelicious.html
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;1.で作成されたfetch.plというファイルをエディタで開き、以下のPerlスクリプトを記述する。
&lt;pre&gt;
&lt;span class="lnr"&gt; 1 &lt;/span&gt;&lt;span class="PreProc"&gt;#!/usr/bin/env perl&lt;/span&gt;
&lt;span class="lnr"&gt; 2 &lt;/span&gt;
&lt;span class="lnr"&gt; 3 &lt;/span&gt;&lt;span class="Statement"&gt;use strict&lt;/span&gt;;
&lt;span class="lnr"&gt; 4 &lt;/span&gt;&lt;span class="Statement"&gt;use warnings&lt;/span&gt;;
&lt;span class="lnr"&gt; 5 &lt;/span&gt;&lt;span class="Statement"&gt;use &lt;/span&gt;Config::Simple;
&lt;span class="lnr"&gt; 6 &lt;/span&gt;&lt;span class="Statement"&gt;use &lt;/span&gt;Net::Delicious;
&lt;span class="lnr"&gt; 7 &lt;/span&gt;&lt;span class="Statement"&gt;use &lt;/span&gt;Netscape::Bookmarks;
&lt;span class="lnr"&gt; 8 &lt;/span&gt;
&lt;span class="lnr"&gt; 9 &lt;/span&gt;&lt;span class="Statement"&gt;my&lt;/span&gt; &lt;span class="Identifier"&gt;$config_file&lt;/span&gt; = &lt;span class="String"&gt;"&lt;/span&gt;&lt;span class="Identifier"&gt;$ENV&lt;/span&gt;&lt;span class="String"&gt;{HOME}/.delicious/config&lt;/span&gt;&lt;span class="String"&gt;"&lt;/span&gt;;
&lt;span class="lnr"&gt;10 &lt;/span&gt;&lt;span class="Statement"&gt;my&lt;/span&gt; &lt;span class="Identifier"&gt;$config&lt;/span&gt; = &lt;span class="Statement"&gt;new&lt;/span&gt; Config::Simple(&lt;span class="Identifier"&gt;$config_file&lt;/span&gt;)-&amp;gt;param( -&lt;span class="String"&gt;block &lt;/span&gt;=&amp;gt; &lt;span class="String"&gt;'&lt;/span&gt;&lt;span class="String"&gt;default&lt;/span&gt;&lt;span class="String"&gt;'&lt;/span&gt; );
&lt;span class="lnr"&gt;11 &lt;/span&gt;
&lt;span class="lnr"&gt;12 &lt;/span&gt;&lt;span class="Statement"&gt;my&lt;/span&gt; &lt;span class="Identifier"&gt;$bookmark&lt;/span&gt; =
&lt;span class="lnr"&gt;13 &lt;/span&gt;  Netscape::Bookmarks::Category-&amp;gt;&lt;span class="Statement"&gt;new&lt;/span&gt;( { &lt;span class="String"&gt;'&lt;/span&gt;&lt;span class="String"&gt;title&lt;/span&gt;&lt;span class="String"&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="Identifier"&gt;$config&lt;/span&gt;-&amp;gt;{title} } );
&lt;span class="lnr"&gt;14 &lt;/span&gt;
&lt;span class="lnr"&gt;15 &lt;/span&gt;&lt;span class="Statement"&gt;warn&lt;/span&gt; &lt;span class="String"&gt;"&lt;/span&gt;&lt;span class="String"&gt;login as &lt;/span&gt;&lt;span class="Identifier"&gt;$config&lt;/span&gt;&lt;span class="String"&gt;-&amp;gt;{user}&lt;/span&gt;&lt;span class="Special"&gt;\n&lt;/span&gt;&lt;span class="String"&gt;"&lt;/span&gt;;
&lt;span class="lnr"&gt;16 &lt;/span&gt;&lt;span class="Statement"&gt;my&lt;/span&gt; &lt;span class="Identifier"&gt;$del&lt;/span&gt; = Net::Delicious-&amp;gt;&lt;span class="Statement"&gt;new&lt;/span&gt;(&lt;span class="Identifier"&gt;$config&lt;/span&gt;);
&lt;span class="lnr"&gt;17 &lt;/span&gt;&lt;span class="Statement"&gt;my&lt;/span&gt; &lt;span class="Identifier"&gt;@posts&lt;/span&gt; = &lt;span class="Identifier"&gt;$del&lt;/span&gt;-&amp;gt;all_posts() &lt;span class="Operator"&gt;or&lt;/span&gt; &lt;span class="Statement"&gt;die&lt;/span&gt; &lt;span class="String"&gt;'&lt;/span&gt;&lt;span class="String"&gt;Failed to retrieve bookmarks&lt;/span&gt;&lt;span class="String"&gt;'&lt;/span&gt;;
&lt;span class="lnr"&gt;18 &lt;/span&gt;&lt;span class="Statement"&gt;for&lt;/span&gt; ( &lt;span class="Identifier"&gt;@posts&lt;/span&gt; ) {
&lt;span class="lnr"&gt;19 &lt;/span&gt;    &lt;span class="Statement"&gt;my&lt;/span&gt; &lt;span class="Identifier"&gt;$title&lt;/span&gt; = &lt;span class="String"&gt;"&lt;/span&gt;&lt;span class="Identifier"&gt;$_&lt;/span&gt;&lt;span class="String"&gt;-&amp;gt;{description} [&lt;/span&gt;&lt;span class="Identifier"&gt;$_&lt;/span&gt;&lt;span class="String"&gt;-&amp;gt;{tags}]&lt;/span&gt;&lt;span class="String"&gt;"&lt;/span&gt;;
&lt;span class="lnr"&gt;20 &lt;/span&gt;    &lt;span class="Identifier"&gt;$title&lt;/span&gt; =~ &lt;span class="Statement"&gt;s/&lt;/span&gt;&lt;span class="Special"&gt;(.)&lt;/span&gt;&lt;span class="Statement"&gt;/&lt;/span&gt;&lt;span class="String"&gt;'&amp;#'.ord(&lt;/span&gt;&lt;span class="Identifier"&gt;$1&lt;/span&gt;&lt;span class="String"&gt;).';'&lt;/span&gt;&lt;span class="Statement"&gt;/eg&lt;/span&gt;;
&lt;span class="lnr"&gt;21 &lt;/span&gt;    &lt;span class="Statement"&gt;my&lt;/span&gt; &lt;span class="Identifier"&gt;%link&lt;/span&gt; = (
&lt;span class="lnr"&gt;22 &lt;/span&gt;        &lt;span class="String"&gt;TITLE &lt;/span&gt;=&amp;gt; &lt;span class="Identifier"&gt;$title&lt;/span&gt;,
&lt;span class="lnr"&gt;23 &lt;/span&gt;        &lt;span class="String"&gt;HREF  &lt;/span&gt;=&amp;gt; &lt;span class="Identifier"&gt;$_&lt;/span&gt;-&amp;gt;{href}
&lt;span class="lnr"&gt;24 &lt;/span&gt;    );
&lt;span class="lnr"&gt;25 &lt;/span&gt;    &lt;span class="Identifier"&gt;$bookmark&lt;/span&gt;-&amp;gt;add( Netscape::Bookmarks::Link-&amp;gt;&lt;span class="Statement"&gt;new&lt;/span&gt;( &lt;span class="Identifier"&gt;\%link&lt;/span&gt; ) );
&lt;span class="lnr"&gt;26 &lt;/span&gt;}
&lt;span class="lnr"&gt;27 &lt;/span&gt;
&lt;span class="lnr"&gt;28 &lt;/span&gt;&lt;span class="Statement"&gt;open&lt;/span&gt; &lt;span class="Identifier"&gt;FILE&lt;/span&gt;, &lt;span class="String"&gt;"&lt;/span&gt;&lt;span class="String"&gt;&amp;gt; &lt;/span&gt;&lt;span class="Identifier"&gt;$config&lt;/span&gt;&lt;span class="String"&gt;-&amp;gt;{offline_file}&lt;/span&gt;&lt;span class="String"&gt;"&lt;/span&gt;;
&lt;span class="lnr"&gt;29 &lt;/span&gt;&lt;span class="Statement"&gt;print&lt;/span&gt; &lt;span class="Identifier"&gt;FILE&lt;/span&gt; &lt;span class="Identifier"&gt;$bookmark&lt;/span&gt;-&amp;gt;as_string();
&lt;span class="lnr"&gt;30 &lt;/span&gt;&lt;span class="Statement"&gt;close&lt;/span&gt; &lt;span class="Identifier"&gt;FILE&lt;/span&gt;;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Terminalで次のコマンドを実行

&lt;pre&gt;./fetch.pl&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;MyDelicious.htmlというファイルが生成され、その中にブークマークがHTML形式で保存されているのを確認&lt;/li&gt;
&lt;li&gt;LaunchBarのConfiguration画面を立ち上げる（Command-Y）&lt;/li&gt;
&lt;li&gt;ツールバーの左端のアイコンから、Web Browser Bookmarks &gt; Custom HTML Bookmarks File を選択すると、ファイル選択ダイアログが表示される。&lt;/li&gt;
&lt;li&gt;5. で確認したMyDelicious.htmlを指定して、保存する（Command-S）&lt;/li&gt;
&lt;li&gt;LaunchBarからMyDelicious.htmlの中身を検索できれば成功。&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-8142590981542528087?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-31T03:39:17.927+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/08/launchbardeliciousperl.html</feedburner:origLink></item><item><title>いろいろあった誕生日</title><link>http://feedproxy.google.com/~r/probo/~3/71ew8uR6S9Y/blog-post_18.html</link><category>福岡で働くWebの人々</category><category>php in fukuoka</category><author>noreply@blogger.com (mac)</author><pubDate>Tue, 21 Aug 2007 20:57:07 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-4824016081547547552</guid><description>&lt;p&gt;
今日は僕の42歳の誕生日であり、
株式会社プロボの設立一周年記念日でもありました。
昼過ぎに福岡へ移動し、
15:00から「PHP in Fukuoka」の勉強会で講師を務めた後、
17:00からは、僕も立ち上げメンバーの一人として運営に携わっている
「福岡で働くWebの人々」（FWW）が主催する
「FWW Weekend Seminar Vol.1」の会場準備へと足を運びました。
&lt;/p&gt;

&lt;p&gt;
FWWは過去に「CSS Nite in FUKUOKA」を
2度主催した実績がありますが、
今回の「FWW Weekend Seminar Vol.1」は
FWWにとって初のオリジナルイベントでした。
募集期間がお盆休みと重なってしまいましたが、
それでも募集定員を若干超える52名のお客様に
参加していただきました。
&lt;/p&gt;

&lt;p&gt;
セミナー終了後には、いつものように
参加者も交えての懇親会が行なわれました。
参加者は30名以上、この50分の30という
高い懇親会出席率はFWWイベントの特徴だと思います。
今回の懇親会場はプロジェクターが使えるお店を貸し切って
そこで参加者が思い思いにプレゼンを行なっていました。
その中で先日設立されたRuby Business Commonsと
FWWとのタイアップが発表されたりと、
懇親会も相当充実したものでした。
&lt;/p&gt;

&lt;p&gt;
地方でよく見かけるような、
お役所とその周辺者が主催するイベントとは違って、
民間の活力、オープンさ、親しみ易さを感じさせてくれるのが、
FWWイベントの特徴だと思います。
&lt;/p&gt;

&lt;p&gt;
僕らがやっているコミュニティ活動は、
例えて言うならば、
畑の土を耕すことに似ています、
風通しを良くして、土を柔らかくして、
土壌の中にいる微生物の活動を活発にする。
大木育てるにも、最初は土壌とか微生物レベルの話があって、
肥えた土壌からいろいろな連鎖が生まれて、
結局自分たちも含めた全体が潤っていくのだと思います。
よくお役所がやるみたいに、
何処からとも無く脈絡も無しに
いきなり大木を持って来て植えてしまい、
結局は枯らせてしまうというのを、
僕は何度も目にしました。
FWWは今後も地道に
土を耕して行こうと思います。
&lt;/p&gt;

&lt;p&gt;
まあ、そんなことを考えながら、
結局、朝の５時まで飲んで、語って、歌って、
始発の新幹線で山口に帰ってきました。
とても思い出に残る42歳の誕生日でした。
&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-4824016081547547552?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-22T12:57:07.867+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/08/blog-post_18.html</feedburner:origLink></item><item><title>「FWW Weekend Seminar Vol.1」を開催します</title><link>http://feedproxy.google.com/~r/probo/~3/FnC6N5WrpOw/fww-weekend-seminar-vol1.html</link><category>福岡で働くWebの人々</category><author>noreply@blogger.com (mac)</author><pubDate>Sun, 12 Aug 2007 18:14:14 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-3744522058110680465</guid><description>&lt;p&gt;「福岡で働くWebの人々」（FWW）主催のオリジナルイベント第一弾「FWW Weekend Seminar Vol.1」を来る8月18日（土）に開催します。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fukuoka-webwork.blogspot.com/2007/08/818.html"&gt;「FWW Weekend Seminar Vol.1」開催のお知らせ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;参加費は無料。内容的にもかなり充実したものになるという自信を持っています。また、当然のごとく終了後の懇親会も予定されております。是非、奮ってご参加ください。&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-3744522058110680465?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-13T10:14:14.029+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/08/fww-weekend-seminar-vol1.html</feedburner:origLink></item><item><title>マイアミ・バイス</title><link>http://feedproxy.google.com/~r/probo/~3/FjVxMGlFz54/blog-post.html</link><category>映画評</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Mon, 06 Aug 2007 00:24:54 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-3765035310616769739</guid><description>&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000I6AN3K/probo-22/ref=nosim/" title="Amazon.co.jpの商品ページへジャンプします" target="_blank"&gt;&lt;img src="http://images-jp.amazon.com/images/P/B000I6AN3K.THUMBZZZ.jpg" alt="マイアミ・バイス" style="float:left;margin:0 5px 5px 0"  /&gt;&lt;/a&gt;&lt;p&gt;
23歳の時、ジョージァ州から&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%82%A6%E3%82%A7%E3%82%B9%E3%83%88"&gt;キーウェスト&lt;/a&gt;まで、フロリダ半島縦断の一人旅に出掛けました。その行き帰りで、４〜５日間ほど&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%A2%E3%83%9F"&gt;マイアミ&lt;/a&gt;に滞在しましたが、あのトロピカルでエキゾチックな雰囲気は今でも強く印象に残っています。貿易、商工業、観光、リゾート、軍事、学術など様々な側面を持った熱帯地域の大都市に、国境を越えて多くの人種や文化が混ざり合っている。そんなマイアミという独特な土地柄が、この映画を一層引き立てているような気がします。
&lt;/p&gt;

&lt;p&gt;
前置きはそれ位にして、この映画はTVシリーズでお馴染みの人気刑事アクションドラマの映画版です。マイアミ・バイスが通常の刑事ドラマと若干違うのは、アンダーカバー（潜入捜査官）を主人公にしているところです。彼らは普段、偽名を名乗り、派手な服を身に纏ってフェラーリを乗り回し、自身の経歴を犯罪者として偽装し、マイアミの裏社会に溶け込んでいます。そして犯罪組織の存在を嗅ぎ付けると、あらゆる手段を使って敵の懐に入り込もうとするのです。当然バレたら命はありません。僕が考えるマイアミ・バイスの魅力は、この潜入工作の際のスリリングな駆け引き。そしていざ摘発に踏み切るときの壮絶な銃撃戦。それとマイアミらしいエキゾチックな美女との色恋沙汰の３本柱にあると、勝手に解釈しています。&lt;/p&gt;

&lt;p&gt;
そして、もうひとつTVシリーズのマイアミ・バイスが、他の刑事ドラマと一線を画していたと思うことがあります。それは命知らずの潜入捜査の果てに行き着いた敵の黒幕が巨悪であるが故に、正義感が報われない、勧善懲悪が果たされないというある種の閉塞感が漂うシリアスなストーリ展開です。今回の映画化では、そのあたりのツボも押さえつつ、基本的には派手さと爽快感が全面に押し出された作品に仕上がっています。
&lt;/p&gt;



&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-3765035310616769739?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-06T16:24:54.413+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/08/blog-post.html</feedburner:origLink></item><item><title>LaunchBar 4.3の新機能に関するメモ</title><link>http://feedproxy.google.com/~r/probo/~3/A8W4SQPGGpc/launchbar-43.html</link><category>launchbar</category><category>mac</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sat, 04 Aug 2007 16:09:31 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-583647366002640475</guid><description>&lt;p&gt;
日本時間の昨日、&lt;a href="http://www.obdev.at/products/launchbar/index.html"&gt;LaunchBar 4.3&lt;/a&gt;がリリースされました。4.2を飛び越えてのバージョンアップだけに、新しい機能が満載です。以下に「これは便利そう」と思った機能をリストアップしてみました。新機能は他にも沢山ありますので、詳しくは&lt;a href="http://www.obdev.at/products/launchbar/releasenotes.html"&gt;リリースノート&lt;/a&gt;をご覧下さい。
&lt;/p&gt;

&lt;dl&gt;

&lt;dt&gt;Instant Open&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;例えば、"sa"とタイプしてSafariを立ち上げる時に、"sa"の"a"のキーを押し続けることで起動できます。つまり、目的のアイテムをLaunchBarの補完候補の最上部に表示させた時に、最後にタイプしたキーを押し続けることによって、リターンキーを押すこと無く、目的のアイテムを開くことができるようになりました。&lt;/li&gt;
&lt;li&gt;この方法でSearch Templateを選んだ場合は、キーワード入力可能な状態でLaunchBar上に表示されます。&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;&lt;strong&gt;Instant Send&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;個人的にはこれが最も便利な新機能だと思います。例えばFinder上でファイルやフォルダを選択している状態、あるいは（Webブラウザなど）他のアプリケーション上でテキストを範囲選択している状態で、LaunchBarの起動キー（デフォルトではCommand +Spaceになっていると思います）を押し続けると、選択したアイテムが渡された状態でLaunchBarが起動します。この状態から（Tabキーを押さずに）別のアイテムをキー補完で選択すると、前者のアイテムを後者のアイテムに渡すことができます。この機能は様々な応用が利きそうです。&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;テキストファイルの行を選択・検索・追加&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;こちらもかなり使えそうな機能です。プレーンテキスト系のファイル（.html、.txt、.pl、.rb等々）をLaunchBar上に表示させた状態で&lt;strong&gt;Ctrl+f（または→キー）&lt;/strong&gt;を押すと、そのファイル内の行が一覧表示されます。行を選択してからTabキーを押すことで、選択した行だけを他のアイテム（別のアプリケーションやSearch Templatesなど）に渡すことができます。&lt;/li&gt;
&lt;li&gt;上記と似ていますが、プレーンテキスト系のファイルをLaunchBarに表示させている状態で&lt;strong&gt;Spaceキー&lt;/strong&gt;を押すと、検索キーワードが入力できるようになります。ここでキーワードを入力してReturnキーを押すと、キーワードにヒットした行が一覧表示されます。また行を選択した状態でReturnキーを押すと、該当行が選択された状態でファイルが開きます（行がURLを含んでいる場合はブラウザで開かれます）。&lt;/li&gt;
&lt;li&gt;テキストファイル（今のところ.txtと.rtfでの動作を確認）をLaunchBarに表示させた状態で&lt;strong&gt;Shift+Space&lt;/strong&gt;を押すと、「Append Text」という表示が出て、テキスト入力が可能になります。テキストを入力後にReturnキーを押すと、ファイルの末尾に入力したテキストが追加されます。改行したい箇所では\（バックスラッシュ）を入力します。UTF-8であれば日本語も入力可能です。&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;AddressBook関係&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;&lt;li&gt;クイック編集。LaunchBar上でコンタクトを表示しているときに&lt;strong&gt;Command-Shift-Return&lt;/strong&gt;を押すとそのコンタクトが編集可能な状態でAddressBookが起動します。&lt;/li&gt;
&lt;li&gt;Google Mapで住所を表示。LaunchBar上でコンタクトを表示しているときに、&lt;strong&gt;Command-Control-Return&lt;/strong&gt;を押すと、Webブラウザが立ち上がり、GoogleMap上に住所が表示されます（当然住所が入力されていないと駄目です）。&lt;/li&gt;
&lt;li&gt;インスタントメッセージ。メールアドレスを表示している時に&lt;strong&gt;Spaceキー&lt;/strong&gt;を押すとテキストが入力可能になります。入力後にReturnキーを押すと、そのテキストが入力された状態で、Mail.appの新規メール作成画面が開きます。&lt;/li&gt;
&lt;li&gt;住所を表示した状態で、&lt;strong&gt;Cntrol+f（または→）&lt;/strong&gt;を押すと、住所が各パーツ毎の行に分解されて一覧表示されます。ここで行を選択してTabキーを押せば、その行だけを別アイテム（他のアプリケーションやSearch Templatesなど）に渡すことができます。&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;ビルトインのAppleScript&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Save Text&lt;/strong&gt;: このスクリプトを選択してSpaceキーを押すとテキストが入力可能になります。入力後にReturnキーを押すと、テキストをファイルとして保存することができます。また冒頭のInstant Sendと組み合わせれば、別のアプリケーション中で選択しているテキストを素早くファイルに保存することができます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Show Date&lt;/strong&gt;:「今日は何日（何曜日）だっけ？」というときにこのスクリプトを実行すると、画面一杯に今日の日付を表示してくれます。&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;Search Templates関係&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;Serch Templateによる検索を実行する前に、Tabキーを押すことによって、検索で使用するブラウザを選択することができます。&lt;/li&gt;
&lt;li&gt;「Preliminary support」ということですが、POSTメソッド経由での検索が可能になったようです。post-http://en.wikipedia.org/?search=*のようにURLの先頭に"post-"を付けてSearch Templatesに登録すれば使えるようですが、僕はまだ使ったことはありません。&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;URLコマンド&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;この機能が意味するところについては、実際に以下のサンプルURLをブラウザに入力してみると解りやすいかと思います。この機能はいろいろな場面で使えそうですが、例えば外部のスクリプト言語等から、LaunchBarを操作することもできます。&lt;/li&gt;
&lt;li&gt;x-launchbar:large-type?font-name=Optima-Bold&amp;string=Hello+World&lt;/li&gt;
&lt;li&gt;x-launchbar:select?string=some+text&lt;/li&gt;
&lt;li&gt;x-launchbar:select?file=~/Documents&lt;/li&gt;
&lt;li&gt;x-launchbar:select?url=www.obdev.at&lt;/li&gt;
&lt;li&gt;x-launchbar:select?url=www.obdev.at&amp;name=Objective+Development&lt;/li&gt;
&lt;li&gt;x-launchbar:select?abbreviation=Safari&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;


&lt;dt&gt;Calculator（計算機能）&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;詳しい操作方法についての説明は省略しますが、計算機の機能が付いたようです。計算結果がモニタ上に大きく表示されるので見やすいと思います。&lt;/li&gt;
&lt;li&gt;LaunchBarに直接計算式を入力して計算することもできますし、他のアプリケーション上で選択中の計算式を、冒頭のInstant Send機能を使って、計算機に渡すこともできます。&lt;/li&gt;
&lt;li&gt;単純な合計（Sum）を求めたい時には、数字が半角スペースで区切ってあれば、+記号も不要です。例えば 2 3 4 という3つの数字をマウスドラッグで選択し、LaunchBarの起動キーを押し続け、"2 3 4"が渡された状態で起動したら、次にキー補完を使ってCalculator（Mac OS Xに付属しているCalculatorとは別のアイコン）を表示させてReturnキーを押すと数値の合計がモニタ上に表示されます。
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;その他&lt;/dt&gt;
&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;ペースト（Command-V）での補完。他のアプリケーションでテキストをコピー（Command-C）した後、LaunchBarが前面にある状態でペースト（Command-V）すると、ペーストされたテキストにヒットする補完候補が表示されますが、いつの間にか日本語が使えるようになっています。&lt;/li&gt;
&lt;li&gt;フォルダを開く際に&lt;strong&gt;Cmd+Shift+Return&lt;/strong&gt;を押すと、新規Finderウィンドウではなく、既存のウィンドウで開きます。&lt;/li&gt;
&lt;li&gt;Dockアイコンにファイル、フォルダ、選択中のテキストなどをドラッグすると、それらが渡された（表示された）状態でLaunchBarが起動します。&lt;/li&gt;
&lt;li&gt;フォルダを表示した状態でTabキーを押し、次にTerminal（or iTerm）を選んでリターンキーを押すと、そのフォルダに移動（cd）した状態でターミナルが起動します。&lt;/li&gt;
&lt;li&gt;設定画面（Preferences）で&lt;strong&gt;"Open URLs in current Safari window or tab"&lt;/strong&gt;を有効にすると、Safariで新たにURLを開く際に、既存のウィンドウやタブが使われます。&lt;/li&gt;
&lt;li&gt;Terminalで、&lt;strong&gt;"open -a LaunchBar"&lt;/strong&gt;を実行するとLaunchBarが起動しますが、同じコマンドの後に続けてファイル名やフォルダ名を指定してから実行すると、それらが渡された状態でLaunchBarが起動します。&lt;/li&gt;
&lt;li&gt;iTunesライブラリの曲をLaunchBarに表示させて、&lt;strong&gt;Cmd＋Ctrl+Return&lt;/strong&gt;を押すと、その曲が表示された状態でiTunesが起動します（再生はされません）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;dt&gt;参考URL（英語）&lt;/dt&gt;

&lt;dd&gt;
リリースノート&lt;br /&gt;
&lt;a href="http://www.obdev.at/products/launchbar/releasenotes.html"&gt;http://www.obdev.at/products/launchbar/releasenotes.html&lt;/a&gt;
&lt;/dd&gt;

&lt;dd&gt;
LaunchBarの機能紹介&lt;br /&gt;
&lt;a href="http://www.obdev.at/products/launchbar/features.html"&gt;http://www.obdev.at/products/launchbar/features.html&lt;/a&gt;
&lt;/dd&gt;

&lt;dd&gt;
LaunchBarのTips&lt;br /&gt;
&lt;a href="http://www.obdev.at/products/launchbar/tips.html"&gt;http://www.obdev.at/products/launchbar/tips.html&lt;/a&gt;
&lt;/dd&gt;

&lt;dd&gt;
LaunchBarのユーザーフォーラム&lt;br /&gt;
&lt;a href="http://forums.obdev.at/index.php?c=3"&gt;http://forums.obdev.at/index.php?c=3&lt;/a&gt;
&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;今後、新しい発見があれば、この記事に追加していきます。もし間違いなどを発見されましたら、コメント欄やTBでご指摘いただけるとありがたいです。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-583647366002640475?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-05T08:09:31.743+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://sugmak.com/2007/08/launchbar-43.html</feedburner:origLink></item><item><title>ドリームガールズ</title><link>http://feedproxy.google.com/~r/probo/~3/uUuIui8kSdQ/blog-post_30.html</link><category>映画評</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sun, 29 Jul 2007 20:45:20 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-3202321616799353504</guid><description>&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000MGBS58/probo-22/ref=nosim/" title="Amazon.co.jpの商品ページへジャンプします" target="_blank"&gt;&lt;img src="http://images-jp.amazon.com/images/P/B000MGBS58.THUMBZZZ.jpg" alt="" style="float:left;margin:0 5px 5px 0"  /&gt;&lt;/a&gt;
&lt;p&gt;
今年これまでに観た中では、文句無しに最高の映画でした。特に、60-70年代のソウルミュージックファンの僕にとっては、「ありがとうございます。ごちそうさまでした！」と感謝したくなる位に、楽曲のクオリティが高いミュージカル映画でした（そういう意味でブラックミュージックファンの方には、サウンド・トラックだけでも十分に聴く価値はあるかも知れません）。
&lt;/p&gt;

&lt;p&gt;
強く印象に残ったのは、主演の&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%93%E3%83%A8%E3%83%B3%E3%82%BB%E3%83%BB%E3%83%8E%E3%82%A6%E3%83%AB%E3%82%BA"&gt;ビヨンセ・ノウルズ&lt;/a&gt;の吸い込まれそうな美しさ、そしてメインキャストが備えている高い歌唱力です。中でも特に、日本人の女優さんもノミネートされていたという&lt;a href="http://ja.wikipedia.org/wiki/%E7%AC%AC79%E5%9B%9E%E3%82%A2%E3%82%AB%E3%83%87%E3%83%9F%E3%83%BC%E8%B3%9E"&gt;第79回アカデミー賞&lt;/a&gt;の助演女優部門で、最終的にオスカーを獲得した&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%A7%E3%83%8B%E3%83%95%E3%82%A1%E3%83%BC%E3%83%BB%E3%83%8F%E3%83%89%E3%82%BD%E3%83%B3"&gt;ジェニファー・ハドソン&lt;/a&gt;は、およそ新人とは思えない圧倒的な存在感と驚異的な歌唱力でした。加えて、色彩の美しさ、映像の躍動感、華やかな衣装等々、どれをとってもアメリカの映画界、ショービジネス界の圧倒的な力量を感じさせる極上アメリカン・エンターテインメントでした。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-3202321616799353504?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-30T12:45:20.534+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/07/blog-post_30.html</feedburner:origLink></item><item><title>Bloggerが出力する各種RSSフィードに関するメモ</title><link>http://feedproxy.google.com/~r/probo/~3/9YoT92YOzq4/bloggerrss.html</link><category>blogger</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sat, 28 Jul 2007 13:19:33 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-4274786270755442932</guid><description>&lt;p&gt;会社ドメイン（probo.jp）のWebサイト、ブログ、それからメールをGoogleへ移行したという&lt;a href="http://mac.probo.jp/2007/07/blogblogger.html"&gt;記事&lt;/a&gt;を先日書きました。そのお陰で、本当に便利になりましたし、管理面でも随分楽になりました。&lt;/p&gt;

&lt;p&gt;ただGoogleツール全般に言えることですが、かなり奥が深いというか、ちょっとマニアックな使い方に関しては、大抵ヘルプが省略されているように思えました。これはひょっとしたら僕がヘルプの該当箇所に辿り着けなかっただけかも知れませんが…。&lt;/p&gt;

&lt;p&gt;という訳で僕の場合は、&lt;a href="http://groups.google.com/group/blogger-help" target="_blank"&gt;Blogger Help Groupのメーリングリスト（英語）&lt;/a&gt;など、各ツールの英語版メーリングリストを検索することによって、少なからず発見がありました。その辺り、時間を見つけてここへログしていきたいと思います。&lt;/p&gt;

&lt;p&gt;以下に、Bloggerが出力する各種RSSフィードについてまとめてみました。ちなみに独自ドメインでBloggerを運用している場合、下記リスト中の*.blogspot.comの部分を、独自ドメイン名で置き換えることができます。&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;デフォルト（Atom1.0）&lt;/dt&gt;
&lt;dd&gt;http://*.blogspot.com/feeds/posts/default&lt;/dd&gt;
&lt;dt&gt;特定のラベルが付いた記事（全文）&lt;/dt&gt;
&lt;dd&gt;http://*.blogspot.com/feeds/posts/full/-/[ラベル名]&lt;/dd&gt;
&lt;dd&gt;複数のラベルを指定する場合は、[ラベル名]を/（スラッシュ)で連結する。その場合連結されたラベルを全て含む記事がフィードの対象になる。&lt;/dd&gt;
&lt;dt&gt;特定のラベルが付いた記事（要約）&lt;/dt&gt;
&lt;dd&gt;http://*.blogspot.com/feeds/posts/summary/-/[ラベル名]&lt;/dd&gt;
&lt;dt&gt;コメント（全文）&lt;/dt&gt;
&lt;dd&gt;http://*.blogspot.com/feeds/comments/full&lt;/dd&gt;
&lt;dt&gt;コメント（要約）&lt;/dt&gt;
&lt;dd&gt;http://*.blogspot.com/feeds/comments/summary&lt;/dd&gt;
&lt;dt&gt;特定の記事に対するコメント（全文）&lt;/dt&gt;
&lt;dd&gt;http://*.blogspot.com/feeds/[postID]/comments/full&lt;/dd&gt;
&lt;dd&gt;[postID]とは、各記事毎のコメントへのリンクをクリックした時に表示されるURL中の、postIDパラメータの値。&lt;/dd&gt;
&lt;dt&gt;特定の記事に対するコメント（要約）&lt;/dt&gt;
&lt;dd&gt;http://*.blogspot.com/feeds/[postID]/comments/summary&lt;/dd&gt;
&lt;dt&gt;RSS2.0フォーマットで出力したい場合&lt;/dt&gt;
&lt;dd&gt;URLに「?alt=rss」を追加する。&lt;/dd&gt;
&lt;dd&gt;mixiの日記にBloggerのフィードを反映させる場合はこのRSS2.0を使うのが良さそう。&lt;/dd&gt;
&lt;dt&gt;取得フィード数の最大値を指定したい場合&lt;/dt&gt;
&lt;dd&gt;URLに「?max-results=[数値]」を追加する。&lt;/dd&gt;
&lt;dt&gt;取得フィードの開始インデックスを指定したい場合&lt;/dt&gt;
&lt;dd&gt;URLのパラメータに「?start-index=[数値]」を追加する。&lt;/dd&gt;
&lt;/dl&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-4274786270755442932?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-29T05:19:33.935+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/07/bloggerrss.html</feedburner:origLink></item><item><title>時をかける少女</title><link>http://feedproxy.google.com/~r/probo/~3/OvtJ3ROfWLw/blog-post_9843.html</link><category>映画評</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sat, 28 Jul 2007 11:59:02 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-9084362836782896305</guid><description>&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000MEXAOM/probo-22/ref=nosim/" title="Amazon.co.jpへジャンプします" target="_blank"&gt;&lt;img src="http://images-jp.amazon.com/images/P/B000MEXAOM.THUMBZZZ.jpg" alt="時をかける少女" style="float:left;margin:0 5px 5px 0"  /&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://ja.wikipedia.org/wiki/%E6%99%82%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E5%B0%91%E5%A5%B3"&gt;原作の小説&lt;/a&gt;が発表された1965年に生まれた僕は、&lt;a href="http://ja.wikipedia.org/wiki/%E6%99%82%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E5%B0%91%E5%A5%B3_%281983%E5%B9%B4%E3%81%AE%E6%98%A0%E7%94%BB%29"&gt;原田知世さん主演の映画&lt;/a&gt;が公開された時には主人公と同じ高校生。さらに、その映画でメインキャストを務めた&lt;a href="http://ja.wikipedia.org/wiki/%E9%AB%98%E6%9F%B3%E8%89%AF%E4%B8%80"&gt;高柳さん&lt;/a&gt;とは、その後同じ職場で働いたことがある。そういう訳で、この作品には少なからず親しみを感じていたのだ。&lt;/p&gt;

&lt;p&gt;前置きはそれ位にして、この映画、とても心に残る良い作品だった。自分自身があの頃にタイムリープしたような、懐かしさと切なさ。今でこそ冷静に「思春期」と呼んでいるけど、当の本人は、ちょっとしたことで悩んだり傷ついたり、将来のことで頭が一杯になのに、世の中を冷めた目で見たり。でも、そうあることが、大切で意味のある時期だったんだと、今更ながらに思う。それから「いまどきの高校生像」がどんなものかとても興味があったけれど、携帯電話とメールを駆使している以外、考えていることは二十数年前の自分とさほど変わってないことに、少し安心感を覚えた。&lt;/p&gt;

&lt;p&gt;それにしても、多感なキャラクターの微妙な表情の作り方とか、絶妙な情景描写など、日本のアニメはたいへん優れていると改めて思った。ストーリー的には、ひょっとしたらこのエンディングでは物足りないという人もいるかも知れない。でも、それはそれで「広がり」というか、想像が入る余地があっていいんじゃないだろうか？だからこそ、時間が経ったら、きっとまた観たくなる映画になると思う。少なくとも僕にとっては。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-9084362836782896305?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-29T03:59:02.418+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/07/blog-post_9843.html</feedburner:origLink></item><item><title>「JavaからRubyへ —マネージャのための実践移行ガイド」</title><link>http://feedproxy.google.com/~r/probo/~3/hYlcgFJWJ0Y/javaruby.html</link><category>書評</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Sun, 29 Jul 2007 12:58:40 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-415405107369689907</guid><description>&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113202/probo-22/ref=nosim/" title="Amazon.co.jpへジャンプします" target="_blank"&gt;&lt;img src="http://g-ec2.images-amazon.com/images/P/4873113202.MZZZZZZZ.jpg" alt="JavaからRubyへ —マネージャのための実践移行ガイド" style="float:left;margin:0 5px 5px 0"  /&gt;&lt;/a&gt;&lt;p&gt;２ヶ月前に購入したのに、先ほどようやく読了です。以下にその感想をリストアップしてみました。あらかじめお断りしておきますが、&lt;strong&gt;僕自身はJavaもRubyも大した実務経験は持っていない&lt;/strong&gt;ということを念頭に置いてご覧下さい。&lt;/p&gt;
&lt;br style="clear:both" /&gt;
&lt;ul&gt;
&lt;li&gt;Javaを否定してRubyをヨイショしてる本かと思ったら、そうではなく、JavaとRuby双方のメリット&amp;amp;デメリットの説明が中心にあった。「マネージャーのために」とあるのは、非技術者（上司とかクライアント）に対してそのメリット&amp;amp;デメリットをどう説明するかがマネージャーにとって重要になるから。&lt;/li&gt;
&lt;li&gt;ただ、本書にある様な、JavaとRubyそれぞれの利点・欠点を比較材料として把握できたとしても、JavaからRubyで置き換えられる領域は、かなり限られるのではないだろうか？。特に日本の場合。&lt;/li&gt;
&lt;li&gt;Rubyの部分は、ある程度他の軽量言語に置き換えて読んでも良さそうだ。&lt;/li&gt;
&lt;li&gt;最近のRuby（Rails）のもて囃され振りを目にする度に、7〜8年前にZope（Python）を使おうとしたときのこととダブって見える。あの時は「日本語は？パフォーマンスは？負荷分散は？」等々、実運用のことで悩んでいるうちに、後から来たの（Perl、PHP、Java）に追い越されてしまったような気がする。その辺りRuby（Rails）はどうなんだろう？&lt;/li&gt;
&lt;li&gt;本書では、開発コストと教育コストの比較がメインで、あまり触れられていなかったようだが、プラットホームの選定には、大規模かつ高可用なシステムでの運用実績も重要だと思う。Ruby（Rails）はそのあたりどうなんだろう？&lt;/li&gt;
&lt;li&gt;本書で述べられている「PHPやVisualBasicのように素早く、Javaのようにクリーンである」などのRailsのメリットを読んでいると、「これってWebObjectsが全部備えているんじゃないの？」と思ったりもした。&lt;a href="http://ja.wikipedia.org/wiki/WebObjects"&gt;WebObjects&lt;/a&gt;(WO)にはApple Store、iTunes Music Store、.Macという優れた開発&amp;amp;運用実績があるので、一時期600万円程度の価格だったWOがオープンソースになれば（&lt;a href="http://www.thinksecret.com/news/0608webobjects.html"&gt;もうすぐなるかも知れない&lt;/a&gt;）、またWO界隈にも何かいいムーブメントが起こらないかな？&lt;/li&gt;
&lt;li&gt;でもやっぱり、これからはPerlだよね。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-415405107369689907?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-30T04:58:40.889+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sugmak.com/2007/07/javaruby.html</feedburner:origLink></item><item><title>ゴーヤ大作戦（その2）</title><link>http://feedproxy.google.com/~r/probo/~3/X4-U6faFY5U/2.html</link><category>雑記</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Thu, 26 Jul 2007 06:22:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-2641990673181288203</guid><description>&lt;p&gt;&lt;a href="http://picasaweb.google.com/sugiyama.makoto/MarsEditImages/photo#5091063670771193698"&gt;&lt;img src="http://lh5.google.com/sugiyama.makoto/RqcXb1k2l2I/AAAAAAAAAIA/rsywxsS2w28/s144/IMGP0132.JPG" alt="植えたばかりのゴーヤの苗" style="float:left;margin:0 5px 5px 0;" /&gt;&lt;/a&gt;ベランダを「緑のカーテン」で覆ってみたいという理由で、6月初旬にゴーヤの苗を植えました。写真はその直後のもので、この時に書いた記事が&lt;a href="http://mac.probo.jp/2007/06/blog-post_08.html"&gt;こちら&lt;/a&gt;です。あれれから約7週間が経ちました。今年は長梅雨だったにも関わらず、ゴーヤは噂通りの生命力をまざまざと見せつけ、ほぼベランダ全体をカバーする程に成長しました。&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;
&lt;p&gt;
&lt;a href="http://picasaweb.google.com/sugiyama.makoto/MarsEditImages/photo#5090973098500855490"&gt;&lt;img src="http://lh4.google.com/sugiyama.makoto/RqbFD1k2lsI/AAAAAAAAAFU/ZUOUjiudIDo/s144/IMGP0232.JPG" style="float:right;margin: 0 1em 1em 0;" title="クリックすると拡大表示されます" /&gt;&lt;/a&gt;こちらが現在のゴーヤの写真です。目標だった天然の緑のカーテンとしての役割は果たしつつあります。文字通りゴーヤの「お陰」で過ごしていると、かなり涼しく感じるのは、実際の温度が下がったこともあるでしょうが、それよりも植物が醸し出す気分的な部分が大きいと思います。そういう訳で、第1フェーズは成功したと言って良いでしょう。
&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;
&lt;p&gt;&lt;a style="float:left;margin: 0 5px 5px 0;" href="http://picasaweb.google.com/sugiyama.makoto/MarsEditImages/photo#5090973124270659282"&gt;&lt;img src="http://lh6.google.com/sugiyama.makoto/RqbFFVk2ltI/AAAAAAAAAFc/-xAHNJGWQJ8/s144/IMGP0231.JPG" title="クリックすると拡大表示されます" /&gt;&lt;/a&gt;次の第2フェーズは、作物としてのゴーヤですが、これは正直自信がありません。まず雌花の数が非常に少ないのです。これまで２桁も咲いていないでしょう。とりあえず雄花と雌花をくっつけて受粉させてみたところ、いくつかはゴーヤっぽい形になってきましたが、数としては４つ程度です。写真はその中で最も太ってきた実ですが、それでもゴルフボールをひとまわり小さくした位の大きさです。果たしてこれがスーパーで見かける位の大きさになるのでしょうか？&lt;/p&gt;

&lt;p&gt;というわけで、ゴーヤ大作戦の中間報告でした。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-2641990673181288203?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-26T22:22:39.995+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/07/2.html</feedburner:origLink></item><item><title>ブログをBloggerへ移行し独自ドメインで運用</title><link>http://feedproxy.google.com/~r/probo/~3/h_nS3Q6XoEw/blogblogger.html</link><category>blogger</category><author>noreply@blogger.com (Sugmak)</author><pubDate>Thu, 26 Jul 2007 15:51:22 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2858710381753536146.post-6069962532765782432</guid><description>&lt;p&gt;
この度会社で念願の専用サーバーをレンタルすることになり、
そこで何かいろいろ始めてみようということになりました。
丁度良い機会なので、ホームページもリニューアルすることになり、
現在それらの準備に追われています。
&lt;/p&gt;

&lt;p&gt;
当初、当ブログも専用サーバーへ引っ越す予定だったのですが、
なんだか最近は、Google系のツールに独自ドメインを組み合わせると、
かなり便利そうだという話になり、
それならうちも日常使っているツールのうち、
Googleで出来ることは極力そちらにお任せして、
コストを下げつつ、専用サーバー上での本業に注力しましょうよ、
ということになりました。
&lt;/p&gt;

&lt;p&gt;
そういう訳で、早速会社で使っているメールとブログを、
それぞれGmailとBloggerへ移行してみました。
どちらも独自ドメインで運用できています。
Bloggerを独自ドメインで使う方法は&lt;a href="http://help.blogger.com/bin/answer.py?answer=55373"&gt;こちらのページ&lt;/a&gt;で説明されています。
&lt;/p&gt;

&lt;p&gt;
RSSフィードのURLも全く変更はありません。&lt;br /&gt;
&lt;pre&gt;http://feeds.feedburner.com/probo&lt;/pre&gt;
引き続き、「デジタル工房プロボ」をよろしくお願いいたします。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2858710381753536146-6069962532765782432?l=sugmak.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-27T07:51:22.607+09:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sugmak.com/2007/07/blogblogger.html</feedburner:origLink></item></channel></rss>
