Macintosh Developer Online (MDOnline)


2002年1月5日発行号 - Xでモバイル



あけましておめでとうございます。今年もよろしくお願いします。世の中の状況が厳しくなるなか、なんとかMDOnlineが存続できるようにしたいと思いますので、何とぞ、御支援の方、よろしくお願いします。さっそく、松尾真一郎さんが、Mac OS Xでのモバイルの可能性を広げる原稿を書いてくれていますので、お届けします。私的には、ハギワラシスコムの方も興味ありだったのですが、CFカードタイプのPHSカードに買いなおすかどうか、とても迷うところで、結局スリッパを買ったという次第です。CFカードタイプを持っている人は、もう選択肢は決まったようなものですね。
みなさんの注目は週明けのMacworldの基調講演に集中しているかと思います。Web中継があったり、昼からMac OS Xに関するセッションがあるなど、スケジュールについては各サイトで紹介されいてるのでMDOnlineでは記事にしなくてもいいかと思いますが、大きな発表があれば、基調講演直後にニュースを流す予定です。きっとあるんじゃないかと思いますが、実際のところはどうなんでしょうか。噂サイトの話があまり一致していないのが謎ですね。さすがに、情報もれがないように細心の注意を払っているのだと思います。まだけど、勝手予想をちょっとしてみますと…Power Mac G4を安売りしているところがあるところからも、クロックアップ版はかなり確度が高いかもしれません。だけども、いちおうGHzになるとしてもそれほど大きなトピックだろうかという気もしますからこれだけではないでしょう。いろいろ話がでている中では、Mac OS X 10.2とかG5はまずないと思います。iBookのカラーバリエーションは個人的にはいちばん望むところですね。液晶iMacはいったいどんなデザインなのかという点に興味があるのは確かですが、iMacの売り上げはそれほど落ち込んでいないとはいえ、そろそろ最初に買った人たちの買い替えを喚起できそうな時期なので、マーケット的にも機は熟したというところでしょうか。「もう一度iMac」という気にさせる仕掛けがあると、また人気が爆発するかもしれません。実はうちでも、iMacがでてよさそうなら、さっそく買おうという話にすでになっていまして(笑)。うちのiMacは発売日に買ったボンダイブルーですから、Xを入れて日常的に使うにはちょっと非力なので考えていたところなんです。レタッチソフトとかデジタルデバイスとかはありそうななさそうな…というところじゃないかと思います。このあたりはもうちょっと後から、つまりXの上でアプリケーションが揃った後とかで十分ではないかとも考えたりします。いずれにしても、もうすぐですね。思いもよらない何かをやっぱり期待してしまいますね〜。日本時間では8日未明の2時からが基調講演です。
(新居雅行 msyk@mdonline.jp


【MacWIRE配信予定】MacOS Xで使えるもう1つのモバイルPHSアダプタ:FlashGate Value

MDOnlineでは,2001年12月26日の記事で,MacOSXに対応したPHSカードアダプタであるSlipperXの概要と導入について紹介した.SlipperXはMacOSXに正式対応した最初のアダプタであるが,PCMCIA TYPE2のスロットしかなく,サイズが大きいことからモバイル用途としての購入に躊躇する人もいるだろう.また,P-in M@STERやAir H" Card Petitなどのコンパクトフラッシュサイズの通信カードを持っている人にとってはわざわざPCMCIAアダプタを介して,SlipperXを使わなければいけないのは不便である.
こうした状況の中,ハギワラシスコムから発売されたコンパクトフラッシュサイズの通信カード用のアダプタ「FlashGate Value」が発売された.このアダプタは,Mac OS Xには正式対応していないが(Webページでは確認中となっている),筆者の環境でMac OS X上で使用できることが確認できた.そこで,FlashGate Valueの概要と利用の実際について紹介する.なお,FlashGate Valueは,本稿執筆時点でMac OS Xでは動作保証がされていない.本稿の内容に基づいて行った結果についての責任はOwn Riskでお願いしたい.

――――製品の概要
FlashGate Valueは,USB接続のコンパクトフラッシュサイズのPHSカード,およびコンパクトフラッシュメモリカードのアダプタである.正式には,Mac OS 8.6から9.2.2までに対応している.また,カタログには,USB Mass Strage Class 1.0とUSB Communication Class 1.1準拠していることが記載されている.後者はCDC(Comunication Device Class)のことである.この両者に準拠していることにより,コンパクトフラッシュカードやマイクロドライブの読み書きや,CF型の通信カードを使った通信が可能になる.

対応している通信カードは,NTTドコモで利用できるP-in Comp@ct P-in m@ster,DDIポケットで利用できるCFE-01、CFE-01/TD,CFE-02 ,RH2000である.PCMCIAカードタイプは使えない.この場合は,SlipperXを使うしかない.もちろん,USBケーブルを通じて給電されるため,FlashGate Valueを使う場合には電源を別に用意する必要はない.

気になる大きさだが,写真を見ていただくとわかりやすい.横のサイズはPCMCIAカードを横にちょっと広げたぐらい,厚さはPCMCIAカード4枚分ぐらいである.それに1mのUSBケーブルがついている.もちろんPHSとの接続ケーブルに比べるとはるかに大きいわけだが,パソコン用バッグの小物を入れるポケットには十分入る大きさであり,なんとかモバイル用途に堪える大きさである.

 
 
 

なお,価格はオープン価格となっているが,筆者が購入した家電量販店では,5,980円だった.

――――インストールと通信の実際
今回動作を確認したのは以下の環境である.

マシン: 初代iBook(メモリ160MB ハードディスク3GB)
     PowerMac G4 Cube(メモリ640MB ハードディスク60GB)
OS: Mac OS X 10.1.2
PHSカード:TDK RH2000

セットアップの方法と通信を行うための実際の方法は,SlipperXの場合と同様である.詳細はSlipperXの記事を見ていただくとして,流れだけを簡単に説明する.セットアップは,まず使用するPHSカードのCCLファイルをインストールする.大抵はPHSカードに付属している.CCLファイルは/Library/Modem Scripts/にコピーする.

続いて,FlashGate ValueにPHSカードを挿入して,USBケーブルをMacのUSBポートに接続する.そしてシステム環境設定から「ネットワーク」をクリックすると,新たなポートとして認識される.一般にモバイル用途で使う場合は,自宅あるいは仕事場と,外出先では接続形態が違うので,外出用に新たな「場所」を設定しておくことをお勧めする.

まず,「モデム」タブで利用するCCLファイルを選ぶ.ここでは,接続するPHSカードのCCLファイルを選択する.同時に「メニューバーにモデムステータスを表示する」をチェックすると,接続,切断などをメニューバーから行えるようになる.続いて「PPP」タブで,電話番号,ログイン名,パスワードなどを設定する.最後に,「TCP/IP」タブでネットワーク接続の設定を行う.通常は「PPPを使用」を設定すれば良いが,詳細は接続先のプロバイダのマニュアルを参照すると良いだろう.

接続するには,まずアップルメニューから先程登録した場所を選択する.続いて,Internet Connectか,メニューバーのモデムのアイコンから「接続」を選ぶ.接続の切断も,Internet Connectか,メニューバーから行う.

筆者はAir H"のつなぎ放題コース,ネット25を契約しておらず,通常の64Kbps接続のPIAFS2.1仕様の接続のみを試しただけである.そのため,つなぎ放題コースが正しく動作するかは検証できていない.ただし,通常の64Kbps接続では,Mac OS 9で接続した時と変わらない性能を得ることができた.

――――まとめ
FOMAの普及がもう少し先である現状において,モバイル環境での通信手段としてはPHSを使うのがベストである.そういった中,Mac OS Xにおいてはドライバ開発が促進されなかったことや市場性が読み切れないことから,Mac OS Xに対応したPHS接続用ケーブル/アダプタの発売が遅れていた.昨年12月26日の記事のSlipper XはPCMCIAカードを経由しサイズも大きいという制限はあるものの,正式に動作保証された環境として登場したことでの意味は大きかった.

MacでPHSを利用した通信を行う場合,大きく分けて2通りの方法がある.1つが,PHSの音声端末とMacを接続する方法で,もう1つが単独のPHSカードを使う方法である.前者には,USBポートと音声端末をケーブルで接続する方法と,PCMCIAカードとPHSの音声端末を接続する方法がある.これらのいずれの方法も,Mac OS 9では使用可能であった.
SlipperXでは,PCMCIAカードと音声端末を接続する方法と,緊急避難的であるがアダプタを通すことでPHSカードを使う方法が利用できるようになった.また,FlashGate Valueでは,コンパクトフラッシュサイズのPHSカードをより小さなアダプタで使えるようになった.最初に書いたようにSlipperXはそのサイズが大きいので,モバイル用途としては使いづらい.そのため,CFサイズのPHSカードを使う場合にはFlashGate Valueを,それ以外の場合にはSlipperXを利用するのが現状の選択肢となる.

一方,Mac OS Xでサポートされていない方法は,USBポートとPHSの音声端末を接続する方法とPHSカードをPCMCIAスロットに装着する方法である.実はこの2つの方法は,Mac OS 9で一般的に使われている方法である.これらの方法が実現されていない現状が早く解消される必要がある.USBとPHSの音声端末の接続は,ケーブルがCDC対応していればよいと考えられるため,CDC対応のケーブルが早く開発されることが望まれる.携帯電話(PDC)用のCDC対応のケーブルはすでにサン電子から発売されているので,PHS音声端末によるデータ通信の需要見込みが立つかどうかが課題だろう.もう1つのPCMCIAのデータ通信対応については,Appleの対応に掛かっているというのが現状である.現在発売されているノート型にはモデムとEtherentポートが標準装備されているので,特に米国でのPCMCIAのデータ対応の優先順位は低いのかもしれないが,日本のユーザにとっては非常に優先順位が高いところなので,是非促進して欲しいところだ.とにもかくにも,モバイル通信の際だけMac OS 9にしなければいけないということがなくなり,Mac OS Xを使うための環境が整いつつあるのは確かだ.
[松尾真一郎, MDOnline]

関連リンク:FlashGate Valueのページ
カテゴリ:ネットワーク, インターネット全般


AppleScript Working》ボタン系のコントロールを使ってみる(1)

Mac OS XのDeveloper Toolsに搭載されたAppleScript Studioを使った簡単なアプリケーションを前回の記事では紹介した。しばらくは、ウインドウに配置したコントロール類をAppleScriptでコントロールする方法を紹介して行くことにしよう。まずはボタン類で使う機会の多い機能を紹介しよう。
前回にも紹介したように、Interface Builderを使ってユーザインタフェースを作成し、各コントロールのイベントに対応する部分のプログラムをAppleScriptで作成をすればよい。こうしたイベントは、いずれにしても、ウインドウないしはその中のコントールから発生する。そのとき、イベントハンドラにはイベントが発生したオブジェクトへの参照が得られるので、何らかの方法で、そのコントロールが配置されているウインドウへの参照が得られる。それをもとに、ウインドウ内の各コントロールを参照できるのである。コントロールが所属するウインドウを参照するにはwindowプロパティを使う。また、Interface BuilderではAppleScriptでの名前を指定することができるので、その名前が「button1」ならそれを使って、たとえば、Control "button1"として、特定のボタンを参照することができる。id番号などでの指定など他にコントロールを指定する方法があるのだが、固定的なユーザインタフェースなら、それぞれのコントロールに名前を付けて、その名前で参照するのがいちばん確実で分かりやすいだろう。また、たとえばプッシュボタンならButtonクラスなど、コントロールの種類ごとにクラスが定義されているが、それらはControlクラスを継承している。もちろん、Button "button1"として参照してもいいのだが、コントロールはすべてControlというクラス名で参照してもかまわない。コントロール名に種類が分かりやすい名前をつけておけば混乱はしないだろう。

Interface BuilderのCocoa-Viewsパレットにはたくさんのボタン類があるが、実はもとになるクラスはどれもNSButtonである。AppleScriptのフレームワークではButtonクラスとして定義されているが、これはControlクラスを継承しており、ButtonとControlさらにはそれらの上位クラスのViewやResponderも視野に入れておく必要がある。Buttonだけを調べて分からないことはこうしてクラスの定義をさかのぼる必要があるわけだ。もっとも、ボタンはそれほど複雑なコントロールではないから、あまり気にする必要はないかもしれない。

◇ウインドウにボタン、チェックボックス、ラジオボタンを配置した
 

ボタンを配置し、InfoパレットのAppleScriptのメニューで、名前を設定する。ボタンをクリックして何か処理をさせたい場合には前回に説明したように、ここでActionのClickedイベントに対応するようにチェックを入れて、下側でソースファイルを選択する。簡単なアプリケーションなら、最初から用意されているソースを使えばいいが、コントロールが増えてくると、コントロールごとにソースファイルを用意することになるだろう。というのは、clickedイベントに対応するハンドラは、1つのソースでは1つしか書けない。たとえば、2つのボタンのそれぞれのclickedイベントで同じソースファイルを指定したとする。すると、そのソースのclickedハンドラは、どちらのボタンを押しても同じハンドラが呼び出される。もちろん、そこで条件判断をしてもいいのだが、通常はコントロールごとにソースファイルを用意しておくのが得策だろう。
Interface Builderでは、ボタンの名前を設定できる。ウインドウ上でダブルクリックしてその場で書き換えることもできるが、InfoパレットのAttributesのメニューにあるTitleの設定を書き換えてもよい。いずれにしても、名前が固定したボタンなどはInterface Builderの段階で設定できてしまう。

◇Buttonクラスで利用できるプロパティ
 title(文字列):ボタン名、チェックボックス名、ラジオボタン名など
 alternate title(文字列):ボタン名の代替え文字列(オンのときの文字)
 state(数値):ボタンの状態。オンなら1でオフなら0
 visible(論理値):表示しているかどうか
 enabled(論理値):選択できるかどうか

たとえば、ボタンをクリックしたときに以下のハンドラが呼び出されるとして、AppleScript名が「ch1」のチェックボックスの状態によって判断したいときなどは、stateプロパティを参照すればいいので、たとえば次のようなプログラムになる。

-- ボタンをクリックして呼び出されるハンドラ
on clicked theObject
set targetWindow to window of theObject
if state of control "b1" of targetWindow is 0 then
-- チェックボックスがオフのときの処理
else
-- チェックボックスがオンのときの処理
end if
end clicked

なお、通常のボタンはTitleだが、ボタンをオンにしたときのボタン名は、Infoパレットで言えばAlt. Titleのところで設定できる。もちろん、いずれのボタン名もプログラムでの書き換えは可能だ。チェックボックスがオンのときとオフのときでボタンの名前が変化するということが、単にコントロールへの設定だけでできる。こうした処理に対応するプログラムをいちいち作成する必要はないということである。
(この項、続く)

カテゴリ:ProjectBuilder/Interface Builder, AppleScript, AppleScript Working


AppleScript Working》ボタン系のコントロールを使ってみる(2)

ラジオボタンは少し独特の使い方を行う。ラジオボタンは、ボタンが複数並んだものだが、とりあえずInterface Builderではそうしたボタンの集合を1つのコントロールとして扱う。このラジオボタン群にも、AppleScript名を付けておく。

◇配置したラジオボタンとそのInfoパレット
 

Infoパレットのタイトルを見て分かるように、ラジオボタンというクラスではなく、NSMatrixというクラスである。このクラスはコントロールが複数あるものを扱うもので、その中の1つ1つの要素(この場合は1つ1つのボタンは「セル」)と呼ばれる。AppleScriptのフレームワークでも、MatrixやCell、Button Cellといったクラスが定義されている。
上記の図のラジオボタン群のInfoパレットで、Attributesのメニューを選択した状態を見てもらいたい。いろいろな設定があるが、右下にRow/Colという入力部分がある。ここで、何行何列のラジオボタン群を構築するかを指定する。必要な数を指定すればよい。なお、ここで、行列数を変更した後は、Infoパレットの下にある「Tags = Positions」というボタンをクリックしておく。このタグについては後から説明しよう。
次に、ラジオボタンの特定のボタンをダブルクリックすると、ラジオボタン群内のセル(つまり1つのボタン)を選択することができる。この状態で、1つ1つのボタンの名前を指定することができる。もちろん、InfoパレットのTitleで指定したり、直接ボタン名を書き換えればよい。

◇ラジオボタン1つ1つはダブルクリックして編集できる
 

ここで、個々のボタンのTagという設定に注意を払ってもらいたい。「Tags = Positions」ボタンをクリックすると、ここには0から順番に数字が設定される。ラジオボタンのうち、どれが選択されているかをプログラムで知るには、このタグを手がかりにする必要があるので、タグにはユニークな値が設定されている必要がある。そうした値の割り当てはいずれにしても自動的にできるが、たとえば用途によっては100、200などと異なる番号にしてもいい。まずは表にまとめておこう。

◇ラジオボタンのコントロールで利用するプロパティ
[Controlクラス]
 current cell(参照):現在選択されているボタン
[curent cellプロパティで得られたボタン]
 tag(整数):コントロールに設定されているタグの数値
 title(文字列):ボタン名
 alternate title(文字列):ボタン名の代替え文字列(オンのときの文字)

現在選択されているボタンはcurrent cellプロパティで得られるので、そこで得られたセルの参照から、tagプロパティを得て、どのボタンが選択されているかを判別することができる。つまり、タグがボタンごとに異なる値であることは、判別する場合には前提となるわけだ。ボタン名が必要なら、通常のボタンと同じように、titleプロパティを使えばよい。たとえば、あるボタンをクリックしたとき、ラジオボタン群「rb」において選択されているボタンに応じて異なる処理をするとなると、次のようなプログラムとなる。

-- ボタンをクリックして呼び出されるハンドラ
on clicked theObject
set targetWindow to window of theObject
set radioButtons to control "rb" of targetWindow
set selectTag to tag of current cell of radioButtons
if selectTag is 0 then
-- 1つ目のボタンが選択されている場合
else if selectTag is 1 then
-- 2つ目のボタンが選択されている場合
else if selectTag is 2 then
-- 3つ目のボタンが選択されている場合
else if selectTag is 3 then
-- 4つ目のボタンが選択されている場合
end if
end clicked

もちろん、stateプロパティも利用できるが、選択しているラジオボタンのstateプロパティは必ず0になるので、その意味では使う場面は考えにくい。
タグの数値については、Interface Builderで自動的に設定した場合、左上から0となるが、列が複数ある場合には、行ごとに番号を割り振る。ここでの図のように、2列ある場合、タグが0は左上のラジオボタンだが、タグが1となるのはその右にある1行目2列目のボタンである。2行目1列目のボタンはタグは2となる…といった具合だ。
なお、ラジオボタン群であるMatrixオブジェクトに、複数のCell(ないしはButton Cell)オブジェクトが所属するような構成になっているので、選択している以外のセルをプログラムから使えるようにも思えるのだが、どうも思ったように行かない。また、特定のセルに対してclickedイベントを設定しても、イベントの発生は処理されているようだが、きちんとハンドラ自体を呼び出さない。どうも、current cellプロパティで得られたセルに対する処理しかうまくできないようである。大方の作業は特に問題はないとは思われるが、ボタン名をダイナミックにプログラムで変更したいと言う作業は現状ではちょっと厳しいのではないだろうか。

ここでAppleScriptと少し離れるが、NSButton系のコントロールを配置して、Interface BuilderのInfoパレットにあるAttributesを御覧いただきたい。ここではたくさんの設定ができるようになっているので、いろいろな設定を試してみて、どんなボタンがあるのかを自分で調べておくとよいだろう。設定をしてCommand+Rで模擬実行ができるので、どんな見かけなのかとか動作についてはすぐに調べられる。
アイコンの設定ができるようになっていて、IconとAlt. Iconが設定できる。アイコンはとにかくグラフィックスファイルをまずはどこかで用意しておく。サイズは特に限定はされていないようであるし、フォーマットもJPEGなどでかまわない。そして、MainMenu.nibなど、nibファイルのメインのウインドウにあるImagesのタブを選択する。アイコンにしたいグラフィクスをそこにドラッグ&ドロップすると、プロジェクトに追加するかどうかを問い合わせるシートがでてくるので、そこで追加することにしてやれば、自動的にプロジェクトに追加される。そして、Infoパレットでは、Imagesタブに見えている名前をIconのところに指定してやればいい。たとえば、icon.jpgというファイルを登録すると、iconとなるので、その拡張子を抜きにした名前を指定すればいいのである。すると、即座にボタンにアイコンがでてくる。また、ビルドしたアプリケーションにも自動的にグラフィックスのファイルはコピーされる。なお、Imagesのタブにあるアイコンを、ボタンにそのままドラッグ&ドロップすることで、アイコンに指定することもできる。
Soundはクリックしたときなどに出る音であり、アイコンと扱いは同じである。Soundsタブに登録するが、実は最初からかなりの数の効果音がSoundsのタブで見えるようになっている。これはシステム側で用意されている警告音であるので、そこで選んで(選択してInfoパレットでプレイボタンを押すことで試聴できる)、その名前をボタンのInfoパレットのSoundところにキータイプすればいいわけだ。あるいは、Soundsに見えているアイコンを、ボタンにドラッグ&ドロップして指定することもできる。作業はこちらの方が楽で確実かもしれない。
Equivは、クリックしたのと等価なキー操作を定義する。文字キーでもいいがreturnなどを指定してもいいし、Commandキーなどの修飾キーを組み合わせることもできる。TypeやBehaviorにはいろいろな選択肢がある。パレットに見えているボタン以外にもいろいろな設定ができるので、ぜひとも試してもらいたいところである。
AppleScriptでのプログラムももちろん重要であるが、Cocoaのフレームワークに用意されたコントロール自体の機能も合わせて知っておくと、アプリケーション作成はより効果的にできるようになるだろう。
(この項、以上)

カテゴリ:ProjectBuilder/Interface Builder, AppleScript, AppleScript Working


Mac OS XのMailでAppleScriptでファイル添付を行う方法

Technical Q&Aで、Mac OS Xの電子メールソフトMailにおいて、AppleScriptのプログラムでファイルの添付を行って送信する方法についての具体的な方法が掲載されている。AppleScriptでのサンプルプログラムが掲載されているだけであるが、そのまま使えるまとまったプログラムなので、参考になるだろう。make new text attachment…を作成したメッセージに対して送るのがポイントとなるようだ。

関連リンク:QA1018: Using AppleScript to send an email with an attachment
カテゴリ:電子メール, AppleScript