WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

続・Mac と新しい iPad で最強のデスクトップ環境を作る

少し前に、 Mac のデスクサイドで iPad 活用法を紹介する記事」を書きました。当時は iPad を使い始めたばかりだったのでアプリ紹介に終始してしまったのですが、その後も AppleScript を使ったりして細かい不満点を解消する工夫をしていました。おかげで当時よりもだいぶ良い環境ができてきたので、本日はそうした工夫をいくつかご紹介しようと思います。主な内容は以下の 4 つです。

  • 母艦で閲覧中の Web ページを iPad で素早く開く
  • Type2Phone の iPad への接続を自動化する AppleScript
  • ドラッグ&ドロップでファイルを iPad に転送する Automator スクリプト
  • Mac の任意のフォルダを WebDAV 共有する方法

iPad (と Mac)をお持ちの方は、ぜひ参考にしてください!

Mac 上のブラウザで開いているページを iPad の Safari で開く

前回の記事では、 Mac で開いている Web ページ (URL) を iPad に転送するのに Pocket を使っていました。この方法も良いのですが、多少手間がかかるのと、アプリ内の組み込みブラウザで開くことになるのがイマイチな点です。

もっと素早く、直接 Safari でページを開けないものか…と思っていたところ、まさにピッタリのものを見つけました。「Site to Phone」というサービスです。

http://sitetophone.com/

ブックマークレットとホームアイコンを駆使して、最小限の手間でデスクトップブラウザから iOS に URL を転送できます。基本的な仕組みは、ブックマークレットで URL を Web サイトに保存 → iOS 側で Web サイトを開く → 保存した URL にリダイレクト、という単純なもので、ブラウザを問わずに使えます。 iOS 側も、例えば Opera mini に URL を転送することもできました(ホームアイコンからの起動はできませんが、ブックマークすれば OK)。

サービスの使い方の説明は、ググればたくさん見つかるはずです。最初のセットアップがちょっと面倒ですが、それさえクリアすればとても便利に使えます。

ちなみに、少し前に公開された iOS 版 Google Chrome には、 Site to Phone のような機能(デスクトップ版 Chrome で開いているページを iOS 版で開く)がデフォルトで用意されています。 Chrome をメインにしている方はそれを使ったほうがいいかも。この機能をデスクトップの Opera から使う Opera to Phone というエクステンションも公開しているので、よろしければどうぞ :)

Type2Phone を素早く起動・接続

Type2Phone は Mac のキーボードを iOS デバイスに接続可能な Bluetooth キーボードにするという、画期的なアプリです。これのおかげで、 iPad 上での文字入力はとても快適になりました。

しかし、使用頻度が多い分、 Type2Phone 起動 → 邪魔にならない場所にウインドウを移動 → iPad に接続、という操作がとても面倒に思えます。起動しっぱなしにしても良いのですが、私は一連の操作を AppleScript で自動化してみました。

tell application "Finder"
    activate
    open application file "Type2Phone.app" of folder "Applications" of startup disk
end tell

delay 1

tell application "System Events"
    tell process "Type2Phone"
        tell window 1
            set position to {0, 22}
        end tell
    end tell
end tell

tell application "Type2Phone"
    reconnect "iPad-name" # 名前を適切に置き換えてください
end tell

上記のスクリプトを AppleScript エディタに入力し、アプリケーションとして保存してください。

これで .app ファイルが生成され、実行するだけで自動的に Type2Phone を起動して iPad に接続してくれます。 Alfred のようなランチャーを使えば、キーボードから手を離さずに iPad への文字列入力がはじめられて、より便利になりますよ。

ついでなので「Type2Phone を起動・接続してクリップボードにある文字列をペーストし、そのまま終了する」スクリプトも作ってみました。

tell application "Finder"
    activate
    open application file "Type2Phone.app" of folder "Applications" of startup disk
end tell

delay 1

tell application "Type2Phone"
    activate
    reconnect "iPad-name" # 名前を適切に置き換えてください
end tell

delay 5

tell application "Type2Phone"
    activate
end tell

tell application "System Events"
    tell process "Type2Phone"
        tell menu "Edit" of menu bar item "Edit" of menu bar 1
            pick menu item "Paste"
        end tell
    end tell
end tell

delay 3

tell application "Type2Phone"
    disconnect
    delay 3
    quit
end tell

このほか、 Type2Phone では AppleScript から任意の文字列を自動入力することもできるようです(send コマンド)。工夫次第でいろいろできそうですね。

GoodReader や Textastic にドラッグ&ドロップでファイル転送

Mac と iPad を連携する上で肝になるのが、 Mac から iPad へのファイル転送です。 iPad で閲覧したいと思ったファイルをいかに速やかに目的のアプリに転送できるかで、使い勝手がまったく変わってしまいます。前回の記事では FastBoard を使う方法を紹介しましたが、これだとフォルダを一気に転送することはできませんし、 FastBoard を経由する分だけ手間が増えてしまいます。やはり目的のアプリに直接ファイルを転送したいところです。

幸い、主なドキュメント閲覧系アプリである GoodReaderTextasticAir Sharing はいずれも WebDAV サーバー機能を持っており、 Mac 側でマウントすれば直接ファイルコピーが可能です。そこで、 WebDAV のマウント → ファイルコピー → アンマウントの一連の作業を Automator で自動化しました。ドロップレットとして動作するので、 Dock に登録しておけばドラッグ&ドロップでファイルを転送できます。以下、その実現方法を説明します。

iPad アプリ側の設定

iPad アプリ側は基本的には WebDAV サーバーを起動するだけです。しかし、デフォルトの設定だとポート番号などがバラバラでフォルダ構成も異なるので、アプリごとに別のスクリプトを用意するはめになります。それでは面倒ですから、全アプリで設定を共通化させておくのがお勧めです。

具体的には、それぞれのアプリでポート番号とユーザー名、パスワードに共通の値を設定し、転送先フォルダとして「Downloads」を作成しておきます(GoodReaderには最初からある)。参考までに、 GoodReader, Textastic, Air Sharing それぞれの設定箇所を書いておきます。

GoodReader
設定の Other Settings でポート番号(Port)を設定する。ユーザー名とパスワードの項目は存在しないので設定の必要なし。「Ask permission when connecting」はオフにしておくこと。
Textastic
WebDAV アイコンをタップすると、ユーザー名、パスワード、ポート番号を設定できるダイアログが表示される。
Air Sharing
設定ダイアログの「共有」でポート番号が、「共有のセキュリティ」でユーザー名とパスワードが設定できる。ポート番号は「HTTP ポート」を他と同じ番号にすること。 HTTPS ポートは変更の必要なし。

Mac 側での接続実験

スクリプトで接続する前に、念のため Mac から正常に接続できることを確認しておきます。とくにパスワードを設定している場合、あらかじめパスワードをキーチェインに覚えさせておかないと、うまくいきません。

実験はどのアプリでやっても構わないのですが、ここでは Textastic を例にしましょう。 Textastic を起動して Wi-Fi のマークをタップすると、 WebDAV の設定画面が出てきます。必要に応じてアカウントやポート番号などを設定し、 Sarver Started を ON にしてください。これで iPad 上で WebDAV サーバーが起動します。

次は Mac からの接続です。 Finder のメニューで [移動]>[サーバーへ接続] を選択し、サーバーアドレスに「http://<iPadの名前>.local:<ポート番号>」を入力します。 iPad の名前は設定アプリの [一般]>[情報]>[名前] で確認できます。ポート番号はアプリに設定したポート番号(上の画像の場合「8080」)です。

正しい URL を入力したら、「接続」ボタンをクリックして WebDAV サーバーに接続します。このとき、ユーザー名とパスワードを尋ねてくるので入力し、キーチェインに保存しておいてください。接続できたら、いったん取り外してから再接続し、パスワード入力が不要になっているのを確認しておきます。

Automator スクリプトを作成

環境が整ったので、 Automator スクリプトを作成します。おもむろに Automator を起動し、書類の種類としてアプリケーションを選択してください。編集画面が開いたら、「確認を求める」「AppleScript を実行」「ディスクを取り出す」の 3 つのモジュールを下の画像のように並べます。モジュールは左サイドバーの最上部にある検索窓で検索し、ダブルクリックで追加できます。

「確認を求める」モジュールの内容は適当で大丈夫です。 AppleScript の入力内容は以下のとおりです。先頭で定義している変数 machineName, portNumber の値は、それぞれ接続確認した際のサーバーアドレスのホスト名部分(<iPadの名前>.local)とポート番号に置き換えてください。

on run {input, parameters}
    # 以下の変数の値は正しいものに置き換えてください
    set machineName to "iPad-name.local"
    set portNumber to "8080"

    set copycmd to "cp -Rf "
    mount volume "http://" & machineName & ":" & portNumber
    delay 1
    repeat with aFile in input
        set posixPath to quoted form of POSIX path of aFile
        with timeout of 600 seconds
            set targetFile to "/Volumes/" & machineName & "/Downloads"
            do shell script copycmd & posixPath & " " & targetFile
        end timeout
    end repeat
    delay 1
    return alias machineName
end run

入力が終わったら適当に保存し、作成された Automator スクリプトを Dock に登録してください。 iPad 側で WebDAV サーバーを起動した状態で Dock アイコンにファイルをドラッグ&ドロップすれば、 iPad アプリにコピーされます。フォルダも再帰的にコピーされます。

ちなみに、上記の AppleScript 中の copycmd でコピーに使用するコマンドを変更できます。私は日付比較と不要なファイルの除外を行う Ruby スクリプトを作成して使っていますので、よろしければご利用ください。 rsync が使えると楽なのですが、 WebDAV ボリュームへのコピーがエラーになるんですよね・・・なぜ?

アイコンを変える

デフォルトの Automator アイコンは Dock に置いておくにはイマイチですよね・・・そんなときは、アイコンを差し替えてしまいましょう。

まずはアイコンとして使う .icns ファイルを用意してください。検索すればいろいろ見つかるでしょう。私はこちらのアイコンセットを使わせていただいてます。

あとは、以下の手順で Automator スクリプトのアイコンを変更します。

  1. 用意した .icns ファイルの名前を「AutomatorApplet.icns」に名前変更しておく。
  2. 保存した Automator スクリプト(.app ファイル)を Finder で表示し、コンテキストメニューで「パッケージの内容を表示」を選択する。
  3. .app の内容が表示されるので、 Contents/Resources とフォルダを開いていく。
  4. Resources フォルダ内に AutomatorApplet.icns があるはずなので、それを用意した .icns で上書きする。

これで Automator スクリプトのアイコンが変更されるはずです。

いったんログアウト→再ログインすれば、ドックアイコンにも新しいアイコンが反映されるはずです。残念なことに Automator スクリプトを編集すると元に戻ってしまうので、 .icns ファイルは別の場所に保存しておきましょう。

コマンドラインからコピーする

ドラッグ&ドロップよりもコマンドラインからコピーしたいという奇特な上級者の方は、 .bashrc で以下のエイリアスを定義しておくと便利です(Automator スクリプトが /Applications/Send2iPad.app であると仮定しています)。

alias Send2iPad='open -a Send2iPad'

こうしておけば、以下のコマンドで簡単に iPad へファイル転送できます。

Send2iPad file1.txt

転送対象のファイルとしては、空白区切りでの複数指定やディレクトリの指定も可能です。

任意のディレクトリをその場で WebDAV 共有

すべての iPad アプリが WevDAV サーバーを実装していれば上記のスクリプトですべて解決なのですが、やはりそううまくはいきません。前回取り上げたアプリで言うと、 PhotoSyncCloud Connect Pro は、 WevDAV クライアントの機能はあるものの、サーバー機能はありません(もっとも、これらは専用アプリや SMB サーバー機能があって、さほど困らないのですが)。

そういったアプリとのファイルのやり取りを円滑に行うために、 Mac 側で WevDAV サーバーを立ち上げられると便利ですよね。 Python で実装された PyWebDAV を使えば簡単に実現できます。

PyWebDAV をインストール

Mac であれば、 PyWebDAV は easy_install で簡単にインストールできます。以下のコマンドを実行するだけです。

sudo easy_install PyWebDAV

実行するとパスワードを訪ねてくるので、 OS へのログインパスワードを入力してください。あとはすべて自動で処理してくれます。

WebDAV サーバーを起動する

WevDAV サーバーを起動するには、以下のようにします。

davserver -D . -H 0.0.0.0 -n

こうすると、カレントディレクトリ以下をポート番号 8008 で公開します。これにアクセスするためには、 iPad アプリ側を以下のように設定します。

項目
ホスト名<Mac のコンピュータ名>.local
ポート番号8008
ユーザー名なし
パスワードなし

Mac のコンピュータ名はシステム環境設定の「共有」で確認できます。例として Cloud Connect からコンピュータ名「MyMac」に接続するには、以下の設定を行います。

この設定で WebDAV 共有にアクセスすれば、 iPad アプリから Mac のファイルにアクセスできます。リモートのファイルを直接開ける Cloud Connect や Air Sharing なら、ファイルを転送するよりもこちらのほうが手軽かもしれませんね。

davserver コマンドの詳細な使い方は -h オプションで表示されます。パスワードの設定やデーモンとしての起動も可能です。私は試していませんが、 Automator でアプリケーション化してログイン時に自動起動なんてこともできると思います。

オマケ

最後にオマケとして、前回の記事以降に購入した iPhone / iPad グッズをご紹介。

SPEX 吸盤付携帯電話スタンド モバイルフィット Type-A CS-01
(実際に購入したのはこちらの製品ですが、同等品らしいものがほぼ半額で売っていたので orz そちらにリンクしています)

前回はクリップで挟むタイプの iPhone スタンドを購入しましたが、ゲルで吸着するタイプも試してみようと思って購入しました。・・・が、 iPhone の縦置きスタンドとして使うと大きな欠点が。本体の設置位置がかなり低くて、 Dock ケーブルが挿せないのです。私の場合は本体が机からはみ出るように設置して使っていますが、そういう起き方ができないと厳しいですね。

CAPDASE mKeeper Slek タブレット汎用 モバイルケース MKAPIPAD-K106

外出時に iPad を MBA の外部ディスプレイとして使うため、持ち運び用にケースを購入しました。スタンドになるようなケースも検討しましたが、自宅でアームスタンドに取り付けなおすことを考えると、着脱しやすいシンプルなものが最適という結論に。なかでもこの製品は値段が安く、外側に金属パーツがなくて他のデバイスを傷つける心配もないのでオススメです。値段の割にインナーがベルベット風に仕上げてあったりして、品質的にも満足しています。

【39s】タブレットPC用スタンド

ケースをシンプルなものにしたので、出先で iPad を設置するためのスタンドを購入しました。この製品を選んだ理由は、値段、軽さ、コンパクトさ、縦置きでも横置きでも使える、傾きが自由に調整できる、等々ですね。折り畳むとかなりコンパクトになり、カバンの隅に突っ込めるので重宝しています。ただ、上の iPhone スタンドと同じで、縦置き時には Dock コネクタが挿せません。私は出先で使うだけなので問題ないのですが、自宅で常用するのには向かないかもしれません。

Deff TRAVEL BIZ iPod/iPhone/iPad専用巻き取り式USBケーブル

巻き取り式の Dock ケーブルです。これまでは普通の Dock ケーブルをカバンに入れていたのですが、絡まってウザいので購入しました。レビューに壊れやすいと書いてあるので恐る恐る使っていますが、今のところ健在です。最初、伸ばした後に巻き取らなくなって焦ったのですが、ゆっくりとギリギリいっぱいまで伸ばして戻す、を二回やったところ巻きとってくれました。どうやらロック機構にかなり癖があるみたいです。ケーブルはしっかりしているし、わかって使えば便利な製品だと思います。

以上、本日は iPad を Mac のサブデバイスとして活用するための Tips をいくつかご紹介しました。ちょっとした工夫で使い勝手が大幅に良くなるのは、やはり楽しいですね。まだまだ改善の余地もあると思うので、他に面白い Tips がありましたら、ぜひ教えてください!

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles