5/8/2008

友、遠方より来たる

米CBSの人気番組『サバイバー』の仕事をアフリカのガボンで終えたソウルフレンドChipがパリにやって来ました♪
再会は古川さんに連れて行っていただいたインターネット・ワールドとNABの視察以来8年ぶり。
そういえば2001年の彼の結婚式へは、その数日前に起こったニューヨークの911テロで行けなかったんだった(わびすけと僕の人生で最も残念だったことTOP3に入るかも)

昔、パリでアパートをシェアしていた僕たちは当時の思い出話になるともう笑いが止まらない。。。
当時のハチャメチャな毎日について「忘れないように書いておくべき」という結論に至ったけど、何を書いて何を書くべきでないかが非常に難しいところ…。
まぁ書いたところで家族しか読まないと思いますが。あ、家族が読むのが問題なのかも?! そうでもないか。
サバンナ・カフェで爆笑晩餐の後は昔住んでいたアパートや思い出の地を廻って楽しい晩でした。

ところでChipはTVの仕事以外にもミュージシャンやショートフィルム・フェスティバルを主催したり俳優もしているのですが、彼が出ている現在オンエア中のCMを教えてもらったのでご紹介。

Captain Morgan

説明不足だったので追記:バーで電話を受けるのがChipです。
「病気だから私のいとこの結婚式に来れないって言ってたのにバーにいるの!?」と怒る恋人に「いや、テレビだよ」ととっさに言い訳、友だちのみならずバーに居合わせたお客さんたちも協力してくれてごまかすという内容。ありそうな話ですねー?!それにしてもチームワーク良過ぎ(笑)

 
IBM TV Commercial on Business Flexibilty (Quicksand)

 
(笑)
そうだ、ChipがディレクションしたBen Folds FiveのPVもこちらに。
この曲好きで東京に居た頃わびすけと練習したらわびすけが腱鞘炎になった思い出があるんですが、PV撮ったのがChipだったとは知りませんでした。
 
Ben Folds Five – Battle Of Who Could Care Less

  

29/7/2008

か、勝った、しかし…

 

昨日こてんぱんにされたBooby Reversi Download Page。その後、ついにリベンジの全滅勝ちに成功。
ってそれは正直単なるまぐれに過ぎないんですが・・・、
累計挑戦者84124人中ランキング1位? Σ( ̄□ ̄!)

・・・

もうこのゲーム、封印しよう・・・。

「けっ、自慢かよ」というツッコミが聞こえてきそうですが・・・

ナントイワレテモイイヤ〜ヽ(´∇`。)ノ
オトナゲナクスクリーンショットトカハッチャウモンネ♪

などと、喜んだのも束の間。
続きを読む

  

Comments (16) 未分類 Tags: , — Kyo ICHIDA @ 2008/07/29 04:04
28/7/2008

か、勝てない…

 

このところ目覚ましが鳴ったらまず枕元のiPod touchをおもむろに掴み、PhotoShareの写真を眺めたりやオセロ・ゲームをやるのが日課。
で、オセロ(Reversi)のプログラムは数々あれど、App Storeでダウンロードできる無料のものだとMoroccoもOthelloも挟まれたとき○がひっくり返るアニメーションがないので時々相手がどこに置いたかわからなかったりするのがちょっと悩み。
というかそんなことよりゲーム的にイマイチ弱い気が…。
もともと勝負事には弱いんですがそれでも慣れるとHardで勝てちゃうので、「そういえば昔ネットでオセロの強いのがどこかにあったなぁ」と思い探したら見つかりました。

Booby Reversi Download Page

ちょっとこれ、強いんですけどー!
さっきから10回以上やってるんですが1回だけ2コ差くらいでやっと勝てた以外連敗街道まっしぐら。。。
序盤調子に乗って攻めると置ける場所がどんどんなくなって追い詰められ、しまいには4回連続パスさせられて惨敗とかばっかです(涙目)

このゲームはflashじゃないからiPodのSafariでも動くし、明日からこれにしようかな。
悔しさですぐ目が覚めそうです。

  

Comments (10) 未分類 Tags: , , — Kyo ICHIDA @ 2008/07/28 01:26
26/7/2008

YouTube動画を簡単に1行で貼るスクリプト

※この内容は古くなっており、その後のYouTubeの仕様変更で不要になりました。

ここには似合わないネタなのでボツにしてたんですが、YouTube動画の貼り付け方がよくわからんという身内のために書いたスクリプトがもしかしたら誰かの役に立つかも?ということでコードを載せます。

どんな人のためのもの?

  • サイトやブログにとにかく簡単に一行でYouTube動画を貼りたい人(header内にscriptリンクする必要無し)
  • IEの場合1回クリックしてからでないとFlashオブジェクトが操作を受け付けない問題を回避したい人
  • W3CのHTML Validatorチェックをパスさせないと気が済まないこだわりの人
  • objectタグが使えないTypepadみたいなブログを使っている人
  • Nucleusとか記事中に複数行のjavascriptコード書きにくいCMS使っている人
  • たまにしか貼らない動画のために常にHeader内にAC_RunActiveContent.jsみたいなの置いとくのが何となくイヤだ、というキレイ好きな人

…ストライクゾーン狭いですね、該当しない方は華麗にスルーしてください。あらかじめYouTube機能のある日記系サービスでは普通自前script使えないです。

使い方

1. 後述のコードを例えば youtube.js という名称で保存し、サーバの好きな場所にFTP等で転送*します。
以下の例ではサーバトップの/jvs/というディレクトリ内に置いたと仮定します。

2. 貼り付けたいYouTube動画のページのアドレスの最後、v=以降の文字列をコピー。(赤字の部分)

https://www.youtube.com/watch?v=Kg1FsVeoEUQ

3. それを記事中にこのようにペーストします。

<script type="text/javascript" src="https://www.abcjapon.co.jp/gz/youtube.js?v=Kg1FsVeoEUQ"></script>

終了。
こんな感じに表示されます。

オプション

もしブログのカラムが狭い場合とかは、下記のようにwidth,heightを指定できます。

<script type="text/javascript" src="https://www.abcjapon.co.jp/gz/youtube.js?v=Kg1FsVeoEUQ&width=360&height=295">

幅360ピクセルだとこんなかんじ。

でもいちいち幅や高さを指定するのは面倒なのでyoutube.jsの41〜42行目の数値を自分のブログに合わせて直接変えちゃうのもありでしょう。
あとwmodeも指定できます。例:&wmode=opaque

高画質版に対応しました。例:&fmt=6 &fmt=18 &fmt=22(HDソースのみ)
高画質版の貼り付け方法について詳しくはこちらをご覧ください。

再生開始秒数指定に対応しました。例:&start=120(120秒のところからスタートしたい場合)
詳しくはこちらをご覧ください。

&autoplay=1 を付けると自動的に再生開始します。

保存してFTPとかよくわかんなかったり自由にファイルを置けるサーバがない場合は下記の1行を貼れば手っ取り早く試すことができます。

WordPressの場合は『ビジュアルエディタ』ではなく『コード』の状態で貼ってくださいね。同じくMovableTypeの場合は『リッチテキスト』以外のフォーマットで。
直リンの場合は、常に存在し続ける保証がないことを一応念頭に置きつつよろしくです。

なぜこんなものを?

以前は簡単にPHPファイルをjavascriptファイルとして使用することで引数を渡していました。でもjavascriptだけで書けば僅かながらサーバの負荷軽減になるだろうということで、javascriptファイルへのリンク部分にクエリストリング付けてPHPでなくjavascriptで処理させたかったんです。
あとよく知られた事ですがYouTubeの提供するコードをそのまま貼ってしまうとHTML Validation Serviceのチェックを通らないというのがあります。
YouTubeもobjectタグだけでなくiframeでコード提供してくれるといいんですが。

行番号付コードと簡単解説

パラメータ出力部分はyoutube.jsでググったら出て来たコードをベースに簡単に手を加えています。
クエリストリングを連想配列化するスクリプトはgroundwalker.comさんの記事を参考にさせていただきました。
下のコードをFirefoxでコピペすると行頭に#や行番号が付いちゃったりするので、コピーしにくい場合はこちらからどうぞ。
追記:高画質モードで貼れるようにパラメータを追加しました。

  1. /*ver:3.2*/
  2. var body=document.getElementsByTagName("body")[0];
  3. var scripts=body.getElementsByTagName("script");
  4.  
  5. for(var i=0; i<scripts.length; i++){
  6.     var query=scripts[i].src;
  7. }
  8.  
  9. var params=getQueryParams(),
  10.     v=params.v,
  11.     fmt=params.fmt,
  12.     width=params.width,
  13.     height=params.height,
  14.     wmode=params.wmode,
  15.     start=params.start,
  16.     end=params.end,
  17.     autoplay=params.autoplay,
  18.     fs=params.fs,
  19.     hd=params.hd;
  20.  
  21. if(v) video(v,width,height,wmode,fmt,hd,start,end,fs,autoplay);
  22.  
  23. function getQueryParams(){
  24.     var qs=query.slice(query.indexOf("?"));
  25.     if(qs){
  26.         var qsa=qs.substring(1).split('&');
  27.         var params={};
  28.         for(var i=0; i<qsa.length; i++){
  29.             var pair=qsa[i].split('=');
  30.             if(pair[0]){
  31.                 params[pair[0]]=/*decodeURIComponent*/(pair[1]);
  32.             }
  33.         }
  34.         return params;
  35.     }
  36.     return null;
  37. }
  38.  
  39. function video(id,width,height,wmode,fmt,hd,start,end,fs,autoplay){
  40.     if(!id.match(/^[a-zA-Z0-9_\-]+$/)){
  41.         alert('Your query string may be incorrect. https://www.youtube.com/v/'+id);
  42.         return;
  43.     }
  44.     if(!wmode) wmode='transparent';
  45.     if(hd==1 && !width && !height){width=853;height=505;}
  46.     if(!width) width=0; else width=parseInt(width);
  47.     if(!height) height=0; else height=parseInt(height);
  48.     if(width<=0 || width>1280) width=425;
  49.     if(height<=0 || height>745) height=344;
  50.     if(start) id += '&start='+parseInt(start); else if(fmt){
  51.         id += '&ap=%2526fmt%3D'+fmt;
  52.         id += '&fs=1';
  53.     }
  54.     if(hd){
  55.         id += '&hd='+parseInt(hd);
  56.         id += '&fs=1';
  57.     }
  58.     if(end) id += '&end='+parseInt(end);
  59.     if(autoplay==1) id += '&autoplay='+autoplay;
  60.     var html = '<object width="'
  61.         + width
  62.         + '" height="'
  63.         + height
  64.         + '"><param name="wmode" value="'
  65.         + wmode
  66.         + '"><param name="movie" value="https://www.youtube.com/v/'
  67.         + id
  68.         + '"></param><param name="allowFullScreen" value="true"><embed src="https://www.youtube.com/v/'
  69.         + id
  70.         + '" type="application/x-shockwave-flash" allowfullscreen="true" width="'
  71.         + width
  72.         + '" height="'
  73.         + height
  74.         + '" wmode="'
  75.         + wmode
  76.         + '"></embed></object>';
  77.     document.write(html);
  78. }

2,3行目でbodyタグ内のscript要素を取得して、URLアドレスからではなくscriptタグのquery stringを取得できるようにしています。

31行目のdecodeURIComponentは今回の目的には必要ないのでコメントアウトしています。この処理を省くことで古いMac版IE5でも動作しますが、さすがにもう使ってませんよね??
ブログがきちんと表示できないブラウザは対象外ということで。

41行目の引数の文字列に使用不可な文字が入っていた場合のアラート英作文はテキトー(汗)ですので好きに変えてください。ちなみに日本語のアラートももちろん出せますが、ブログとスクリプトの文字コードが違う場合にはscriptタグ内での文字コード指定が必要なのをお忘れなく。
例:<script type="text/javascript" src="https://www.abcjapon.co.jp/gz/youtube.js?v=Kg1FsVeoEUQ" charset="euc-jp"></script>
アラートは一切出さない、というのもありですね。

44行目 wmodeのデフォルトがtransparentなのは当サイトの都合です。レイヤーの重なりがなければパフォーマンスを追求してwindowやopaqueをデフォルトにしてもいいでしょう。

48,49行目でそれぞれ幅・高さの最大サイズ(左)と何も指定しなかった場合のサイズ(右)を決めています。自分のブログに合わせてあらかじめ小さいサイズにしたり、最大サイズを640×505(縦480ピクセル+メニューの高さ25ピクセル)とかにしてみるのも面白いかも。

19,21,39,45,54〜57行目 HD対応で追加した部分です。

ある意味きわどいこのやり方が期待通りに動くのは20行目の最初の5文字 if(v) があるからです。
もちろん1ページ中に他のスクリプトがあったり異なる複数の動画を読み込んでも問題ないですが、何か不具合があった場合や、もっと良い書き方あるよ!とか教えていただけたら嬉しいです。

  

Comments (0) tips Tags: , , , — Kyo ICHIDA @ 2008/07/26 22:45
13/7/2008

10周年企画、98年フランス代表対世界選抜に行ってきました

空からリメ杯
なぜか空から…
出場メンバー
なごやかなムード。でも試合終盤はけっこう本気になってたかも…
ジダンと中田
ジダンと中田、まだまだ現役でプレーできそうなふたり
黄昏スタジアム
たそがれのフレンチ・フットボール
試合終了
ロスタイムの同点ゴールに沸き上がる観客、そして試合終了!
民衆を率いる自由のサポーター
今夜は、思い切り過去に生きよう! 民衆を率いる自由のサポーター
屋根から
屋根からも何か降ってきた…
10 ANS
スタジアムも10周年。楽しまさせていただきました

ということで98年フランス代表対世界選抜の日がやってまいりました。
階上に住むフーリガンJiroくんとわびすけと3人で、さぁ、ノスタルジーの現場に潜入だ。

これが、行ってみたら思ったより大袈裟なイベントでした。
お客さんは満員、何でも8万人だとか。
スクリーンには98年大会の軌跡をふり返る映像が。ビデオなのに観客は大ブーイングしたり大喝采したり。
ヘリコプターが飛んで来たと思ったら人がつり下げられてワールドカップトロフィー届けにくるし。本物!?借りてきたんかい??

そして10年前と同日・同時刻キックオフ。さぁいちばん空気を読まないのは誰だ!?

あ、ちなみに発表されていた世界選抜メンバーにキーパーがいなかった件ですが、本番はちゃんと居ました。って当たり前ですね (笑)
中田も背番号7で元気に先発です。
続きを読む