[Blog書いた]2014

2013年が暮れ2014年が明けた.
狂ったような1年が過ぎなんとか年末を迎え2014が来た.
2012-2013の年末年始、この先がどうなるのかまったく見えず手探りで進んだ誰にも相談しなかった.
今まだここにいるのだから、続ける価値があるのかもしれない.
先はわからない、でも少しだけ今までとは違う.

まあ、そんな感じで.

[追記した][Blog書いた]QuickTIme Player Xで複数動画ウィンドウをタイル状に並べてランダムにフルスクリーン化しながらリピート再生してみた[OSX][AppleScript]

QuickTime_Player_app
AppleScript_Editor_app
MacBook Proのモニタ全体に複数の動画ウィンドウをタイル状に隙間なく表示し、ループ再生させながら適当な間隔でその中からランダムに選択されたウィンドウが自動的にフルスクリーン化表示され設定時間が過ぎるとまたタイル状のマルチウィンドウに戻るのを繰り返しながらループ…という感じのものをやる必要があった.

まずこんな感じの機能を持った動画再生アプリケーションは?とググってみるがなさげ…まあないわな.
しょうがないのでQuickTIme PlayerをAppleScriptで制御する方向で.複数ウィンドウのタイリングは“WindowResizeSuruyo”というユーティリティにまかせれば簡単そうかな?と思い使わせてもらったけどよくわからない.ウィンドウのタイリングもAppleScriptで書けばいいのだろうとは思うけど(これが使えそうかも MacScripter / a script to “tile” all windows from the front application).

タイリングするサイズはWindowResizeSuruyoの初期値を使って設定し4画面か9画面を選べるようにしてある.MacBook Pro 13’で11:9なウィンドウをタイリングしたから4か9画面になる感じ.モニタによってWindowResizeSuruyoの設定値を変更したり画面数を変更する必要があるのかもしれない.

QuickTIme Playerは元々タイトルバーやコントローラがすぐに非表示になるのでタイリングするには都合がよかった.defaultsを変更すればタイトルバーを消せるようだ Mac QuickTime Player Xのタイトルバーを非表示にする裏技 コントローラも消せるのかもしれないけど今回はこのdefaultsの変更は使ってない.

ビデオウィンドウをタイリングして敷き詰めたりフルスクリーン表示すると気になるのがマウスカーソルなんだけど、制御の方法がわからなかったからググってCocoaRubyを使うこちらの方法を使わせていただいた あらゆる操作を実行可能マウスカーソルを動かす方法いろいろ これでAppleメニューの位置に移動させてる.

音量はマルチウィンドウ時は全てのビデオの音声を小さく流し、フルスクリーン時はそのビデオの音声だけを大きく流すようにしてある.

まずAppleScriptがわかってないし使い捨て殴り書きだからもう内容忘れちゃったけど、とりあえず目的を達成したのは以下のスクリプトになってた.二度と使う事も無いと思うけど万が一時のために載せておく.

--> Created by http://about.me/saka on Ver.0.1.0(2013/04/18) -> Ver.0.1.1(2013/07/13) 
set filesDir to "Macintosh HD:Users:User:Movies:your:dir:" --> 再生ファイルディレクトリパス
set minVol to 1 --> マルチウィンドウ時音量(最小)
set maxVol to 7 --> フルスクリーン時音量(最大)
set presenVtime to 60 --> フルスクリーン再生時秒数
set multiVtime to presenVtime / 4 --> マルチウィンドウ再生時秒数

tell application "Finder" to set myFiles to every file of folder filesDir --> 再生ファイルリスト
set myFilesCount to count myFiles --> 再生ファイルリスト数

--> 再生ウィンドウ数選択ダアログ表示(4画面/9画面選択)
display dialog "Maximum video windows:" buttons {"4 windows", "9 windows"} default button "9 windows"
set button_returned to button returned of result
if button_returned is "4 windows" then
	set multiWindows to 4
else if button_returned is "9 windows" then
	set multiWindows to 9
end if

--> ウィンドウ数とディレクトリ内ファイル数が一致しない場合再生ファイル数を調整
--> ファイル数が少ない場合 -> ファイル数をそのまま使用
--> ファイル数が多い場合 -> 指定ウィンドウ数を使用
set addFiles to 0 # 追加ファイル数
if myFilesCount < multiWindows then
	set addFiles to myFilesCount
else
	set addFiles to multiWindows
end if

--> 再生用ランダムファイルリスト生成
--> 重複ファイルを除外し追加
set randomFilesList to {} --> ランダム追加ファイルリスト
set c to 0 --> 追加ファイル数カウンタ
repeat until c = addFiles
	set randomSelect to some item of myFiles as text
	if randomFilesList = {} then
		set the end of randomFilesList to randomSelect as text
	else
		--> 重複したファイル追加は除外する
		if randomSelect is not in randomFilesList then
			set the end of randomFilesList to randomSelect as text
		end if
	end if
	set c to count randomFilesList
end repeat

--> ランダムに追加されたファイルをQuickTime Playerで開く
set openWindowsNameList to {} --> オープン済みウィンドウ名リスト
repeat with theFile in randomFilesList
	--> display dialog theFile as string
	tell application "QuickTime Player"
		open theFile as alias
		set theName to name of window 1
		set the end of openWindowsNameList to theName
	end tell
end repeat

delay 5 --> ファイルオープンウェイト

--> QuickTime Playerウィンドウ以外全てを非表示
tell application "QuickTime Player"
	activate
end tell
tell application "Finder"
	set visible of processes whose frontmost is false to false
end tell
tell application "QuickTime Player"
	activate
end tell

--> タイリングウィンドウ設定(WindowResizeSuruyo.app使用)
--> http://memogakisouko.appspot.com/WindowResizeSuruyo.html
if multiWindows = 4 then
	tell application "WindowResizeSuruyo"
		ResizeWindow "6,6,0,0,2,2&6,6,3,0,5,2&6,6,0,3,2,5&6,6,3,3,5,5"
		quit
	end tell
else
	tell application "WindowResizeSuruyo"
		ResizeWindow "6,6,0,0,1,1&6,6,2,0,3,1&6,6,4,0,5,1&6,6,0,2,1,3&6,6,2,2,3,3&6,6,4,2,5,3&6,6,0,4,1,5&6,6,2,4,3,5&6,6,4,4,5,5"
		quit
	end tell
end if

--> 全ドキュメントをループ再生設定/最小ボリューム設定しマルチウィンドウでQuickTime Player再生開始
tell application "QuickTime Player"
	tell every document
		set looping to true
		set audio volume to minVol
		play
	end tell
end tell

--> CocoaRubyを使用しマウスカーソルをApple menuへ移動
--> http://d.hatena.ne.jp/zariganitosh/20120110/moving_mouse_technique
do shell script "/usr/bin/ruby -e \"require 'osx/cocoa'\" -e \"OSX::CGWarpMouseCursorPosition(OSX::CGPointMake(" & 26 & "," & 12 & "))\""

delay multiVtime --> マルチウィンドウ状態で表示するウェイト

--> マルチウィンドウ -> フルスクリーン --> マルチウィンドウ --> ループ、をそれぞれ定義時間秒数表示
--> ランダムに選択されたウィンドウをフルスクリーン化し設定時間経過後フルスクリーン解除
--> フルスクリーン化の画面遷移と解除の元ウィンドウサイズ/位置に戻る画面遷移を利用
--> QuickTime Playerが終了していればスクリプトも終了
repeat
	--> ランダムな再生順リストを生成
	set openWindowsNameListCount to count openWindowsNameList
	set randomList to {} --> ランダム追加リスト
	set c to 0 --> 追加リスト数カウンタ
	repeat until c = openWindowsNameListCount
		set randomSelect to some item of openWindowsNameList as text
		if randomList = {} then
			set the end of randomList to randomSelect as text
		else
			--> 重複したリスト追加は除外する
			if randomSelect is not in randomList then
				set the end of randomList to randomSelect as text
			end if
		end if
		set c to count randomList
	end repeat
	--> 再生順リスト順に"フルスクリーン -> マルチウィンドウ -> ループ"をリピート
	repeat with a in randomList
		try
			tell application "QuickTime Player"
				set audio volume of every document to 0
				set presenting of document a to true
				set audio volume of document a to maxVol
				delay presenVtime --> フルスクリーン状態で表示するウェイト
				set presenting of document a to false
				set audio volume of every document to minVol
				delay multiVtime --> マルチウィンドウ状態で表示するウェイト
			end tell
		on error
			quit --> QuickTime Playerが終了されていれば終了
		end try
	end repeat
end repeat

なんとなく動いてる感じ?ぼんやりビデオ見るのとかに使える?わかんなけど.
よくわかんないから誰かいい感じに仕上げて連絡して、ビールおごる.

まあ、そんな感じで.

2013/07/13 追記.

数ヶ月過ぎ、ふと動かしてみるとQuickTIme PlayerがファイルをOpenするところで”An unknown error occurred (1)”とエラーを吐いて動作しない.

Twitterに何気なくつぶやいてみると…なんとあの! @Piyomaru 先生から怒涛のダメ出しで問題点をご指摘いただいた!

ありがたや.

2行目を以下に修正し
set filesDir to "Macintosh HD:Users:User:Movies:yoru:dir:"
50行目に以下を追加して
	--> display dialog theFile as string
52行目を以下に修正すると
		open theFile as alias

おお、とりあえず動いたよ!

なぜか前のコードは”/Users/user/Movies”配下にmovファイルと一緒に置いておくと動作してしまうのであった…orz.
それにこのポストにはこう書いておいた、
> よくわかんないから誰かいい感じに仕上げて連絡して、ビールおごる.

@Piyomaru 先生にビールおごるべきだと思う.

まあそんな感じで.

[Blog書いた]iPhone5のSiriで簡単にMacbook Proをリーモートコントロールする[OSX][iPhone]


TUAWにSiriを使った簡単にできるおもしろそうな記事<Talking to Siri: Remote-controlling your Mac by voice with Siri Listener | TUAW – The Unofficial Apple Weblog>があったのでやってみた.

リンク先の記事では、

  1. Siriが使えるiPhone
  2. iCloudが使えるMac
  3. インターネットへの接続
  4. iCloudにログイン
  5. Notesが同期される

という条件で、Mac側に”Siri Listener”という短かいAppleScriptを走らせ、同期される”Notes”の内容を監視し読み書きする事で実現しているようだ.注意点は”Application”としてエクスポートし”Stay open after run handler” と”Run-only”にチェックを付ける事.

日本語の環境で使うために修正してみた、

on run
	-- just here to get things started...
end run

on idle
	tell application "Notes"
		if exists note "起動中のアプリを教えて" then
			delete note "起動中のアプリを教えて"
			tell application "Finder"
				set myRunningApps to name of every process whose visible is true
				tell application "Notes"
					if exists note "起動中のアプリ:" then
						delete note "起動中のアプリ:"
					end if
					set noteTitle to "起動中のアプリ:"
					set AppleScript's text item delimiters to ", "
					set appsList to myRunningApps as text
					make new note at folder "Notes" with properties {name:noteTitle, body:appsList}
				end tell
			end tell
		else if exists note "シャットダウンする" then
			delete note "シャットダウンする"
			tell application "Finder" to quit
		else if exists note "スリープする" then
			delete note "スリープする"
			tell application "Finder" to sleep
		else if exists note "リスタートする" then
			delete note "リスタートする"
			tell application "Finder" to restart
		end if
	end tell
	return 1
end idle

iPhoneでSiriを呼び出し、

  1. “メモ”と話しかける
  2. “起動中のアプリを教えて”とメモ書き込む

と、iCloudを経由してMac側の”Notes”も同期され、AppleScriptによって、

  1. “起動中のアプリを教えて”というメモを削除する
  2. “起動中のアプリ:”というタイトルのメモを作成
  3. 内容を現在Macbook Proで起動中のアプリケーションリスト、とする

結果、またiCloudを経由してiPhone側の”Notes”も同期されるので結果が戻ってくるという動きだ.
“シャットダウンする” とか残り3つは戻りの書き込みは無くて動作だけ.
shell scriptを起動すればiPhoneにプッシュで戻す、とかなんでもできるような?

やってみるとすぐに反応しておもしろいiCloudで”Notes”ってすぐ同期されるんだ(ね?).
簡単だしあなたもSiriに”シャットダウンしといて”とか話しかけて回りの人を驚かせてみては?

まあ、そんな感じで.

[Blog書いた]iPhoneで撮影したパノラマ写真をImagemagickで加工してbackspac.esで使う[iPhone][OSX] #backspaces




iPhone5は簡単にパノラマ写真を撮影できるのがおもしろいんだけど、あまり活用する機会がなかった.プリントすればいいのかもしれないけどiPhone上でも見にくいし最初に撮っておもしろいなーと思ったまま使ってなかった.

最近 www.backspac.es に写真を上げているけど手順としては、iPhoneの純正カメラか適当なアプリで撮影 → PhotoForge 2 でエフェクト + 正方形に切り出し → アップロード、といった感じ.

でもパノラマな写真をそのままbackspac.esに上げると、これまた見にくいわけ.
たぶん正方形(1×1)な写真が綺麗に掲載されるデザインなのかな?Instagram的って事なの?

で考えた、

  1. パノラマ撮影された写真を右に90°回転させる
  2. (回転させた状態の)横幅ピクセル数を調べる
  3. 横幅ピクセル数 x 横幅ピクセル数、の正方形で上から順番に切り出し分割
  4. 最後の切り出しは正方形にならない(だろう)
  5. 上から順番に並べてbackspac.esへアップロード

というもの.
分割した画像ファイルを上から順番にbackspac.esにアップロードすると…うまく並んでパノラマっぽく掲載される、いいね!

上記手順で作成しアップロードしてみたのはここ

スクリーンショットは以下.

他のサイトでも使えるかもしれない、わかんないけど.
以下に適当にやってみた手順をメモ.

Imagemagick を使えば簡単にできそう、Imagemagickは Homebrew 一発でインストールできる.

% brew install imagemagick

iPhone5でパノラマ撮影した写真をMacbook Proに転送するにはlightningケーブルでつないで”Image Capture”を使った.

右90°に回転させる.

% convert -rotate +90 src.jpg dist.jpg

(回転させた状態の)横幅ピクセル数を調べる.

% identify -format "%w" dist.jpg

調べた横幅ピクセルをコピペして(この例では”2332″)横幅ピクセル数 x 横幅ピクセル数の正方形で上から順番に切り出す.

% convert -crop 2332x2332 dist.jpg upload.jpg

upload-0.jpg〜upload-4.jpgみたいな感じでファイルが生成されているので、QuickLookでプレビューしてみる.

% qlmanage -p upload*.jpg

好きなだけQuickLookしたらスペースキーを押して終了.

パノラマ写真もbackspac.esもおもしろい、まあそんな感じで.

[Blog書いた]www.backspac.esのプロフィールページがカッコよくなった[iPhone][OSX] #backspaces


BackspacesのiPhoneアプリはもちろんウェブインタフェースも日々進化しており…と先日ポストしたのだけど、次々とアップデートしているらしく、プロフィールページがカッコよくなってる.
今日は渋谷でパノラマ撮って載せてみた

まあ、そんな感じで.

[Blog書いた]www.backspac.esおもしろいから気に入った[iPhone][OSX] #backspaces


BackspacesのiPhoneアプリはもちろんウェブインタフェースも日々進化しており、ポストしたストーリを自分のBlogに埋め込むコードを生成できる”<>Embed Story”ボタンが装備された.

本来であれば以下のようなBackspacesにポストしたストーリのミニページを埋め込めるiframeなHTMLコードが生成され自分のBlogで使えるようなのだが、ここ(wordpress.com)ではiframeなコードの使用はできないようだったのでスクリーンショットを掲載、残念.

まあ、そんな感じで.