2013年12月20日金曜日

画面共有のバグ

ソフトウェアは、そのコード数に比例してバグが発生するモノだという話を聞いた事がある。リリースまでに一定のバグレベルまでに押さえ込むのがソフト開発であるという事だ。

確かに、例えばMac OS 9の頃に比べたらOSの容量は膨大になっている。その分バグも多くなるのは致し方ないのかもしれない。だが、もう一方で、その比例則に隠れて見過ごされているバグはないのだろうかという疑念があるのも事実だ。特に最近のMac OSは以前に比べて中途半端な形でリリースされているのではないかと疑問を感じさせる事象が多い気がする。

本エントリでは、数上げれば切りがなく思えるOS Xのバグの一つ、画面共有のバグを取り上げる。バグを確認したOSのバージョンはOS X 10.8.5、10.9.5、および10.10である。

再現方法は簡単である。画面共有したMac側の日付と時刻環境設定で「時報をアナウンス」チェックボックスをオンにした状態で、3本指タップで「調べる」ことが可能なアプリケーション(Safari、テキストエディット、ターミナルなど)内の文字列を3本指タップすれば良い。
タップすると、あら不思議、ボイスオーバーの設定をしていないにも関わらず、そこに書かれている文字が読み上げられるのだ。

この現象が何故問題なのかと言うと、遠隔操作しているMacで書類の内容がべらべら読み上げられることになるからである。セキュリティもクソもあったモノじゃないだろう。

最近のAppleには、声を上げる人間の数が少なければ無視するという品質管理体制が横行している。このエントリを読んで戴いた方で、指摘内容の改善が必要だと感じられた方は下記へ投稿して欲しい。

2014.07.30追記:ユーザーの声を無視した結果、この問題はYosemite Betaでも再現することを確認した。

2015.01.01追記

  1. バグは10.8.5でも発生していることを確認。これより以前のOSで発生するかを調べるのはAppleの仕事である。
  2. Yosemite Betaで発生し、散々指摘しても何も治らなかったので、当然Yosemite製品版でも治っていない。

2013年11月26日火曜日

メニューバークロックを入れ替える

メニューバークロックはMacのシステムにデフォルトで用意されている。しかし、これはあくまで時計であり、それ以上の機能を持たない。今回はiStat Menusというシェアウェアに用意されている時計と入れ替える手順(というほどでもないが)を説明したい。

まず、Macのシステムデフォルトの時計を他の時計と比較してみる。

システムデフォルトの時計
システムデフォルトの時計
Windowsの時計
Windowsの時計
iStat Menusの時計
iStat Menusの時計

Macのシステムデフォルトの時計はWindowsの時計と比べてもカレンダーが表示されないなど機能が劣る。

Windowsの時計は導入できないが、iStat Menusの時計を代わりにする事はできる。下図は両方の時計をメニューバーに表示させた状態である。

二つの時計
二つの時計

システムの時計はシステム環境設定の日付と時刻パネルでメニューバーに日付と時刻を表示のチェックボックスをオフにすれば消す事ができる。

日付と時刻環境設定
日付と時刻環境設定

iStat Menusの時計はシステムが提供するメニューバーアイテムと同様にコマンドキーで移動できる。

コマンドキーを押しながらドラッグ
コマンドキーを押しながらドラッグ
目的の位置でドロップ
目的の位置でドロップ

システムが提供するメニューバーアイテムがコマンドキーで移動できる事はこちらの記事でも説明されていた。しかし、それによるとメニューバーに表示するアプリのアイテムは移動できないと書かれていた。
iStat Menusのメニューバーアイテムだけは、その例外と言えそうだ。

2013年10月29日火曜日

ffmpegコンパイルガイド

ffmpegコンパイルガイドは移転しました。

5秒後に自動転送します。
転送されない方はこちらをクリックして下さい。

2013年9月18日水曜日

PhotoShop Tips(画像の波形切り抜き)

ffmpegをコンパイルする手順書を作成している最中に、画像を波形に切り抜きたいと思った。こちらのサイトに掲載されている手順を参考にPhotoShopでやってみたので、その手順を説明したい。

なお、Mac関連Tipsにしているが、Windows版PhotoShopでも同様と思われる。

  1. まず、加工したい画像をPhotoShopで開き、新規レイヤーを追加する。

    新規レイヤーを追加
    新規レイヤーを追加
  2. 鉛筆ツールで追加したレイヤー上に2本直線を引く。

    レイヤー上に直線を書く
    レイヤー上に直線を書く
  3. 「フィルター > 変形 > 波形…」と選択し、直線を波形にする。(設定は下図参照)

    波形フィルターを適用
    波形フィルターを適用
  4. 自動選択ツールで許容値を0にして波形を選択する。

    自動選択ツールで選択
    自動選択ツールで選択
  5. チャンネルパネルで選択範囲のアルファチャンネルを追加する。

    選択範囲のアルファチャンネルを追加
    選択範囲のアルファチャンネルを追加
  6. 波形を描いたレイヤーを削除する。

    波形のレイヤーを削除
    波形のレイヤーを削除
  7. アルファチャンネル(選択範囲)を許容値200で塗りつぶす。

    アルファチャンネルの塗りつぶし
    アルファチャンネルの塗りつぶし
  8. 選択範囲を反転させる。

    選択範囲を反転
    選択範囲を反転
  9. 長方形選択ツールでoption (alt)キーを押しながら一方の選択範囲を解除する。

    一方の選択範囲を解除
    一方の選択範囲を解除
  10. 残った選択範囲を移動ツールで波形の部分を縮める詰めるように移動する。

    移動ツールで波形を詰める
    移動ツールで波形を詰める
  11. 「イメージ > トリミング…」と選択し、透明ピクセルをトリムする。

    透明ピクセルをトリム
    透明ピクセルをトリム
  12. 残った波形部分をマジック消しゴムツールで透明化して出来上がり。

    マジック消しゴムツールで透明化
    マジック消しゴムツールで透明化

以上である。スクリーンショットを撮影する際に、今回の手順で除去した部分を表示させない方法があるのは、ご愛嬌である。どうしても、これをやってみたかったし、それを行う手順が複雑だったので記録に残した。

2013年9月13日金曜日

メール(Mail.app)でPopアカウントを利用する方法

OSX 10.8 Mountain LionではYahoo!メールのアカウントをメール(Mail.app)で利用しようとすると標準ではIMAPアカウントになる。
しかし、これがくせ者で、迷惑メールがくるアカウントだと、Yahoo!メールの設定で迷惑メールを受信しないように設定していても、メール(Mail.app)ではbulkメールとして受信してしまう。

何度もAppleのサポートに聞いたが、それはYahoo!メール側の仕様のせいで自分たちには手だてがないと言う。(まぁ、Appleのサポートなんて当てにする方がバカなのだが…。)

10,000歩譲って、Yahoo!メールのアカウントをメール(Mail.app)でPopアカウントとして利用する方法がないか確認したが、経験豊かなはずのアドバイザーは分からなかった。
シニアアドバイザーなる人物に問い合わせしてきて、やっと分かったのだが、アカウントを追加する画面でオプションキー(altキー)を押しながら続けるボタンを押すと、次の画面でアカウントのタイプが選択できる。

アカウント追加画面
アカウント追加画面
アカウントタイプを選択
アカウントタイプを選択

考えてみれば、オプションキーには、名前の通りオプショナルな動作をさせる意味があるのだが、これは気がつかなかった。と、言うよりも、このぐらいヘルプに書いておくのが常識だと思う。

Macがついていた頃のユーザーフレンドリーな要素を削った結果、このようなOSになり、Appleの株価もiPhone5s/5cを発表したにも関わらず、下げ止まりが効かないのである。(まぁ、あの発表内容は、正直に言ってApple幹部のマスターベーションでしかないと感じたが…)
斜陽の会社のOSにしがみついているより、Windowsに乗り換えた方が良いのではないかと思う今日この頃である。

2013年8月18日日曜日

VMWare Fusionとのファイルやりとり方法

以前VirtualBoxとMac間でのファイルやり取り方法を説明したが、今回はVMWare FusionとMac間でのファイルやりとり方法を説明したい。

VirtualBoxでは、その共有フォルダーにシンボリックリンクを登録することによりMacのホームディレクトリ及び、Macにマウントした外部ハードディスク等とVirtualBox間でのファイルやり取りが実現できた。
しかし、VMWare Fusionではシンボリックリンクは認識されない。可視フォルダであるホームディレクトリは、そのまま登録すれば良いが、不可視フォルダであるVolumesはどうすれば良いのだろうか?

答は簡単である。不可視フォルダと言っても可視化するコマンドがあるのだ。それを用いて一時的にVolumesフォルダを可視化して共有フォルダーに登録、その後再び不可視化すれば良い。
以下にコマンドを説明する。管理者パスワードが必要なので注意して欲しい。

アプリケーション > ユーティリティ > ターミナル.appを(またはLaunch Padでユーティリティ(10.8.x未満)、その他(10.8.x以降)からターミナルをクリックして)起動し、以下のコマンドを実行する。

sudo chflags nohidden /Volumes

このコマンドを実行すると、下図のようにVolumesフォルダが可視化される。

Volumesフォルダの可視化
Volumesフォルダの可視化

Volumesフォルダが可視化されたら、VMWare Fusionの共有フォルダー設定で、それを追加する。このまま可視状態にしておいても実害はないが、通常のMacの設定とは異なるので元に戻すことにする。これも、当然のことながら管理者パスワードが必要なので注意して欲しい。

$ sudo chflags hidden /Volumes

VMWare Fusionでは、共有フォルダー登録さえすればMacから見えないフォルダーも見える。後はWindowsのデスクトップにあるVMWare共有フォルダショートカットを開いてVolumesに移動すれば下図のようになる。

エクスプローラーで見たVolumesフォルダ
エクスプローラーで見たVolumesフォルダ

*2013/09/20追記:VMWare Fusion 6.0ではMacで不可視にしたフォルダは共有フォルダでも見えなくなる。Volumesフォルダを利用する場合はMacでも見えるようにする必要がある。

ちなみに図にもある通り、共有フォルダーはネットワーク > vmware-host > Shared Folders > Volumesなので、アプリケーションから指定する場合は、この順番にパス(場所)を指定する。コマンドプロンプトからは「Z:¥Volumes」である。

読み書きができるので移動も削除もできる。誤って必要なフォルダやファイルを削除しないように注意して欲しい。

2013年8月5日月曜日

ffmpegメモ

備忘録的なブログと言っているのだから、メモ書き程度のことも書いておく。

  1. ffmpegのボリューム調整
    ボリューム調整(-vol 512)は-af volume=2.0(-filter:a volume=2.0)に置き換わった。
  2. ffmpegでの同品質エンコード
    同品質エンコードを指定するオプション(-sameq)は廃止された。代わりは-qscale 0である。

以上。

2013年7月20日土曜日

LAME mp3エンコーダーを使う(4)

今までAppleScriptでlameを動かす手順を説明して来たが、コードをすべて説明していたら切りがないので、出来上がったAppleScriptについて書くことにする。

まず、こちらからlameセットV020.zipを入手して欲しい。ダウンロードされたファイルをダブルクリックすると、lameセットV020フォルダが出来るはずだ。*1

lameセットフォルダにはlame Installer.scpt、lame unInstaller.scpt、script unInstaller.scpt、およびscript Installer.scptdという4個のAppleScriptが入っている。それぞれ、次のような役割をする。

  1. lame Installer.scpt
    以前説明したコマンドラインツールlame mp3エンコーダーをインストールする
  2. lame unInstaller.scpt
    lame mp3エンコーダーをアンインストールする
  3. script unInstaller.scpt
    これまで説明して来たiTunesのプレイリストをlame mp3エンコーダーでエンコードするAppleScriptlame Encoder.scptをアンインストールする
  4. script Installer.scptd
    iTunesのプレイリストをlame mp3エンコーダーでエンコードするAppleScriptlame Encoder.scptをインストールする

それぞれのスクリプトをダブルクリックして開くと、AppleScript エディタ.appが起動する。スクリプトは、下の図のようにウインドウ上部の実行ボタンを押すクリックすることで実行できる。

スクリプトの実行方法図
スクリプトの実行方法

スクリプトを実行するとダイアログが表示されはいを選択することで必要な動作が行われる。lame Installer.scptおよびlame unInstaller.scptはコマンドラインツールlame mp3エンコーダーのインストール/アンインストールに管理者権限が必要なので、実行中に次のようなダイアログが表示される。

管理者パスワードの入力要求図
管理者パスワードの入力要求

script Installer.scptによってlame Encoder.scptがインストールされた後にiTunesを起動すると、次のようにiTunesのメニューバーにスクリプトメニューが表示されるようになる。

iTunesメニューバー上に表示されたスクリプトメニュー図
iTunesメニューバー上に表示されたスクリプトメニュー

CDを内蔵/外付けの光学ドライブに挿入、CDDBからタグデータを受信した段階でiTnesのCDプレイリストからエンコードしたい曲を選択、スクリプトメニューからlame Encoderを選択することでエンコードが行える。

lame Encoderによるエンコード方法図
lame Encoderによるエンコード方法

lame Encoder.scptはダイアログを持たない。すべて音声で状況を伝えてくるようになっている。システムの声を「Kyoko」に設定*2すれば、日本語で進捗を伝えてくれるように出来ている。

*1:Safariでは、ファイルは自動的に解凍されるので、ダブルクリックは必要ない。
*2:システムの声をKyokoにする手順はこちらにある。(Mac OS X Lion以降)

更新履歴:
2015.01.17 mp3使用特許問題に発展する恐れがあるため、AppleScriptの配布を停止。
2014.01.24 lame Encoder.scptをアップデート
2013.12.20 lame Encoder.scptをアップデート

2013年6月21日金曜日

LAME mp3エンコーダーを使う(3)

前回に続いてAppleScriptでLAME mp3エンコーダーの繰り返し(=バッチ)処理する手順を説明する。

今回は曲情報をLAME MP3 エンコーダーの入力ファイル名と出力ファイル名に加工する手順である。前回 trackTagList 変数にiTunesのプレイリスト上で選択されたアイテムの曲情報が格納されたので、そこから話を続ける。

repeat with aTrackTag in trackTagList(1)
    set anInputPath to (quoted form of (POSIX path of item 15 of aTrackTag))(2)
    set anTrackNumber to (item 7 of aTrackTag) as number(3)
    set aTrackCount to (item 9 of aTrackTag) as number
    if aTrackCount = 0 then
        say TrackCountError
        set errorFlag to true
        exit repeat
    else if aTrackCount ≤ 99 then
        set aTrackNumber to text -2 thru -1 of ("00" & aTrackNumber)(4)
        set aTrackNumber to aTrackNumber & " "
    else
        set aTrackNumber to text -3 thru -1 of ("000" & aTrackNumber)(4)
        set aTrackNumber to aTrackNumber & " "
    end if
    set anOutputName to anTrackNumber & (item 1 of aTrackTag) & ".mp3"(5)
    set anOutputPath to quoted form of ((POSIX path of outputPath) & anOutputName)(6)
end repeat(7)
  1. trackTagList の1項目を aTrackTag として呼び出す繰り返し処理の開始
  2. aTrackTag の15番目の項目(入力ファイルの場所)をUNIX形式かつクオートで囲んだ状態で取得
  3. aTrackTag の7番目の項目(曲番号)を anTrackNumber として取得
  4. 曲番号( anTrackNumber )の桁揃え処理。(Thanks for 鳶嶋工房
  5. 曲番号と曲名をつなげて出力するファイル名に加工
  6. あらかじめ定義したファイルの出力場所(次回説明)とファイル名をつなげ、クオートで囲んだ状態で outputPath 変数に格納
  7. trackTagList についての繰り返し処理終了

これで anInputPath と anOutputPath に入力ファイルの場所パスと出力ファイルパスが格納された状態となった。次回はこれらを用いてLAME MP3 エンコーダーでエンコードする手順を説明する。

2015.1.1改訂

  1. 曲番号桁揃え処理を変更。
  2. AppleScriptコードの見栄えを改良

2013年6月11日火曜日

LAME mp3 エンコーダーを使う(2)

前々回、LAME MP3 エンコーダーをインストールする方法を説明した。ターミナル.appでエンコードもできるし、その方が文字だけとは言え進捗も分かるのだが、CDを1枚分(それ以上)エンコードするとなると、連続(=バッチ処理)したいものである。

幸いMacにはAppleScriptというアプリケーション間のやりとりを橋渡しが得意なスクリプト言語が標準で添付されている。これから4回に分けてAppleScriptを用いてLAME MP3 エンコーダーとiTunesを連携させて、連続(=バッチ処理)エンコードする方法を説明していきたい。

AppleScriptでのおおまかな処理の手順は以下のようになる。

  1. iTunesからの曲情報の取得
  2. 曲情報をLAME MP3 エンコーダーの入力ファイル名と出力ファイル名に加工
  3. LAME MP3 エンコーダーを用いたエンコード
  4. エンコードしたファイルのiTunesへの登録

それでは、今回は「iTunesからの曲情報の取得」を説明する。

  1. 始めに「iTunesに命令する」と記述する
    tell
        application "iTunes"
    end tell
    
  2. 対象となる曲リストはiTunesのプレイリスト上で選択されたアイテムとする。これは次のように記述する
    set srcTrackList to selection
    

    これに加えてiTunesのプレイリスト上で何も選択されていない場合のエラー処理を記述する

    if (srcTrackList is {}) then
        say "Please Select 1 item"
        set errorFlag to true
    else
    end if
    
  3. プレイリストで選択されたアイテムから、その曲情報を取得する。これは次のように記述する

    set trackTagList to {}
    
    repeat with aTrack in srcTrackList
    tell aTrack to set trackTags to {name, artist, album artist, album, composer, comment, genre, track number, track count, year, disc number, disc count, bpm, compilation, duration, location}
    copy trackTags to end of trackTagList
    end repeat
    

これで trackTagList にiTunesのプレイリスト上で選択されたアイテムの曲情報が格納された状態となった。次回はこの曲情報をLAME MP3 エンコーダーの入力ファイル名と出力ファイル名に加工する手順を説明する。

2013年6月5日水曜日

MacKeeperは必要ない!!

LAME mp3 エンコーダーの続編を書くつもりだったが、予定を変更してMacKeeperというソフトウェアについて書く。理由は、このソフトウェアが無用の長物であるにもかかわらず、Googleの広告に掲載されるようになってしまったためである。

この無用の長物は、2013年に開発元であるZeoBit社からKromtech Alliance a technology investment group社売り渡された経緯を持つ。今回Googleの広告に食い込んでしまったのはKromtech社が絡んだ事によるのではないかと思われる。

以下、このソフトウェアを実際にインストールしてレビューする。

公式サイトからダウンロードできるMacKeeperのバージョンは3.9.6(2016.11.23現在)である。ダウンロードボタンを押すと、わずか175,242バイトのパッケージがダウンロードされる。(パッケージをダブルクリックしてインストールする際にソフトウェア本体がダウンロードされる仕組みになっている)
インストールが終了すると、直ちにMacKeeperが起動してシステムのスキャンを開始する。

次の画像は筆者のMacをスキャンした結果である。

ことさらに問題があるように見せつけるが、実態は後述する通り、大した問題ではない。

次の画像はスキャン終了時点でのシステムステータス(笑)である。

これも、ことさらにパフォーマンスに影響する重要な問題があるように見せつけるが、実態は後述する通り、大した問題ではない。

次の4枚の画像はクリーニング機能の高速クリーニングタブを開いたものである。

バイナリカッターはIntelベースのMacにおいて不必要なPowerPCアーキテクチャのコードを除去するという。実行コードはソフトの起動時にハードウェアに合わせたものが読み込まれる。別にPowerPCのコードが含まれているからパフォーマンスに影響することはあり得ない。

通常キャッシュするとは、読み込みに時間がかかるデータをそのソフトに取って都合の良い場所に保存しておくことを意味する。キャッシュを削除することは古いデータを更新する際には有効だ。しかし更新のないデータは不必要な再読み込みを行うことになり、却ってパフォーマンスを下げることになる。

ランゲージカッターはマルチリンガル対応のMacのソフトウェアから不必要な言語パックを削除するという。言語はソフトの起動時にその環境(ロケール)に合ったものが読み込まれるのであって、言語が多いからパフォーマンスに影響することはあり得ない。

ログクリーナー。システム関連のログファイルは多くの場合ローテーションという機能が備わっている。古いログは一定期間経つと自動的に更新され、消えてなくなる。そのサイズを気にする必要は全くない。
第一、自分が吐いたログを全て読み込んで立ち上がるソフトなど聞いたことがない。何故ログを削除するとパフォーマンスが上がるのか聞いてみたいものである。

残りの機能を個別にレビューする。

  • セキュリティー
    インターネットセキュリティー盗難防止ソフトがある。
    インターネットセキュリティはウイルス、マルウェア対策のソフトらしいが、専門のソフトに任せるべきである。第一MacKeeperは数ヶ月この機能をアップデートしなかったことがある。
    盗難防止ソフトはOS X 10.8.x以降であればiCloudの機能に同じ機能があるので必要ない。

  • 高度な機能

    • メモリクリーナー
      字面を読むと、起動したことがあるアプリケーションの再起動を高速化するためにシステムがマッピングしている領域を削除するように読める。興味のある方は試すと良いが、こんなことをすればアプリの再起動は遅くなりイライラが募るのみである。
      参考:Macが重い時にメモリ解放をする方法
    • 重複ファイル検索
      どこまでできるのか知りたいが、例えば同じ画像でファイル名が異なるケースも検出できるのだろうか? GoogleがAIを使ってやっていることをMacKeeperが実装している? にわかには信じがたい。
    • スマートアンインストーラー
      無料かつほぼ完全に関連ファイルを削除できるAppCleanerがあるので不要。ちなみにこのAppCleanerはインストラータイプの場合では有効ではない場合もある。
    • ファイルの復元
      いわゆるサルベージ機能だが、HFS+の構造上、削除したファイルは元のファイル名も、保存されていたディレクトリも失われる。それでも拾えれば良いという向きは試すべきだが、どちらかと言えばTime Machineを用いたほうが良いのではないだろうか?
    • データの暗号化
      必要ならばOS標準のFileVaultを使えば良い。
    • ファイル検索
      SpotLightは最高の検索ツールだ。これを超える検索機能を筆者は知らない。
    • ログイン項目
      インストラーによってログイン項目を増やされて対応できないような素人向けの機能である。システム環境設定のユーザーとグループからログイン項目は管理できることぐらいは学ぶべきである。
    • ディスク使用量
      アップルメニューから実行する「このMacについて」でストレージタブを開けば分かる。
    • デフォルトアプリケーション
      Finderの情報を見るからいつでも変更できるし、必要ならば副ボタン=右クリックで「このアプリケーションで開く」を使えば良い。
    • 更新トラッカー
      Mac App Storeからダウンロードしたアプリは、すべて自動でアップデートされる。それ以外の場合も、多くのアプリは自己更新機能を備えている。なぜMacKeeperに頼む必要があるのだろう?
    • 高速クリーニング
      既に図を用いて説明した。すべて不必要な機能である。
    • バックアップ
      Time Machineがあれば不要。
    • シュレッダー
      ディスクユーティリティの空き領域の消去でセキュリティオプションを選べば同様のことができる。
  • ギーク・オンデマンド
    ユーザーサポートのようだが良くわからないので言及は避ける。

以上、このソフトウェアパッケージは、どれもが不要か、それとも無料のソフトウェアで代用できるものでしかない。これが必須16種類54,000円相当を、たった9,999円で入手できると称していることの実態である。

MacKeeper価格情報

MacKeeperのアンインストール方法
最後にMacKeeperのアンインストール方法を書いておく。と言っても賢察な方であれば、もう言わずもがなのことである。AppCleanerを起動してMacKeeper.appをドラッグ&ドロップすれば、関連ファイルを含めて全てアンインストールできる。

2013.12.8追記
MacPaw社よりCleanMyMac 2なるMacKeeperと似たようなアプリケーションが出ている。インストールして試す気はないが、これもMacKeeperと同様の機能である。すなわち使うべきソフトウェアではない。

2014.6.8追記
MacKeeperは、現在バージョン2.5.1と2.10.3の2種類がある。2.10.3は本稿ではレビューしていないが、確認した限りでは2.5.1と同じであった。筆者を信じるか、MacKeeperを信じるかは、お任せする。

2014.12.31改訂

  1. 記事の内容に一般のソフトウェアの仕組みについて理解が未熟だった部分があったので修正。MacKeeperの理解が不足だった訳ではない。
  2. MacKeeper 2.17.1にて実機確認を実施。

2016.11.23改訂
MacKeeper 3.9.6にて実機確認を実施。内容をソフトの構成に沿って再構成。

2013年5月25日土曜日

LAME mp3 エンコーダーを使う(1)

音楽圧縮フォーマットはaacが全盛なこんにちであるが、敢えてMacでLAME mp3 エンコーダーを使う手順を説明したい。

概要は以下の手順になる。

  1. LAME mp3 エンコーダーのインストール
  2. iTunesを利用したAppleScriptで連続(=バッチ)エンコードする

以下、手順を具体的に説明する。今回はLAME mp3 エンコーダーのインストールまでを説明する。

  1. LAME mp3 エンコーダーのインストール
    ターミナル.appを用いて、LAMEのソースコードを入手、コンパイル、インストールする。(以下の通りターミナル.appでコマンドを入力する)

    curl -L -O http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
    tar xf lame-3.99.5.tar.gz
    cd lame-3.99.5
    ./configure
    make
    sudo make install
    

この時点でLAME mp3 エンコーダーを用いて音楽を高品質に圧縮することができる。

  1. オーディオ CDを光学ドライブにセットしてFinderに表示させる。
  2. ターミナル.appにlame␣--preset␣extreme␣(lame, --preset, extremeの間は半角スペースで区切り、extremeの後ろは半角スペースを1個入力する)と入力。

    lame --preset extreme␣
    
    lame preset extreme
    LAMEエンコード品質の設定
  3. Finderに表示されている曲(aiffフォーマット)をターミナル.appのウインドウにドラッグ&ドロップする。

    Drag and Drop
    Finderから音楽ファイルをドラッグ&ドロップ
  4. 出力ファイル名を設定する。

    lame --preset extreme /Volumes/オーディオ\ CD/1\ オーディオ トラック.aiff Desktop/test.mp3
    
    set output file name
    出力ファイル名を設定
  5. LAMEによるエンコードが行われる。

    Encode_with_LAME
    LAMEによるエンコードの例

次回、iTunesとAppleScriptを用いて連続(=バッチ)エンコードする方法を説明する。

2013年5月13日月曜日

Mail.appの体力を知る

2013.5.26大幅内容修正。

Mac OS X (現行10.8.xではOS Xと呼称する…つまりこのOSはMacではないのだ(笑))にはMail.appというメール送受信ソフト(メールクライアントソフト)が標準で添付されている。
このMail.appがあるおかげで、Mac OS X用のメールクライアントソフトは、無料では他に選択肢がThunderbirdぐらいしかない状況だ。そのくらいOS標準添付というのはシェア力が強いのである。

さて、このMail.appは、どのくらいの体力があるのだろうか? と言うとおかしく聞こえるかもしれないが、どのくらいの数のアカウントがあっても正常に動作するかという意味だ。
つまり、筆者の環境(アカウント数)では正常とは言えない動作をしている。アカウントの数はPOPが2個、IMAPが8個の合計10個だ。
(なぜ、こんなにアカウントを持っているかと言うと、それは筆者がPostPetを愛用していたせいだ。Webメール版以前のPostPetを使っていたユーザーは、概ねメールアカウントをたくさん持っているはずだ)

どんなことが起きるかと言うと、メールの送受信の遅れ受信は最大で半日以上遅れる。Webメール上で確認すると、すぐに届いているが、Mail.appではメールが受信されない)、動作していたアカウントが突然パスワードが通らなくなるアカウントが突然オフラインになる、ゴミ箱にメールが移動しないゴミ箱の中のメールが削除できない迷惑メールを迷惑メールフォルダに移動する設定にしていても移動されない迷惑メールフォルダのメールが削除できないなどがあげられる。そしてこれらの現象はMail.appを再起動することで解消する。

Appleのサポートに問い合わせたところ、原因はアカウントの数が多すぎるためだとのたまった。では適切なアカウント数はいくつかと聞いたら4個〜5個とのことだった。(サポート上席担当談
再起動直るならバグではないというのがAppleの公式見解と言うことだ。

本当だろうか?

ほんのわずかでもプログラミングに携わったことがあれば百も承知していることだが、プログラムというのは通常同じことを繰り返して行うことが面倒なのでコンピューターに処理させようという目的で書かれる。
言い換えればn=1の時に正しく動作するプログラムがn=10の処理に耐えられないというのは通常あり得ない。なぜならば、n=10の処理はn=1の処理を単純10回繰り返せば良いだけの話なのだから。

いかがだろうか? メールなんてウェブメールで十分と言う方には関係ないかも知れないが、Mail.appがMac OS Xに標準添付されるにふさわしい物になって欲しいと考える方もいるのではないだろうか?
心ある方のフィードバックを切に望んでやまない。下記リンクが窓口である。

2014.12.31改訂
ここに指摘した現象はMac OS X 10.9.4以降のメール.appでは改善され、問題ないレベルになっている。YosemiteではBetaの時に先祖帰りして、これらの問題が復活した。製品版Yosemiteは使っていないので不明。

2013年5月4日土曜日

ffmpegでDVDの字幕を焼き込む方法

ffmpegを用いてDVDのビットマップ字幕を動画に焼き込む方法(ハードコードする方法)を説明したい。はじめに断っておくが、これは暫定仕様だそうだ。(いつになるか分からないが)ビットマップ字幕に正式に対応したら、使えなくなる方法である。またDVDの違法コピーは法律で禁止されているので、その点も注意されたい。

手順は4項目に分かれる。

  1. DVDを読み出す。
  2. 字幕トラックをスキャンして読み出す。
  3. 字幕のカラーパレットを読み取り、RGB変換する。
  4. 字幕トラックを動画に焼き込む。

以下、順番に説明する。

  1. DVDを読み出す。

    • UNIXのcatコマンドとniceコマンドを用いる方法

      cat /Volumes/DVD_VIDEO/VIDEO_TS/VTS_01_[1234567].VOB | nice ffmpeg -i - ...
      
    • mplayerを用いる方法。
      (mplayerのビルド手順はこちらを参照)

      mplayer -dumpstream dvd://1
      

      できあがると、stream.dumpというファイルが作成される。

  2. 字幕トラックをスキャンして読み出す。
    字幕トラックはビデオトラックと同時に始まる訳ではない。概ねビデオトラックが始まって少し経ってから字幕トラックが始まる。
    ffmpegに、このことを告げる(スキャンさせて見つけ出させる)必要がある。
    一番重要なのは「-probesize 60M」である。単位はマイクロ秒で60百万マイクロ秒、つまり1分間スキャンさせる。
    万が一字幕トラックが一分間以内に始まらなかった場合は、値を増やすことになる。

    ffmpeg -analyzeduration 60M -probesize 60M -i ...
    
  3. 字幕のカラーパレットを読み取り、RGB変換する。
    DVDにはカラーパレットというものがあり、これによって字幕の色が決まる。(字幕の色以外に関係するものがあるのかは不明)
    このカラーパレットを読み出してffmpegに渡す必要がある。(ffmpegは自動的にカラーパレットを読み込むことはできない)
    カラーパレットの読み出しはS.T.氏の尽力によりIFOファイルから直接読み出せるようになった。こちらからダウンロードして欲しい。
    ダウンロードしたら、実行ファイルをパスの通ったところにインストール(Macの場合/usr/local/binなど)する。コピーしたら、次のようにDVD本編のIFOファイルを引数として実行する。(リターンキーを押す)

    iforgb /Volumes/DVD_VIDEO/VIDEO_TS/VTS_01_0.IFO
    

    RGBパレットは、101010,101010,7d7d7d,d5d5d5,808080,808080,808080,808080,808080,808080,808080,808080,808080,808080,808080,808080のようになる。

  4. 字幕トラックを動画に焼き込む。
    最後に複雑なビデオフィルタ(-filter_complex)を用いてビデオトラックに字幕トラックをオーバーレイさせて焼き込む。

    • catコマンドでDVDを読み出す場合

      cat /Volumes/DVD_VIDEO/VIDEO_TS/VTS_01_[1234567].VOB | nice -i - -filter_complex "[0:v][0:s]overlay[v]"...
      
    • mplayerのストリームダンプの場合

      ffmpeg -i stream.dump -filter_complex "[0:v][0:s]overlay[v]"...
      

    この例では[0:v]」がビデオストリーム「[0:s]が字幕ストリームである。

以上をまとめると、次のようになる。

  • catコマンドでDVDを読み出す場合

    cat /Volumes/DVD_VIDEO/VIDEO_TS/VTS_01_[1234567].VOB | nice \
    ffmpeg -analyzeduration 60M -probesize 60M \
    -palette \
    101010,101010,7d7d7d,d5d5d5,\
    808080,808080,808080,808080,\
    808080,808080,808080,808080,\
    808080,808080,808080,808080\
    -i - \
    -filter_complex "[0:v][0:s]overlay[v]" \
    -map [v] -map 0:a \
    -c:v libx264 -preset slow -crf 23 -level 41 -c:a libfdk_aac -b:a 128k \
    DVD_VIDEO.mp4
    
  • mplayerのストリームダンプの場合

    ffmpeg -analyzeduration 60M -probesize 60M \
    -palette \
    101010,101010,7d7d7d,d5d5d5,\
    808080,808080,808080,808080,\
    808080,808080,808080,808080,\
    808080,808080,808080,808080\
    -i stream.dump \
    -filter_complex "[0:v][0:s]overlay[v]" \
    -map [v] -map 0:a \
    -c:v libx264 -preset slow -crf 23 -level 41 -c:a libfdk_aac -b:a 128k \
    DVD_VIDEO.mp4
    

なお、S.T.氏の尽力によりffmpeg version N-67684-g12630fa(2014/11/15 20:50:39 +0900コミット)から、ffmpegに直接IFOファイルをオプションとして与えることでカラーパレットを取り込むことができるようになった。この場合は、以下のようになる。

  • catコマンドでDVDを読み出す場合

    cat /Volumes/DVD_VIDEO/VIDEO_TS/VTS_01_[1234567].VOB | nice \
    ffmpeg -analyzeduration 60M -probesize 60M \
    -ifo_palette /Volumes/DVD_VIDEO/VIDEO_TS/VTS_01_0.IFO \
    -i - \
    -filter_complex "[0:v][0:s]overlay[v]" \
    -map [v] -map 0:a \
    -c:v libx264 -preset slow -crf 23 -level 41 -c:a libfdk_aac -b:a 128k \
    DVD_VIDEO.mp4
    
  • mplayerのストリームダンプの場合

    ffmpeg -analyzeduration 60M -probesize 60M \
    -ifo_palette /Volumes/DVD_VIDEO/VIDEO_TS/VTS_01_0.IFO \
    -i stream.dump \
    -filter_complex "[0:v][0:s]overlay[v]" \
    -map [v] -map 0:a \
    -c:v libx264 -preset slow -crf 23 -level 41 -c:a libfdk_aac -b:a 128k \
    DVD_VIDEO.mp4
    

以上。

改訂履歴

2014.12.17改訂

  1. DVDの取り込み方法で、catコマンドを用いる方法を復活。catでもmplayerでもどちらでも良いため。

2014.11.17改訂

  1. カラーパレットの読み出しがffmpegに実装されたので追記。(Special Thanks to Mr. S.T.)ただし、実行ファイルの方法も残した。

2014.10.21改訂

  1. カラーパレットの読み出しを表計算からUNIX実行ファイルに変更(Special Thanks to Mr. S.T.)

2014.10.16改訂

  1. DVDの取り込み方法を直接DVDにアクセスする形からmplayerを用いる形に変更
  2. DVD字幕が黒地に黄色になる問題を解決するため、カラーパレットの読み出しとffmpegへの反映方法を追加

2013年4月8日月曜日

RetinaディスプレイとBoot Camp

前回に続きRetinaディスプレイの話題を取り上げる。今回はRetinaディスプレイのBoot Camp(WIndows 7)への対応状況について書く。

Appleは公式文書HT5266においてRetinaディスプレイのBoot Camp(WIndows 7)対応をうたっている。
なるほど、文書の下の方にBoot Camp で実行される Windows 7 に Retina ディスプレイは対応していますか?およびWindows 7 を起動すると、空きスペースが広く、アイコンが小さく表示されます。これは正常な動作ですか?の項がある。両方とも明快にはいと言っているから、自信を持っているに違いない。

では、その対応状況とは、どういうものだろうか? これはくだくだ説明するよりも目で見てもらった方が早いと思うので、スクリーンショットを貼付ける。

150%拡大(144dpi)表示のBoot Camp
150%拡大(144dpi)表示のBoot Camp
VirtualBox(Mac上)で見たWindows
VirtualBox(Mac上)で見たWindows

上のスクリーンショットは15.4インチRetina MacBook ProのBoot Campで撮影したもの。そして下のものは同じWindows環境をMac上のエミュレータVirtualBoxで表示させたものだ。比べてみよう…

  • ゴミ箱のアイコンサイズ
    Boot Campではアイコン説明の文字サイズが150%拡大なので、アイコンサイズも拡大される。だが、それでもVirtualBoxでの表示(つまり本来のWindowsフルスクリーンで見えるべき表示)に比べると小さい
  • ウインドウサイズ
    Boot Campでは文字サイズを150%にすることによってひきずられて拡大される。だが、VirtualBoxでの表示に比べると、とても小さい
  • タイトルバーおよびメニューの文字サイズ
    Boot Campでは文字サイズが150%拡大なので、バカでかい。メニュー項目などはウインドウサイズが小さいとあふれてしまう。リサイズできるならば良いかも知れないが、サイズ固定のウインドウでは気持ち悪いし、操作性が悪い。対するにVirtualBoxでの表示はバランスが取れている
  • ファイル保存等のダイアログで入力する文字のサイズ
    Boot Campでは拡大表示されず、到底入力しやすいとは言えない。これはこのアプリケーション特有の問題ではない。このダイアログはWindows 7が標準で提供するユーザーインターフェース(UI)だ。対するにVirtualBoxでの表示には問題がない

いかがだろう? これでもBoot Camp(サポートソフトウェア)はRetinaディスプレイに対応していると言えるのだろうか? はいと明言できるのだろうか?

筆者はそうは思えなかった。だからAppleの自称エキスパートに問い合わせた。電話だけで現象を説明するのは大変だから、Retinaディスプレイ搭載のMacBook ProでBoot Campを起動すれば分かる話だと言ったが、なんと自称エキスパートたちはRetinaディスプレイ搭載MacBook Proすら持っていないのだ。いわんやBoot Campの話など、まるで分からない。
そして上席のエキスパートにたらい回し。長いこと待たされた後、問い合わせ番号を告げても話が全く通っていないので、最初から説明し直し。この上席が、たまたま個人でRetinaディスプレイ搭載のMacBook ProでBoot Campを使ったことがあったから、話はなんとか通じたが、結局上申しておくという言葉しか貰えなかった。

ここで提言がある。もしも本ブログエントリを読んで戴き、内容に賛同される方がいたらAppleへフィードバックして戴きたいのだ。できればRetinaディスプレイ搭載のMacBook Proを所有している方が望ましいが、それ以外でも賛同される方は参加して欲しい。フィードバック先は下記の通りである。

[2013.5.13追記]

  • Boot Camp Support Software 5.0.5033がAppleからリリースされたので期待したが、これはWindows 8(64bit)のサポートを追加したものだそうだ。無論上記の画面上での見え方には改善は全くない!!
  • VirtualBoxに限らず、VMWare Fusionでも結果は同じである。これらのエミュレータの方がルック&フィールにおいて、本来のWindowsの表示になっている。

2013年3月30日土曜日

Retinaディスプレイの壁紙

15.4インチRetinaディスプレイ搭載のMacBook Proを購入して1ヶ月ちょっと経った。本当に美しいディスプレイだ。だが、意外と知られていない事実がある気がする。このディスプレイの解像度は2880ピクセル×1800ピクセルだが、作業領域は従来のMacBook Proと変わらない1440ピクセル×900ピクセルだということだ。

実は、これこそが美しいディスプレイを実現している理由なのだ。Retinaディスプレイでは、システム環境設定で解像度をRetinaディスプレイに最適に設定している場合、従来の1画素は縦横それぞれ2画素、つまり4画素を使って表示される。結果として見かけ上の解像度は144ppiになる。

では、壁紙はどんなサイズを選べば良いのだろう? 壁紙を提供しているサイトにはディスプレイの解像度を表示してくれるものがある。こういうサイトではRetinaディスプレイを搭載したMacBook Proのディスプレイ解像度は1440ピクセル×900ピクセルだと表示される。では、言われる通りで良いかというとそうではない。壁紙サイトにある壁紙は、多くの場合解像度が72dpiだからだ。

勿体ぶっていないで正解を言おう。72dpiの画像であれば144÷72=2なので1440ピクセル×900ピクセルをそれぞれ2倍した2880ピクセル×1800ピクセルの画像が最適である。なければ、それに近いサイズであればあるほど良い。

実はこのことをAppleの自称エキスパートに問い合わせたことがある。ロジックとして割り切れる前で混乱していたためだった。担当者は、ご丁寧にHT5266をググれと指示した。そしてそこにある通り、解像度が2880ピクセル×1800ピクセルだから、そのサイズの壁紙が最適だと言った。しかし、これがエキスパートだから分かったのではないのは後々明らかになる。次回はBoot Camp上のWIndows 7でのRetina DIsplayについて取り上げる。

2014.12.30追記
ただし、2880ピクセル×1800ピクセルのような高解像度画像は滅多に存在しない。筆者の趣味の話になって恐縮だが、日本のグラビアアイドルの画像などは最も大きいものでも2000ピクセルx1600ピクセル程度だ。これ以上のサイズの画像は、合成されているか、画像の再サンプリングによって作り出されたまがい物である。

2013年3月20日水曜日

ffmpegで字幕ファイルを焼き込む方法

MacでX11を導入せずにffmpegを用いて外部字幕ファイルを動画に焼き付ける方法を説明したい。

このブログエントリは、FFmpegで動画に字幕を付けてみるおよびMac の X11 環境のユーザーフォントについて調べてみる、そしてASS 仕組みと書き方を参考に作成したものである。

Mac OS X 10.8.x Mountain LionからX11はオプショナルインストールになった。ffmpegもMac OS X用バイナリが配布されている。本来X11に依存する訳ではないのに字幕焼き付けのためだけにX11を導入するのは無駄である。以下に説明する手順を踏めばX11を導入することなく字幕焼き付けが可能である。

  1. fonts.confファイルの作成
    適当なディレクトリ(例:/Users/アカウント名/.config/fontconfig/)に、下記内容のfonts.confファイルを作成する。
    実行コマンド例

    cd /Users/Accout_Name/
    mkdir .config
    cd .config
    mkdir fontconfig
    cd fontconfig
    nano fonts.conf
    

    記述内容

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
      <dir>/System/Library/Fonts</dir>
      <dir>/Library/Fonts</dir>
      <dir>~/Library/Fonts</dir>
    </fontconfig>
    

    もし新しくフォントを追加した場合はセーフブート(shiftキーを押しながら起動)&再起動でフォントキャッシュをクリア&再構築する。

  2. 「.profile」ファイル作成(すでにある場合は、記述を追加)
    実行コマンド例

    cd /Users/Accout_Name/
    nano .profile
    

    記述内容

    export FONTCONFIG_PATH=/Users/Accout_Name/.config/fontconfig
    

    作成したら、プロファイルを反映させるためにターミナルを一度閉じて新しいウインドウを開く。

  3. 字幕ファイルがSRTフォーマット(拡張子がsrt)の場合、ASSフォーマット(拡張子がass)に変換する。(オプション)

    ffmpeg -i subtitle.srt subtitle.ass
    
  4. ASSファイルを適当なテキストエディタで開き「ScriptType: v4.00+」以降に次の記述を追加する。(すでに記述がある場合は不要)

    PlayResX: 384
    PlayResY: 288
    

    記述例

    [Script Info]
    ScriptType: v4.00+
    :
    :
    PlayResX: 384
    PlayResY: 288
    
  5. ffmpegを用いて字幕を動画に焼き付ける。

    ffmpeg -i Movie.mp4 -preset slow -crf 18 -filter:v "ass=Subtitle.ass" -c:a copy -f mp4 Movie_with_Subtitle.mp4
    

2014.9.2 追記:

  1. 元にするSRTファイルの文字コードはUTF-8にする必要がある。
  2. -filter:v "ass=Subtitle.ass"に記述するASSファイルは、カレントディレクトリにあるか、絶対パスで記述する必要がある。(例えばDesktop上にファイルがあれば、Terminal.appもDesktopにするか、/Users/ユーザー名/Desktop/Subtitle.assにする。~/Desktop/Subtitle.assではエラーになる)

2013年3月12日火曜日

VirtualBoxとのファイルやり取り方法

Boot CampはインテルMacでWindowsを動作させることができる素晴らしいアイディアだ。しかし、MacとWindowsとの切り替えでいちいち各OSを再起動しなくてはいけないのがネックだ。そこでVirtualBoxなどのエミュレータが存在価値を発揮する。

ここではVirtualBoxの共有フォルダ機能を用いた、Macとのファイルやり取り方法を説明したい。

VirtualBoxには、Macとの間でファイルをやり取りするための手段として共有フォルダ機能が用意されている。VMware FusionやParallels Desktopが、Macとのファイルのやり取りでドラッグ&ドロップを実現しているのに対して寂しいように思えるが、無料なのだし、Version 4.2ではゲストOSがLinuxの場合に限ってドラッグ&ドロップを実現している。今後のアップデートで他のゲストOSに対してもサポートする予定だとのことなので期待したいところでもある。

話がそれてしまった。VirtualBoxの共有フォルダ機能の話に戻る。ちなみに共有フォルダの作り方は知っている前提とする。共有フォルダに一工夫を加えると、とても便利に使えるのだ。ここでは共有フォルダを下図ようなフォルダ構成で作っているとする。

Vbox_Root_Folder
VirtualBox VMフォルダ内に共有フォルダを配置

アプリケーション > ユーティリティ > ターミナル.appを(またはLaunch Padでユーティリティ(10.8.x未満)、その他(10.8.x以降)からターミナルをクリックして)起動し、以下のコマンドを実行する。

cd VirtualBox\ VMs/VBX_Shared_Folder/
ln -s /Users/AccountName/ ./
ln -s /Volumes ./

これらは、Macのユーザーのホームディレクトリと外部装置が接続されるVolumesという名前のディレクトリのシンボリックリンクを共有フォルダ内に作ることを意味する。結果Macでは下図のようなフォルダ構成となる。

VBox_Shared_Folder
共有フォルダ内のシンボリックリンク

Windowsのエクスプローラーで見ると下図のようになる。

explorer
エクスプローラーで見た状態

何が便利なのかというと、これによってユーザーのホームディレクトリおよび外付け機器にあるすべてのファイルにアクセスできるのだ。読み込みだけでなく書き込みもできるので複製(コピー)だけでなく移動・削除もできる。Boot Campでできなかった書き込み(移動・削除)ができるのがポイントだ。

2013年3月4日月曜日

書類のロックを一括で解除する方法

Mac OS X Lion(10.7.x)では、システム環境設定のTime Machineパネルに最後の編集から2週間(変更可能)経つと書類を自動的にロックするというオプションがあった。だがMac OS X Mountain Lion(10.8.x)では不採用になった。

しかしMountain Lionにアップグレードしたからといってロックされた書類が元に戻る訳ではない。Lionでロックされた書類はロックされたままなのだ。

ロックされた書類がそのままで良いと思う場合は構わないが、このLionのおせっかいな機能から解放されるためには、ちょっとだけターミナルのコマンドを使う必要がある。(アプリケーション > ユーティリティ > ターミナル.appを開き、以下のコマンドを実行する)

  1. 書類のロックを一括で解除するコマンド

    cd /
    sudo chflags -R nouchg *
    
  2. Preferencesのロックファイルを削除するコマンド(各ユーザーレベルおよびシステムレベル)

    cd ~/Library/Preferences
    rm *.lockfile
    
    cd /Library/Preferences
    sudo rm *.lockfile
    

書類のロックを一括解除とシステムレベルのPreferencesのロックファイル削除のコマンドではsudo(SUper User DO)をつけてコマンドを実行する必要がある。このコマンドを実行すると管理者ユーザーのパスワードを要求されるので、入力してやる必要がある。

2013年2月15日金曜日

捨てられないフォントへのこだわり

普段はMac、時々必要な時にBoot CampのWindows 7を起動するという使い方をする人は、どうしてもそれぞれの違いを目の当たりにさせられる。

前々回Mac OS Xに標準搭載されているヒラギノフォントを使おうとして失敗したことを書いたが、どうやらヒラギノフォントを購入したとしても課題が残るらしいことが分かって来た。

Macでは欧文フォント(1バイト文字)、和文フォント(2バイト文字)ともに滑らかな文字表示(アンチエイリアス処理)が行われる*1が、Windowsでは欧文フォントしかアンチエイリアス処理されない*2のだ。

このためWindowsでは和欧フォントが混合していると和文はビットマップ、欧文はアンチエイリアスという、まことに視認性の悪い状態が発生する。

これを解決するのがMacTypeというFreeTypeを応用したソフトウェアである。インストールから使い方まではMacType|蜃気楼の果てブログエントリが詳しいので説明は省くが、Boot Campに限らずWindowsユーザーにもお勧めできるソフトウェアである。騙されたと思って試してみて欲しい。

*1:Macでは指定サイズ以下のフォントはアンチエイリアス処理をしないように選択することもできる。
*2:Windows Vista以降で導入。

2013年2月7日木曜日

SystemUIServerのバグ

いつもなら、こんなペースでは更新しないが、ちょっと気になるバグを発見したので投稿する。clamXavのログをコンソール.appで見ていた時、一緒に表示される全てのメッセージを見てギョッとした。

SystemUIServer: AppleClockExtra ERROR: Impossible to find range of h or H in date format.

というメッセージが2秒間隔で発生しているのだ。ググってみたところ、日本のApple サポートコミュニティにSystemUIServer エラーの内容で掲載されていた。

上記(AppleClockExtra Error)はシステム環境設定 > 日付と時刻ペインで「時刻内の":"を点滅させる」のチェックを外せば解消する。しかし、こんな現象はMac OS X 10.7.xでは発生していないのでMac OS X 10.8.xの明らかなバグだ。

だがもうひとつある。

Impossible to find range of h or H in date format.

この表示がほぼ30秒間隔で表示される。これは日付と時刻ペインで何を設定しようがおかまいなしに出現する。省エネルギーペインで「メニューバーにバッテリーの状況を表示」のチェックを外すと治るという意見もあるが的外れだし無関係だ。この現象もMac OS X 10.7.xでは発生していないのでMac OS X 10.8.xの明らかなバグだ。

日本以外では、この現象は発生していないようだ。日本の日付と時刻のフォーマット独自のバグと考えられる。
日本でしか発生していないからって舐めるなよAppleということで、しめくくりにフィードバックのリンクを提示して筆を置く。レッツフィードバックである。

2013.5.13追記
現時点でOS X 10.8.x搭載のMacを購入すると時計は24時間表示+時刻内の":"は点滅させない設定になっっている。この状態では上記エラーログは吐き出されない。

2013年2月6日水曜日

使えなかったヒラギノフォント…。

Boot CampにインストールしたWindows 7で、Mac OS Xに標準搭載されているヒラギノフォントを使ってしまおうと企んだ。このフォントの美しさはMacユーザーならば誰もが知っていることだろう。
比較するにWindows 7のフォントの汚さは目を覆うばかりである。作業していても、ウェブブラウジングごときのことでも目が疲れてしまう。

多分できるだろうと踏んだのだが、一応念のためググってみた。するとやっぱりトップヒットででてきたのが憧れの“ヒラギノ”フォントをMacからクールにパクッてWindowsで使う方法 | DOMINO EFFECTというブログエントリだった。

Boot Campなので、Macの起動ディスクからのコピーはできる。
Windows 7を起動してエクスプローラーでMacの起動ディスク > ライブラリ > Fontsと開き、ヒラギノを検索する。検索された結果を選択して右クリック、インストールを選択する。

Try Font Install

だが、こんな警告が出てインストールができない。

CantInstall Font

考えられるのはマイクロソフトが、これらのフォントがMac OS Xに標準搭載されているフォントだと気づいたことぐらいである。
ライセンス違反になる行為を防止するためのアップデートが上記ブログエントリが書かれた後に加えられたのだろう。

金のない身にとっては辛いことだが、企みは失敗に終わった。ライセンス違反にならなかったのが、せめてもの救いと言えば救いなのかも知れない…。

2013年1月24日木曜日

ffmpegで動画を切り取る方法

ffmpegを用いて動画を切り取る方法を説明したい。使用したffmpegは、このブログエントリを書いた時点で最新バージョンである1.1(2013.1.7リリース)であるが、切り取り方を調べていてやっと見つけたドキュメントの発行は2009年なので、かなり前からこの方法になっていると思われる。

まず初めに見つけたドキュメントに沿ったコマンドである。

$ ffmpeg -y -i Usagoya.mov -r 6.427508 -filter:v "crop= x=200 : y=12: out_w= 280: out_h= 210" -an Usagoya.mp4

見れば分かるようにcroptop、cropbottom、cropleft、croprightという、よく検索で見つかるオプションは存在しない。
これらは、ffmpegの公式ドキュメンテーションであるffmpeg Documentation(日本語版)およびその英語版でも削除されたと書いてある。その代わりの方法も書いてはあるのだが、具体的でなく、理解できなかった。

次のコマンドでも同じ結果になるが、分かりやすさから言ったら、上記のコマンドの方が良いのかも知れない。

$ ffmpeg -y -i Usagoya.mov -r 6.427508 -filter:v "crop=280:210:200:12" -an Usagoya.mp4

この方法は見つけたドキュメントでは、削除されたことになっているようだが、実際には残っているようだ。

もとの動画と、上記コマンドを実行して切り取った結果得られる動画のスクリーンショットを掲載する。もとの動画のサイズは480×240ピクセル。そして切り取った動画のサイズは280×210ピクセルである。

もとの動画のスクリーンショット(480×240ピクセル)
もとの動画のスクリーンショット(480×240ピクセル)
切り取った動画のスクリーンショット(280×210ピクセル)
切り取った動画のスクリーンショット(280×210ピクセル)

見つけたドキュメントにあった通り、動画の左上を基準(原点)にしてx(横)方向に200ピクセル、y(縦)方向に12ピクセル、それぞれオフセットさせた位置で切り取とると、狙い通りの動画を作ることができた。

切り取った動画の再生時間が狂っているように見えるが、もとの動画も本来は31秒の再生時間であり、それが27秒間に再生されることを確認済みである。つまりffmpegの方が正しい再生時間で変換しているということになる。

ただし良いことばかりでは済まない。ffmpegの「-filter:v」には「yadif」というインターレース解除フィルタオプションもあるのだが、これとの組み合わせはできない(?)ようなのだ。(今回の動画はプログレッシブ(ノンインターレース)スキャンであり、問題はなかった)これ(「yadif」フィルタと組み合わせができないこと)が、バグなのか仕様なのかは良く分からない。

この動画は、上に説明した方法を参考にして作成したものである。

なお動画および、スクリーンショットに登場するうさぎは、うさゴヤというTwitterのアカウントがあれば、誰でも遊べるオンラインチャットゲームに参加するとダウンロードできるデスクトップアバターである。興味がある方はクリックしてみて戴きたい。
デスクトップアバターは、うさゴヤホームページのアプリからダウンロードできる。

2013年1月23日水曜日

スパースバンドルの見果てぬ夢

スパースバンドル・ディスクイメージというのをご存知だろうか? これは、Apple社Time Capsuleなどを用いて、ネットワーク経由でTime Machineのバックアップを行うためにMac OS X 10.5(Leopard)から採用したディスクイメージフォーマットだ。実際にはフォルダなのに、ひとつのファイルのように振る舞うのは、Mac OS Xのアプリケーションに似ている。

Time Machineでのバックアップを始めた頃、スパースバンドル・ディスクイメージを用いると、バックアップ領域のサイズを制限できるらしいということが分かって来た。ハードディスクは出来るだけパーティションを少なくして使うべきだという持論を持っていたので、これは朗報に思えた。

さらにうまい事にCONF is Original News Flash: 直付HDDに設定したTimeMachineの容量を制限する?というブログエントリを見つけ出し、小躍りした。しかし、何の設定が悪いのか、バックアップ領域のサイズを制限するという目論みはことごとく失敗したのだった。その上、いくらスパースバンドル・ディスクイメージを作っても、それが直付ハードディスク上にある場合は、バックアップには使用されない事が分かってしまった。

夢破れた今、しぶしぶではあるが、バックアップ用パーティションを作って運用しているのが、現状である。

ちなみに、ネットワーク経由であれば、Time Machineの容量制限 « 60D & Kiss X2で写真日記のブログエントリにある手順によってバックアップ領域のサイズを制限できるらしいのだが、残念ながら検証はできていない。

2013年1月22日火曜日

自分のMacの名前を取り出す

フィルタを使用した文字列操作 2を参考に、自分のMacの名前を取り出す方法を説明したい。

アプリケーション > ユーティリティ > ターミナル.appで以下のコマンドを実行する。

$ system_profiler SPSoftwareDataType | grep 'Computer Name' | cut -d ':' -f2 | cut -d ' ' -f2

この方法で、Time Machineで使われているコンピュータ名を取得する事ができる。(特にコンピュータ名が日本語を含む場合に便利)シェルスクリプトはもちろん、AppleScriptの「do shell script」命令等で使える。

ちなみにTime Machineでは以下のディレクトリ(フォルダ)構成でバックアップが作成されている。

Time Machine HDD > Backups.backupdb > コンピュータ名 > 日付時間ごとのバックアップ

2013年1月21日月曜日