カテゴリー「Mac OS X」の記事

2018年2月15日 (木)

JavaScript for Automation (JXA)でファイルをFTPアップロード

JXA でも Apple Script 同様、doShellScript 内で curl コマンドを用いてファイルを FTP サーバーにアップローすることはできる。

 app = Application.currentApplication();
 app.includeStandardAdditions = true;
 var localFilePath = "/Users/xxxxx/foo/bar.txt";
 var ftpUser = "xxxxx";
 var ftpPassWord = "papapass";
 var upPath = "ftp://ftp.hogehoge.hog/usr/xxxxx/hoge";
 
 app.doShellScript("curl -T '"+localFilePath.replace(/\'/g, "'\\''")+"' -u "+ftpUser+":"+ftpPassWord+" '"+upPath.replace(/\'/g, "'\''")+"'");

ローカルファイルやアップロードパスに絶対にスペースやクォーテーションマーク(ダブル、シングルとも)が含まれない自信があるなら、パスをクォーテーションで囲んだり、エスケープせずに以下のように書くこともできる。

 app.doShellScript("curl -T "+localFilePath+" -u "+ftpUser+":"+ftpPassWord+" "+upPath);

いずれにしても、これでは FTP パスワードがスクリプト内にむき出しになってしまうので、スクリプト実行時にキーチェーンからパスワードを取り出すことにする。

続きを読む "JavaScript for Automation (JXA)でファイルをFTPアップロード" »

JavaScript for Automation (JXA)でUTF-8テキストの読み書き

Apple Script 同様、JXA でも本来の機能を用いてテキストを開いて読み書きすることはできる。

app = Application.currentApplication();
app.includeStandardAdditions = true;
app.openForAccess(item_1);
var text_content = app.read(item_1, {as:"text"});
app.closeAccess(item_1);

しかしこれでは、文字コードが MacOS(Shift JIS の Mac 独自仕様)になり、改行コードも CR に変わってしまうため、筆者のように外国語と日本語が混じった文章を書く人間にとっては実用的ではない。

そのため、unicode テキストを扱うには JXA でもやはり doShellScirpt 頼みということになる。

続きを読む "JavaScript for Automation (JXA)でUTF-8テキストの読み書き" »

JavaScript for Automation (JXA)でフォルダアクション

フォルダアクションスクリプトを JXA で書こうとしたがうまくいかない。

function addingFolderItemsTo(this_folder, {afterReceiving:added_items}) {
	//
}

というメソッドが実装されているはずなのだが、うまく動作しない。

ただ、上記のメソッドを記述しなくても

var finder = Application('Finder')
finder.includeStandardAdditions = true
var added_items = finder.selection()

のようなスクリプトを単にフォルダアクションとして登録するだけで、一応動作はするのだが、それだとそのフォルダから項目を取り除いた場合や、フォルダウィンドウを開いたり閉じたりしただけでも処理が行われてしまうので、実用的ではない。

そこで、Automator を介してフォルダアクションを動作させるという方法を試みた。

続きを読む "JavaScript for Automation (JXA)でフォルダアクション" »

JavaScript for Automation (JXA)で色々やってみる

故あって、普段よく使っている Apple Script を数件、JavaScript for Automation (JXA) に移植した。

その際、メモしておいたヒントなどをいくつかここに書き留めておく。

続きを読む "JavaScript for Automation (JXA)で色々やってみる" »

2017年9月26日 (火)

High Sierra各種検証結果(2)[更新]

macOS がバージョンアップするたびに個人的に調べている事項についての記事のまとめ。

Finder ウィンドウの位置とサイズに関しては Sierra から一部変化があった。Maverick から変化がないので、当該記事へのリンクを貼っておく。
macOSのFinderウィンドウの位置とサイズを個別記憶(High Sierra版)
MavericksのFinderウィンドウの位置とサイズを個別記憶
日本語入力の辞書登録に関しても、基本的に Mavericks から変化がないので、Mavericks における当該記事へのリンクを貼っておく。
Mavericksでことえりの追加辞書を登録
※ただし、Yosemite から「ことえり」というプログラム名ではなくなり、単に「日本語入力」という名称に変更されている。
それと、日本語入力の単語登録を素早く行うための Automator Workflow の記事も、Mavericks の記事がそのまま適用できるのでリンクを貼っておく。
Mavericksことえりユーザ辞書登録ショートカットworkflow

ウェブサーバーソフトウェア apache でユーザーディレクトリ内で CGI を有効にする方法については、Sierra から変化はない。当該記事にリンクを貼っておく。
SierraでユーザディレクトリCGI

High Sierra各種検証結果(1)[更新]

個人的に High Sierra 上での動作を確認したソフトウェアや周辺機器を掲載しておく。

CaptyTV Hi-Vision (PIX-DT181-PU0)
「libfreetype.6.dylib」があれば、視聴ソフトウェア「Station TV LE 2.3.3」で視聴は可能。
だが、残念なことに HDD が APFS でフォーマットされている場合(ほとんどの ノート型 Mac では、High Sierra インストール時に APFS に自動でコンバートされる)、録画はできないようだ。HDD が HFS+ の場合、録画ができるのかどうか筆者は試していないのでわからない。
「libfreetype.6.dylib」は XQuartz に含まれるライブラリーであり、XQuartz をインストールすれば libfreetype.6.dylib も自動でインストールされる(はず。筆者は試していない)。あるいは、ダウンロードした XQuartz から Pacifist(シェアウェア)を用いて libfreetype.6.dylib だけを取り出すこともできる(はず。これも筆者未経験)。もし El Capitan 時代以前に X11 をインストールしていたなら、Time Machine バックアップから libfreetype.6.dylib を取り出すこともできるかもしれない。libfreetype.6.dylib は「/usr/X11/lib」ディレクトリーに置く(「X11/lib」ディレクトリがなければ作成する)
外付け DVD への動画の保存は不可能。
外付け HDD を録画場所にすることもできない。環境設定から設定しようとすると、Station TV LE が落ちる。設定ファイル「/Users/ユーザー名/ライブラリ/Preferences/com.PIXELA.StationTV_LE2.plist」の「RecVolumePath」という項目を直接書き換えても録画はできない。
CaptyTV を Mac に接続し、StationTV_LE を起動して視聴した後、StationTV_LE を一旦終了させてまた起動しようとすると、起動に失敗する。その場合、一旦 CaptyTV の USB ケーブルを Mac から抜き、再び差してから StationTV_LE を起動させれば起動が可能。
High Sierra インストール以前に録画してあった動画を視聴するのは可能。
intuos 3
intuos 3 向け最終バージョンの WacomTablet ドライバー 6.3.9w5 で動作する(但し、すべての機能を完全に試したわけではない)。
Photoshop CS 5
Apple が配布している Java For OS X 2015-001 をインストールすれば、起動できるようにはなる。しかし、それだけではアプリケーションを終了させるときにエラーが出る。色々試した結果、「システム環境設定」において「Spotlight」の項目内の「プライバシー」セクションに、「Adobe Photoshop CS 5」フォルダー(アプリケーションフォルダー内にある)を登録していれば、終了時のエラーは起きないことがわかった。その他の動作についてはざっと試した限り問題ない(但し、すべての機能を完全に試したわけではない)。
Parallels Desktop 10
動作可能(但し、すべての機能を完全に試したわけではない)。
Pac the Mac
この世に、このゲームをいまだにプレイしている Mac ユーザーが筆者以外に存在するのかはなはだ疑問だが(笑)、残念ながら、APFS でフォーマットされた SSD からは起動できないようだ。だが、HFS+ でフォーマットされた外付けドライブにアプリを移し、そこから起動すれば正常に動作するようだ(但し、すべての機能を完全に試したわけではない)。
Aleph One JP
FPS (一人称シューティングゲーム) の実行環境 AlephOne の日本語版 AlephOneJP は Mac 版バージョン 1.0 が High Sierra 上で動作可能。
詳細記事はこちら:Aleph One JPをMacでプレイする

2016年9月21日 (水)

Sierra各種検証結果

OS X がバージョンアップするたびに個人的に調べている事項についての記事のまとめ。および、動作を確認したソフトウェアや周辺機器についても述べている。

続きを読む "Sierra各種検証結果" »

SierraでユーザディレクトリCGI

以前「YosemiteでユーザディレクトリCGI」で述べたように、OS X Yosemite 以降では apache の仕様が若干変更になっており、Mavericks までのやり方ではユーザーディレクトリ /Users/ユーザー名/Sites を http で公開することができなくなっている(注:「ユーザー名」の部分には実際には自分のユーザーアカウント名が入る。以下同様)。

かいつまんで言うと以下の通り。

  1. /private/etc/apache2/extra/httpd-userdir.conf において、「#Include /private/etc/apache2/users/*.conf」の「#」を消す。
  2. /private/etc/apache2/httpd.conf において「#LoadModule userdir_module libexec/apache2/mod_userdir.so」の「#」を消す。
  3. 同じく /private/etc/apache2/httpd.conf において、終わりのほうにある「#Include /private/etc/apache2/extra/httpd-userdir.conf」の「#」を消す。

その上で、sudo apachectl restart コマンドで設定を apache に反映させれば /Users/ユーザー名/Sites 以下の公開が可能になる。


問題は、ユーザーディレクトリで CGI を有効にする場合である。Sierra においては Yotemite 〜 El Capitan 時代とはまた少しやり方が変更になっており、一言で言えば、少し簡単になった(.htaccess が不要になった)。

まず、/private/etc/apache2/httpd.conf において、「#LoadModule cgi_module libexec/apache2/mod_cgi.so」の「#」を消す。

次に、/private/etc/apache2/users/ユーザー名.conf を以下のように記述する。

<Directory /Users/ユーザー名/Sites>
	AddHandler cgi-script .cgi
	AllowOverride All
	Require all granted
	Options ExecCGI
</Directory>

次に SSI を有効にする方法も述べておく。SSI については El Capitan 時代より一行多く書き足す必要がある。

まず、/private/etc/apache2/httpd.conf において、「#LoadModule include_module libexec/apache2/mod_include.so」の「#」を消す。

次に、/private/etc/apache2/users/ユーザー名.conf を以下のように記述する(注:SSI だけでなく、CGI も同時に有効にすることを前提として記述している)。

<Directory /Users/ユーザー名/Sites>
        AddType text/html .shtml
        AddHandler cgi-script .cgi
        AddOutputFilter INCLUDES .shtml
        AllowOverride All
        Require all granted
        Options ExecCGI Includes
</Directory>

(「 AddOutputFilter INCLUDES .shtml」が Sierra で追加された行)

macOS SierraのSpotlightによる日本語テキストの内容検索[更新]

プレーンテキストファイルの場合

※プレーンテキストについては El Capitan から全く変化はない。

プレーンテキストファイル(拡張子.txt、.pl、.php、.c など)は、Leopard 以降の macOS 上で作成したものであればどのような文字コードであってもヒットする(文字コードを指定するメタデータがつくから)。

それ以外の OS(Tiger以前、Windows、Linux)上で作成したものは(メタデータがつかないため)Shift JIS か UTF-8 のみヒットし、EUC-JP や JIS (ISO-2022-JP) ではヒットしない。

macOS 上であってもコマンドラインプログラム(vi、nano など)で作成したものは(メタデータがつかないため) Shift JIS か UTF-8 のみヒットする。

HTML ファイルの場合

※拡張子が .html のテキストファイルについては Sierra ではかなり変化がある。

UTF-8 もしくは Shift JIS で書かれた .html ファイルは必ずヒットする(正しい HTML 構造をとっていようといまいと、<META> タグで文字コードを指定していようといまいとヒットする)。また、<META> タグ内で robots を noindex と指定していてもヒットする。

EUC-JP もしくは JIS (ISO-2022-JP) で書かれた .html ファイルは全くヒットしない(macOS 上で作成したことにより文字コードを指定するメタデータが付いていたとしても、ヒットしない。<META> タグで文字コードを指定していてもヒットしない)。

メモ.appインポートAppleScript Sierra対応版

以前、macOS 標準装備の メモ.app にテキストファイルをインポートする Apple Script を作った(「メモ.appインポートAppleScriptを作ってみた」)が、Sierra には対応していないようなので、対応版を作成した。

(※Sierra のメモ.app にはインポート機能が備わっている(メニューバーの「ファイル」→「"メモ"に読み込む」)ため、このスクリプトを使う意味はあまりないかもしれないが、インポートするフォルダーを指定することができる、一つのテキストファイルを分割してインポートできるなどのメリットがあることはある)

使用は自己責任でお願いします。

なお、使用方法は記事の最後に掲載している。

(インポートではなく、エクスポート(書き出し)するためのスクリプトも以前作成したことがある。「メモ.appエクスポートAppleScriptを作った」を参照)

※注記:
macOS Sierra 10.12.0 の時点では下の画像の通り Apple Script の選択ダイアログボックスにバグがある

今後、10.12.1 以降で修正されるかもしれない。その場合はこの注記は無視していただきたい。

続きを読む "メモ.appインポートAppleScript Sierra対応版" »

より以前の記事一覧