macOS Sierraの「Night Shift」を古いMacで有効にする方法

2017年3月31日

ディスプレイの色温度を低くして目への負担を軽減してくれる「Night Shift」機能が、macOS Sierraの 10.12.4 からMacでも使用できる様になりました。設定は、システム環境設定のディスプレイから可能です。

2017/09/05 追記 Night Shift機能をメニューバーから操作するアプリ「Shifty」の情報を追加しました。
2017/05/16 追記 macOS Sierra 10.12.5へのアップデートが公開されました。
アップデート後も問題なく動作しています。
私の場合、インストーラーから統合アップデートでアップデートするためか、CoreBrightness.frameworkがデフォルトに戻ってしまいNight Shiftが無効になったため、再度以下の方法でNight Shiftを有効にしました。

Night Shift の対応機種は、macOS Sierra 10.12.4 を搭載した以下のMacになります。Mac で Night Shift を使う方法 – Apple サポートより引用

  • MacBook (Early 2015 以降)
  • MacBook Air (Mid 2012 以降)
  • MacBook Pro (Mid 2012 以降)
  • Mac mini (Late 2012 以降)
  • iMac (Late 2012 以降)
  • Mac Pro (Late 2013 以降)

外部ディスプレイを使う場合は以下の製品を使う必要があります。

  • Apple LED Cinema Display
  • Apple Thunderbolt Display
  • LG UltraFine 5K Display
  • LG UltraFine 4K Display

当然の事ながら、2011年製のMacBook Proは対応機種では無いので享受するとこはできませんが、ハードウェアレベルのチェックで無く、システムファイル(CoreBrightness.framework)の数値を変更するだけなので、Night Shiftを有効にしてみました。

対応していないMacでNight Shiftを有効に

対応していないMacでNight Shiftを有効に

非対応のMacでNight Shift(ナイトシフト)を有効にする手順

Supported Mac models for Night Shift in Sierra 10.12.4+ – Pike’s Universumを参考に数値やコマンドを引用させて頂きました。

Night Shiftを有効にするMacの機種は、MacBook Pro 15 Early 2011 で、macOSX Sierraのバージョンは、10.12.4 です。
Appleの開発アプリのXcodeもしくは、hexエディターが必要です。この記事では、Xcodeを使用しています。Xcodeは、Mac App Storeからダウンロードできます。

Macのセキュリティ整合性保護機能(SIP:System Integrity Protection)を一時的に無効にして、システムファイルを編集しますので、ご注意ください。

手順1 SIPを無効にする

リカバリモード(Command + R を押しながら)でMacを起動。Appleロゴとプログレスバーが表示されたらキーを離してもOKです。

起動後に画面上部にあるメニューの「ユーティリティ」にある「ターミナル」をクリックして、ターミナルを起動。SIPを無効にするために以下のコマンドを実行します。

csrutil disable

成功すると、Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect. と表示されますので、Macを再起動します。

手順2 CoreBrightness.frameworkのバックアップ

CoreBrightness.framework は以下のディレクトリになりますので、Finderの「フォルダの移動」から以下のディレクトリに移動します。

/System/Library/PrivateFrameworks/

CoreBrightness.frameworkは、フォルダになっていますので全てバックアップ。
イレギュラーな方法ですので、元に戻す場合に備えてオリジナルは、安全な場所に別途保存をおすすめします。
※SIPが無効になっていない場合は、CoreBrightness.frameworkの中身が表示されません。SIPを無効にしてください。

手順3 XcodeでCoreBrightness.frameworkを開く

Xcodeを立ち上げて、メニュー「File」-> 「Open…」で CoreBrightness.framework の中にある「CoreBrightness」を開きます。ショートカットアイコンのように矢印がついているアイコンです。

CoreBrightness ディレクトリ

CoreBrightness ディレクトリ

ファイルを開いた状態で、Shift + Command + J で Project navigator を表示して、以下の画像のように左カラムの CoreBrightness を右クリック ->「Open As」 -> 「Hex」で開きます。

Xcode Hexとして開く

Xcode Hexとして開く

手順4 Macの機種IDの数値を変更する

XcodeでCoreBrightnessを開いた状態

XcodeでCoreBrightnessを開いた状態


CoreBrightnessを開いた状態で、Command + F で以下の文字列を検索します。

09 00 00 00 0d 00 00 00 06 00 00 00 05 00 00 00 06 00 00 00 08 00 00 00

上記の数値で、Night Shiftに対応する機種か否かを判定しているので、数値の変更のみで有効にすることができます。

具体的には、機種IDと対応する数値は以下になっています。
※機種IDは、Finderの「このMacについて」「システムレポート…」で確認することが可能です。

  • MacBookPro9,x = “09”
  • iMac13,x = “0d”
  • Macmini6,x = “06”
  • MacBookAir5,x = “05”
  • MacPro6,x = 2番目の “06”
  • MacBook8,x = “08”

今回Night Shiftを有効にするのはMacBook Proなので、上記の数値からMacBookPro9,xの機種がデフォルトでNight Shiftを利用することができます。

私のMacBook Pro 15 Early 2011 の場合、機種IDは MacBookPro8,2 になるので、本来は有効にできませんが MacBookPro9,xを意味する「09」の部分をMacBookPro8,2の「08」に変更することでNight shiftを有効にして使用することが可能になります。以下が変更した数値になります。変更箇所は先頭の「08」のみ。

08 00 00 00 0d 00 00 00 06 00 00 00 05 00 00 00 06 00 00 00 08 00 00 00

変更時のカーソルの位置が分りづらいですが、2つの数値を選択して入力する方法が入力しやすかったです。
変更後保存して、CoreBrightness.framework を /System/Library/PrivateFrameworks/ に上書きします。

手順5 変更した数値をシステムに反映させる

ターミナル.appで以下のコマンドを実行して、署名をし直す必要があります。
※パスワードは2回聞かれました。

sudo codesign -f -s - /S*/L*/PrivateFrameworks/CoreBrightness.framework/
Version/Current/CoreBrightness

以上で、編集作業は終了です。

手順6 SIPを有効にして完了

手順1でSIPを無効にしたので、元の状態に戻します。
Command + R を押しながらMacを起動。起動後に画面上部にあるメニューの「ユーティリティ」にある「ターミナル」をクリックして、ターミナルを起動。SIPを有効にするために以下のコマンドを実行します。

csrutil enable

SIPを有効にしたとのメッセージの表示後にMacを再起動。システム環境設定のディスプレイに、Night Shiftのタブが表示されていれば成功です!
今までf.luxを使用していましたが、オンにしているだけで細かい機能は使っていなかったのでNight Shiftにスイッチしました。

Night Shift機能をメニューバーから操作するアプリ「Shifty」

Night Shift機能をメニューバーから操作「Shifty」

Night Shift機能をメニューバーから操作「Shifty」

f.luxのようにメニューバーからNight Shiftのオン/オフ, 色温度の調整, アプリごとの設定、1時間のみ無効、開始終了時間の無効の操作が行えます。※再起動などのログイン時に起動させるには、PreferencesのLaunch Shifty at Loginをオンにする必要があります。

Shiftyのダウンロードは、Shifty – Get more control over Night Shiftになります。ソースコードはGitHub – thompsonate/Shiftyにて公開されています。