iPad miniが発売されました。もう一回り小さければ、Retinaディスプレイであれば、など引っかかる点もありますが、とにかく軽くて疲れない点が気に入ってます。さて、そろそろ初代iPadの嫁ぎ先を見つけなければ……

さて、今回は「共有」について。共有といっても、ファイル共有など以前からあるサーバ/クライアント型のあれではなく、Mountain Lionで登場した"飛び出す矢印ボタン"で表現されるあれのこと。その共有機能を知るとともに、当コラムらしい使いこなし術を紹介しよう。

Mountain Lionでいう「共有」とは

「共有」という用語の定義が変化しつつある。従来、画像やオーディオ、オフィス文書など「ファイル」を暗黙のうちに共有対象とすることが多く、いかにしてWindowsやMacなどOSの違いを意識させないか、ネットワークの存在を希薄化してみせるか、という部分に機能の力点が置かれていた。具体的には、FTPやApple File Sharing(AFP)、WebDAVなどがそれだ。

しかし、Mountain Lionで登場した「共有」は、ファイルというより「リソース」を対象として志向している。画像やオーディオも扱えるが、参照中のURLをTwitterやFacebookに投稿したり、クラウドに登録して複数デバイス間でアクセス可能にしたり、といった使い方が含まれる。いわば"データの切片"がメインの共有対象となる時代なのだ。

Safariなど標準装備のアプリケーションのほか、FinderやQuickLookウインドウに「共有」ボタンが追加された

この新しい「共有」機能のために用意されたのが「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

「terminal-share」のインストールは、コマンドライン1行でOK

使い方はかんたん。オプション「-service」に続けサービス名を指定するのが基本形で、サービス名は「twitter」や「email」など多数ある。続けて「-text」オプションを設け、その引数に文字列を指定したうえで実行すれば、共有ボタンから「Twitter」や「メール」を選択した場合とまったく同じ効果が得られる。なお、制御はAqua側に移されるので、最終的な投稿/送信はGUIで行うことになる。

例1:テキストのみのツイート

$ terminal-share -service twitter -text "ツイートのテストです"

このように、共有ボタンをクリックしたときと同様のダイアログをTerminalから開くことができる

例2:メールを新規作成

$ terminal-share -service email -text "Terminalからメールを作成"

Twitter同様、メールも新規作成できる

扱えるのはテキストだけではない。「-image」オプションを指定すると、画像ファイルを操作することができる。以下の実行例では、iPhotoライブラリにJPEGファイルをインポートしている。

例3:iPhotoライブラリに画像ファイルをインポート

$ terminal-share -service iphoto -image ~/Desktop/RIMG0131.jpg

iPhotoが自動的に起動され、ライブラリに写真が追加された

テキストと画像ファイルの"合わせ技"も可能だ。以下の実行例では2つのオプションを同時に指定することで、ツイート(テキスト)にJPEGファイルを添付している。この処理方法は、サービスにFacebookやメールを指定しても利用できるので、「-service」オプションをそれぞれ「facebook」や「email」に変更して実行してみよう。

例4:ツイートに画像ファイルを添付

$ terminal-share -service twitter -text "写真付きのツイートもOK" -image ~/Desktop/RIMG0131.jpg

このように、写真付きのツイートも作成できる。Terminalですべてを完結させたいユーザには便利かも?