<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>hiyuzawa.jpn.org</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/" />
    <link rel="self" type="application/atom+xml" href="http://hiyuzawa.jpn.org/blog/atom.xml" />
    <id>tag:hiyuzawa.jpn.org,2007-11-08:/blog//1</id>
    <updated>2008-03-10T12:45:38Z</updated>
    <subtitle>正直しんどい。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Publishing Platform 4.0</generator>

<entry>
    <title>Flex builder で作る youtubeが検索できるplayer付きアプリ</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2008/03/flex-builder-youtubeplayer.html" />
    <id>tag:hiyuzawa.jpn.org,2008:/blog//1.28</id>

    <published>2008-03-08T09:24:12Z</published>
    <updated>2008-03-10T12:45:38Z</updated>

    <summary>こんにちは flex builder でちょっとしたアプリを作ったのでそれの作り...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="tech" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="flex" label="flex" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="prog" label="prog" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[<p>こんにちは<br />
flex builder でちょっとしたアプリを作ったのでそれの作り方をまとめてみました。 <br />
flex をこれから始める人、始めたけど<br />
今ひとつコツがつかめず挫折した人。などの人に参考になればと。</p>

<p>で、今回何を作ったかというと、<br />
「youtube が検索できる player 付きのアプリ」<br />
です。この中に flex で一通りの使い方が色々と盛り込まれているので<br />
一通り理解できれば、色んなアプリを手助けになるのではと思います。</p>

<p>さて、早速、完成画面から。今回はこんなのを作ってみようと思います。</p>

<p><img src="http://farm4.static.flickr.com/3069/2317793207_dc1c885fbf.jpg?v=0" /></p>

<p>見たい動画を検索窓に入れて、検索ボタンをおすと、左側のリストにyoutubeの検索結果が<br />
サムネイル付きで表示されます。ここでは <a href="http://code.google.com/apis/youtube/reference.html">youtube の API</a>を利用して<br />
検索結果を取得しています。<br />
次にサムネイルをダブルクリックすると、右側のプレイヤーで動画が再生されます。<br />
これだけです。</p>

<p>それでは、早速始めましょう。</p>

<p><img src="http://farm4.static.flickr.com/3249/2318592870_a70062d570_m.jpg" style="float:left;margin-right:5px;" /><br />
まずは flex builder の体験版をダウンロードしましょう。<br />
<a href="http://www.adobe.com/products/flex/">adobe flex</a>の HP よりDownload free trial を<br />
選択し、flex builder3の体験版をダウンロードしましょう。<br />
60日間トライアルできます。<br />
私はmac版をダウンロードしましたが、<br />
windowsの方はwindows版をdownloadです。</p>

<p><br style="clear:both;" /><br />
<img src="http://farm4.static.flickr.com/3130/2317803089_a5c5bf684a_m.jpg" style="float:left;margin-right:5px;" /><br />
次にdownloadしたファイルをPCにインストールします。<br />
この部分の説明は割愛.<br />
<br style="clear:both;" /><br />
インストールが終わったらflex builderを起動します。 <br />
<img src="http://farm4.static.flickr.com/3043/2317808959_b3c82cacc5.jpg?v=0" /></p>

<p>これから作成するアプリのプロジェクトを作成します.<br />
メニューから[ファイル] - [新規] - [MXMLアプリケーション] を選択します<br />
<img src="http://farm3.static.flickr.com/2169/2317817865_d944a55d28.jpg?v=0" /></p>

<p>プロジェクト名を入力します。今回は youtube_player としました。<br />
<img src="http://farm4.static.flickr.com/3265/2317817823_2ea1d75bbb.jpg?v=0" /></p>

<p><img src="http://farm3.static.flickr.com/2187/2317817787_15cab2d59f_m.jpg" style="float:left;margin-right:5px;" /><br />
終了を押すと、元の画面にプロジェクトのひな形が作成されました。<br />
ここから開発をスタートします。<br />
左上のflexナビゲータには各種リソースがあります。 <br />
src/youtube_player.mxmlのソースに編集を加えていくことになります。<br />
右のメイン画面にはそのソースが開いた状態になっていると思います。<br />
<br style="clear:both;" /></p>

<p>次にまずはデザインを配置してしまいましょう。今回使う主要なものは<br />
 - キーワードを入力する TextInput<br />
 - 検索ボタンの Button<br />
 - 検索結果を表示する TileList<br />
 - 動画を見せる player<br />
基本的にこの４つがあれば、デザインはどんなものでも良いです。<br />
メインパネルの「ソース」と「デザイン」の切り替えで「デザイン」を押して<br />
作ります。(もちろんソースに直に書いてもokです). 私が行った方法を例にあげます</p>

<p><img src="http://farm3.static.flickr.com/2369/2318655938_d9cc11ab0b.jpg?v=0" /><br />
</p><blockquote>Application(全体) の レイアウトを vertical にする.<br />
ApplicationControlBar を配置し width:100% にする.<br />
その中に TextInput と Button を配置する. <br />
Button のラベルを youtube search にする<br />
次にApplicationControlBarの下部にHDividedBoxを配置する<br />
width:100% height:100%にする<br />
その中に TileList を width:100% height:100%で配置する</blockquote><p></p>

<p>この時点で youtube_player.mxmlのソースは<br />
</p><pre><code><font color="red">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"&gt;
    &lt;mx:ApplicationControlBar width="100%"&gt;
        &lt;mx:TextInput/&gt;
        &lt;mx:Button label="youtube search"/&gt;
    &lt;/mx:ApplicationControlBar&gt;
    &lt;mx:HDividedBox width="100%" height="100%"&gt;
        &lt;mx:TileList width="100%" height="100%"&gt;&lt;/mx:TileList&gt;
    &lt;/mx:HDividedBox&gt;
&lt;/mx:Application&gt;</font>
</code></pre>
となっています.<br/>
<br/>
では、ちょっとずつ確認しながら作りましょう.<br/>
まず TextInputにキーワードを入力して  Buttonをクリックしたら Alertがあがるようにしましょう。<br/>
そのためには、TextInput に id をつけて Button のクリック動作に関数を割り当てましょう.<br/>
<br/>
<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <font color="red">&lt;mx:Script>
        &lt;![CDATA[
            import mx.controls.Alert;
            public function send_request():void {
                Alert.show(keyword.text);
            }
        ]]&gt;
    &lt;/mx:Script></font>
    &lt;mx:ApplicationControlBar width="100%">
        &lt;mx:TextInput <font color="red">id="keyword"</font> />
        &lt;mx:Button label="youtube search" <font color="red">click="send_request()</font>"/>
    &lt;/mx:ApplicationControlBar>
    &lt;mx:HDividedBox width="100%" height="100%">
        &lt;mx:TileList width="100%" height="100%">&lt;/mx:TileList>
    &lt;/mx:HDividedBox>
&lt;/mx:Application>
</code></pre>
<br/>

なにをやったかというと, TextInput に keywordというidを与え、Buttonの click イベントに send_request
の関数を与えました。 <br/>
mx:Script のタグをあたらにもうけ、その中に send_requestの関数を処理を記入しました。<br/>
今回は keywordの中身の文字列のAlert を出すのでその処理を記入しました。<br/>
(Alertを出すには mx.controls.Alert を import する必要があるのでそれも加えてあります)<br/>
<br/>

<img src="http://farm3.static.flickr.com/2094/2317890803_2e5df7cc6a_m.jpg" style="float:left;margin-right:5px;" /><br />
ここで実行を一度してみましょう。flex builder上部の緑色の丸いプレイアイコンをクリックするか
実行メニューを選ぶとswfをコンパイルしてブラウザが勝手に起動されると思います。
そこに先ほどデザインしたものが表示され、キーワード窓に適当に入力し、ボタンをクリックしたら
Alertダイアログが表示されその中身はキーワード窓で入力したものが表示されていると思います。<br/>
<br style="clear:both;"/>
<br/>
さて、次に youtube APIを利用して動画リストを取得するのですが、 <a href="http://code.google.com/apis/youtube/reference.html">youtube API</a>の仕様を確認しておきましょう. APIにはさまざまなリクエスト方法がありますが、今回使用するのは単純にキーワード検索ですので
<pre><code>
http://gdata.youtube.com/feeds/api/videos?vq=[キーワード]
</code></pre>
です。実際にブラウザでアクセスしてみるとXMLが取得できると思います.<br/>
flexにてapiにアクセスする一般的な方法は HTTPServiceを利用することです。先ほどの youtube_player.mxml に
<pre><code>
    &lt;mx:HTTPService id="youtubeapi" 
             url="http://gdata.youtube.com/feeds/api/videos" method="GET"
             result="youtubeapi_result(event)" />
</code></pre>
をまず加えます.　次に先ほど Alertをだしていた関数にsend_request にAPIリクエストを投げる処理を加え、APIの応答が戻ってきたときに呼ばれる(HTTPService関数のresultで指定した)youtubeapi_result関数を作れば、youtubeAPIに flexからリクエストを投げて応答を受け取ったことになります. ここまでで
プログラムは以下になります
<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    &lt;mx:Script>
        &lt;![CDATA[
            <font color="red">import mx.rpc.events.ResultEvent;</font>
            import mx.controls.Alert;
            public function send_request():void {
                <font color="red">var uv:URLVariables = new URLVariables;
                uv.vq = keyword.text;
                youtubeapi.request = uv;
                youtubeapi.send();</font>
            }
            
            <font color="red">public function youtubeapi_result(event:ResultEvent):void {
                Alert.show("get youtube result");
            }</font>
        ]]&gt;
    &lt;/mx:Script>
    &lt;mx:ApplicationControlBar width="100%">
        &lt;mx:TextInput id="keyword" />
        &lt;mx:Button label="youtube search" click="send_request()"/>
    &lt;/mx:ApplicationControlBar>
    &lt;mx:HDividedBox width="100%" height="100%">
        &lt;mx:TileList width="100%" height="100%">&lt;/mx:TileList>
    &lt;/mx:HDividedBox>
    
    <font color="red">&lt;mx:HTTPService id="youtubeapi" 
                    url="http://gdata.youtube.com/feeds/api/videos" method="GET"
                    result="youtubeapi_result(event)" /></font>
                    
&lt;/mx:Application>
</code></pre>
<br/>
説明していない部分は, send_request の中の
<pre><code>
        var uv:URLVariables = new URLVariables;
        uv.vq = keyword.text;
        youtubeapi.request = uv;
        youtubeapi.send();
</code></pre>
ですが、 URLVariables クラスを用いると一般的なAPIの引数の &key1=val1&key2=val2 値を
一つの変数で保持できます.　今回は vq=キーワードなので uv.vq = キーワード　となります.
後はこの変数を HTTPServiceの request にセットして APIに投げます (send). 
<br/>
ここでもう一度実行してみてください。 検索ボタンをおしてしばらく待つと応答が帰ってくると思います.
<br/>

さて、youtube からの応答がXML帰ってきました。が中身を知らなければ何もできません. ブラウザでアクセスしてみて応答をソース表示して中身のXMLを一度確認してみましょう.
かなり、よーくみると以下の構造をしていることが分かります
<pre><code>
&lt;?xml version='1.0' encoding='UTF-8'?>
&lt;feed .....>
しばらく、ヘッダー的なタグが続く
&lt;entry>1件目の動画情報&lt;entry>
&lt;entry>2件目の動画情報&lt;entry>
&lt;entry>3件目の動画情報&lt;entry>
&lt;entry>....&lt;entry>
&lt;entry>n件目の動画情報&lt;entry>
&lt;/feed>
</code></pre>
さらに、entryの中身は
<pre><code>
&lt;entry>
  &lt;id>http://gdata.youtube.com/feeds/api/videos/_EEx3VhloNg&lt;/id>
  &lt;published>2007-07-08T04:04:05.000-07:00&lt;/published>
  &lt;updated>2007-07-08T04:04:05.000-07:00&lt;/updated>
  &lt;category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='15年目'/>
  &lt;category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='YUTAKA'/>
  &lt;category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
  &lt;category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='尾崎豊'/>
  &lt;category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='OZAKI'/>
  &lt;category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='卒業'/>
  &lt;category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='アイラブユー'/>
  &lt;category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Music' label='Music'/>
  &lt;title type='text'>尾崎豊 － 卒業&lt;/title>
  &lt;content type='text'>尾崎豊 15年目のアイラブユー
2007-04-28
from Japan&lt;/content>
  &lt;link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=_EEx3VhloNg'/>
  &lt;link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/_EEx3VhloNg/responses'/>
  &lt;link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/_EEx3VhloNg/related'/>
  &lt;link rel='self' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/_EEx3VhloNg'/>
  &lt;author>
    &lt;name>sean1965jp&lt;/name>
    &lt;uri>http://gdata.youtube.com/feeds/api/users/sean1965jp&lt;/uri>
  &lt;/author>
  &lt;media:group>
    &lt;media:title type='plain'>尾崎豊 － 卒業&lt;/media:title>
    &lt;media:description type='plain'>尾崎豊 15年目のアイラブユー
2007-04-28
from Japan&lt;/media:description>
    &lt;media:keywords>15年目, OZAKI, YUTAKA, アイラブユー, 卒業, 尾崎豊&lt;/media:keywords>
    &lt;yt:duration seconds='411'/>
    &lt;media:category label='Music' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Music&lt;/media:category>
    &lt;media:content url='http://www.youtube.com/v/_EEx3VhloNg' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='411' yt:format='5'/>
    &lt;media:content url='rtsp://rtsp2.youtube.com/ChoLENy73wIaEQnYoGVY3TFB_BMYDSANFEgGDA==/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='411' yt:format='1'/>
    &lt;media:content url='rtsp://rtsp2.youtube.com/ChoLENy73wIaEQnYoGVY3TFB_BMYESARFEgGDA==/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='411' yt:format='6'/>
    &lt;media:player url='http://www.youtube.com/watch?v=_EEx3VhloNg'/>
    &lt;media:thumbnail url='http://img.youtube.com/vi/_EEx3VhloNg/2.jpg' height='97' width='130' time='00:03:25.500'/>
    &lt;media:thumbnail url='http://img.youtube.com/vi/_EEx3VhloNg/1.jpg' height='97' width='130' time='00:01:42.750'/>
    &lt;media:thumbnail url='http://img.youtube.com/vi/_EEx3VhloNg/3.jpg' height='97' width='130' time='00:05:08.250'/>
    &lt;media:thumbnail url='http://img.youtube.com/vi/_EEx3VhloNg/0.jpg' height='240' width='320' time='00:03:25.500'/>
  &lt;/media:group>
  &lt;yt:statistics viewCount='195171'/>
  &lt;gd:rating min='1' max='5' numRaters='133' average='4.95'/>
  &lt;gd:comments>
    &lt;gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/_EEx3VhloNg/comments' countHint='0'/>
  &lt;/gd:comments>
&lt;/entry>
</code></pre>
それでは、flexからこのXMLの各要素にアクセスしてみましょう。簡単です。応答が帰ってきたときに
呼ばれるために作った関数 youtubeapi_resultの引数に event:ResultEvent があります。これの
event.result要素がこのXMLになります。なので、例えば entryの５件目のtitle は
<pre><code>
event.result.feed.entry[5].group.title
</code></pre>
になります。それでは、ひとまず正しくXMLを取得できているか確認するために youtubeapi_result関数を
<pre><code>
    public function youtubeapi_result(event:ResultEvent):void {
        <font color="red">Alert.show(event.result.feed.entry.length);
        for(var i:int=0;i&lt;event.result.feed.entry.length;i++) {
            Alert.show(event.result.feed.entry[i].group.title);
        }</font>
    }
</code></pre>
として動作確認してみてください。取得した動画の本数とタイトルが順にAlertに表示されると思います.
<br/><br/>
さて、次はこの結果をTileListにリスト表示させます 
List, TileList, HorizontalList などの各要素は単純に dataProviderを用いてリスト表示をするのが単純な使い方ですが (<a href="http://livedocs.adobe.com/flex/2_jp/langref/mx/controls/List.html">flexリファレンス</a>)
検索結果画面とか商品一覧とかの画面ではリストの一つ一つがUIデザインをもつものであることが多いです。そのために、この List系のコンポーネントは itemRenderer というプロパティをもちます。これを使えば、個々のItemの設計を別に定義できます (<a href="http://livedocs.adobe.com/flex/2_jp/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000587.html">flexリファレンス</a>)<br/>
文字で書くと良くわからないので実際にやってみます。
<br>
まず、TileList のタグを
<pre><code>
&lt;mx:TileList width="100%" height="100%" <font color="red">dataProvider="{movielist}" itemRenderer="movieitem"</font>
</code></pre>
とします. これの意味は TileListの要素はmovielistの変数の値を使うよ. 個々のitemの表示には movieitemコンポーネント (movieitem.mxml) を使うよ. という意味です. movielist (<a href="http://livedocs.adobe.com/flex/2_jp/langref/mx/collections/ArrayCollection.html">ArrayCollection</a>) も加えた形は下記になります (movielistは Bindable として登録する必要があります).
youtubeapi_resultの処理をmovielistの初期化および entry リストの代入を行うように変更しました.
<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    &lt;mx:Script>
        &lt;![CDATA[
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
            <font color="red">import mx.collections.ArrayCollection;

            [Bindable]
            public var movielist:ArrayCollection = new ArrayCollection;</font>    

            public function send_request():void {
                var uv:URLVariables = new URLVariables;
                uv.vq = keyword.text;
                youtubeapi.request = uv;
                youtubeapi.send();
            }
            
            public function youtubeapi_result(event:ResultEvent):void {
                <font color="red">movielist.removeAll();
                for(var i:int=0;i&lt;event.result.feed.entry.length;i++) {
                    movielist.addItem(event.result.feed.entry[i]);
                }</font>
            }
        ]]&gt;
    &lt;/mx:Script>
    &lt;mx:ApplicationControlBar width="100%">
        &lt;mx:TextInput id="keyword" />
        &lt;mx:Button label="youtube search" click="send_request()"/>
    &lt;/mx:ApplicationControlBar>
    &lt;mx:HDividedBox width="100%" height="100%">
        &lt;mx:TileList width="100%" height="100%" <font color="red">dataProvider="{movielist}" itemRenderer="movieitem"</font> />
    &lt;/mx:HDividedBox>
    
    &lt;mx:HTTPService id="youtubeapi" 
                    url="http://gdata.youtube.com/feeds/api/videos" method="GET"
                    result="youtubeapi_result(event)" />
                    
&lt;/mx:Application>
</code></pre>
さて、これで実行するとエラーになるはずです. movieitem って何ですか？ と怒られてしまいます。
ので、movieitem を作りましょう.
<br/>
<img src="http://farm4.static.flickr.com/3230/2318814238_bb3e549633.jpg?v=0"><br/>
[ファイル] - [新規] - [MXMLコンポーネント] を選択して<br/>
<br/>
<img src="http://farm4.static.flickr.com/3063/2318818422_bbd1f8d79f.jpg?v=0"><br/>
ファイル名: movieitem  ベース: VBox  幅: 150 高さ:150<br/>
で終了すれば movieitem.xml が左上の flexナビゲータに追加されます.　この状態で実行するとエラーにはなりません. がまだ何も表示されません　が、マウスでTileListをなぞるとitemが置かれている予感がします.<br/>
<br/>
さて、 movielist.xml の記述に入ります. メインの画面を movielist.mxmlに切り替えて
Image および Text を配置します。デザインから行っても構いませんが、最終的なソースは
<pre><code><font color="red">
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="150" height="150"  horizontalAlign="center">
    &lt;mx:Image height="97" width="130" source="{data.group.thumbnail.getItemAt(0).url}"/>
    &lt;mx:Text  text="{data.group.title}" width="100%" height="100%"/>  
&lt;/mx:VBox></font>
<code></pre>
になります.  Imageはイメージ画像をロードするコンポーネントです. ここで重要なのが, TileListのdataProviderの各要素がこのコンポーネントに渡されるのですが、その各要素は data の変数から
取得できるということです. なので youtube の entry を各要素として TileListのdataProviderに渡しているからこの中では entryのtitleは data.group.title で取得できます. １つめのサムネイル画像は
data.group.thumbnail.getItemAt(0).url で取得できます (data.group.thumbnail[0].urlとするとバインディングエラーがでるので注意). 
<br/><br/>
ここで実行してみましょう<br/>
<img src="http://farm3.static.flickr.com/2201/2318052467_a56f755135.jpg?v=0"><br/>
ひとまずやった！ですね。<br/>
ということで応用すれば TileList をほかのに変更すれば縦リスト、横リスト. それに応じてまだ使ってない entryの要をを movieitem.mxml に貼付けていけばどんどんオリジナルな画面になっていきます.
<br/>
<br/>
さて、次は player の部分です。そもそもflexで動画を流すのは flv 形式のファイルをVideoDisplayというコンポーネントで再生する形にします. youtubeの各動画のflv形式を取得するのは、まず個々のvideo_idを取得します。これは普通にyoutubeを見るときにURLの中に含まれているので一般的です. APIのXMLの中にも
<pre><code>
&lt;entry>
  &lt;id>http://gdata.youtube.com/feeds/api/videos/_EEx3VhloNg&lt;/id>
</code></pre>
とあります。この_EEx3VhloNgがvideo_idです。
で、これが分かったら次に <a href="http://creazy.net/2007/10/youtube_flv_download_bookmarklet2.html">こういうホームページの解説</a>をフムフムと参考にさせていただいて, 自前のサーバにちょっとflexからはなれて、
<pre><code>
&lt;?php
    $curl = curl_init();
    curl_setopt ($curl, CURLOPT_URL, "http://www.youtube.com/watch?v=${_GET['video_id']}");
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
    $html = curl_exec ($curl);

    preg_match('|"video_id": "(.*?)"|', $html, $v);
    preg_match('|"t": "(.*?)"|', $html, $t);

    print "&lt;url>";
    print "http://jp.youtube.com/get_video?video_id=${v[1]}&t=${t[1]}";
    print "&lt;/url>";
?>
</code></pre>
こんなPHPスクリプトを設置します. これは何かというと <br/>
http://hiyuzawa.jpn.org/api/youtube.php?video_id=_EEx3VhloNg
とすれば
<pre><code>
&lt;url>
http://jp.youtube.com/get_video?video_id=_EEx3VhloNg&t=OEgsToPDskJkG3phYIjT7JC2IvqXnU3a
&lt;/url>
</code></pre>
が戻ってくるスクリプトです。この戻りのURLでflvが取得できます.

<br/>
さて、検索結果のサムネイルをダブルクリックした場合に動画が再生されるようにしたいので、
まず、サムネイルのダブルクリックを検知し、関数が呼ばれる仕組みを実装しましょう.<br/>
TileListのプロパティに
<pre><code>
doubleClickEnabled="true" doubleClick="playmovie()"
</pre></code>
を加えます。 doubleClickEnabledを trueにするのを忘れないようにしてください。それで
playmovie関数を定義すればそれが呼ばれます。今回はもう少し突っ込んで進みましょう。最終的に
やりたいことはタブルクリックしたら<br/>
1. ダブルクリックしたサムネイルの video_idをしらべて<br/>
2.そのvideo_idを先ほどのflvが取得できるURLを獲得できる自作のapiに投げて<br/>
3.その応答のURLを動画再生のsourceにセットする<br/>
です。なので、1.のダブルクリックしたサムネイルのvideo_idまで取得できるように実装しましょう.

<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    &lt;mx:Script>
        &lt;![CDATA[
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
            import mx.collections.ArrayCollection;

            [Bindable]
            public var movielist:ArrayCollection = new ArrayCollection;            

            public function send_request():void {
                var uv:URLVariables = new URLVariables;
                uv.vq = keyword.text;
                youtubeapi.request = uv;
                  youtubeapi.send();
            }
            
            public function youtubeapi_result(event:ResultEvent):void {
                movielist.removeAll();            
                for(var i:int=0;i&lt;event.result.feed.entry.length;i++) {
                    movielist.addItem(event.result.feed.entry[i]);
                }
            }
            
            <font color="red">public function playmovie():void {
                var tmp:Array = movielist.getItemAt(tilelist.selectedIndex).id.split('/');
                var video_id:String = tmp[tmp.length-1];
                Alert.show(video_id);
            }</font>
        ]]&gt;
    &lt;/mx:Script>
    &lt;mx:ApplicationControlBar width="100%">
        &lt;mx:TextInput id="keyword" />
        &lt;mx:Button label="youtube search" click="send_request()"/>
    &lt;/mx:ApplicationControlBar>
    &lt;mx:HDividedBox width="100%" height="100%">
        &lt;mx:TileList width="100%" height="100%" dataProvider="{movielist}" 
              itemRenderer="movieitem"
              <font color="red">doubleClickEnabled="true" doubleClick="playmovie()" 
              id="tilelist"</font> />
    &lt;/mx:HDividedBox>
    
    &lt;mx:HTTPService id="youtubeapi" 
                    url="http://gdata.youtube.com/feeds/api/videos" method="GET"
                    result="youtubeapi_result(event)" />
                    
&lt;/mx:Application>
</code></pre>

playmovieの関数で, tilelist.selectedIndex が何番目の listを今選択しているかが取得できます. (TileListのidをtilelistにしました.)  movielist.getItemAt(tilelist.selectedIndex).id でその選択している entryの idタグ部分が 
取得できます。このidは<br/>
&lt;id>http://gdata.youtube.com/feeds/api/videos/_EEx3VhloNg&lt;/id>
となっている部分なので、実際のvideo_idは最後の/の後ろの部分なので、ちょっと横着して / でsplitして、最後の部分を取得しています. (この部分はもっといい方法があると思います。) <br/>
まあ、これで実行してサムネイルをダブルクリックしてみてください. video_idが表示されるはずです.<br/>
<br>
次にvideo_idが取得できたら、これを自作のAPIに投げて flvのURLが取得できるところまで実装しましょう。APIへのリクエスト＆受信はまったくyoutube API の部分と同じ感じです。一気に実装します.

<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    &lt;mx:Script>
        &lt;![CDATA[
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
            import mx.collections.ArrayCollection;

            [Bindable]
            public var movielist:ArrayCollection = new ArrayCollection;            

            public function send_request():void {
                var uv:URLVariables = new URLVariables;
                uv.vq = keyword.text;
                youtubeapi.request = uv;
                  youtubeapi.send();
            }
            
            public function youtubeapi_result(event:ResultEvent):void {
                movielist.removeAll();            
                for(var i:int=0;i&lt;event.result.feed.entry.length;i++) {
                    movielist.addItem(event.result.feed.entry[i]);
                }
            }
            
            public function playmovie():void {
                var tmp:Array = movielist.getItemAt(tilelist.selectedIndex).id.split('/');
                var video_id:String = tmp[tmp.length-1];
                <font color="red">var uv:URLVariables = new URLVariables;
                uv.video_id = video_id;
                flvurlapi.request = uv;
                flvurlapi.send();</font>                
            }
            <font color="red">private function flvurlapi_result(event:ResultEvent):void {
                Alert.show(event.result.url);
            }</font>
        ]]&gt;
    &lt;/mx:Script>
    &lt;mx:ApplicationControlBar width="100%">
        &lt;mx:TextInput id="keyword" />
        &lt;mx:Button label="youtube search" click="send_request()"/>
    &lt;/mx:ApplicationControlBar>
    &lt;mx:HDividedBox width="100%" height="100%">
        &lt;mx:TileList width="100%" height="100%" dataProvider="{movielist}"
             itemRenderer="movieitem" doubleClickEnabled="true" doubleClick="playmovie()" 
             id="tilelist" />
    &lt;/mx:HDividedBox>
    
    &lt;mx:HTTPService id="youtubeapi" 
                    url="http://gdata.youtube.com/feeds/api/videos" method="GET"
                    result="youtubeapi_result(event)" />
                    
    <font color="red">&lt;mx:HTTPService id="flvurlapi" 
                    url="http://hiyuzawa.jpn.org/api/youtube.php" method="GET"
                    result="flvurlapi_result(event)" /></font>
&lt;/mx:Application>
</code></pre>
同じですね. もう一つ HTTPServiceをつくって、ダブルクリックで呼ばれる関数で send して
応答を受信する。event.result.url で &lt;url>http://......&lt;/url>の中身が取得できます.<br/>
<br/>
さあ、次にplayerを作ります。playerは <a href="http://livedocs.adobe.com/flex/2_jp/langref/mx/controls/VideoDisplay.html">VideoDisplay</a>という
非常に便利なコンポーネントがありますのでこれを使います. 実は単にメインの画面にこの VideoDisplayを
設置して id="hogehoge" とつけて hogehoge.source = で先ほどのflv のURLをセットすればそれで
再生できてしまうのですが... それだと応用性に欠けるのでplayerを独立したモジュールで作ってみましょう。さっさと再生したい方は上の方法をトライしてみてください.<br>
<br/>

<img src="http://farm3.static.flickr.com/2242/2321119474_7c9b43d9f7.jpg?v=0" style="float:left;margin-right:5px;" />
flvのplayerは別につくるアプリでも使う可能性がある. とか、 再生とか停止とかタイムとかそういうデザインをメインのmxmlに加えると混乱するなどという場合に mxmlファイルを別に定義してそれを読み込む形ができます。ちょうど上の itemRenderer と似ているような感じです。早速playerを独立したmxmlファイルで定義してみましょう.<br/>
まず、左上のflexナビゲータのsrcのフォルダを右クリックして「新規」-「フォルダー」で
module という名前のフォルダーを作ってください. 実際にはこの名前は何でもいいです.<br/>
次に, 先ほどの movieitem.mxmlを作っときと同様にメニューから <br/>
「ファイル」-「新規」-「MXMLコンポーネント」を選びます.<br/>
ファイル名: player  ベース: VBox  幅: 250 高さ:250<br/>
とします.作成先が module のフォルダの下になるように設定してください.<br/>
<br/>
最終的には左のようになればokです<br/>
<br style="clear:both;">
さて、ではこのplayer.mxmlに 動画プレイヤーの各機能を作っていきます。<br/>
一般的な動画再生サイトのplayerはカッコいい停止再生ボタンや、音量調節、再生ヘッド位置とか
色々表示されていますが、今回はUI的なことに凝ると本題から外れるので最低限の以下の機能&情報を
表示することにしましょう. <br/>
- 動画再生画面<br/>
- 中断/再生ボタン<br/>
- 読み込み済みbyte数 と Total byte数<br/>
- 再生の経過時間 と Total再生時間<br/>
です。
<br/><br/>
とりあえず上の情報を並べると、例えば<br/>
<img src="http://farm3.static.flickr.com/2240/2321192574_a171834816_m.jpg"  style="float:left;margin-right:5px;" />
<pre><code><font color="red">
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
    width="250" height="250">
    &lt;mx:Label text="my youtube player"/>
    &lt;mx:VideoDisplay id="vd" width="100%" height="100%" />
    &lt;mx:HBox>
        &lt;mx:Button label="play" />
        &lt;mx:Button label="stop" />    
    &lt;/mx:HBox>
    &lt;mx:HBox>
        &lt;mx:Label text="Loading Info:" />
        &lt;mx:Label id="byteloaded" />
        &lt;mx:Label text="/" />
        &lt;mx:Label id="bytetotal" />
    &lt;/mx:HBox>
    &lt;mx:HBox>
        &lt;mx:Label text="Playing Info:" />
        &lt;mx:Label id="playtime" />
        &lt;mx:Label text="/" />
        &lt;mx:Label id="totaltime" />
    &lt;/mx:HBox>
&lt;/mx:VBox></font>
</code></pre>
<br style="clear:both;">
という風になります。idは必要な箇所にすでに割り当てました.動画プレイヤー風になるように デザインビューなどをみてみて調節ください.<br/>
<br/>
さて、このプレイヤーを本体 (youtube_player.mxml) に設置するにはどうすればいいでしょう.<br/>
説明するのより、見てもらった方が理解しやすいのでそのまま貼付けます
<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" <font color="red">xmlns:module="module.*"</font> layout="vertical">
    &lt;mx:Script>
        &lt;![CDATA[
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
            import mx.collections.ArrayCollection;

            [Bindable]
            public var movielist:ArrayCollection = new ArrayCollection;            

            public function send_request():void {
                var uv:URLVariables = new URLVariables;
                uv.vq = keyword.text;
                youtubeapi.request = uv;
                  youtubeapi.send();
            }
            
            public function youtubeapi_result(event:ResultEvent):void {
                movielist.removeAll();            
                for(var i:int=0;i&lt;event.result.feed.entry.length;i++) {
                    movielist.addItem(event.result.feed.entry[i]);
                }
            }
            
            public function playmovie():void {
                var tmp:Array = movielist.getItemAt(tilelist.selectedIndex).id.split('/');
                var video_id:String = tmp[tmp.length-1];
                var uv:URLVariables = new URLVariables;
                uv.video_id = video_id;
                flvurlapi.request = uv;
                flvurlapi.send();                
            }
            private function flvurlapi_result(event:ResultEvent):void {
                Alert.show(event.result.url);
            }
        ]]&gt;
    &lt;/mx:Script>
    &lt;mx:ApplicationControlBar width="100%">
        &lt;mx:TextInput id="keyword" />
        &lt;mx:Button label="youtube search" click="send_request()"/>
    &lt;/mx:ApplicationControlBar>
    &lt;mx:HDividedBox width="100%" height="100%">
        &lt;mx:TileList width="100%" height="100%" dataProvider="{movielist}" itemRenderer="movieitem" doubleClickEnabled="true" doubleClick="playmovie()" id="tilelist" />
        <font color="red">&lt;module:player id="flvplayer" /></font>
    &lt;/mx:HDividedBox>
    
    &lt;mx:HTTPService id="youtubeapi" 
                    url="http://gdata.youtube.com/feeds/api/videos" method="GET"
                    result="youtubeapi_result(event)" />
                    
    &lt;mx:HTTPService id="flvurlapi" 
                    url="http://hiyuzawa.jpn.org/api/youtube.php" method="GET"
                    result="flvurlapi_result(event)" />
                    
&lt;/mx:Application>
</code></pre>
<img src="http://farm3.static.flickr.com/2215/2320372923_f46b8a9e75_m.jpg" style="float:left;margin-right:5px;" />
名前空間がどうこうという説明を本来するのでしょうが、こうやって上部におまじない書くと、そのフォルダ内のmxmlファイルを読み込むことができますよ。その際は通常 mx:hoge と書いている部分を module:hoge という風にするんですよ。と覚えておいてください<br/>
さて、これで実行してみてください。基本のロジックは変えていませんが、一番最初に HDividedBox を設置してから右側に何も無かった部分にplayer.mxmlで定義したモジュールが加わったことでしょう.
<br style="clear:both;" />

後もう少しです。まずは、とっととダブルクリックで再生できるようにまずはしてしまいましょう.
playerで定義した VideoDisplayのsourceに先ほどAPIで取得した flv のURLをセットすれば再生されます.<br/>
これをどのように実装するかは下記になります. Bindable で 変数 flvurl を定義しそれを VideoDisplayの sourceにセットする. こうすると youtube_player.mxml で先ほど定義した flvplayer から flvplayer.flvurl でアクセスできます. <br/>
player.mxml<br/>
<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="250" height="250">
    <font color="red">&lt;mx:Script>
        &lt;![CDATA[
            [Bindable]
            public var flvurl:String = new String;  
        ]]&gt;
    &lt;/mx:Script></font>
    &lt;mx:Label text="my youtube player" />
    &lt;mx:VideoDisplay id="vd" width="100%" height="100%" <font color="red">source="{flvurl}"</font>/>
    &lt;mx:HBox>
        &lt;mx:Button label="play" />
        &lt;mx:Button label="stop" />    
    &lt;/mx:HBox>
    &lt;mx:HBox>
        &lt;mx:Label text="Loading Info:" />
        &lt;mx:Label id="byteloaded" />
        &lt;mx:Label text="/" />
        &lt;mx:Label id="bytetotal" />
    &lt;/mx:HBox>
    &lt;mx:HBox>
        &lt;mx:Label text="Playing Info:" />
        &lt;mx:Label id="playtime" />
        &lt;mx:Label text="/" />
        &lt;mx:Label id="totaltime" />
    &lt;/mx:HBox>
&lt;/mx:VBox>
</code></pre>

youtube_player.xml の一部<br/>
<pre><code>
            private function flvurlapi_result(event:ResultEvent):void {
                <font color="red">flvplayer.flvurl = event.result.url;</font>
            }
</code></pre>

実行してみてください。　検索してサムネイルをダブルクリックすると動画がplayerで再生されます.<br/>
<br/>
実はこれで youtube_player.mxml は終わりです。playerの装飾は全部player.mxml の中で実装されます.<br/>

<pre><code>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="250" height="250" <font color="red">creationComplete="init()"</font>>
    &lt;mx:Script>
        &lt;![CDATA[
            <font color="red">import mx.events.VideoEvent;</font>
            [Bindable]
            public var flvurl:String = new String;
            
            <font color="red">private function init():void {
                vd.addEventListener(ProgressEvent.PROGRESS, function():void {
                    byteloaded.text = vd.bytesLoaded.toString();            
                    bytetotal.text  = vd.bytesTotal.toString();
                    playtime.text   = vd.playheadTime.toString();
                    totaltime.text  = vd.totalTime.toString();
                });
                vd.addEventListener(VideoEvent.PLAYHEAD_UPDATE, function():void {
                    byteloaded.text = vd.bytesLoaded.toString();            
                    bytetotal.text  = vd.bytesTotal.toString();
                    playtime.text   = vd.playheadTime.toString();
                    totaltime.text  = vd.totalTime.toString();
                });
            }</font>
        ]]&gt;
    &lt;/mx:Script>
    &lt;mx:Label text="my youtube player" />
    &lt;mx:VideoDisplay id="vd" width="100%" height="100%" source="{flvurl}"/>
    &lt;mx:HBox>
        &lt;mx:Button label="play" <font color="red">click="vd.play()"</font>/>
        &lt;mx:Button label="stop" <font color="red">click="vd.pause()"</font>/>    
    &lt;/mx:HBox>
    &lt;mx:HBox>
        &lt;mx:Label text="Loading Info:" />
        &lt;mx:Label id="byteloaded" />
        &lt;mx:Label text="/" />
        &lt;mx:Label id="bytetotal" />
    &lt;/mx:HBox>
    &lt;mx:HBox>
        &lt;mx:Label text="Playing Info:" />
        &lt;mx:Label id="playtime" />
        &lt;mx:Label text="/" />
        &lt;mx:Label id="totaltime" />
    &lt;/mx:HBox>
&lt;/mx:VBox>
</code></pre>
playとstop(pause)のボタンへの割当は上の要領でok. あとは 動画読み込み中、再生中に
各種データ(読み込みbyte, 再生時間の更新をするために, VideoDisplayの addEventListener の<br/>
- ProgressEvent.PROGRESS = FLV ファイルが完全にダウンロードされるまで継続的に送出されます。<br/>
- VideoEvent.PLAYHEAD_= UPDATE ビデオの再生中に 0.25 秒ごとに送出されます<br/>

というイベントでUpdate通知させます. 各種情報は <a href="http://livedocs.adobe.com/flex/2_jp/langref/mx/controls/VideoDisplay.html">VideoDisplayのリファレンス</a>から抜き出せばもっとリッチなplayerがつくれます.
<br/><br/>
さて、長々説明してきた Flex builder で作る youtubeが検索できるplayer付きアプリ もこれで完成しました。完成系は<br/><br/>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="650" height="450" id="youtube_player" align="middle"><br />
<param name="allowScriptAccess" value="sameDomain" /><br />
<param name="movie" value="/flash/work/youtube_player.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="/flash/work/youtube_player.swf" quality="high" bgcolor="#ffffff" width="650" height="450" name="youtube_player" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /><br />
</object>
<br/>
こんな感じになったと思います.<br/>
かなり我流な感じもしますので、ちゃんとしたflexの参考書からみれば間違った解説している可能性が
多くある気がしますが、その辺はご了承ください. <br/>
それでは長々とお付き合い下さいましてありがとうございました。<br/>
<br/>]]>
        
    </content>
</entry>

<entry>
    <title>もてぎ行ってきました.</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2008/01/post-14.html" />
    <id>tag:hiyuzawa.jpn.org,2008:/blog//1.27</id>

    <published>2008-01-16T13:03:39Z</published>
    <updated>2008-01-16T13:20:22Z</updated>

    <summary>昨年に引き続きことしも、先週 ツインリンクもてぎ に行ってきたよ。 毎度のことな...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[昨年に引き続きことしも、先週 <a href="http://www.mobilityland.co.jp/motegi/">ツインリンクもてぎ</a> に行ってきたよ。
毎度のことながらここはレースシーズン以外は空いててすごく良い！
多摩テックや鈴鹿と同様に子供向けのアトラクション施設とかあるから子供も大満足。
<a href="http://www.mobilityland.co.jp/hoteltwinring/plan/2007/petittown.html">子供向けファミリープラン</a>とかあるからそれ利用しました。

子供も楽しんだんだけど、私も楽しみました。
<a href="http://www.mobilityland.co.jp/hellowoods/">工作教室</a>で竹馬作ったり...

<img src="http://farm3.static.flickr.com/2319/2197499640_1e35d3ddcc_m.jpg">]]>
        <![CDATA[ASIMOショーほぼ貸し切りで見たり...
<img src="http://farm3.static.flickr.com/2220/2196711109_a63ff61d86_m.jpg">

<a href="http://www.mobilityland.co.jp/kartland_m/index.html">カート</a>楽しんだり

<img src="http://farm3.static.flickr.com/2094/2196711237_a13ef0efb2_m.jpg">

<a href="http://www.mobilityland.co.jp/ms-amuse_m/swkart/swkart.html">オーバルコースを貸し切りでカート</a>のって走ったり...

<img src="http://farm3.static.flickr.com/2412/2197499762_b104deb537_m.jpg">

楽しかったっす！レジャー施設としておすすめです。]]>
    </content>
</entry>

<entry>
    <title>あけおめ。</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2008/01/post-12.html" />
    <id>tag:hiyuzawa.jpn.org,2008:/blog//1.26</id>

    <published>2008-01-06T02:56:50Z</published>
    <updated>2008-01-06T03:15:28Z</updated>

    <summary>明日から仕事... 年末から盛りだくさんだった。　写真で振り返る年末年始。   ...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[明日から仕事...

年末から盛りだくさんだった。　写真で振り返る年末年始。

<img src="http://farm3.static.flickr.com/2310/2161216310_837fb8a567_m.jpg"> 

実家から帰る車窓から。ビルが「子」にライトアップ？]]>
        <![CDATA[<img src="http://farm3.static.flickr.com/2367/2160446783_7685582024_m.jpg">
おせち食い過ぎ。今年も意識して減量しないとまた健康診断で...

<img src="http://farm3.static.flickr.com/2223/2170843328_f4d51e945c_m.jpg">
ことしは受験生が１人いるので学問の神様「湯島天神」へ. (3日)
絵馬に個人名やら住所やら志望校がたくさん.. 個人情報保護的にはどうなんだと思ってみたり..

<img src="http://farm3.static.flickr.com/2078/2170056367_549fb082f0_m.jpg">
凧揚げなんぞもしますわな。子供の手作り凧の方がよくあがったり...

<img src="http://farm3.static.flickr.com/2309/2166983685_385d22e3f4_m.jpg">
川崎大師には毎年いってます。今年は4日に行ったので超混雑...

<img src="http://farm3.static.flickr.com/2012/2166979671_9d8bb4b143_m.jpg">
お約束の甘酒〆

<img src="http://farm3.static.flickr.com/2359/2170843170_d9ea433c0d_m.jpg">
買ってもらったNewサッカーボールで... 
ことしもよろしく！]]>
    </content>
</entry>

<entry>
    <title>GT5P オンライン対戦始まった！</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/gt5p.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.25</id>

    <published>2007-12-25T15:10:52Z</published>
    <updated>2007-12-25T15:18:30Z</updated>

    <summary>感激！！　この時代に生きててよかった。 大げさだと言われるかもしれないが、それぐ...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[感激！！　この時代に生きててよかった。
大げさだと言われるかもしれないが、それぐらい楽しい。

<img src="http://farm3.static.flickr.com/2109/2135689680_29db52cc26.jpg?v=1198595422">

ただ、サーバが弱いのか1/3ぐらいの確率でエラーになってしまうのは
早く増強なりなんとかしてほしい。

今日は早く寝たかったのに...]]>
        
    </content>
</entry>

<entry>
    <title>家族クリスマス会&amp;忘年会</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/post-13.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.24</id>

    <published>2007-12-23T13:42:01Z</published>
    <updated>2007-12-23T14:06:55Z</updated>

    <summary> 今日は、お昼過ぎまでだらだら過ごし、３連休の中盤なのに、このままでは イカン！...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[ 今日は、お昼過ぎまでだらだら過ごし、３連休の中盤なのに、このままでは
イカン！（昨日は毎度の川崎ラゾーナにいっただけ。）ということで、
東京駅周辺に遊びにいきました。
東京駅は、<a href="http://www.gransta.jp/index.html">エキナカGranSta</a>が最近Open、
八重洲口の大丸がリニュアルなど、そんな影響でひと大杉。。
しかもおいしそうな店だらけ。朝からご飯食べてなくて、腹減った。。
で、結局 <a href="http://www.tokyoinfo.com/store/132-02.html">味の牛たん 喜助</a>ってところで
牛タン食べた。うまかった。昼からカミサンと２人でビール。
その後、大丸とか見に行って、こちらも人多すぎて大変だったので、
有楽町まで散歩がてら歩いた。国際フォーラム奇麗でした。

<img src="http://farm3.static.flickr.com/2379/2130927642_6400c635f3_m.jpg">

ビックカメラにいっておもちゃコーナで暇つぶす。
うちの少年はサンタに何もらおうかと、ウロウロ。（ウフフ..)
さすがにクリスマス前ものすごい人、買うまですごい行列。。。
君たちそんな直前に買いにきて混むの当たり前じゃん！もっと前もって...

<img src="http://farm3.static.flickr.com/2411/2130927610_0ffd5e2ea6_m.jpg">]]>
        <![CDATA[で、その後は銀座経由で新橋まで歩こう！ということで銀座へ。
ソニービルへ

<img src="http://farm3.static.flickr.com/2383/2130927654_3e5f099055_m.jpg">

生<a href="http://www.sony.jp/products/Consumer/rolly/index.html?j-short=rolly">rolly</a>初めて見ました。
微妙....  それより<a href="http://www.sony.jp/products/Consumer/oel/">有機ELテレビ</a>ってのを
みたんだけど、衝撃を受けた。今までのテレビの画質とは次元が違う... これが有機ELか！と。

で、銀座をブラブラで最後に<a href="http://www.hakuhinkan.co.jp/">博品館</a>に行った。

<img src="http://farm3.static.flickr.com/2278/2130927706_39450613b8_m.jpg">

↑妙に欲しくなった子供向け家具。

で、新橋着いて20時ぐらいだったんだけど、忘年会しますか！ということで
居酒屋に行って締めました。

子供はアイス食べながらDSしてました。

<img src="http://farm3.static.flickr.com/2048/2130927742_be4e478c90_m.jpg">

さて、明日はクリスマス♪]]>
    </content>
</entry>

<entry>
    <title>キッザニアに行ってきました！</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/post-11.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.22</id>

    <published>2007-12-16T14:43:31Z</published>
    <updated>2007-12-16T15:14:30Z</updated>

    <summary> 今日はキッザニアにいってきました。 なかなかチケットがとれないのだけどたまたま...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[ 今日は<a href="http://www.kidzania.jp/">キッザニア</a>にいってきました。
なかなかチケットがとれないのだけどたまたま子供の友人から家族分チケットを譲ってもらいました。
子供とカミサンは何度か行ったことがあり僕だけが初めてだったのだけど
カナーリ面白かったです。

この施設自体は「子供が色々なお仕事を体験できる」をコンセプトに作られた
エデュテイメントタウンらしいのですが、その色々な職業は実際の大人社会の会社が協賛しているらしく
その種類と内容も本格的でしかも複数のお仕事がうまーく連携していたりして感激しました。。

たとえば、お金を払えば「運転免許センター」で免許をとる。それには健康診断が必要で
その診断は別の「お医者さん」という施設で先生役をしている人から診断を受ける。
「レンタカー」で車に乗ったら、「ガソリンスタンド」の施設で働く人から給油を受ける。
「いらっしゃいませ！！！！！」と小さい子が叫んでいるのがカワイイ。

「宅急便屋さん」は「ブティック」で働く人店員(これも子供)に集荷に訪れる。

それはもう　ららぽーとの３Fで色んなことがおきてます(笑)

さて、うちの子は今日は何したかというと...]]>
        <![CDATA[まずは、「モスバーガ」の店員としてハンバーガ(テリヤキバーガ)を作りました。

<img src="http://farm3.static.flickr.com/2128/2114483181_e8d984de38_m.jpg">

うーん美味そう。終わった後自分で食ってました. (売らんのかい！(笑))

次は「大成建設」のビル工事をやりました。ビルの壁取り付けてました.

<img src="http://farm3.static.flickr.com/2107/2114483101_ca1de2b8f8_m.jpg">

ネジ締めて「OK!」と叫んでました。

さらにその次は 「SonyStyleによるカメラマン」体験。別のアトラクション「新聞社(朝日新聞)」が
発行するキッザニア新聞のネタを探すカメラマンの役.

<img src="http://farm3.static.flickr.com/2309/2114483039_42ced62cb2_m.jpg">

キッザニアの町をカメラ片手に歩き回り新聞のネタを探しています。カメラ覗いたまま歩くと危ないよ！！

次は「集英社により漫画家」

<img src="http://farm3.static.flickr.com/2050/2114482943_92effa7be6_m.jpg">

漫画ワンピースの１ページを仕上げます。ルフィーの台詞を書き入れたりと。最後にはオリジナルの
ワンピースの漫画を製本してもらえます。

次は、「綜合警備保障の警備員」。　お金をキッザニアの各お店に届けます。
今回は「ドコモショップ」に大金を届ける指名を受けたようです

<img src="http://farm3.static.flickr.com/2298/2115261730_925284b27b_m.jpg">

キッザニアの中では「キッゾ」と呼ばれるお金があり、お仕事をするとお給料がもらえます。

<img src="http://farm3.static.flickr.com/2270/2114549101_bf23f82bfd_m.jpg">

もちろん銀行もあり預けたりできますし、デパートがあってそこで稼いだお金でお買い物できます。

午前の部(9:00-14:00)と午後の部(16:00-21:00)があり今日は午後の部だったのですが
さすがに終盤は少し疲れちゃったみたいで、帰りの車の中で寝ちゃいました。
ご苦労様でした。]]>
    </content>
</entry>

<entry>
    <title>インターネットのひみつ　(￣ー￣)ﾆﾔﾘｯ</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/post-10.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.21</id>

    <published>2007-12-13T13:12:45Z</published>
    <updated>2007-12-13T13:26:49Z</updated>

    <summary> 今日帰宅して早々。うちの子供が 「とおちゃーん！とおちゃんのために学校から本借...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[ 今日帰宅して早々。うちの子供が

「とおちゃーん！とおちゃんのために学校から本借りてきたよ！」

と、何事かと思ったら...

<img src="http://farm3.static.flickr.com/2111/2108752424_51d16a612a_m.jpg">

<a href="http://kids.gakken.co.jp/himitsu/003/index.html">インターネットのひみつ - 学研 - 日本PTA全国評議会推薦図書</a>でした. あまりにも懐かしい描写ばかりで感激しました！

「電話線をつないで接続完了！」とか書いてあります。その辺は多少時代を感じますが
マウスの操作からインターネットの仕組みまで結構ツボを押さえた良書です。


ヤフーとか画面相当古いバージョンで載ってます。 2000年前後かな...
<img src="http://farm3.static.flickr.com/2304/2107977785_75327f636a_m.jpg">

]]>
        
    </content>
</entry>

<entry>
    <title>記念日。</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/post-9.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.20</id>

    <published>2007-12-10T12:59:32Z</published>
    <updated>2007-12-10T13:04:31Z</updated>

    <summary>今日は 8回目の結婚記念日でした。 毎年、式を挙げた教会の神父さんから当日にお便...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[今日は 8回目の結婚記念日でした。
毎年、式を挙げた教会の神父さんから当日にお便りがきます。
もう既に何千組もそこで式を挙げているのですが、
ちゃんと全組の記念日にコメントを添えてカードを送ってくれます。

<img src="http://farm3.static.flickr.com/2108/2100051407_c94f078b87_m.jpg">

毎年この時期になると思い出します。1999/12/10 我ながら良い式でした。

<a href="http://www.hotel-otowanomori.co.jp/wedding/chapel/chapel.html">旧軽井沢礼拝堂</a>]]>
        
    </content>
</entry>

<entry>
    <title>COSTCO</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/costco.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.19</id>

    <published>2007-12-09T10:48:47Z</published>
    <updated>2007-12-09T11:15:37Z</updated>

    <summary>今日は、最近、毎月１回買い物に行くコストコにいってきました。 コストコは完全会員...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[今日は、最近、毎月１回買い物に行く<a href="http://www.costco.co.jp/index.htm">コストコ</a>にいってきました。
コストコは完全会員制の倉庫型ショッピングセンターです。
ここでは、なんでも海外仕様？のものが低価格で売られています。
低価格といっても１つの量がハンパないので調子に乗って買うとすごく
逆に高くついてしまいます。

<img src="http://farm3.static.flickr.com/2228/2097536758_71aa3c8454_m.jpg">]]>
        <![CDATA[買い物のほかにもう一つの目玉はそこにあるフードコート。
ここにある、<a href="http://www.google.com/search?client=safari&rls=ja-jp&q=コストコ　プルコギベイク&ie=UTF-8&oe=UTF-8">プルコギベイク</a>が超おいしい。クラムチャウダも超おいしい。
今回も食べまくて今すごくお腹いっぱい

<img src="http://farm3.static.flickr.com/2326/2097536738_db8daff0cd_m.jpg">

結構たくさん色んなところに店舗があるみたいなので是非お近くにある方は
行ってみてください！。そしてプルコギベイク食べてみてください！
（ちなみに私が行くのは川崎店）


会員料金は年間¥4,200。納得いかなければいつでも返金可能。

<img src="http://farm3.static.flickr.com/2135/2096759883_6f27f18a86_m.jpg">

<a href="http://www.costco.co.jp/index.htm">コストコ</a>]]>
    </content>
</entry>

<entry>
    <title>apache2 + php5 + mysql5 in osx (leopard)</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/apache2-php5-mysql5-in-osx-leo.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.18</id>

    <published>2007-12-04T14:41:03Z</published>
    <updated>2007-12-04T14:53:28Z</updated>

    <summary> leopard を新しくインストールして、 環境を作ってなかったので改めて作っ...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="tech" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mac" label="mac" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tech" label="tech" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[ leopard を新しくインストールして、 環境を作ってなかったので改めて作った。
毎度少し悩むのでメモメモ...

1. 準備
Mac-Portを最新の状態にして
<div class="myquote">sudo port -d selfupdate
sudo port -d sync
</div>

2. apache2のインストール
<div class="myquote">sudo port install apache2

設定ファイルを作って
sudo cp /opt/local/apache2/conf/httpd.conf.sample /opt/local/apache2/conf/httpd.conf

ちゃんと起動できるか確認して
sudo /opt/local/apache2/bin/apachectl start
http://localhost/
sudo /opt/local/apache2/bin/apachectl stop
httpd.confの
#LoadModule ssl_module modules/mod_ssl.so 
コメントアウトが必要 (leopard 07/12現在)
</div>

3. MySQL5のインストール
<div class="myquote">port variants mysql
sudo port install mysql +server

初期設定をして
sudo -u _mysql mysql_install_db5
# -u _mysql 忘れるとハマる. /opt/local/var/db/mysql5/*.err 確認

起動&接続確認して
sudo mysqld_safe5 &
mysql5 -u root 
sudo mysqladmin5 shutdown
sudo vim /etc/my.cnf
</div>

4. PHP5のインストール
<div class="myquote">port variants php5
sudo port install php5 +apache2 +mysql5 +pear

apacheにPHPかまして
cd /opt/local/apache2/modules/
sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

PHP設定ファイルつくって
cp /opt/local/etc/php.ini-dist /opt/local/etc/php.ini
httpd.conf に
Include conf/extras-conf/*.conf
追記する
</div>

5. 最後に確認
<div class="myquote">sudo /opt/local/apache2/bin/apachectl start
$ cat /opt/local/apache2/htdocs/phpinfo.php 
&lt;?php
    phpinfo();
?>
http://localhost/phpinfo.php
</div>]]>
        
    </content>
</entry>

<entry>
    <title>自宅環境</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/12/post-8.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.17</id>

    <published>2007-12-03T13:11:15Z</published>
    <updated>2007-12-03T13:52:37Z</updated>

    <summary>PS3 と TVが自宅にやってきた。家の中が色々繋がってうれしい！ あまりにも嬉...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[PS3 と TVが自宅にやってきた。家の中が色々繋がってうれしい！
あまりにも嬉しかったので自宅環境を書いてみた。

<img src="/images/homenv.png"> 

1. <a href="http://www.apple.com/jp/macbook/macbook.html">Apple MacBook 13" 2GHz Intel Core Duo 2GB [MA472J/A]</a>
2. <a href="http://www.nintendo.co.jp/ds/">NintendoDS Lite (blue / white)</a>
3. <a href="http://www.jp.playstation.com/psp/">PSP (1000系)</a>
4. <a href="http://www.vaio.sony.co.jp/Products/PCG-GRT99/">VAIO note PCG-GRT55B</a>
5. <a href="http://www.nintendo.co.jp/wii/">wii</a>
6. <a href="https://ybb.softbank.jp/adsl/standard/12m.html">Yahoo!BB ADSL 12M</a>
7. <a href="http://buffalo.jp/products/catalog/network/whr-hp-g54_ek/">AirStation WHR-HP-G54</a>
9. <a href="http://www.regza.jp/product/tv/lineup/z3500/concept.html">東芝 REGZA 37Z3500</a>
10. <a href="http://www.jp.playstation.com/hardware/ps3/cechh00.html">PS3 40G</a>
11. <a href="http://www3.toshiba.co.jp/hdd-dvd/products/hdd/rd-xs41.html">東芝 HDD&DVDレコーダ RD-XS41</a>
12. <a href="http://www.cno.co.jp/">大田ケーブルTV (地デジ&CATV)</a>
13. <a href="http://www3.pioneer.co.jp/product/product_info.php?product_no=00001326&cate_cd=051&option_no=0">Pioneer デジタルコードレスサラウンドヘッドホン SE-DIR800CII</a>
14. <a href="http://buffalo.jp/products/catalog/item/w/wli3-tx1-g54/">無線LAN イーサネットコンバータ WLI3-TX1-G54</a>
17. <a href="http://www.iodata.jp/prod/storage/hdd/2006/hdl-gx/index.htm">LanDiskHDL-GX500R</a> 
18. <a href="http://www.iodata.jp/prod/storage/hdd/2005/hdl-g/index.htm">LanDisk HDL-G300</a>
19. <a href="http://configure.apj.dell.com/dellstore/config.aspx?c=jp&l=ja&s=dhs&cs=jpdhs1?&oc=5113BE248WFP">Dell 24inch TFT</a>
20. <a href="http://cweb.canon.jp/e-support/qa/1055/app/servlet/qadoc?qa=035846">Canon PIXUS iP8100</a>
21. <a href="http://www.apple.com/jp/ipodtouch/">iPod touch 16G</a>]]>
        
    </content>
</entry>

<entry>
    <title>TV &amp; PS3 キタ！</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/11/tv-ps3.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.16</id>

    <published>2007-11-28T23:55:29Z</published>
    <updated>2007-11-28T23:58:42Z</updated>

    <summary>実はテレビ壊れちゃいまして、 テレビなし生活だったのですが、ついに買っちゃいまし...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[実はテレビ壊れちゃいまして、
テレビなし生活だったのですが、ついに買っちゃいました。

とりあえず、つなげた。
いや、マジすごいっすよ。 PS3+フルハイビジョン(1080p)

<img src="http://farm3.static.flickr.com/2287/2072606098_12ce7f21e3.jpg?v=0">

色々とあとでかく。]]>
        
    </content>
</entry>

<entry>
    <title>足し算カード</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/11/post-7.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.15</id>

    <published>2007-11-27T12:36:54Z</published>
    <updated>2007-11-27T12:46:13Z</updated>

    <summary>ようやく、体調も回復してきました。  今日は軽くエントリー。 最近は８時台には帰...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[ようやく、体調も回復してきました。 

今日は軽くエントリー。
最近は８時台には帰宅できるように心がけています。
帰って子供の宿題を手伝い、風呂に一緒に入ります。

今、彼の宿題でホットなのが足し算カード。昔英単語を覚えるのによく使っていたやつの
表面に足し算。裏面に答えが書いてあって、何秒で全部できるか競うやつ。

毎日宿題で時間を計ってやってます。足し算自体は簡単で直感的に１桁＋１桁ができるように
早さを求めるものです。

下の写真の数の足し算を３０秒弱でやります。
私も挑戦しましたが３０秒切れません...  年齢から来る衰えを感じてしまう今日この頃でした...

<img src="http://farm3.static.flickr.com/2164/2064965907_8f08338123.jpg?v=0">]]>
        
    </content>
</entry>

<entry>
    <title>誕生日。</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/11/post-6.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.14</id>

    <published>2007-11-23T04:09:57Z</published>
    <updated>2007-11-23T04:39:06Z</updated>

    <summary>風邪引きました.. 昨日は仕事早退しました.. ようやく今朝大方復活しました. ...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="diary" label="diary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[風邪引きました.. 昨日は仕事早退しました.. ようやく今朝大方復活しました.

おととい(21日) は子供の誕生日でした。私の誕生日も24日なので、
毎年一緒にお祝いします(一緒といっても当然子供メインですが...)

<img src="http://farm3.static.flickr.com/2162/2055672951_4552245dc1_m.jpg">


さて、毎回、誕生日プレゼントは３つ(両おばあちゃん, と親から)プレゼントをもらえるんですが、
１ヶ月ぐらい前から、「あれ」と「これ」と... と悩んでいました。
で、ことしは何になったかというと..]]>
        <![CDATA[<table><tr><td>
マリオパーティDS<br>
<a href="http://www.amazon.co.jp/任天堂-13306331-マリオパーティDS/dp/B000VQMR7W/ref=sr_1_1?ie=UTF8&s=videogames&qid=1195791450&sr=1-1"><img src="http://ec2.images-amazon.com/images/I/31Fyf5LSinL._AA115_.jpg" border="0"></a>
</td><td>
人生ゲーム<br>
<a href="http://www.amazon.co.jp/タカラトミー-人生ゲーム-EX/dp/B0002YMBOC/ref=sr_1_1?ie=UTF8&s=toys&qid=1195791589&sr=1-1"><img src="http://ec2.images-amazon.com/images/I/21RAQ35Z31L._AA160_.jpg"  border="0"></a>
</td><td>
レゴ-王様の城<br>
<a href="http://www.amazon.co.jp/レゴ-7094-キャッスル-王様の城/dp/B000NZGSQ2/ref=sr_1_9?ie=UTF8&s=toys&qid=1195791660&sr=1-9"><img src="http://ec2.images-amazon.com/images/I/312CQLjONRL._AA160_.jpg" border="0"></a>
</td></tr></table>

でした。DSと人生ゲームはすでに買ってもらえて大変喜んでました。

<img src="http://farm3.static.flickr.com/2028/2056457772_68d0ec3df1_m.jpg">

久しぶりに人生ゲームをやったんだけど、懐かしく楽しめました。
昔はゴールまで長ーい記憶があったんだけど、「あれ、もう終わり？」って思ったのが印象的でした。
子供の頃はなんでも大きく感じれる感性をもっていたのかな。。



# 子供の友達からもプレゼントをもらいました...
なんと！　「人生ゲーム」

<img src="http://farm3.static.flickr.com/2307/2056457738_bf4844d457_m.jpg">

「どんだけ〜！」
種類が違うのが助かった。しばらくは人生ゲーム漬けになりそうです。(笑)]]>
    </content>
</entry>

<entry>
    <title>英語のウエブページで辞書引くのを簡単に. [ firefox greasemonkey]</title>
    <link rel="alternate" type="text/html" href="http://hiyuzawa.jpn.org/blog/2007/11/-firefox-greasemonkey.html" />
    <id>tag:hiyuzawa.jpn.org,2007:/blog//1.13</id>

    <published>2007-11-21T00:15:37Z</published>
    <updated>2007-11-21T00:51:03Z</updated>

    <summary>久しぶりにプログラムネタ。 英語で書かれた記事を読むときに、困るのが　「あれこの...</summary>
    <author>
        <name>hiyuzawa</name>
        
    </author>
    
        <category term="tech" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="prog" label="prog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tech" label="tech" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://hiyuzawa.jpn.org/blog/">
        <![CDATA[久しぶりにプログラムネタ。
英語で書かれた記事を読むときに、困るのが　「あれこの単語の意味って何だろう？」
電子辞書開いたり、辞書サービスのウエブページを別窓で開いたりと、せっかく記事に集中しているのに
作業が中断しちゃいますよね。私もその手の人の一人ですが、そんな煩わしい辞書を引く作業を
Firefox の Grasemonkey を使って簡単にしてみました。
以前にも同じようなもの作ったのですが、今回は　ちょっとよい仕掛けが見つかったのでリメイク。

これを使うと、任意のウエブページで英単語をマウス選択すると

<img src="http://farm3.static.flickr.com/2102/2051523482_d7cb7f5389.jpg?v=0">

こんな風に辞書がその場でポップアップします。我ながら大変便利。

<a href="http://hiyuzawa.jpn.org/tech/greasemonkey/webQuickDictionary.user.js">
webQuickDictionary.user.js
</a> 要Firefox + GreaseMonkey

仕組みは...

 ]]>
        <![CDATA[<a href="http://stepup.yahoo.co.jp/english/index.html">Y!学習の英語学習</a>のページ.
このコーナで動作する辞書がすぐ引ける機能.

<a href="http://searchblog.yahoo.co.jp/2007/11/yahoo_52.html">Yahoo!ステップアップで、辞書・翻訳も使いこなそう！(Yahoo!検索スタッフブログ)</a>
こちらに書かれているように、
<img src="http://searchblog.yahoo.co.jp/stepup-dic6.bmp">
という風に辞書が簡単に引けます。と紹介されていました。　
ただし、この機能。この<strong>コーナに限って</strong>なんですよね。もったいない。

ということで、ちょいと API?や、デザインテンプレを拝借して <strong>どこでも</strong>動作するようにしました。]]>
    </content>
</entry>

</feed>
