give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

仕事用のMacBook ProをmacOS Sierraにアップデートした

はじめに

タイトルの通り、仕事用のMacBook ProをmacOS Sierraにアップデートしたので、まだアップデートしていない人向けのメモを残しておきます。

ご注意

このエントリの情報は2016年12月23日時点での情報です。
将来的に状況が変わる可能性もあるので、適宜最新の情報もあわせて確認するようにしてください。

僕のMac環境

  • 用途:主にプログラミング(Ruby on Rails)
  • Mac本体:MacBook Pro 15-inch, Mid 2015
  • Mac本体のキーボード:US配列
  • 外部キーボード:Happy Hacking Keyboard (HHKB) Professional 2 Type-S

Mac本体のキーボードを使うこともありますが、仕事中はこんな感じで外部ディスプレイと外部キーボードをメインで使っています。

f:id:JunichiIto:20161223083355j:plain

Sierraアップデート前の懸念

El CapitanまではKarabinerを使ってキーボード設定を以下のようにカスタマイズしていました。

  • 左コマンドキーの単独押しを英数キーに割り当て
  • 右コマンドキーの単独押しをかなキーに割り当て
  • 外部キーボードのF1~F12を輝度調整やボリューム調整キーに割り当て

しかし、KarabinerはSierraでは使えなくなっています。代わりにSierra向けにKarabiner Elementsという簡易版が提供されています。
そこまで複雑なカスタマイズをしているわけではないので、とりあえずKarabiner Elementsでなんとかなるんじゃないか、という淡い期待を抱いてSierraにアップデートすることにしました。

Sierraアップデートの流れ

OSをインストールする

まず、OSをインストールするまでの流れはこんな感じです。

  • 最悪何か大きな問題が起きても、時間をかけてリカバリできる日程・時間帯を選ぶ。
  • Time Capsule + Time Machineを使ってMacをバックアップ。

APPLE AirMac Time Capsule - 2TB ME177J/A

APPLE AirMac Time Capsule - 2TB ME177J/A

  • Sierraのダウンロード開始。時間がかかるので、夜9時にスタートさせて就寝。
  • 早朝4時ぐらいに確認したらダウンロードが終わっていたので、インストール開始。
  • 6時ぐらいに確認したらインストールも完了していた。
SSHの設定を変更する

次に、SSHの関連の設定を変更します。
どうもSierra 10.12.2からSSHの設定が変わったようで、そのままだとGitHubやHerokuにpush/pullするときにエラーが出たりします。

僕は以下のサイトを参考にして修正しました。

difficulties with ssh-agent in macOS Sierra : osx

具体的には ~/.ssh/config に次のような設定を追加します。

Host *
   UseKeychain yes
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   IdentityFile ~/.ssh/id_25519

IdentityFile に渡すファイル名は自分の環境に合わせて変更してください。
GitHubへのpush/pullなど、SSH接続周りでエラーが出なくなればOKです。

キーボード周りの設定を変更する

さて、次が一番の懸念事項になっているキーボード関連の設定変更です。
予想通り、Karabinerの設定は使えなくなっていました。
というわけで、Karabiner Elementsをインストールします。

GitHub - tekezo/Karabiner-Elements: The next generation Karabiner for macOS Sierra

が、僕が見る限り、「コマンドキーの単独押し」という選択項目がない!
一応、コマンドキーを英数キーや、かなキーに割り当てることはできるのですが、これだと「常時英数キー」「常時かなキー」になってしまうので、コマンドキーとして使えなくなってしまいます。

これは予想外。うーん、困った・・・と思ってネットを調べていたら、「英かな」という代替アプリが存在していることを知りました。

⌘英かな

これをインストールすると、今まで通り「コマンドキーの単独押し」で「英数キー」「かなキー」として動作させることができました。
良かった良かった。開発者の方、どうもありがとうございます!

Karabiner Elementsはもういらないや、と思ってアンインストールしました。
が、このあとでまたインストールすることになります。

2017.8.3追記

ついにKarabiner Elementsで コマンドキーによる「英数 / かな」の切り替えができるようになりました。
なので、「英かな」を使わずKarabiner Elementsのインストールだけで済みます。
(英かな、どうもお世話になりました)


HHKBを使えるようにする

続いてHHKBもSierraで使えるようにします。
最新のドライバはSierraに対応しているので、まだインストールしていない人はこれをインストールします。

Happy Hacking Keyboard | Macintosh用ドライバダウンロード | PFU

これでHHKBもバッチリ!・・・と思ったのですが、なんか動きがおかしい。
SierraにしてからはなぜかAlt(Opt)キーと◇(Command)キーが入れ替わっているようです。

なんでだろう?と思っていたのですが、これはキーボード本体のDIPスイッチで変更することができます。
今まではSW5がONになっていたのですが、これをOFFにするとAlt(Opt)キーと◇(Command)キーの動きが元通りになりました。

ちなみに今はこんな感じでSW2とSW6だけがONになっています。

f:id:JunichiIto:20161223091049j:plain

さらにキーボード設定をカスタマイズ

これでキーボード周りもOK!と思っていたのですが、なんかおかしい。
HHKBのファンクションキーを使ってもMacの輝度調整やボリューム調整ができません。

そういえばここはKarabinerで設定してたんだった!
というわけで、もういらないと思ってアンインストールしたKarabiner Elementsを再度インストールします。

Karabiner ElementsはKarabinerと同様、ファンクションキーの設定変更ができるようになっています。

f:id:JunichiIto:20161223091529p:plain

ただ、Karabiner Elementsを入れると、環境設定で変更していた「Mac本体のCaps LockキーをControlキーとして使う」設定が無効になってしまいます。
なので、Karabiner Elements自身にその設定を追加します。

f:id:JunichiIto:20161223091741p:plain

これでEl Capitan時代と同じようにMac本体のキーボードとHHKBが使えるようになりました。

開発環境の動作確認

OSのアップデートにより、開発環境が壊れていないことを確認します。
僕は主要なプロジェクトのRSpecのテストが全部パスするか、Webの画面もちゃんと立ち上がるか、といった点をチェックしました。
こちらは特に問題なく、今まで通り動作していました。

起動ディスクの作成

万一マシンが起動しなくなったときに備えて、Sierraの起動ディスクを作成しておきます。
ここでいう起動ディスクの作成とは、USBメモリからSierraをブートできるようにすることです。

「Sierra 起動ディスク作成」のようなキーワードで検索すると情報がいくつか見つかるので、それを参考にして起動ディスクを作成します。
作成したら念のためUSBメモリからちゃんとブートできることを確認しておきましょう。

BUFFALO USB3.0対応 USBメモリ バリューモデル 8GB ホワイト RUF3-K8GA-WH

BUFFALO USB3.0対応 USBメモリ バリューモデル 8GB ホワイト RUF3-K8GA-WH

これが終わればSierraのアップデート作業は完了です!

まとめ

Sierraが公式リリースされてから3ヶ月経っているので、ネット上には有益な人柱情報が結構たまってきています。
そういった情報のおかげで今回は大きなトラブルもなく、思った以上にスムーズにアップデートすることができました。

Karabinerで無茶苦茶マニアックな設定をしていた人はまだ移行しにくいかもしれませんが、僕はそこまでではなかったので、なんとか今までどおりのキーボード設定が使えるようになりました。

Sierraにアップデートするかどうか迷っている人は、よかったらこのエントリの情報を参考にしてみてください。

あわせて読みたい

僕がHHKBを使うようになった理由を書いたエントリです。

JISキーボードとUSキーボードの違いをまとめたエントリです。

OSのアップグレードではなく、Mac本体を買い換えたときの苦労話を書いたエントリです。

【翻訳】Rails 5およびRSpec 3.5対応版「Everyday Rails - RSpecによるRailsテスト入門」のアップデートについて

2017.6.22追記:英語版がアップデートされました

原著である英語版がアップデートされ、RSpec 3.6とRails 5.1に対応しました。
詳しい情報は以下のエントリをご覧ください。


2017.4.9 追記:4月時点でのアップデート状況について

もともと2月にアップデートできたら、という予定でしたが、著者のAaronさんのお仕事が忙しいらしく、執筆が大幅に遅れているようです。
具体的なスケジュールはまだ出ていませんが、早くても5月以降になりそうです。
日本語版のアップデートはさらにその後になります。
申し訳ありませんが、もうしばらくお待ちください。

(追記ここまで)

はじめに

僕が翻訳者として携わった電子書籍「Everyday Rails - RSpecによるRailsテスト入門」のアップデート情報が著者のAaronさんのブログで掲載されました。

早速僕の方でこのブログの内容を翻訳したので、みなさんにご紹介したいと思います。

アップデートの要点

その前に、本文が少し長いので簡単に要点をまとめておきます。

  • Rails 5 / RSpec 3.5対応版のサンプルアプリケーションは新しく作り直す。さらに、昨今のベストプラクティスを踏まえながら、書籍の構成も見直す。
  • 書籍の名前と表紙が変わる可能性がある。
  • アップデート版は無料で提供する。(英語版、日本語版とも)
  • アップデート版は2017年2月に公開するのが目標。(日本語版もできるだけ早く追従する予定)

それでは以下が全文です。

【翻訳】Rails 5およびRSpec 3.5対応版「Everyday Rails - RSpecによるRailsテスト入門」のアップデートについて

Rails 5が公開されてから数ヶ月が経ちました。そして私は「Everyday Rails - RSpecによるRailsテスト入門」は新バージョンのRailsや最近のRSpecの変更点にいつ対応するんですか?という質問を何度も受け取りました。この件に関して私はしばらく沈黙していましたが、ようやく新しいお知らせができるようになったので、すでに本書を購入してくださったみなさんへ、それに購入しようかどうか迷い続けているみなさんにもお知らせしたいと思います。


まず最初に、サンプルコードが最新のRailsやRSpecをカバーしていないからといって、本書の内容が全く無価値になったわけではありません。本書で紹介したテクニックは私自身も自分のRailsアプリケーションをテストするために使い続けています。コントローラのテストはあまりしなくなりましたが、コントローラスペックの章にはテストコードを整理するための重要なテクニックを説明しており、私自身もそうしたテクニックを使い続けています。つまり、もしあなたがサンプルコードが最新のRailsをサポートしていないために、本書の内容が古くさくなっているんじゃないかと心配しているのであれば、その心配は無用です。本書の内容は現在でも有効ですし、もっとテストを書かなければいけないRails 4.xのコードベースはたくさん存在しているはずです!もしすでにRails 5を使っていたり、そろそろアップグレードしようと考えていたりする場合は、私が過去に書いたリクエストスペックフィーチャスペックの記事(英語版)が参考になると思います。


とはいえ、現在私はRailsとRSpecの変更点を反映するために本書をアップデートしている最中です。この作業は以下のような理由でいつもよりも少し時間がかかっています。

  • 私はサンプルアプリケーションを新しく作り直し、内容を充実させるために機能を増やしました。これによりさらに豊富なテストコードの例を紹介することができます。実験的にサンプルアプリケーションをいくつか作ってみましたが、最終的には複数ユーザーで使用するプロジェクトマネージメントツールを選びました。TODOリストはWebアプリケーションチュートリアルの定番ですし、テストの考え方を説明するための基礎的なアプリケーションとしてもピッタリです。このアプリケーションを使ってRSpecの使い方や、API、JavaScriptなどをテストする関連ツールの説明をしていきます。
  • それに関連して、コンテンツの構成を見直し、現在私が実践しているテストの書き方や、Railsのテスト全般に役立つベストプラクティスを紹介します。たとえば、先ほども述べたとおり、現行版ではshared exampleやモックの説明をするためにコントローラのテストを使っていましたが、実際には私はコントローラをあまりテストしなくなっています。また、Railsコミュニティにおいても、コントローラのテストはだんだん重要度が低下しています。古いRailsアプリケーションにはコントローラのテストがまだ残っているかもしれないので、アップデート後も簡単に説明しますが、shared exampleやモックの説明は他の項に移動させ、必要に応じてより詳しく説明する予定です。


二つ目に、本書の名前と表紙が変わるかもしれません。私のブログ「Everyday Rails」は本書よりも前から存在していました。しかし、ブログ名を書籍名に含めたことにより、私のこれまでの活動を知らない多くの人たちを混乱させてしまいました。なので、計画がうまく進めば、私のブログと区別しやすい新しいタイトルを付けるつもりです。ただし、名前が変わっても全体的なトピックやアプローチは同じです。Railsアプリケーションを実践的かつ信頼性の高い方法でテストし、既存のアプリケーションにテストを追加するところから始めて、最後にテストファーストに移行します。つまり、本書に新しい名前が付けられるだけです。


三つ目に、すでに英語版を購入してくれた方には無料でアップデート版を提供します。中国語版と日本語版については翻訳者の意向を尊重して何も言いませんが、英語版については以前のバージョンを購入してくれた方全員にアップデート版を提供する予定です。(訳注:日本語版も無料でアップデートします!)


その代わりに、といってはなんですが、私からみなさんにお願いがあります。もしみなさんが「Everyday Rails - RSpecによるRailsテスト入門」をとても役に立つ本だと考えてくれていたら、友人や同僚にそれを教えてあげてください。友人や同僚の人たちも今購入すれば、みなさんと同じように無料でアップデート版を手に入れることができます。


最後に、新しいコンテンツはできれば2017年2月中に公開しようと考えています。それまでに100%完成しているとは断言できません。なぜなら私は本書の執筆中にも普段の仕事をこなしているからです。しかし、それまでにこの内容なら公開しても問題ないと思えるレベルにアップデート版を仕上げるのが、現在の私の目標です。(訳注:日本語版の提供時期は未定ですが、できるだけ早くアップデート版に追従しようと考えています。)


アップデート版の公開までもうしばらくかかりますが、それまでご辛抱いただけるとありがたいです。本の執筆は思ったよりも大変です。既存の技術書を書き直すのはさらに困難が伴います。(ソフトウェアを書き直すプロジェクトに参加したことがあれば、きっと理解してもらえると思います。)何か質問があればコメント欄にコメントをください。もしくは当ブログのナビゲーションバーにあるチャンネルのいずれかを使って、直接連絡してもらっても構いません。(訳注:これは英語版ブログの話です。日本語で問い合わせる場合はTwitter等で翻訳者に連絡してください。)


最新情報があれば、ブログ「Everyday Rails」に投稿していきます。メールで更新を受け取りたい場合は私のニュースレターを購読してください。(訳注:これも英語版ブログの話です。日本語で最新情報を知りたい方はこのブログをチェックしてください。)


いつものことですが、みなさんのサポートには大変感謝しています!本書を最初に公開してからもう5年近く経っているとは自分でも信じられません。たくさんの人たちに支えられて、私は本当に嬉しく思っています。

(翻訳はここまで)

まとめ

というわけで、いよいよEveryday RailsのRails 5 / RSpec 3.5対応が始まります。
上の文中にも書いてあるように、既存の購入者はアップデート版も無料で手に入れられるので、アップデート版の公開を待つ必要はありません。
RSpecでRailsのテストを書けるようになりたいという方は、ぜひ「Everyday Rails - RSpecによるRailsテスト入門」を購入してやってください!


Everyday Rails - RSpecによるRailsテスト入門
f:id:JunichiIto:20161207084257p:plain

「レンジで字が消える!」というYouTube動画を真似した息子がノートを黒焦げにした話(※追記あり)

2016.10.30 追記:おわび

この記事は元々、YouTubeをよく見ているお子さんを持つ保護者のみなさんに向けて、注意喚起をしたいと思って書いた記事でした。
ですが、YouTubeの利用規約には「本サービスは13歳未満の子供による利用を意図していません。あなたが13歳未満の場合、YouTubeウェブサイトを利用しないで下さい。」との記述があります。
お恥ずかしいことに私はこの利用規約をちゃんと確認していませんでした。
利用規約を確認しないまま、子どもにYouTubeを視聴させてしまったことは、私の完全な注意不足でした。
大変申し訳ありませんでした。

また、記事の中で「おそらく動画を投稿した本人たちはそこまでの危険性があるとは自覚していないのでしょうが、もう少し想像力を働かせて上記のような問題点に配慮してほしかったなと思います。」と書きましたが、私もこのブログを公開することで動画を投稿したYouTuberの方と、そのファンのみなさんを深く傷つけてしまうことを想像できていませんでした。
公開後の反響を見て、みなさんの悲しい気持ちや怒りたくなる気持ちを痛感しました。
想像力がないのは私の方だったと思います。
大変申し訳ありませんでした。

他にもこの記事には批判を受けてしかるべき部分がたくさんあると思います。
この記事を読んで不愉快に思われたみなさんには深くお詫びいたします。

ただ、この記事を削除してしまうとオリジナルの内容が不明のまま、ネット上に内容のコピーが散らばってしまうため、「ここがオリジナルである」という証拠として残しておきます。
というわけで、本文はそのまま残しておきますが、この記事を読まれる方は上記のような点をふまえてこの続きを読んでください。

2016年10月30日
伊藤淳一

続きを読む