2015年12月29日火曜日

Copy Syntax Highlight for OS X

Appleちゃんねるさんが、Copy Syntax Highlight for OS Xというものを紹介している。

なかなか便利そうなので、入れてみることにしたが、Homebrewを使わない希少な存在には引っ掛かりがあったので、以下メモしておく。

  1. pipのインストール
    Copy Syntax Highlight for OS Xを利用するためには、Pygmentsをインストールする必要がある。ところが、Pygmentsのパッケージをダウンロードしても何をして良いのか分からない。では、pip install Pygmentsではどうかというと、pipがないと言われる。
    それもそのはず、pipは、次のようにしてインストールするものなのだ。(参考サイト

    sudo easy_install pip
    
  2. Pygmentsのインストール
    pipをインストールしたら、Pygmentsを次のようにしてインストールする。

    sudo pip install Pygments
    
  3. Copy Syntax Highlight for OS Xのインストール
    あとは、Appleちゃんねるさんの記事にある通り、こちらからCopy Syntax Highlight for OS Xをダウンロードして解凍、ダブルクリックする。

    インストール確認ダイアログ

    インストール完了

  4. Copy Syntax Highlight for OS Xの使い方
    使い方は次の通り。

    1. コピー元のコードが書かれている書類で、範囲選択してコピー
    2. コンテクストメニューからCopy Syntax Highlight for OS Xを選ぶ
    3. ハイライトすべき文法を入力するダイアログが表示されるので入力
    4. テキストエディットなどにペーストすると、ハイライトされたコードが得られる。

以上。

2015年12月19日土曜日

Boot CampでのWindows 10アップグレード後の不具合対策(その2)

前のエントリの続きである。

現象

Retina Display搭載MacのBoot Camp環境下で、以前のWindowsをWindows 10へアップグレードすると、アップグレード後最初に目にする画面に驚く。アスペクト比が4:3で、デスクトップ上のアイコンが異常に大きいのだ。(状況の説明として画像を添付するが、分かってもらえるかは自信はない)

原因

前のエントリで述べた通り、Windows OSアップグレードに伴う、Boot Campサポートソフトウェア(ドライバ)の動作不良が原因である。

対策

対策は2段階に分かれる

  1. 前のエントリで述べた通り、Boot Campサポートソフトウェアを修復インストールする。
  2. ディスプレイ設定で調整する。

Boot Campサポートソフトウェアの修復インストールと、それに伴う問題への対処については前のエントリで述べた。
ここでは、ディスプレイ設定での調整について述べる。

  1. Boot Campサポートソフトウェアの修復インストール直後の画面
    4:3の画面からBoot Campサポートソフトウェアの修復インストールを経て再起動すると、今度はデスクトップ上のアイコンが異常に小さい。(Retinaのフル解像度で表示されている)
  2. ディスプレイ設定
    デスクトップ上で右クリックし、ディスプレイ設定を開く
  3. カスタムの拡大/縮小率設定解除
    画面にあるカスタムの拡大/縮小の設定を無効にして、サインアウトするを選択すると、サインアウトする。
  4. 調整完了
    サインインし直すと、拡大率が200%になり、Retinaでもちょうど良いサイズになる。以下に示す画像は、Twitterを開いた状態での、Boot Camp、VMWare Fusion、Macのスクリーンショットである。

    Boot Campの画面
    Boot Campの画面
    VMWare Fusionの画面
    VMWare Fusionの画面
    Retina Macの画面
    Retina Macの画面

    2年前RetinaディスプレイとBoot Campというタイトルのエントリでこき下ろしたBoot Campだが、Windows 10のおかげで、他の環境と遜色ないものになったようだ。

    【ちょっとした補足】
    Retinaディスプレイに最適な状態のMacはひとつのピクセルを4つの画素(縦2×横2)で表現している。つまり200%表示ということになる。
    VMWare FusionはMacのアプリケーションだから、これに従っている。
    Windows 10になって、ディスプレイ設定にテキスト、アプリ、その他の項目のサイズ変更が一括で出来るようになった。以前のWindowsではテキストの150%拡大しかできなかった。

Boot CampでのWindows 10アップグレード後の不具合対策(その1)

現象

  • Boot CampのWindowsをWindows 10にアップグレード後、Macのかなキーを押してもIMEがオンにならない。
  • Boot Campでのキーコンビネーション(fn + shift + F11)によるスクリーンショットが取れない。
  • Retina DisplayのMacBook Proで画面解像度がめちゃめちゃになる。

原因

この問題は、Boot CampにWindows 10を導入する際に、以前のWindowsを踏み台にするケースで発生する。より正確を期するならば、以前のWindowsにBoot Campサポートソフトウェアがインストールされ、それをWindows 10へのアップグレードで引き継ぐ場合に発生する。

すなわち、Windows OSアップグレード時に、一部のBoot Campサポートソフトウェアが正常に動作しなくなるのが原因である。

対策

当たり前のことだが、Boot Campサポートソフトウェアを修復インストールすれば良い。しかし、ここで新たな問題が出てくる。

  1. OSXRESERVEDパーティションの有無
    Boot CampサポートソフトウェアとWindows OSをOSXRESERVEDというパーティションに保存するMacがあり、これはWindowsインストール完了後に消えてしまう?(筆者の場合、消えずに残っている)
  2. RealTekオーディオインストールで止まる問題
    Boot Campサポートソフトウェアを修復インストールする際に、RealTekオーディオのインストールで止まってしまう。初回のWindows 8.1インストール時には発生しないので、修復インストールの際の問題があると思われる。(Apple調査中とのこと)

つまり、Boot Campサポートソフトウェアの入手方法と、それの実行時の問題への対処の2点が課題である。以下、順に説明する。

  1. Boot Campサポートソフトウェアの入手方法

    • USBメモリにBoot Campサポートソフトウェアを保存するタイプのMac
      説明するまでもない。そのUSBメモリを使えば良い。

    • 起動ディスク上にBoot Campサポートソフトウェアを保存するタイプのMac
      1. Windowsのインストール完了後、保存したパーティションが消えてしまうケース
        何も難しくはない。Macで再起動し、Boot Campアシスタントを起動、アクションメニューからBoot Campサポートソフトウェアを入手すれば良い。
      2. 保存したパーティションが消えずに残っている場合
        次のようにしてドライブレターを割り当てれば、Windows上でアクセスできるようになる
        1. PC管理を開く
        2. 記憶域 > ディスクの管理でOSXRESERVEDとあるのが、そのパーティションである
        3. OSXRESERVEDを選択して右クリックし、ドライブ文字とパスの変更(C)…を開く
        4. 開いた画面で追加ボタンを押す
        5. ダブらないドライブレターが選択されているので、OKボタンを押す
        6. ドライブレターを削除する場合は、ドライブ文字とパスの変更(C)…を開いて削除を押す
  2. RealTekオーディオインストールで止まる問題への対処
    Boot Campサポートソフトウェアを入手したら、Windowsで起動し、それを実行する。

    1. Boot Campセットアッププログラムの実行
      USBメモリ、あるいはマウントしたOSXRESERVEDパーティション > BootCampを開き、Setupをダブルクリックする
    2. 修復ボタンを押す
    3. 途中で以下の画面が出ることがあるが無視(このほかもう一種類ある場合もあるが、それも無視)
    4. RealTekオーディオの表示で止まる
      しばらく待つとプログレスバーが進むが、画面にRealTekオーディオと表示されたところで、再び止まってしまう。放っておくと、このまま変化しない。
      これは何らかの原因(Apple調査中)でRealTekオーディオのインストーラーがハングしているためなので、これを強制終了させる。
    5. タスクマネージャーを起動する。(タスクバー上で右クリック)
    6. RealTekSetupタスクを終了させる
    7. Boot Camp Setupプログラムの終了
      タスクマネージャーでRealTekSetupタスクを終了させると、あっという間にBoot Camp Setupプログラムが終了する。完了ボタンを押すと、OSの再起動を要求されるが、この時点では無視して良い。
    8. RealTekオーディオSetupを開く
      USBメモリ、あるいはマウントしたOSXRESERVEDパーティション > BootCamp > Drivers > RealTekを開き、RealTekSetupをダブルクリックする
    9. RealTekオーディオインストーラー
      RealTekオーディオインストーラーが開くので、指示に従ってインストールする。
    10. RealTekオーディオインストーラーの終了
      終了すると、OSの再起動を要求されるので、ここで再起動する。
  3. Retina Displayの解像度調整
    Retina Displayを搭載したMacの場合、あと一工程だけ作業があるが、長くなったので、別エントリとする。

参考情報

RealTekオーディオの処理で止まる件、幾つかの嘘情報があったが、このサイトが正解だった。感謝する。
BootCampでRealTekオーディオのインストールが止まる対処方法

2015年12月18日金曜日

Boot Campと他社製NTFSドライバ

前置き

仮想マシン派だった筆者だが、Boot Campに乗り換えることにした。理由はあるゲームで仮想マシンが落ちるからだ。仮想マシンを復活させるためには、OS自体の再起動がいる。(VMWare Fusion)

Boot Campなら大丈夫なのではないか?と考えてやってみたところ、さすがはネイティブ環境、問題なかった。
だが、Boot Campを導入するにあたって幾つか引っかかったことがあるので記録しておくことにする。

問題点

問題点は3つあった。今回は、そのうちシステム環境設定の起動ディスクにBoot Campパーティションが表示されない問題を取り上げる。

と言っても、この問題が発生するのは、他社製NTFSドライバを導入してMac上でNTFSでフォーマットされたメディアを読み書きしているケースだけである。

ドライバというとギョッとするかも知れないが、ハードディスクを始めとするI/O機器がコンピュータに認識される場面の影には、Mac、Windowsに関係なく存在するソフトウェアである。ここでいう他社製NTFSドライバとは、Paragon社やTuxera社などのものを指す。

結論

結論をいうと、システム環境設定の起動ディスクにBoot Campパーティションが表示されない理由は、これら他社製NTFSドライバのせいであった。

最初は不可思議に思うかも知れないが、次のように考えれば、ちゃんと説明はできる。

Boot CampパーティションもNTFSフォーマットされたボリュームの一つである。当然マウントするときには、Apple純正の読み取り専用ドライバか、読み書き可能な他社製NTFSドライバのどちらかが用いられることになる。

他社製はApple純正よりも優先して動作するから、他社製が動作しているときにFinder上で見えるBoot Campパーティションは読み書き可能な状態である。
これに対して、他社製が停止しているとき、つまりApple純正でマウントされているときは、読み取り専用になる。

起動ディスクを選択する画面にBoot Campパーティションが表示されるかどうかは、推定だが、それがAppleのドライバに認識されているかどうかにかかっているのだろう。別のドライバでマウントされたものが認識されないのは、自然と言えば自然ではある。

対策

多少面倒ではあるが、他社製NTFSドライバとBoot Camp機能を共存させる方法はある。それは、他社製NTFSドライバを一時停止し、Boot Campパーティションをマウントし直すことだ。

筆者はTuxera社の製品を使用しているが、一時停止ボタンはParagon社の製品にもある。そしてBoot Campパーティションのマウント解除、再マウントはディスクユーティリティを用いれば良い。

参考情報

Solved Bootcamp not mounting: was Tuxera NTFS problem

以上。

2015年12月7日月曜日

GnuTLSを使ったradiko録音環境の構築

radikoは、誰でも知っているであろう、インターネットラジオ放送の一つである。これを録音する方法というのもあって、ググればわらわらと出てくる。

録音に必要なのは、それ用に作られたシェルスクリプトと、そのシェルスクリプトで使われるUNIXコマンドラインツールである。
Macであれば、Homebrewを使えばツールは簡単に揃う。しかし、今更Homebrewを使った解説をするつもりはない。理由は簡単で、筆者はHomebrewを使っていないからだ。

シェルスクリプトの方は、幾つかあるが、筆者はザリガニが見ていたさんのファンなので、そちらのrtmpdumpでradikoにアクセスする手順という記事にあるものを使わせて戴くことにする。

UNIXコマンドラインツールは、以下をインストールする。(このために、それぞれの依存ライブラリもインストールする)

  • rtmpdump
  • wget
  • swftools
  • ffmpeg

rtmpdumpとwgetではGnuTLSを暗号化(SSL)接続に用いる。
従来のこの手の記事ではOpenSSLを用いていたが、EL Capitan以降で使えるXcode 7.x以降ではOpenSSLはサポートされない。ライセンスの問題もあるので、OpenSSLではなくGnuTLSを用いる。

以下、順を追って説明する。

  • git
    rtmpdumpのソースコードはgitで管理されているので、こちらからダウンロードしてインストールする。
  • pkg-config
    いろいろなツールをインストールするときの依存関係などを記述したファイルを管理する。
    curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.1.tar.gz
    cd pkg-config-0.29.1
    ./configure --with-pc-path=/usr/local/lib/pkgconfig --with-internal-glib
    make -j 4 && sudo make install
    
  • xz
    圧縮アルゴリズムである。インストールするファイルを解凍するために使う。(Yosemite以降では不要
    curl -LO http://tukaani.org/xz/xz-5.2.2.tar.bz2
    tar xf xz-5.2.2.tar.bz2
    cd xz-5.2.2
    ./configure
    make -j 4 && sudo make install
    
  • zlib
    圧縮アルゴリズムである。gnutls, rtmpdump, wgetで使用する。
    curl -LO http://zlib.net/zlib-1.2.8.tar.gz
    tar xf zlib-1.2.8.tar.gz
    cd zlib-1.2.8
    ./configure
    make test
    sudo make install
    
  • libgmp
    gnutlsの依存ライブラリである。
    curl -LO https://gmplib.org/download/gmp/gmp-6.1.1.tar.xz
    tar xf gmp-6.1.1.tar.xz
    cd gmp-6.1.1
    ./configure
    make -j 4 && sudo make install
    make check
    
  • nettle
    gnutlsの依存ライブラリである。
    curl -LO https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz
    tar xf nettle-3.3.tar.gz
    cd nettle-3.3
    ./configure --with-include-path=/usr/local/include --with-lib-path=/usr/local/lib --disable-openssl
    make -j 4 && sudo make install
    
  • gnutls
    rtmpdumpとwgetで暗号化(SSL)接続時に使用する依存ツールである。
    curl -LO ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.4.tar.xz
    tar xf gnutls-3.5.4.tar.xz
    cd gnutls-3.5.4
    env LDFLAGS=-L/usr/local/lib LIBS=-lgmp \
    ./configure --without-p11-kit --disable-cxx --with-included-libtasn1 \
    --disable-doc --disable-gtk-doc-html \
    --with-unbound-root-key-file=/etc/unbound/root.key
    make -j 4 && sudo make install
    
    gmp、nettle、gnutlsのインストール方法は、こちらのサイトを参考にさせて戴いた。
  • rtmpdump
    Real Time Messaging Protocolを取り扱うツールである。
    KSV氏によるパッチファイル
    こちらからrtmpdump-2.4.zipをダウンロード、解凍して、Patch.diffを取り出す。(gitでソースコードを入手後、そのディレクトリに入れる)
    このパッチは、rtmpdumpがインストールされていない状態で適用すること。
    git clone git://git.ffmpeg.org/rtmpdump
    cd rtmpdump
    patch -p0 -i Patch.diff
    make SYS=darwin CRYPTO=GNUTLS SHARED= XCFLAGS="-I/usr/local/include" XLDFLAGS="-L//usr/local/lib"
    sudo make install CRYPTO=GNUTLS SHARED=
    
  • wget
    コマンドラインでWebデータを取得するツールである。
    curl -LO http://ftp.gnu.org/gnu/wget/wget-1.18.tar.xz
    tar xf wget-1.18.tar.xz
    cd wget-1.18
    env LDFLAGS=-L/usr/local/lib LIBS=-lgmp  ./configure
    make -j 4 && sudo make install
    
  • swftools
    画像とSWFを相互変換するらしい。本来幾つかの依存ライブラリがあるが、今回は不要なので入れない。
    curl -LO http://www.swftools.org/swftools-0.9.2.tar.gz
    tar xf swftools-0.9.2.tar.gz
    cd swftools-0.9.2
    LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include/ -I/usr/local/include/lame" ./configure --disable-lame
    make -j 4 && sudo make install
    
    swftoolsのconfigureフラグはこちらのサイトを参考にさせて戴いた。
  • ffmpeg
    ffmpegは、当ブログにコンパイルガイドがあるので、ここでは詳細は説明しない。
    (シェルスクリプトで用いられる機能はストリームコピーなので、極端な話外部ライブラリは不要である。ただし、筆者はこのガイドに沿ったものをインストールしている)

以上でツールは揃った。あとはrtmpdumpでradikoにアクセスする手順にあるシェルスクリプトを起動すれば録音できる。例えばFM横浜を10分録音するならば、次の通りである。

sh Path/To/rec_radiko.sh -t 600 YFM

以上。

2015.12.13更新

  1. gmpをlibgmpという呼び名に修正(内容は変更なし)
  2. wgetのバージョンアップ(1.17 → 1.17.1)
  3. rec_radiko.shの使用例で、放送局名と録音時間の順序が逆だったので修正

2016.10.2更新
libgmp(6.1.0 → 6.1.1), nettle(3.1.1 → 3.3), gnutls(3.4.9 → 3.5.4), wget(1.17.1 → 1.18)のバージョンアップ。

2015年12月1日火曜日

Xcode7のワナ

これは開発関連のブログに書くか迷ったが、Macを使うことに、UNIXの資産を引き継ぐことが含まれると考え、それに沿った文脈で、このブログに書くことにする。

発端は、当ブログの古いエントリffmpegコンバイルガイドの更新であった。このエントリは現在更新中でEl Captan対応していない。原因の一つは、道具であるgitのインストールでopenssl/ssl.hが存在しないと言われたことにある。

git自体は、配布元でOS X用パッケージを用意しているので問題ないのだが、openssl/ssl.hがないというエラーを吐く方は他にも影響があるようでイヤらしい。

Xcode6.4(正確には10.10SDK)までは、openssl/ssl.hファイルは存在する。(Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/openssl/ssl.h)だが、Xcode7(正確には10.11SDK)以降では同様の場所には存在しない。件のエラーは、これが原因である。

これは、OS XというよりもAppleがOpenSSLを見限ったことによるらしい。(SDKとしての代わりのものは、Common Cryptoと呼ばれるようだ)それは分かったとしよう。Appleの開発者は今後Common Crypto使えば良い。だが、UNIXの資産を引き継ぐという使い方では、どうしてくれるのだろうか?

UNIXの資産を引き継ぐのは、事実上、Homebrewを使えば良い状態にある。だから問題ないのだろうか?

Macを使う上で、Xcodeに手を出すかどうかは一つの分かれ目である。なくても問題ない使い方はいくらでもある。
Homebrew を使うには必須だが、Xcodeの内容まで知る必要はない。Xcodeは、提供されるUNIX資産を用意するまでの過程同様、ブラックボックスで良い。こうして残るわずかが、ヘンテコな互換性問題に直面するわけだが、それは無視しても構わないのかも知れない…。