カテゴリー: iPhone

[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なコードの使用はできないようだったのでスクリーンショットを掲載、残念.

まあ、そんな感じで.

[Blog書いた]OSXからiPhoneでBluetoothテザリングする時に便利そうなAppleScript[OSX][iPhone]

bluetooth_icon
iPhoneでテザリングするのが普通になったらしい、数年前だと考えられなかったよね?
OSXからはWiFi、USB、Bluetoothの3種類の接続方法があって、それぞれに違いがあるようだ.

ある日ある場所でOSXからテザリングして簡単にスピードを比べてみた結果が以下、

テザリング(LTE-WiFi)
Ping: 69 ms
Download speed: 9.22 Mbps
Upload speed: 5.34 Mbps

テザリング(LTE-USB)
Ping: 77 ms
Download speed: 10.03 Mbps
Upload speed: 5.25 Mbps

テザリング(LTE-Bluetooth)
Ping: 81 ms
Download speed: 1.52 Mbps
Upload speed: 390.55 Kbps

まあ接続方法が違うから乱暴に言うと、

WiFi – それなりの速度で何もしなくていい、けどバッテリ食う
(訂正 → 何もしなくていいは嘘、接続時にiPhone側でも操作が必要)
USB – 一番早い、けどケーブルでつなぐ必要がある
Bluetooth – 何もしなくていいしバッテリ食わない、けど一番遅い

って感じ?(パスワードとかペアリングしたりの初期設定は必要)
まあたしかにそんな感じだ.

いつ使う可能性があるのか?と考えてみたけど自分の場合常時使う可能性は無いのかもしれない、だってさ、

1. 3GだけどWiFiルータあるじゃん
2. PCつないで使うとすぐに7GB制限突破じゃね?
3. 便利になったとは思うけど、接続できるまでが面倒じゃね?
4. iPhoneのバッテリ食いすぎじゃね?

といった、なんか全体的に微妙なイマイチ感がある.

そう考えてみたら緊急時?に簡単にバッテリとかに優しく最低限使えるBluetooth PANが使えればいいのかな?でもBluetoothで接続するのメンドクサくてすぐ忘れそうだし使う時はWiFi切っておきたいしなんかいいコマンドとかないの?とググってみると、
(訂正 → Bluetoothで接続するのが一番手順が簡単.Personal HotspotさえONになっていればiPhoneが鞄の中に入っているだけで一切iPhoneを操作せずこのスクリプト(後述)を走らせるだけで接続できる)

BluetoothのON/OFFは、

% brew install blueutil

でできそう.

WiFiのON/OFFは、

% networksetup -setairportpower en1 on

でできそう.

という感じだったけどBluetooth PANをConnectする方法がわからなかった.が、以下のAppleScriptも発見した、

MacScripter / Connect iPhone to Bluetooth

このAppleScriptは、

1. WiFiをOFFにして
2. BluetoothをONにして
3. Bluetooth PAN をConnectしてくれる

というもの、いいね!と思ったんだけど、これ使い終ったら設定を元に戻して欲しい.
でも作るの嫌だしメンドくさいからとりあえずそれぞれの動作をトグルするように今超手抜きな修正を加えたのが以下、

--  from http://macscripter.net/viewtopic.php?id=38559
--  Created by Chad Carney on 3/8/12.
--  iPhone Connect
--
--  Added toggle on/off by saka on 18/12/12.
--

TurnBluetoothOn()
TurnWifiOff()
Bluetooth()
CleanUp()

on Bluetooth()
	set AppleScript's text item delimiters to "."
	set btooth to "Bluetooth"
	set netWorkPane to "com.apple.preference.network"
	set winNetwork to "Network"
	
	tell application "System Preferences"
		set current pane to pane netWorkPane
	end tell
	
	tell application "System Events" to tell process "System Preferences"
		set theRow to row 1 of table 1 of scroll area 1 of window winNetwork whose value of static text 1 contains btooth
		select theRow --clicks the bluetooth row
		--If Bluetooth is already connected, the button will say Disconnect, so we don't want to turn it off:
		try
			click (button 1 of group 1 of window winNetwork whose title is "Connect")
		on error
			click (button 1 of group 1 of window winNetwork whose title is "Disonnect")
		end try
	end tell
end Bluetooth

on TurnWifiOff()
	set AppleScript's text item delimiters to "."
	set wifi to "Wi-Fi"
	set winNetwork to "Network"
	set netWorkPane to "com.apple.preference.network"
	
	tell application "System Preferences"
		set current pane to pane netWorkPane
	end tell
	
	tell application "System Events" to tell process "System Preferences"
		--Click on Network in the left scroll area:
		set theRow to row 1 of table 1 of scroll area 1 of window winNetwork whose value of static text 1 contains wifi
		select theRow
		-- use the try block in case wi-fi is already off, then it moves on w/ no error message:
		try
			click button "Turn Wi-Fi Off" of group 1 of window winNetwork
		on error
			click button "Turn Wi-Fi ON" of group 1 of window winNetwork
		end try
	end tell
end TurnWifiOff

on TurnBluetoothOn()
	set AppleScript's text item delimiters to "."
	set btooth to "Bluetooth"
	set winBtooth to "Bluetooth"
	--NOTE:  Notice that there is an "s" in preference for Bluetooth.  That will mess you up!:
	set bToothPane to "com.apple.preferences.Bluetooth"
	
	tell application "System Preferences"
		set current pane to pane bToothPane
	end tell
	
	--See if Bluetooth is off.  If it is turn it on:          
	tell application "System Events" to tell process "System Preferences"
		set chkBoxState to value of checkbox "On" of window winBtooth
		if chkBoxState = 0 then
			click checkbox "On" of window winBtooth
		else if chkBoxState = 1 then
			click checkbox "On" of window winBtooth
		end if
	end tell
end TurnBluetoothOn

on CleanUp()
	tell application "System Preferences"
		quit
	end tell
end CleanUp
 

ただトグルしてるだけだから前提が崩れてると期待通りの動作にはならない、そこらへんを考慮してちゃんと正しく動くものに誰か修正しておいてね、というかAppleScriptとかまったく知らないし、ここにコード載せてちゃんと表示されるのかもわからない.
(訂正 → で表示できる事を知った)

まあ、そんな感じで.

[Blog書いた]iTunesにダウンロード済みのiPhoneアプリ時価総額を算出してみた[iPhone app][Python]

iPhoneを購入してすぐにダウンロード済みiPhoneアプリの明細リストがどこで見られるのか探し回ったが、iTunesのアカウント情報 > 購入履歴から参照できるのに気づいたのは相当後になってからだった…という話しもずいぶん昔のように思える今日この頃。

当時、自動的に更新されていくダウンロード(自分のiPhoneにインストール)済みiPhoneアプリのデータベースが欲しかった私は、iTunes storeから届くレシートメールに目をつけ、gmailに届くこのレシートメールを自動的にimap経由で取得しsqliteを更新していく簡単なPythonスクリプトを書いた。

猿のようにiPhoneアプリをダウンロードしていた私は、iPhone上でダウンロードしたアプリをiTunesと同期する前にiPhone上で消してしまう事も多く、結果PC上に残っているipaファイルの数と実際にダウンロードしたアプリの数はまったく合っていなかった。これがなんとなく気持悪いなと思ったのと、iPhoneアプリのダウンロード(インストール)を自動的にTweetするとか可視化できればおもしろいだろうな、と興味を持ったのもスクリプトを書いた理由だった。(沢山の人のiPhoneアプリインストール情報がリアルタイムにTweetされればおもしろいだろう的)

アプリをiPhoneやiTunesから消してしまったってまたインストールすればいいのだから関係ないわけで、これが気持悪かったのはクラウドとかiTunesとかの感覚が理解できない古い頭だからだろう。

しかし、データベースが更新し続けられいつのまにか700アプリを越えていたある日突然、iTunes storeは無料アプリのダウンロードにはレシートメールを発行しなくなった。つまり完全なインストール履歴データ維持は不能となりデータベース更新を停止する結果に…それにレシートメールはアプリのダウンロードと同時にリアルタイムに発行されるわけではなく、1日分?がまとめて届くのでTweetされる頃には情報がちょっと古くなっていて意味無い?風味でもあった。

と、さっきまでまったく忘れていた事を思い出したのだが、じゃあ今このPCの”iTunes/Mobile Applications”に保存されているipaファイルを使ってなにかできるのか?とやってみたのが、iTunesにダウンロード済みのiPhoneアプリ時価総額の算出。

処理の流れ:

  1. ipaファイルに入ってる”iTunesMetadata.plist”とかいうファイルが使えそうなので参照
  2. itemIdがアプリのIDっぽいitemNameがアプリ名っぽいpriceDisplayが価格っぽいので参照
  3. itemIdでiTunes Store Web Service Search APIを叩きpriceという現行の価格っぽいのを入手

という感じのやっつけスクリプトで出た結果は、

  1. ipaファイル数:1355個
  2. ipaファイルに保存されている金額とAPIから入手した金額が異なるもの:276個
  3. ipaファイルに保存されている金額とAIPから入手した金額が同じもの:896個
  4. ipaファイルはあるが(もう?)APIに存在しないっぽいもの:179個
  5. なんかエラーで処理できなかったもの:4個
  6. ipaファイルに保存されていた金額の合計:82,985円
  7. APIから入手した現行の価格っぽいものの金額の合計:131,105円

つまりこのPCに保存されているiTunesにダウンロード済みのiPhoneアプリ時価総額は131,105円って事でいいの?やってはみたけどよくわからん。ipaファイルに保存されていた金額が実際の購入金額でないのは確かだけどさ…まあそんな感じで。

[Blog書いた]iPadでもViberを使おう[iPhone App][iPad App]

iPhoneを持っているならインストール必須とも言われる Viber – Free Phone Calls(iTunes Link) だが、まだiPad用というバージョンはリリースされていないようだ。Viberはユーザ登録といったプロセスが無く、電話番号を登録しSMSで届く認証キーを入力するという方法で使えるようになるが、それが関係しているのかもしれない。

ViberでCallする時は標準アプリの”住所録”をそのまま流用したインタフェースが表示され、Callしたい相手がViberを使用しているかどうか一目瞭然でわかる。この電話番号を使った登録方法はよく考えられており、とてもスマートだ。

https://i2.wp.com/a2.phobos.apple.com/us/r1000/017/Purple/bf/e0/93/mzl.wwensrhn.png

さて、一見電話機能が無いiPadなどは電話番号が無いため使用できなさそうに見えるViberだが、電話番号というよりもSMSが届くという事実とそのSMSに記載された認証キーによって認証と登録が行なわれているように見えた。つまりこのプロセスさえ通過できればiPadでも使えるだろうと思えたので試してみたメモ的エントリ。

SMSが届きさえすれば認証されると仮定すれば、

  • SMSが届く(iPhone以外の)携帯電話番号を登録に使う
  • SMS番号を取得できるサービスを使ってSMSを受信する

という方法が考えられる。

このためだけに携帯電話の番号を準備するのは面倒なので、AppStoreで適当にサーチして最初に表示された Text Free Worldwide, Facebook Chat, Twitter, Gtalk – Go HeyWire!(iTunes Link) を使ってSMS番号を取得してみた。

https://i2.wp.com/a3.phobos.apple.com/us/r1000/043/Purple/bd/2e/4a/mzl.crasvruq.png

登録にはメールアドレスが必要となるが、すぐにSMS受信用の番号を入手できた。また、入手できた番号はアメリカ国内の番号であった。

iPadでViberを使えるようにする

  1. iPadに Text Free Worldwide, Facebook Chat, Twitter, Gtalk – Go HeyWire!(iTunes Link) をインストールしSMS受信用の番号を入手する
  2. iPadに Viber – Free Phone Calls(iTunes Link) をインストールし上記SMS番号で登録を行なう
  3. Viberから認証キーが記載されたSMSがText Free Worldwideに届く
  4. 認証キーをViberに入力する

という手順で Viber – Free Phone Calls(iTunes Link) が使えるようになった。

ViberでiPadとiPhone間を話せるようにする

iPadにViberがインストールできればすぐにiPhoneと無料通話が出来そうに思えるが、異なった国の電話番号で登録されたViberアカウント間で会話を行なうには、連絡帳の登録に少々調整が必要になるようだ、以下日本国内での例、

  1. iPhoneの連絡帳に新たにiPad Viber用エントリを追加する
  2. 上記にText Free Worldwideで取得したSMS番号を登録する
  3. 上記SMS番号は先頭に”+1″を付け、取得した番号先頭の”1″を削除して登録する
  4. iPadの連絡帳に新たにiPhone Viber用エントリを追加する
  5. 上記にiPhoneの電話番号を登録する
  6. 上記電話番号は先頭に”+81″を付け、電話番号先頭の”0″を削除して登録する

という手順でお互いにViberマークが表示されるようになるだろう。

この手順で手元のiPad-3GでViberが使えるようになった。3Gでも着信するのでiPadに電話機能が付いた感覚だ。また、同様の手順でiPod touchでも使う事ができるかもしれない。

また、この方法を使えばiPhoneにインストールしたViberでも本来の電話番号とは違う番号でViberを発着信する事ができるようになるだろう。

iPadに電話が着信するって笑えるなあ、と思ってやってみたんだがスピーカフォンにすれば逆に便利おかしくなんてない…まあそんな感じで。

App Information

https://i1.wp.com/a6.phobos.apple.com/us/r1000/033/Purple/db/c0/56/mzi.tonqafin.png
Viber – Free Phone Calls(iTunes Link)
Price: Free(無料)
Category: Social Networking
Release Date: 2010-12-02T11:10:02Z
Version: 1.1
Seller Name: Viber Media Inc.
Seller URL: http://www.viber.com
(as of 2011-03-06 02:41:11 JST)

https://i1.wp.com/a2.phobos.apple.com/us/r1000/033/Purple/a3/82/1c/mzi.thxmtvyv.png
Text Free Worldwide, Facebook Chat, Twitter, Gtalk – Go HeyWire!(iTunes Link)
Price: Free(無料)
Category: Social Networking
Release Date: 2010-09-13T07:00:00Z
Version: 2.0.275
Seller Name: MediaFriends, Inc.
Seller URL: http://www.heywire.com
(as of 2011-03-06 02:41:11 JST)