プレコンテスト MVP作品 「Youtube Video Clipper」

受賞作品 制作テクニック
第一回 プレコンテスト MVP作品 「YouTube
Video Clipper」
ファイルメーカー選手権に入賞した作品がどのように作られているのか、
これから応募しようとしている人を初め、自分用にカスタマイズしたい人も
気になるところ。
今回は、プレコンテストでMVPに輝いた「YouTube Video Cliper」について、
制作者の西村早苗さんに解説していただいた。
気になる機能がどのように作られているのかを見ていこう。
○YouTubeの操作をFileMakerの操作へ置き換えてみる
参加の動機は
私の会社(ファクトリー)
は、Apple Store Shibyaでファイルメーカー
のマンスリーイベントを開催しています。
・見たい映像のキーワードを入れて検索する。
・検索を実行し、キーワードに該当する映像に絞り込まれたYouTube
の内容を表示する。
記念すべき第一回目のイベントの中で、FileMaker Pro 8.5の新機
・気に入った映像があれば、そのURLをデータベースに記録する。同
Clipperだったのです。
得します。
能紹介するデモンストレーション用に作ったのが、YouTube Video
それから少しして、
ファイルメーカー選手権のプレコンテストに参加して
みませんか?というお話をいただきました。
締め切りまで時間がないため、
どうしたものかと考えたところ、
コンテス
トに応募するにはちょうど良いプログラム(YouTube Video Clipper)
時にサイトのソースデータからタイトルやプレビューのURLなども取
○データの表示と操作に必要な画面を考える
・データベース起動時に表示するメニュー画面(図04:メニュー)
があることに気づいたのです。
イベント用だったので完成してない部分を作り込んで、操作上問題ない
ように少し手を加えてました。
下準備
このデータベースを作る前には、YouTubeについては少し下準備をす
る必要があります。
いつもブラウザでYouTubeをどんなふうに利用して
いるのか?をイメージしながら、YouTubeのサイトの検索方法やソース
データから取得できるデータについて調べます。
そして、FileMakerでの
操作に置き換えたり、操作やデータを表示するのに必要な画面を考えま
す。
(図01:キーワーを入れて検索/ 図02:リストから映像をクリック/
図12:ソースデータ中の映像タイトル)
図4
・YouTubeからお気に入りの映像をクリッップするためのの画面(図
19:検索画面)
図19
図1
・クリップした映像をレコード単位で表示する画面(図06:詳細表示画
図12
面)
図2
図6
ファイルメーカー選手権「体験版で学ぶファイルメーカー初級講座」
Copyright © 2007 Mainichi Communications Inc. All rights reserved. 掲載記事の無断転載を禁じます。
001
・各映像のプレビュー画面を蓄積されたレコードを一覧で表示する画
面(図07:一覧表示画面)
◯4番目のステップでは、
「 Webビューアの設定」ステップで[URLへ
移動...]処理を設定し、
「 Info07_SearchStart」
フィールドで指定し
たURLで検索が実行され、該当するビデオが表示されます。
( 図10:
[URLへ移動...]を選択)
図7
画面ごとの処理や設定
フィールドの定義は特殊なことはいっさい設定していないので、直接
データベースのフィールド定義をみてもらうことにして、
ここでは、各画
面の処理内容やボタンに設定したスクリプトについて説明します。
○処理が集中している検索用画面
(図13:
「Info_Search」
レイアウト)
Webビューアに表示されたYouTube上の映像をキーワードで検索
し、気に入った映像があればクリップするための画面です。
図10
STEP_04:
Web ビューアの設定 [オブジェクト名: "webSearch"; URL:
Info::Info07_SearchStart]
映像のクリップ
検索して気に入った映像が見つかったら、クリップボタンで映像情報
をデータベースに登録します。表示されたサイトのソースのから映像
ファイルのパスやタイトル名などのテキストデータを抜き出すスクリ
プトが実行されます。
次に、
「Clip it」
ボタンに設定した
「InfoSearch_doClip」
スクリプトを
説明します。
(図11:
「InfoSearchdoClip」
スクリプト)
図13
キーワードで検索
「Info08_SearchWord」
にキーワードを入力した後、
「Search」ボタ
ンをクリックして初めて同じレイアウト上の「WebSearch」
という名
称のWebビューア上で検索が開始され、結果が表示されるようになっ
ています。
最初に
「Search」ボタンに設定した
「InfoSearch_doSearch」
スクリ
プトを説明します。
(図09:
「InfoSearch_doClip」
スクリプト)
図11
◯1番目のステップで現在の映像が表示されているURLを取得しま
す。GetLayoutObjectAttribute関数を使って現在のWebビューア
のエリアのオブジェクト名と
「source」を指定することでURLの値を
取得することができます。
STEP_01:
図9
◯ 1 番目のステップでは、 W e bビューアに値をセットする前に、
変数を設定 [$url; 値:GetLayoutObjectAttribute (
"webSearch" ; "source" )]
あらかじめ Yo u Tu b e 用の 文 字 列 を作 成し、
「 I n f o 」テーブルの
◯ 2 番目のステップでさらにサイトのソースデ ータを取 得します。
現在のYouTubeでは検索文字列の指定方法が変わったため、セット
定することでサイトのソースデータを取得することができます。
「Info07_SearchStart」
フィールドにセットします。
する値を以前の
「"q="」
から
「"search_query="」
と変更しました。
STEP_01:
フィールド設定 [Info::Info07_SearchStart; "http://www.
youtube.com-results?" & "search_query=" & Info::
GetLayoutObjectAttribute関数の2番目の引数に
「content」
を指
STEP_02:
変数を設定 [$htmlString; 値:GetLayoutObjectAttribute
( "webSearch" ; "content" )]
Info08_SearchWord]
ファイルメーカー選手権「体験版で学ぶファイルメーカー初級講座」
Copyright © 2007 Mainichi Communications Inc. All rights reserved. 掲載記事の無断転載を禁じます。
002
◯7番目のステップでは取得したURLから
「watch?v=」を
「v/」に置
き換えます。YouTubeでは、
「http://www.youtube.com/v/...」
とい
う形式すると映像だけのURLになります。
取得した値は、
「 http://www.youtube.com/watch?v=___映像名
___」
となっているため、
これを
「http://www.youtube.com/v/___
映像名___」
とします。
STEP_07:
フィールド設定 [Info::Info05_CliipURL; Substitute (
Info::Info04_MainURL ; "watch?v=" ; "v/" )]
検索用のWebビューアの設定
「Search」ボタンや「Clip it」ボタンと連動して機能するように、Web
ビューアのオブジェクト名を付け、
さらにWebアドレスにフィールドを
指定します。オブジェクト名は「webSearch」
と入力します。
(図13:情
報パレットのオブジェクト名に
「webSearch」
と入力する)
ま た 、W e b ビ ュ ー ア の W e b ア ド レ ス の 欄 に「 I n f o : :
Info07_SearchStart」
フィールドを指定します。
(図14:Webビューア
の設定でアドレスを指定)
◯10番目のステップでは、
ソースの最初にある
「<title>YouTube - 」
で始まり、
「 </title>」で終わるテキストテキストを取得します。
これが
タイトルのデータです。
(図12:ソースデータのタイトル)
Midle関数で使っている、$topPos変数の値は8番目のステップで
セットされ、$endPos変数の値は9番目のステップでセットされます。
図14
「Clip it」
ボタンの作り方
「Info_Search」
レイアウトにある星形の
「Clip it」ボタンは押したとき
にその形のまま反転します。実は、グラフィックソフトで星形を作って
レイアウトに配置してもボタンを押したときに星形に反転せず、四角く
反転してしまいます。そこで、
「 Clip it」ボタンがどうなっているのか説
明します。
グラフィックソフトで作った
「Clip it」画像の上に、透明のオブジェクト
があり、
それにクリップする機能が割り当てられています。
その透明なオブジェクトのグループを解除します。透明のままだとわか
りずらいので、色をつけてみてください。実は線ツールを使ってたくさ
んの縦線で根気よく星の形をつくっていることがわかります。
( 図21:
図12
STEP_10:
変数を設定 [$titelString; 値:Middle ( $htmlString ;
$topPos + 17 ; $endPos - $topPos - 17 )]
◯18番目のステップではクリップした映像のソースデータからプレ
中央の部分をまとめてドラッグしてみると)
グループを解除するときにボタンに設定した内容が失われるので、あ
らかじめボタンをコピーしておき、
レイアウト上の別の場所にドラッグ
してグループ解除してみてください。
この方法を利用すれば、他のグラフィックソフトで作成した不定形の
グラフィックをその形のまま反転させることができます。
ビューのURLを取得します。
プレビューのURLは映像名の一部使っているため、
「 youtube.com/
vi/___映像名___/2.jpg」
となっている部分を14番目のステップ取得
し、
さらに直前の文字列から、
「http:」
で始まる位置を17番目のステッ
プで取得します。
STEP_18:
変数を設定 [$previewURL; 値:Middle ( $htmlString
; $topPos ; $endPos + Length ( $searchString ) $topPos )]
◯16番目のステップでは、プレビュー画像が一覧表のWebビュー
アのエリアの 中 央 に表 示されるための H T M Lソースを生 成し、
「Info09_DisplaySetting」
フィールドにセットします。
STEP_20:
フィールド設 定 [ I n f o : : I n f o 0 9 _ D i s p l a y S e t t i n g ; " < h
tml><body><center><img src=" & "\"" & Info:
Info06_PreviewURL & "\"" & ></center></body></
html>"]
ファイルメーカー選手権「体験版で学ぶファイルメーカー初級講座」
Copyright © 2007 Mainichi Communications Inc. All rights reserved. 掲載記事の無断転載を禁じます。
図21
○クリップした映像を表示
(図15:
「Info_Detail」
レイアウト)
ちょっと気をつかったのが、画面を切り替えるだけだと映像が再生さ
れたままになるので、一覧表示へ切り替わるときや次のレコードに移
動するときに、再生を止めるという処理を実行しています。
例えば、
「 LIST」ボタンに設定した「InfoDetail_toList」スクリプトを
説明します。
(図16:
「InfoDetail_toList」
スクリプト)
1番目のステップで「webClip」のWebビューア設定で[リセット]を
選択します。
さらに2番目のステップで0.5秒間処理を停止するように
なっています。
003
サイトの仕様変更への対応
YouTubeに限らず、
サイトの仕様が変更されることがあります。そのた
め、Webビューアを利用して特定のサイトを対象としたデータベース
を作成する場合、定期的にチェックし、対応する必要があります。
今回、
この参加作品も一部を変更する必要がありました。
また、取得す
るデータの扱い方が必ずしも一定ではないため、いろいろなパターン
へ対応する必要があります。
この作品では、YouTubeの映像に付属す
図15
るプレビュー画像のURLを取得する処理で、以前のままだとURLが取
得できないケースがあることに気がつきました。そのため、取得方法
を変更しました。
図16
■注意事項
YouTube Video Clipperがファイルメーカー選手権月間MVPを受
賞した後、YouTubeの仕様が一部変わったため、受賞時に掲載され
ていたYouTube Video Clipperでは検索ができなくなりました。
本 稿は、現 在のYo u Tu b eの仕 様に合わせて修 正したYo u Tu b e
Video Clipper ver.2を対象として書かれています。
YouTube Video Clipper ver.2をダウンロードの上、
お読みくださ
い。
STEP_01:
Web ビューア [オブジェクト名: "webClip"; 処理: リセット]
○プレビューの一覧表示
(図17:
「Info_List」
レイアウト)
この画 面のW e bビューアにはクリップ時に生 成されたプレビュー
のHTMLソースをセットしています。よく外部のファイルに保存した
HTMLソースを表示するという方法がありますが、
ここでは、保存せず
に直接フィールド値を利用する方法で表示しています。
そのために、HTMLソースの先頭にWindowsであれば「about:」、
Macであれば「data:text/html,」
という文字列をつけることで、表示
することができます。
ただし、
この方法ではHTMLソースの文字列が長
いと表示できないケースがあります。
H T M Lソースの 先 頭 文 字 列 は 、デ ー タベ ースの 起 動 時 に 実 行
される「 S t a r t U p 」スクリプトでプラットフォームをチェックし
$$headHTML変数にセットしています。
( 図18:
「StartUp」
スクリプ
ト)
図17
図18
STEP_02:
変数を設定 [$$headHTML; 値:If ( Abs ( Get ( プラット
フォーム) ) = 2 ; "about:" ; "data:text/html," )]
ファイルメーカー選手権「体験版で学ぶファイルメーカー初級講座」
Copyright © 2007 Mainichi Communications Inc. All rights reserved. 掲載記事の無断転載を禁じます。
プロフィール
西村早苗
(にしむら・さなえ)
有限会社ファクトリー代表
(http://www.factory-1987.co.jp)
1986年、
自社ソフト開発や受託システム開発、
デザイン、
執筆業務、
コンサルティ
ングなどを行うファクトリーを立ち上げ、
現在に至る。
主な自社開発ソフトにNewton用インターネットメールソフト
「i-mail」、4th
Dimension用画像DB構築ツール「4D Image Filing Tools」、FileMaker
Pro用画像DB構築ツール
「Factory's FileMaker Plug-in」
など多数。
FileMaker Proを主とした書籍および専門誌への執筆多数。FileMaker関連
の著書に
「ここまでできるファイルメーカーPro ヒント&テクニック」
「現場の必須
テクニック FileMaker Pro 7の仕事術」、近著には
「FileMaker Pro 8 &8.5
実用テクニック」
がある。
004