Googleのデータホスティングサービス・Google Base!?

by tanabe on October 27, 2005

del.icio.usで見かけたのだけど、Googleの新サービスが予定されているらしい。

Google Base: All your base are, in fact, belong to us
http://arstechnica.com/news.ars/post/20051025-5480.html

Google Base is Google's database into which you can add all types of content. We'll host your content and make it searchable online for free.

Examples of items you can find in Google Base:

  • Description of your party planning service
  • Articles on current events from your website
  • Listing of your used car for sale
  • Database of protein structures

You can describe any item you post with attributes, which will help people find it when they search Google Base. In fact, based on the relevance of your items, they may also be included in the main Google search index and other Google products like Froogle and Google Local.

ずいぶんと思い切った内容だ。

ぐぐるたんのニセインターネット”の「ぐぐるたんは、なにか新しいアイディアを実現するときに、自分の持っているニセインターネットを活用できる。」では飽き足らないらしい。

これで全面的にGoogleがあらゆるサービスのデータを握るようになったら、「インターネットの検索サービスGoogle」から「インターネットとはGoogleで検索したもの」という存在へ、つまりニセインターネットがホンモノインターネットへ化けてしまう。(あるいはインターネットのミドルウェアという存在。まさにインターネットのIntel Insideだ。)

たしかに仕事でOutlookを使わざるを得ないときなんかに、Gmail並の検索性能がないことにイライラしたりすることはある。

だから、

Think about it. When using eBay or Craigslist, how often do you think "I wish I could search this with Google"?

という気持ちはよくわかる。これは便利だろう。

便利だけど、はたしてこれを”インターネット”が許すのか。今後の動きがとても興味深い。(そもそもこれって本当にサービス開始されるのかも含めて)

  

ほんとになぜいったいLispなの?

by tanabe on October 26, 2005

アクセスログを見ていたら、なぜか急に梅田望夫さんの『 「ハッカーと画家」書評』からのアクセスが急増していました。驚いて、とりあえずはてなブックマークへ。

どうやら、この二つのエントリが絡んでそうです。

inquisitorさんのところから梅田望夫さんの書評へリンクが張られているので、ここからアクセスが流入していた模様。

でも、けっきょくどうしてこの二つが急に取り上げられたのかは不明なままでした。

Paul GrahamのOSCON2005スピーチがIT Conversationsにあがってきたから?それとも11月にこんな力の入ったLispセミナーが開催されるから?それとも、「普通のやつらの下を行け」効果?

# とか言っている間にPaul Graham著 "On Lisp"の邦訳を見つけました。訳者の野田開さんに感謝しつつ、ゆっくりと読ませて頂きます。

  

[memo] Windows環境でのExerbの使い方

by tanabe on October 25, 2005

install

$ ruby install.rb config
$ ruby install.rb setup
$ ruby install.rb install


使い方

sample.rbのフォルダで、

ruby -r exerb/mkexr sample.rb
ruby c:\ruby\bin\exerb sample.exr

  

「国家の自縛」で佐藤優の類稀な話力を再認識。

by tanabe on October 20, 2005

つくづく佐藤優は日本屈指の語り部だと思う。10行も読めば新しい情報が書かれている。内容のある文章の比率が非常に高い。濃い。次から次へと文学、歴史、自分の体験からの引用が出てくる。

言っていることが正しいかどうかは好き好き、価値観の問題となる部分もあるが、間違いなく今最高に知性と教養のある話をできる人の一人だ。

そして、ビジネスをする人間にとってもプロフェッショナリズムとは何かを学ぶ飛び切り上等の教材である。

例えば、こんな話がある。「国家の罠」を読んだ人にはお馴染みの東郷氏に関する言及である。

要するに東郷さんは精神も行動様式も「貴族」なのであって、金や人事に固執せずに、自らが国益と信じる価値を実現するためには、私のようなノンキャリアの若手官僚も活用するし、歴代総理や鈴木宗雄さんの前で平気で土下座することができる。本質的なところでの矜持があるから、小さなプライドを捨てることができたのだと思うのです。(P28)

さらにこんな文もある。

 対中外交については、総理が靖国参拝を行った場合、中国がどのような反応をするか、想定され得る最悪の状況を含むきちんとしたシミュレーションを行って総理に伝えることを怠った。漏れ伝え聞くところでは、一部の外務省幹部は「小泉総理は嫌な話を聞く耳を持たない。怖くて伝えられない」などという無責任な発言をしている。嫌がられても、怖くても職業的良心に従って、専門家としての見解を伝えることが官僚の本義なんです。(P72)

プロフェッショナルの取るべき態度という抽象的な哲学を伝えるのにも具体的な例を挙げて実に上手く説明をしている。

以下、見識が優れていることはもちろん、類稀な話上手の技を引用しておく。

(靖国について) 近代国民国家が存在する限り、戦没者の顕彰の問題は残るのであって、要はそれを排外主義と(ショービニズム)のシンボルにしないことなんです。日本の愛国主義、正統なナショナリズムは排外主義とは縁がない。この伝統を維持することです。(P61-62)

ロシア人、イスラエル人は、過去の戦争について自己中心的な「物語」を作っている。同時に彼らはそれが「物語」で、他民族が別の「物語」を作っていることを理解しているんです。だから靖国神社に対して特段の抵抗はないんですよ。(P70-71)

ロシア人は、誤報(misinformation)として処理されるような情報操作(disiformation)は、情報操作としては三流以下と考えるんです。一級の情報操作とは、事実関係については確かで、事実の一面を強調し、それにある種の評価を加えることにより、結果として、情報操作を行う側に有利になり、利害関係が対立する側に不利になるコミュニケーション体系が確立することです。(P137)

 一九九一年夏にゴルバチョフ大統領を一時失脚させたクーデター未遂事件の時、首謀者のソ連共産党守旧派の幹部連中というのは、とんでもない連中だというイメージが日本ではあるんですけれども、私は周辺で見ていて、国家に対してはすごくまじめな連中だった。彼らはゴルバチョフ路線でそのままいったらソ連はなくなってしまうと見通していた。確かにそうだったんですよ。ペレストロイカ(再編)というのはソ連国家を強化するためでしょう。社会主義を放棄するためではないと。
 ところが主権ソビエト共和国連邦なんて形で社会主義を外した形の連邦条約を作ったら、ソ連国家はなくなるという危機感にかられて彼らは決起したんです。自分たちのやったことはぜんぜん悪いと思ってないんですよ。だから謝らない。エリツィン元ロシア大統領が「ごめんなさいと言ったら許してやる」と共産党幹部たちに言ったら、ペッといって全然謝らない。ところが頭を下げたこともあるんです。タイピストとか運転手とか共産党にいたでしょう。彼らは政治と関係ないから再就職させてやってくれと、それで頭を下げたんです。(P139)

領土問題については国際社会に「ゲームのルール」があります。わが方が実効支配をしてる場合には領土問題と認めないことなんです。領土問題と認めたら、それはその領土を手放す第一歩になるんです。そういうルールなんです。しかし、向こうが実効支配してるものは「領土問題である」といって拳を振り上げる。どの国もそういうやり方をするんです。ですからそのルールブック通りにやればいいんですよ。国際スタンダードでは、向こうが係争問題と言っていてもこちらが実効支配している以上はこれは問題だとか、いろんなキツい言い方をされても、それは聞く必要はないんです。
 ですから、中国は存在しない尖閣問題に対して大騒ぎをすることによって日本が領土問題と認知したところでシメシメということなんですよ。要するにタチの悪いテキヤさんがそこの縁日を全部とりたいときに、最初から「全部よこせ」とは言わないわけです。「ちょっと椅子を一つ置かしてください」と言うわけですよ。椅子を一つ置かしたらその後ぐーっと入ってくる。それが領土問題として認知させることなんですよ。(P146)

 

国家の自縛
国家の自縛
posted with amazlet on 05.10.20
佐藤 優
産経新聞出版 (2005/09)
  

第八回XML開発者の日

by tanabe on October 20, 2005

第八回XML開発者の日」の申込受付通知が来ましたよ。

いや、楽しみったらありゃしません。自分の中ではoasis来日ライブに並ぶ11月の一大イベントになりました。

当日までに買い置き状態の水野さんのRSS本も読んでおこう。

  

「国家の罠」の佐藤優に新刊が!

by tanabe on October 20, 2005

梅田望夫さんも絶賛されていた「国家の罠」の佐藤優の新刊が出ていたので即買い。

国家の自縛
国家の自縛
posted with amazlet on 05.10.20
佐藤 優 斎藤 勉
産経新聞出版 (2005/09)

さぁ、気合を入れて一気に読むぞ〜。楽しみ。

なお未読の方は、「国家の罠」もぜひぜひどうぞ。オススメです。

国家の罠 外務省のラスプーチンと呼ばれて
佐藤 優
新潮社 (2005/03/26)
売り上げランキング: 733

  

この色に合う色はど〜れだ?

by tanabe on October 19, 2005

個人でブログやらWikiやら色々と持つことができて、しかもそのデザインも好きなようにカスタマイズできてしまう時代はとても楽しいのですが、デザインのセンスが優れているとは言えない自分は四苦八苦しながら作業していたりします。

そんなときに便利なツールをArtbirさんで知りました。

ColorMatch 5Kというこのツールは、RGBのバーを調節するとその色に合う色の組み合わせ一組を自動生成して6色表示してくれます。自分で作った色の組み合わせがきれいだと、それだけでちょっとうれしくなります。

http://www.colormatch.dk/

今のところFirefoxでは使えないようなので、IEでお試しください。

  

目的のブックマークへのアプローチを記録するソーシャルブックマークが競争力を手に入れる

by tanabe on October 17, 2005

一ユーザーとして、ソーシャルブックマークを地味に使い続けています。公開しながらdel.icio.usを、そしてこっそりとはてなブックマークを使ってます。

もし、すべてのユーザーが自分と同じような使い方をしているとしたら、という仮定の上でですが、ソーシャルブックマークで一番の競争力となるデータというのはタグでもなくブックマークしたユーザー数でもなく、またコメントなどのコンテキストでもなく、こいつになるんじゃないかな、と思ったものがあります。

それは、例えば二、三ヶ月前にブックマークした内容を探すときにどのようなアプローチでそのブックマークへと到達したかというアプローチの流れ、そしてどのブックマークが再び参照される頻度が高いかというデータです。

 

Tim O'Reillyが『Data is Next "Intel Inside"』と言っていたとおり、Webアプリケーションの時代にサービス提供者が手にするデータはビジネスの原動力になり得ます。問題は、ユーザーがログとして残すデータは膨大ですが、どのデータはWeb2.0的に外部と共有してWebのスケールへ生かし、どのデータはプロプライエタリな企業としての盾に使うのかという見極めだと思います。(この考え方自体が旧世代なのかもしれないという疑いも捨てられませんが)

そして、ソーシャルブックマークにおいてはこのユーザーの検索の際のアプローチや参照頻度がその自分だけの武器とすべきデータに当たるのではないか、と思うのです。

以下、ちょっと補足です。

  • 検索のアプローチ ・・・ どんなキーワードで検索した結果発見したのか、どんなタグから引っ張って見つけたのか、あるいは月日から探し出したのか
  • 参照頻度 ・・・ 何回も参照されるブックマーク(の指すURL)はいいエントリである可能性が高いでしょう。単に400users! ヤッタネ! というエントリよりは意義がある気がします。
  • ユーザーの利用方法に基づいて意味のありそうなデータを考えてみている。あくまで「皆が私と同じ使い方ならば」という仮定の上でですが、私が再検索したエントリは意義深いエントリが多かったです。
  • 問題としては「どのブックマークの一覧を表示したか」というログはサーバに残りそうですが、「最後にどのURLへ跳んだか」という履歴は現在残っていないんじゃないかという疑いがあります。中の人の意見を期待!
  

試行錯誤ブログのため、いろいろ実験すると思います。

by tanabe on October 17, 2005

ここは基本的に自分の勉強用、おもしろいと思ったこと、やってみようと思ったことを実践してみよう。どうせやるなら人目にさらしてリアクションをもらった方が自分の中の消化がいいだろう。という理由だけで作った場なので、しばらくガチャガチャと遊ぶと思います。文体とか内容とか内容の持っていき方とか。別に気が狂ったとかではないはずなので、変なエントリ見かけても生暖かかく放置してやってくださいな。

○○を狙ってるんじゃないの?とか、△△を読んで影響されただろ?とかのツッコミも歓迎です。それはそれで楽しく読みます。

# 今までもけっこう痛いのあったんで、あんま変わらんという話も・・・

  

Rolling on Ruby on Rails - Japanese Translation - p5

by tanabe on October 06, 2005

Pages: 1, 2, 3, 4, 5

レシピをカテゴリー分けする

これでレシピとカテゴリーをもったクックブックになった。あとは紐付けが必要だ。レシピがなんらかのカテゴリーに所属するようにしたい。これはrecipesテーブルにフィールドを追加してそれぞれのレシピのカテゴリーidを持たせて実現しよう。あとはカテゴリーのドロップダウンリストを使えるようにするためにレシピにedit メソッドを追加しよう。

まず、categoryテーブルのキーと対応するようにint(6)category_id フィールドをrecipe テーブルへ追加する。Figure 48の通り。

the recipe table with its new category_id
Figure 48. 新しいcategory_idを持ったrecipe テーブル

このフィールドにはレシピの所属するカテゴリーのid が入る。ここでRecipe モデルクラスにもこのことを教えてやろう。

c:\rails\cookbook\app\models\recipe.rbc:\rails\cookbook\app\models\category.rb を開いて、Figures 49 ,50のように各モデルクラスに一行追加する。

setting relationships in the Recipe model
Figure 49. Recipe モデルにリレーションシップを設定

setting relationships in the
Category model
Figure 50. Category モデルにリレーションシップを設定

これでRailsに、レシピは一つのカテゴリーに所属することと一つのカテゴリーは複数のレシピを持てることが伝えられるのがわかるだろう。実際にRubyのコード上でも、これらの宣言(has_manyやbelongs_to)がデータ同士のリレーションシップを表現するメソッドを生成する。

例えば@recipeとしてレシピオブジェクトがあったとすると、カテゴリー名を得るためには@recipe.category.nameというコードがあればいい。同じように@categoryというカテゴリーオブジェクトがあったなら、このカテゴリーに属するすべてのレシピのコレクションを使いたいときは@category.recipesと書けばいい。

さて、そろそろレシピをカテゴリーに分類するためのレシピのedit処理とテンプレート(template from the scaffolding)の仕上げに入ろう。c:\rails\cookbook\app\controllers\recipe_controller.rb を開いたら、Figure 51のようにeditメソッドを追加しよう。

the Recipe controller's new edit method
Figure 51. Recipe コントローラーの新しいedit メソッド

このメソッドはテンプレートがレシピの編集("edit recipe")ページを作成するときに使われる二つのインスタンス変数を作成している。@recipeはぼくらが編集したいレシピだ(idパラメータはウェブリクエストから渡される)。@categoriesはデータベース中のすべてのカテゴリーのコレクションだ。テンプレートがカテゴリー選択のドロップダウンリストを作成するのに使われる。

c:\rails\cookbook\app\views\recipe の中にedit.rhtml という名前のファイルを作成して、下記のようなHTMLのテンプレートを記入しよう。下のコードはほとんどは普通のHTMLで、カテゴリー選択のドロップダウンリストを作成するために<select> タグと<option> タグが仕掛けられている。

<html>
 <head>
  <title>Edit Recipe</title>
 </head>
 <body>
 <h1>Edit Recipe</h1>

 <form action="../update/<%= @recipe.id %>" method="POST"">
  <input id="recipe_id" name="recipe[id]" size="30" 
         type="hidden" value="<%= @recipe.id %>" />
  <p><b>Title</b><br>
  <input id="recipe_title" name="recipe[title]" size="30" 
         type="text" value="<%= @recipe.title %>" />
  </p>
  <p><b>Description</b><br>
  <input id="recipe_description" name="recipe[description]" 
         size="30" type="text" 
         value="<%= @recipe.description %>" />
  </p>
  <p><b>Category:</b><br>

  <select name="recipe[category_id]">
   <% @categories.each do |category| %>
       <option value="<%= category.id %>" 
         <%= ' selected' if category.id == @recipe.category_id %>>
         <%= category.name %>
       </option>
   <% end %>
  </select></p>

  <p><b>Instructions</b><br>
  <textarea cols="40" id="recipe_instructions" 
            name="recipe[instructions]" 
            rows="20" wrap="virtual">
    <%= @recipe.instructions %>
  </textarea> </p>
  <input type="submit" value="Update" />
 </form>

 <a href="/recipe/show/<%= @recipe.id %>">
   Show
 </a> | 
  <a href="/recipe/list">
  Back 
 </a>

 </body>
</html>

@recipe@categories の変数が使われているのが確認できる。選択リストを作るためにすべてのカテゴリーをループさせている所に注目してほしい。<option> タグを見て、編集中のレシピが属するカテゴリーが選択された状態にするためにタグがどのように使われているかを理解してほしい。テンプレートをよく見て、試してみてほしい。

ブラウザでhttp://127.0.0.1:3000/recipe/list を開き、レシピ"Ice Water"を編集しよう。Figure 52のようにカテゴリーを"Beverages,"にしよう。

changing the category for a recipe
Figure 52. レシピのカテゴリーを変更する

最後のステップへ行く前に、データベース上のすべてのレシピがカテゴリーを持っていることを確認してほしい。それぞれを編集(Edit)し、カテゴリーを選択して、更新しよう。これが漏れていると、次のステップでエラーになる。

レシピ一覧にカテゴリーを表示させる

これが最後のステップだ。さっき作ったlistのテンプレートをいじって、それぞれのレシピのカテゴリーが表示されるようにしよう。

c:\rails\cookbook\app\views\recipe\list.rhtml を編集して、以下のようにする。

<html>
<head>
<title>All Recipes</title>
</head>
<body>

<h1>Online Cookbook - All Recipes</h1>
<table border="1">
 <tr>
  <td width="40%"><p align="center"><i><b>Recipe</b></i></td>
  <td width="20%"><p align="center"><i><b>Category</b></i></td>
  <td width="20%"><p align="center"><i><b>Date</b></i></td>
 </tr>

 <% @recipes.each do |recipe| %>
  <tr>
   <td><%= link_to recipe.title, :action => "show", :id => recipe.id %></td>
   <td><%= recipe.category.name %></td>
   <td><%= recipe.date %></td>
  </tr>
 <% end %>
</table>
<p><%= link_to "Create new recipe", :action => "new" %></p>

</body>
</html>

http://127.0.0.1:3000/recipe/list をブラウズして確認してみよう。Figure 53のように見えるだろうか。

recipes listed with categories
Figure 53. カテゴリーと共に表示されたレシピ一覧

読者のための次のステップ

おめでとう。これであなたもRailsアプリケーションを組み上げることができた。もちろん、まだまだ足りないところはある。それでもこれはちゃんと動く。

あなたのための宿題をいくつか。

  • レシピを削除することができない。editテンプレートに削除ボタン(かリンク)を追加してみよう。
  • レシピ一覧のページにカテゴリー編集のページへのリンクがない。どうにかしてほしい。
  • 特定のカテゴリーのレシピだけを表示するようなことができると便利だ。例えば、snackのレシピだけを全部表示させたいことがあるだろうし、あるいはbeverageのレシピだけを全部一覧したいこともあるだろう。レシピ一覧のページに各カテゴリーの名前を並べて、そのカテゴリーの全レシピだけを表示するページへのリンクにしてほしい。

この記事は二つのパートに分かれており、こちらはその一つ目のパートになる。二つ目のパートでは上の項目を実装していくのだが、あなたがそれをじっと待っている必要はない。これらを自分で実装してみるのはRailsでの開発のとてもいい第一歩になると思う。

Parting Thoughts

Ruby on RailsはWebアプリケーションの開発をまったく新しい次元に押し上げた。Railsが肩代わりしてくれるので、あなたはもうこれまでのうんざりするような作業をしなくて済むようになった。もしRailsの命名規約に従わないようなレガシーデータベースを使わないといけなくても、Railsを使うことによる生産性の向上を諦めないといけないわけじゃない。どのテーブル名とカラム名を使えればいいかをRailsに明示する方法も残されている。

さぁ、これでどれだけ手軽にWebアプリケーションが作れるかの触りを見てもらったし、もう他のやり方でやろうとは思わないんじゃないかな。

たぶんあなたの雇い主は特定のフレームワークやプログラミング言語をあなたに強いてきたと思う。あなたにはまだ数日の猶予があるんだから、Railsでプロトタイプを作ってボスに言ってやろう。「アプリケーションの全体をRuby on Rails使って作っちゃいました。もしお望みなら、我々にはあと数ヶ月残されています。当初の予定どおりのものに仕上げることもできますよ。」(ニンマリ)

資料集

Webサイト

メーリングリスト

Curt Hibbs は30年以上の経験の中で数えきれないほどのプラットフォーム、プログラミング言語、テクノロジーを股にかけてきたSaint Louis, Missouriに住むシニアソフトウェアデベロッパーである。


  

SciTE Editorで日本語を使うには。

by tanabe on October 03, 2005

Rolling on Ruby on Railsの手順の通りに作業を進めると、SciTE Editorというエディタがインストールされる。

これがなかなか使いやすくて重宝するんだけど、デフォルトでは日本語が文字化けする。ということで、設定方法を。

[Options] -> [Open Global Options File] から、

# Internationalisation
# Japanese input code page 932 and ShiftJIS character set 128

の記述のとおりに'code.page'と'character.set'を設定変更。(すぐ下にコメントアウトされているので、'#'を外すだけ)

code.page=932
character.set=128

で、元から設定されている'code.page'の値をコメントアウト。

#code.page=0

これだけ。

検索かけていて、ここのおかげで知りました。多謝。

# ちょっと設定方法が変わっていたこともあり、同じ内容ですがエントリしなおしました。
# Rolling with Ruby on RailsのPage5は今週中にはエントリします。。遅くなりまくりで申し訳ないです・・・

  

Adam BosworthのSalesforce.comでのスピーチ

by tanabe on October 01, 2005

Adam Bosworth's Weblogで案内があったとおり、ここから実際に聞けます。

"The old model"と"The new model"など興味深い。