iPad miniが発売されました。もう一回り小さければ、Retinaディスプレイであれば、など引っかかる点もありますが、とにかく軽くて疲れない点が気に入ってます。さて、そろそろ初代iPadの嫁ぎ先を見つけなければ……
さて、今回は「共有」について。共有といっても、ファイル共有など以前からあるサーバ/クライアント型のあれではなく、Mountain Lionで登場した"飛び出す矢印ボタン"で表現されるあれのこと。その共有機能を知るとともに、当コラムらしい使いこなし術を紹介しよう。
Mountain Lionでいう「共有」とは
「共有」という用語の定義が変化しつつある。従来、画像やオーディオ、オフィス文書など「ファイル」を暗黙のうちに共有対象とすることが多く、いかにしてWindowsやMacなどOSの違いを意識させないか、ネットワークの存在を希薄化してみせるか、という部分に機能の力点が置かれていた。具体的には、FTPやApple File Sharing(AFP)、WebDAVなどがそれだ。
しかし、Mountain Lionで登場した「共有」は、ファイルというより「リソース」を対象として志向している。画像やオーディオも扱えるが、参照中のURLをTwitterやFacebookに投稿したり、クラウドに登録して複数デバイス間でアクセス可能にしたり、といった使い方が含まれる。いわば"データの切片"がメインの共有対象となる時代なのだ。
この新しい「共有」機能のために用意されたのが「NSSharingService」。このAPIを利用すれば、TwitterやFacebookに投稿可能な共有ボタンを配したアプリケーションを、スピーディーに開発できる。OS Xから情報発信する(共有情報の出し手)機能としては、このAPIで足りてしまうことが多そうだ。
一方、Twitterにおけるタイムラインの取得など、共有情報の受け手的機能には「Social.framework」というフレームワークを利用する。アカウント認証プロセスを助けるフレームワーク(Accounts.framework)も提供されるので、アプリケーションに新・共有機能を実装する手間はかなり楽になったはずだ。このあたり、iOSデバイスも含めたAppleのソフトウェア戦略が見え隠れする部分ともいえる。
コマンドラインと共有機能の融合形? な「terminal-share」
それらのフレームワークを利用すると、かなりスピーディーに共有機能を利用したプログラムを開発できる。特にLeopard以降で標準装備されている「RubyCocoa」を利用すれば、Rubyスクリプトで記述できるため、コーディングは一層取り組みやすくなる。
それを実行に移したのが、今回紹介する「terminal-share」。RubyGemsの形で配布されているので、以下のとおりTerminalからコマンドラインを実行するだけでインストールできる。
$ sudo gem install terminal-share
使い方はかんたん。オプション「-service」に続けサービス名を指定するのが基本形で、サービス名は「twitter」や「email」など多数ある。続けて「-text」オプションを設け、その引数に文字列を指定したうえで実行すれば、共有ボタンから「Twitter」や「メール」を選択した場合とまったく同じ効果が得られる。なお、制御はAqua側に移されるので、最終的な投稿/送信はGUIで行うことになる。
例1:テキストのみのツイート
$ terminal-share -service twitter -text "ツイートのテストです"
例2:メールを新規作成
$ terminal-share -service email -text "Terminalからメールを作成"
扱えるのはテキストだけではない。「-image」オプションを指定すると、画像ファイルを操作することができる。以下の実行例では、iPhotoライブラリにJPEGファイルをインポートしている。
例3:iPhotoライブラリに画像ファイルをインポート
$ terminal-share -service iphoto -image ~/Desktop/RIMG0131.jpg
テキストと画像ファイルの"合わせ技"も可能だ。以下の実行例では2つのオプションを同時に指定することで、ツイート(テキスト)にJPEGファイルを添付している。この処理方法は、サービスにFacebookやメールを指定しても利用できるので、「-service」オプションをそれぞれ「facebook」や「email」に変更して実行してみよう。
例4:ツイートに画像ファイルを添付
$ terminal-share -service twitter -text "写真付きのツイートもOK" -image ~/Desktop/RIMG0131.jpg