Archive for 4月, 2010

2010/04/30 Finder上で選択中の画像を横幅400ドットにリサイズ

Finder上で選択中の画像(JPEGファイル)を横幅400ドットにリサイズするAppleScriptです。

リサイズして元の画像ファイルに上書きします。

スクリプト名:Finder上で選択中の画像を横幅400ドットにリサイズ
tell application "Finder"
  set a to selection
  
if a = {} then return –何も選択していなかったらリターン
  
  
set aFile to a as alias
end tell

try
  tell application "Image Events"
    launch
    
set this_image to open aFile
    
scale this_image to size 400
    
save this_image in aFile as JPEG with icon –オリジナルの画像ファイルに書き戻す
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/30 iPhotoで選択中の写真を別名で横幅640ドットに縮小して保存

iPhoto上で選択中の写真(JPEGファイル)を横幅640ドットにリサイズして別の場所に保存するAppleScriptdです。

新しいデジカメ(Ricoh CX3)を買って、前のモデルより画素数が増えたら……なかなか大変なことに(汗) そこで、早速作ってみました。こういう、「必要に迫られて作るAppleScript」が一番役に立ちます。

iphoto1.jpeg

スクリプト名:iPhotoで選択中の写真を別名で横幅640ドットに縮小して保存
tell application “iPhoto”
  set a to selection
  
  
set anItem to item 1 of a
  
set aClass to class of anItem
  
if aClass is equal to album then return
  
  
set b to properties of anItem
  
set imgPath to image path of anItem
end tell

set newFile to choose file name
set newFilePosix to POSIX path of newFile

try
  tell application “Image Events”
    launch
    
set this_image to open ((POSIX file imgPath) as alias)
    
scale this_image to size 640
    
save this_image in newFilePosix as JPEG with icon
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/28 4月29日のラジオ番組に参加します

4/29日(木)のラジオNikkeiの番組「From Webmasterスペシャル〜再びラジオについて考えるのココロだ(略してラジコ)」 に参加してきます。

Podcastingに一般楽曲を流せるようにするソフト「PiyoCast」の開発チームとして、プロフェッショナルな音声コンテンツの制作現場であるラジオの現場の危機は由々しき事態。音声コンテンツの未来について、運良く発言の機会が巡ってきたらぜひ発言したいと思います(ダメな可能性もあるわけで、、、)。

ラジオがないご家庭はRadiko経由でインターネットで、Radikoが聴こえない首都圏以外のエリアの方は、ライブストリーミング放送でも聴けるようになっており、後日Podcastでも配信されるとのこと。

また、5/3 13:00〜15:00と5/4 09:30〜11:30にも再放送されるそうです。

2010/04/27 AppleScriptによる並列処理テスト

AppleScriptで並列処理を行うサンプルです。メイン(GUI)側はAppleScript Studio(Xcode 3.1.4 on Mac OS X 10.5)、サブ側は通常のAppleScriptで記述しています。

子プログラムからメインプログラム(画面つきのプログラム)に向けて、ファイルシステム経由でイベントを6プロセス並列で送信。子プログラム側では1〜1000まで順次カウントアップし、すべての子プログラムがカウントアップを終了したら、その時間を表示するようになっています。

yyyeyoyycyayee2010-04-27-10458e.jpeg

→ テストプログラムをダウンロードする

使用方法は……アーカイブを展開したら、「docOpen1」アプリケーションを起動して、「START」ボタンを押すだけです。

newimage.jpg

結果は、手元のマシンでは……

  CoreDuo 2.0GHzのMacBook Pro:95〜100秒
  Core2Duo 2.4GHzのMacBook Pro:90〜95秒
  Core i7 2.66GHzのMacBook Pro:55〜60秒

といったところです(Mac OS X 10.6.3上で計測)。Core i7のMacBook Proでは6プロセス並行して走らせてもまだCPUに余力があり、HyperThreadingで仮想的に4コアのCPUとして振る舞えることが、こうしたタイプのプログラムの実行に有利に働いているようです。Core 2 Duo 2.4GHzの環境ではCPUの全能力を必要としていたAppleScriptのプログラムが、余裕で動いてしまう様にはほれぼれします>Core i7

yyyeyoyycyayee2010-04-27-10504e.jpeg
▲MacBook Pro Core i7 2.66GHzで本サンプルが稼働中の負荷

本サンプルの本当の目的は、並列処理時の子プログラムからメインプログラムへの状況・結果通知のテストでした。それぞれの子プログラムが並列でてんでバラバラにメッセージを投げた場合でも、イベントを取りこぼさずに正しく処理できることを確認できました。

パラメータをファイルに書き出して、そのファイルをメインプログラムでオープンさせるようにイベントを投げるというシンプルな処理ですが、並列処理時や長期間に渡る処理を行わせた場合の時間計測など、さまざまな用途が考えられます。実際に、ぜんぜん速度を要求されない「アドレスブック.app(のプラグインAppleScript)からAppleScript Studioアプリへのデータ転送」に、このファイルシステム経由のイベント送信を使って実装したことがあります。

本当は、こんなに短い間隔で連続的に子プログラム→メインプログラムの方向でイベントを送るようなシーンは考えていませんでした。かなりまとまった処理を子プログラムに行わせて、子プログラム側の処理終了後にその実行結果なりエラー内容なりを親プログラム側に伝えられればよい、というスタンスです。

さらに……本来であれば子プログラムの生成については、ダイナミックにその数を増減させられるのですが、GUIのプログラムに経過を表示する関係で、本サンプルでは6プロセス固定で行っています。

とても高価なため自分の手元にはないのですが、もっとCPUコア数の多いMacProなどで処理を行った場合の速度などが分かると有意義でしょう。速いマシンでの実行結果(秒数)については、コメント欄にて教えていただけると助かります。

2010/04/27 ImageEventsで横幅400ピクセルに

ImageEventsに命令して、指定画像ファイルの横幅を指定のピクセル数(本サンプルでは400)、縦横比を維持したまま高さを成り行きでリサイズするAppleScriptです。

スクリプト名:ImageEventsで横幅400ピクセルに
set this_file to choose file
try
  tell application "Image Events"
    launch
    
– open the image file
    
set this_image to open this_file
    
– perform action
    
scale this_image to size 400
    
– save the changes
    
save this_image with icon
    
– purge the open image data
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/27 ImageEventsでTIFF保存

ImageEventsに命令して、指定画像ファイルをTIFF形式で保存するAppleScriptです。

最近では画像ファイルの一括形式変換+ファイル保存といえば、Automatorなどを使ったほうが手っ取り早い感じですが、細かい作業が必要になってくると(条件分岐とか、ファイル名の操作とか)AppleScriptを書いたほうが便利です。

そうした場合に、こうした基礎的なScriptを手元にストックしてあると便利です。

スクリプト名:ImageEventsでTIFF保存
set this_file to choose file
set the target_path to (choose file name default name "newimage.tif") as string
try
  tell application "Image Events"
    launch
    
– open the image file
    
set this_image to open this_file
    
– save in new file
    
save this_image as TIFF in file target_path with icon
    
– purge the open image data
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/27 ImageEventsで切り抜き

ImageEventsに命令して、指定画像ファイルから指定ピクセル分を切り抜くAppleScriptです。

r0010131_before.JPG
▲処理前(全体を縮小して掲載)

r0010131_after.JPG
▲処理後(原寸)

スクリプト名:ImageEventsで切り抜き
set this_file to choose file
try
  tell application “Image Events”
    launch
    
– open the image file
    
set this_image to open this_file
    
– perform action
    
crop this_image to dimensions {400, 400}
    
– save the changes
    
save this_image with icon
    
– purge the open image data
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/27 ImageEventsで75%にリサイズ

ImageEventsに命令して、指定画像ファイルを任意の倍率に縮小(このサンプルでは75%)するAppleScriptです。

スクリプト名:ImageEventsで75%にリサイズ
set this_file to choose file
try
  tell application "Image Events"
    launch
    
– open the image file
    
set this_image to open this_file
    
– perform action
    
scale this_image by factor 0.75
    
– save the changes
    
save this_image with icon
    
– purge the open image data
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/27 ImageEventsで画像反転(左右反転)

ImageEventsに命令して、指定画像ファイルを左右反転させるAppleScriptです。

スクリプト名:ImageEventsで画像反転
set this_file to choose file
try
  tell application "Image Events"
    launch
    
– open the image file
    
set this_image to open this_file
    
– perform action
    
flip this_image with horizontal
    
– save the changes
    
save this_image with icon
    
– purge the open image data
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/27 ImageEventsで画像の縦横サイズを取得する

ImageEventsに命令して、指定画像ファイルの縦横のサイズを取得するAppleScriptです。

スクリプト名:ImageEventsで画像の縦横サイズを取得する
set a to choose file
set b to retImageSize(a) of me –(幅、高さでペアリスト)

–画像の幅と高さをリストで返す
on retImageSize(anAlias)
  tell application "Image Events"
    launch
    
set thisImage to open anAlias
    
set b to dimensions of thisImage
    
close thisImage
  end tell
  
return b
end retImageSize

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/27 ImageEventsで画像回転(反時計回りに90度)

ImageEventsに命令して、指定画像ファイルを反時計回りに90度回転させるAppleScriptです。

スクリプト名:ImageEventsで画像回転(反時計回りに90度)
set this_file to choose file
try
  tell application “Image Events”
    launch
    
– open the image file
    
set this_image to open this_file
    
– perform action
    
rotate this_image to angle 270
    
– save the changes
    
save this_image with icon
    
– purge the open image data
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/26 ImageEventsで画像回転(時計回りに90度)

ImageEventsに命令して、指定画像ファイルを時計回りに90度回転させるAppleScriptです。

OSに標準で入っていたように思うのですが、最近のMac OS X 10.6では見かけなかったので掲載。

スクリプト名:ImageEventsで画像回転(時計回りに90度)
set this_file to choose file
try
  tell application "Image Events"
    launch
    
– open the image file
    
set this_image to open this_file
    
– perform action
    
rotate this_image to angle 90
    
– save the changes
    
save this_image with icon
    
– purge the open image data
    
close this_image
  end tell
on error error_message
  display dialog error_message
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/24 現在編集中のXcodeプロジェクトのビルドターゲットが生成したpreferenceファイルを削除する v3

Xcode 3.1.4上で編集中のプロジェクトで、テスト実行を行った際にユーザーディレクトリ下に作成したplistファイルを削除するAppleScriptです。

以前のバージョンでは、複数のXcodeプロジェクトを同時にオープンしていた際に、最初にオープンしたプロジェクトを対象としてplistの削除を行うという不具合があったため、本バージョンではアクティブな(編集中の、最前面にある)プロジェクトを対象としてplist削除を行うように書き換えてみました。

また、以前のバージョンではどのplistファイルを消したのか、いっさい告知を行っていなかったので……作業終了時にパス名を表示するように機能を追加しました。地味に便利な機能です(display dialogに変数を追加しただけですが)。

Xcodeのプロジェクトを複数ひらいて、過去のプロジェクトを参照したりサンプルコードを参照するという作業は、割とよくあることなので……複数プロジェクトオープン時に最前面のプロジェクトを特定する方法が存在していたのはラッキーでした。

Xcode 3.1.4がターゲットであり、目下最新版のXcode 3.2.2では動作検証を行っていませんが……多分、動くと思います。

このAppleScriptを書いてからというもの、Xcode上でAppleScript Studioのプログラム開発を行う際には必須ともいえる存在となりました。意外と、「中途半端な作りのplistファイル」が残ったままになっているために起きるトラブル(というより、エラーが出なくてはならないのにplistファイルが残っているために見過ごされるエラー)は多く、自分も「okaeri」のリリース後に他人の環境で起動できないトラブル、というのに巻き込まれて……しばらくダメージから回復できませんでした(問題があったら知らせてほしいな〜)。

本Scriptを使用することで、実行環境におけるplistを削除できるため、plist回りのトラブルを回避できます。Xcodeの標準機能としてこれぐらい入れておいてほしいぐらいです(cleanコマンドにこの機能がないのはおかしいよ)。本当にないと困ります。Xcode+AppleScriptでアプリケーション開発を行う際には、毎日使っています。Objective-CやC++などの言語で開発していても、たぶん手放せないものになることでしょう。

Xcodeの自動化は、生産性をひじょーーに左右するものなので、Appleにはもっと真剣に取り組んでもらいたいものです。XcodeのAppleScript用語辞書が中途半端なので、もっと充実させるべきです。

スクリプト名:現在編集中のXcodeプロジェクトのビルドターゲットが生成したpreferenceファイルを削除する v3
–現在編集中のXcodeプロジェクトのパス情報を取得
tell application “Xcode”
  try
    set aPrj to project of active project document
  on error
    activate
    
display dialog “There is no Xcode Project” with icon 1 buttons {“OK”} default button 1
    
return
  end try
  
  
tell aPrj
    set projPath to real path
  end tell
end tell

–現在編集中のプロジェクトに含まれるInfo.plistファイルを検出
set projPath to POSIX file projPath

tell application “Finder”
  set parantFol to (folder of file projPath) as alias
  
tell folder parantFol
    set infoP to exists of file “info.plist”
    
if infoP = false then
      display dialog “現在編集中のプロジェクトにはInfo.plistが入っていません。” buttons {“OK”} default button 1 with icon 1
      
return
    end if
  end tell
end tell

–Info.plistファイルからバンドル情報を取得する
set pListPath to (parantFol as string) & “Info.plist”
tell application “System Events”
  set vRec to value of property list file (pListPath as string) –plist fileから値を読み取る
end tell
set infoRes to |CFBundleIdentifier| of vRec

–plistファイルを消す
set aPath to (path to preferences from user domain) as string
set infoPlistPath to aPath & infoRes & “.plist”

try
  do shell script “rm -f “ & quoted form of POSIX path of infoPlistPath
  
tell application “Xcode”
    activate
    
display dialog “以下のplistファイルを消去しました。” & return & infoPlistPath buttons {“OK”} default button 1 with icon 1
  end tell
on error
  tell application “Xcode”
    activate
    
display dialog “plistファイルの消去に失敗しました” buttons {“OK”} default button 1 with icon 1
  end tell
end try

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/23 Photoshop CS3で指定アクションセット内のアクション一覧を取得する

Photoshop CS3で、指定のアクションセット内のアクション名称一覧を取得するAppleScriptです。

元になったJavaScriptの仕様をひきずってファイル経由でアクション名称をやりとりしていますが、書き換えれば値渡しでも大丈夫なはずです。

スクリプト名:Photoshop CS3で指定アクションセット内のアクション一覧を取得する
set aRes to getPSCS3ActionName("初期設定のアクション") of me
–> {"ビネット (選択範囲)", "フレームチャンネル (50 pixel)", "木製 (50 pixel)", "キャストシャドウ (文字)", "水面 (文字)", "カスタムRGBからグレースケール", "溶けた鉛", "クリッピングパスの作成(選択範囲)", "セピアトーン (レイヤー)", "クワドラントカラー", "Photoshop PDF 形式で保存", "グラデーションマップ"}

–Photoshop CS3の指定アクションセット内のアクション名称を取得する
on getPSCS3ActionName(actionSetName)
  tell application "Adobe Photoshop CS3"
    set jsText to "#target photoshop
var outFile = File(\"~/desktop/.psaclist.txt\");
outFile.open(\"w\");
var aList = getActions(’" & actionSetName & "’);
for(var z in aList) {
outFile.writeln(aList[z]);
}
outFile.close();

function getActions(aset) {
cTID = function(s) { return app.charIDToTypeID(s); };
sTID = function(s) { return app.stringIDToTypeID(s); };
var i = 1;
var names = [];
if (!aset) {
throw \"Action set must be specified\";
}
while (true) {
var ref = new ActionReference();
ref.putIndex(cTID(\"ASet\"), i);
var desc;
try {
desc = executeActionGet(ref);
} catch (e) {
break; // all done
}
if (desc.hasKey(cTID(\"Nm \"))) {
var name = desc.getString(cTID(\"Nm \"));
if (name == aset) {
var count = desc.getInteger(cTID(\"NmbC\"));
var names = [];
for (var j = 1; j <= count; j++) {
var ref = new ActionReference();
ref.putIndex(cTID(’Actn’), j);
ref.putIndex(cTID(’ASet’), i);
var adesc = executeActionGet(ref);
var actName = adesc.getString(cTID(’Nm ‘));
names.push(actName);
}
break;
}
}
i++;
}
return names;
};
"

    set display dialogs to never
    
try
      do javascript (jsText)
      
set setFound to true
    on error number 8800
      set setFound to false
    end try
  end tell
  
  
try
    do shell script "sync"
    
set sRes to do shell script "cat ~/desktop/.psaclist.txt"
    
do shell script "rm ~/desktop/.psaclist.txt"
    
    
if sRes is not equal to false then
      set sRes to paragraphs of sRes
    end if
    
    
return sRes
  on error
    return false
  end try
end getPSCS3ActionName

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/23 Photoshop CS3でアクションセット一覧を取得する

Photoshop CS3で、アクションセットの名称一覧を取得するAppleScriptです。

Photoshopで、アクション名称およびそのフォルダ的な位置づけにあるアクションセットの名称を取得するような機能はAppleScriptからは利用できません。そこで、JavaScriptで取得する方法を調べて、そのコードをAppleScriptからdo JavaScript命令で呼び出してみました。

例によって、ダブルクォートのエスケープ部分に入っている「¥」マークは、実際にはバックスラッシュです。AppleScriptリンクをクリックした場合には正しい文字が入りますが、HTMLのコードでそのまま参照する場合には注意が必要になります。

元のJavaScriptがファイル出力するように出来ていたので、とりあえず一時ファイルに書き出すようにしてshell script経由で読み取って、AppleScriptでリストにしています。

yyyeyoyycyayee2010-04-23-10905e.jpeg

スクリプト名:Photoshop CS3でアクションセット一覧を取得する
set aRes to getPSCS3ActionSetName() of me
if aRes is not equal to false then
  set aList to paragraphs of aRes
end if
–> {”初期設定のアクション”, “DM用アクション”}

–Photoshop CS3のアクションセット名称を取得する
on getPSCS3ActionSetName()
  tell application “Adobe Photoshop CS3″
    set jsText to “#target photoshop
var actionList = getActionSets();
var outFile = File(\”~/desktop/.action_set.txt\”);
outFile.open(\”w\”);     
for(var a in actionList){
outFile.writeln(actionList[a]);
}
outFile.close();

function getActionSets() {
cTID = function(s) { return app.charIDToTypeID(s); };
sTID = function(s) { return app.stringIDToTypeID(s); };
var i = 1;
var sets = [];
while (true) {
var ref = new ActionReference();
ref.putIndex(cTID(\”ASet\”), i);
var desc;
var lvl = $.level;
$.level = 0;
try {
desc = executeActionGet(ref);
} catch (e) {
break; // all done
} finally {
$.level = lvl;
}
if (desc.hasKey(cTID(\”Nm \”))) {
var set = {};
set.index = i;
set.name = desc.getString(cTID(\”Nm \”));
set.toString = function() { return this.name; };
set.count = desc.getInteger(cTID(\”NmbC\”));
set.actions = [];
for (var j = 1; j < = set.count; j++) {
var ref = new ActionReference();
ref.putIndex(cTID(’Actn’), j);
ref.putIndex(cTID(’ASet’), set.index);
var adesc = executeActionGet(ref);
var actName = adesc.getString(cTID(’Nm ‘));
set.actions.push(actName);
}
sets.push(set);
}
i++;
}
return sets;
};


    set display dialogs to never
    
    
try
      do javascript (jsText)
      
set setFound to true
    on error number 8800
      set setFound to false
    end try
  end tell
  
  
try
    do shell script “sync”
    
set sRes to do shell script “cat ~/desktop/.action_set.txt”
    
do shell script “rm ~/desktop/.action_set.txt”
    
return sRes
  on error
    return false
  end try
end getPSCS3ActionSetName

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/18 Photoshop CS3のアクションセットを削除する

Photoshop CS3の、指定名称のアクションセットを削除するAppleScriptです。

アクションセットは、アクションをまとめたフォルダのようなものですが……指定のアクションセットが存在すれば削除を実行してtrueを返します。存在しなかったり削除に失敗した場合にはfalseを返します。

AppleScript Users MLに流れていたオリジナル版はPhotoshop CS4用でしたが、本ルーチンはCS3用に修正を加えて実行確認を行ったものです。「CS3」となっている箇所を「CS4」に書き換えればPhotoshop CS4でも動作します。

プログラムリスト中の、Javascript指定部分の「¥」マークは、実際にはバックスラッシュです。AppleScript作成リンクをクリックした場合にはバックスラッシュを含んだ正しい内容が転送されますが、HTML版を参照する場合には間違えないよう気を付けてください。

action1.jpg
▲削除前のアクションセット一覧

action2.jpg
▲削除後のアクションセット一覧

スクリプト名:Photoshop CS3のアクションセットを削除する
set aRes to deletePSCS3Action(“delete action”) of me
–> true –存在しており、削除を実行できた場合
–> false –存在しない場合

–Photoshop CS3のアクションセットを削除する
on deletePSCS3Action(actionSetName)
  tell application “Adobe Photoshop CS3″
    set display dialogs to never
    
activate
    
try
      do javascript (
var setName = new ActionReference();
setName.putName(charIDToTypeID( \”ASet\”), \”"
& actionSetName & “\” );
var deleteSet = new ActionDescriptor();
deleteSet.putReference( charIDToTypeID(\”null\”), setName );
executeAction(charIDToTypeID( \”Dlt \”), deleteSet, DialogModes.NO);”
)
      set setFound to true
    on error number 8800
      set setFound to false
    end try
  end tell
  
return setFound as boolean
end deletePSCS3Action

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/13 指定容量のRAMディスクを作る

指定容量(単位=Mバイト)&指定名称のRAMディスクを作成するAppleScriptです。

Web上で漫然とRAMディスクについて調べていたら、shell経由で作成する方法が紹介されていたので……AppleScriptですべてのプロセスを自動化して作成できるようにまとめてみました。

ramdisk.jpg

ただ……これだけ便利に使えるようにしておいてナニですが……RAMディスクを作れてもそんなにスピード面でメリットが感じられなかったというか、それってディスクイメージをマウントしている状態とさほど変わらないんじゃないか、といった疑問でいっぱいです。

イジェクトする際には、フツーにFinder上から「取り出す」コマンドを実行するか、AppleScriptから、

tell application “Finder”
 eject disk “piyoWolf”
end tell

のように実行すればイジェクトできます。

スクリプト名:指定容量のRAMDISKを作る
set mSize to 128
set newRamDiskName to “RAMDISK2″
set ramRes to makeRAMDISK(mSize, newRamDiskName) of me

–指定容量のRAMDISKを作る(あんまりメリットないけど)
on makeRAMDISK(aSize, aName)
  –指定名称のドライブがすでに存在していたらfalseを返す
  
tell application “Finder”
    set dRes to exists of disk aName
    
if dRes = true then return false
  end tell
  
  
–RAMDISKを作ってみる
  
set sText1 to (“hdid -nomount ram://$((2048*” & aSize as string) & “))”
  
set sRes1 to do shell script sText1
  
  
set sText2 to “newfs_hfs -v “ & aName & ” “ & sRes1
  
do shell script sText2
  
  
set sText3 to “diskutil mount “ & sRes1
  
do shell script sText3
  
  
return true
  
end makeRAMDISK

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2010/04/04 脳波ビジュアライザ「IBVA Ver.4」がAppleScriptに対応

はるかかかなた昔から存在しているものの、実際に実機を見たことがないという脳波ビジュアライズ用の周辺機器「IBVA」。最新バージョンのVer.4がAppleScriptに対応しているという話を見つけました。

ibva4.jpg

さすがに18万円もするので……よほど気合いの入ったマニアさんしか持っていないと思われる本機。値段が値段なので貸出機があるのかどうかひたすら不明ですが、評価のお願いをしたら貸してもらえるものでしょうか?(汗)

IBVAの説明ページの用途説明に、

 「脳波で何かをコントロールしてみたい。」

とあるので、たしかにAppleScript経由でメールを書けたりデータのバックアップができたら楽しいですが、頭のまわりにセンサーをつけて電気変化をただ漫然と計測するだけでは、脳の出している「雑音」がただ整理されない状態で伝わってくるばかりで、内部でシナプスが伝えている情報とか、全体の傾向といったものが分かるとは思えません。

計測された電気変化の中からノイズを消して、それでもようやく「興奮している」「落ち着いている」という傾向が分かる程度でしょう。

「興奮したらメールを送信」とか、「眠くなったらバックアップを開始」という程度の何かができる可能性はないことはないですが、メールの文面を考えただけで勝手に文章化されるとかいうことはないはずです。

ブレインコンディションを計測して、「いまやる気がしていません」とか「眠いです」といった内容をTwitterに投げるAppleScriptは書けそうですが…………………誰か喜ぶものでしょうか。ああ、やる気がしない時に激しい曲をiTunesで再生するとか、調子がいいときに聞いていた曲を記録するといった使い方はできそうです。

IBVAと各種アプリケーションがAppleScript経由で連携できることは確かですが、どういう信号をトリガーにするかという吟味は……プロの研究者でないと難しいのでは…………(汗)