MacBook Pro 2017

1. Overview

MacBook Pro 2017 を購入して約 1 ヶ月が経過したので, その使用感を書いておきたくなりました.
ちなみに, 2 台目の Mac で, MacBook Pro を購入するのは初めてです. 以前は, つまり, 最初の Mac は, MacBook Air で 2014 年 3 月 9 日から, 2018 年 5 月 26 日まで, 約 4 年間お世話になりました. 性能や使用感は悪くなかったのですが, SSD 128 GB と容量がかなりきつくなっていたのと, あとは, バッテリーの減りがかなり早くなってきたことが買い替えるきっかけでした.

2 台目の Mac, つまり, MacBook Pro 2017 は, 13 インチのスペースグレイ, Vim を使うので Touch Bar はなし, SSD 256 GB にしました.

2. Feeling of use

2 – 1. CPU

さすがに, MacBook Pro だけあって処理速度は体感できるほど違います. 例えば, Web Audio API で比較的長い楽曲をデコードするのも MacBook Air ではそれなりに時間を要していたのが, 一瞬です.

2 – 2. Display

MacBook Air は Redina ディスプレイではなかったせいか, Retina ディスプレイの MacBook Pro は, 美しい …

2 – 3. Keyboard

MacBook Pro 2017 に買い替える際に, 最も懸念していたのが, バタフライキーボードでした. 最初は, タッチが浅いことに違和感を覚えるかもしれないですが, 慣れると断然使いやすいです. ただ, タッチの音が大きいのは少し気になりますが …

2 – 4. Appearance

はじめは, シルバーを購入しようと思っていたのですが, 売り場でスペースグレイを見て, スペースグレイに即決しました. ずっともっていたくなるようなかっこよさと美しさを兼ね備えています.

3. Built in Apache

これは, MacBook Pro 2017 の問題ではなく, macOS High Sierra の問題なのですが, ビルトインの Apache の設定を少し変える必要がありました (ちょっとしたサンプルコードを動かすときなどは, ビルトインの Apache で動作させるのでよく使っています …).

まずは, Apache の設定です.

$ sudo vim /etc/apache2/httpd.conf

173 – 176 行目がコメントアウトされていたら, コメントを外します

LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php7_module libexec/apache2/libphp7.so

510 行目がコメントアウトされていたら, コメントを外します

Include /private/etc/apache2/extra/httpd-userdir.conf

544 行目がコメントアウトされていたら, コメントを外します

Include /private/etc/apache2/users/*.conf

次に, ユーザーごとの設定です.

$ vim /etc/apache2/users/{ユーザー名}.conf
<Directory /Users/{ユーザー名}/Sites>                                                                                             
    Options Indexes MultiViews FollowSymLinks Includes
    AllowOverride All
    Require all granted
    Order allow,deny
    Allow from all
</Directory>

最後に, Apache を起動します.

$ sudo /usr/sbin/apachectl start

これでブラウザから, http://localhost/~{ユーザー名}/ でアクセスできるようになります.

最後に … High Sierra では, キーチェーンが SSH のパスフレーズを憶えてくれず, 毎回入力しなくてはいけなくてはいけなくめんどくさいので,

$ vim ~/.ssh/config

を作成して,

Host *
  UseKeychain yes
  AddKeysToAgent yes

と入力しておけば, 毎回入力する手間が省けます.

Mac で Internet Explorer or Edge をシミュレートする方法

Modern.IEを利用するのが簡単です. ちなみに, Modern.IEという名前ですが, Edge をシミュレートすることも可能です.

1. Modern.IEにアクセス

2. Virtual machine を選択

Modern.IE
Modern.IE Virtual machine

3. Select platform (VirtualBox) を選択

Modern.IE
Modern.IE Select platform

4. zipファイルをダウンロード

Modern.IE
Modern.IE Download

このzipファイルは容量が大きいので, The Unarchiverなどで解凍します.

5. VirtualBoxを起動し, [ファイル] >> [仮想アプライアンスのインポート] を選択

6. [インポートしたいアプライアンス] で解凍した, ovaファイルを指定

Modern.IE Select ova
Modern.IE Select ova

7. 次に表示されるダイアログで, [インポート] をクリック

Modern.IE
Modern.IE Import

8. インポートが完了すると, VirtualBoxに追加されるので, 起動すればOK !!

Modern.IE
Modern.IE VirtualBox

ちなみに, localhostをブラウズしたい場合は,

$ ifconfig

で, MacのIPアドレスを調べて, URL入力欄に入力すればアクセスできます.

Mac OS X Apache (httpd) が起動しなくなったときの対処法

以下のコマンドを実行します.

$ sudo /usr/sbin/httpd -D FOREGROUND
$ sudo /usr/sbin/apachectl start

もし

No such file or directory: httpd: could not open error log file /private/var/log/apache2/error_log

とエラーが出た場合は

$ mkdir -p /private/var/log/apache2
$ touch /private/var/log/apache2/error_log

を作成しておきます.

$ ps aux | grep httpd

と実行して,

_www               856   0.0  0.1  2478336   4784   ??  S     1:02PM   0:00.01 /usr/sbin/httpd -D FOREGROUND
_www               855   0.0  0.0  2478080   2268   ??  S     1:02PM   0:00.02 /usr/sbin/httpd -D FOREGROUND
_www               853   0.0  0.0  2478080   2260   ??  S     1:02PM   0:00.03 /usr/sbin/httpd -D FOREGROUND
_www               849   0.0  0.1  2478336   5088   ??  S     1:02PM   0:00.04 /usr/sbin/httpd -D FOREGROUND
_www               848   0.0  0.0  2478080   2268   ??  S     1:02PM   0:00.02 /usr/sbin/httpd -D FOREGROUND
_www               847   0.0  0.0  2478336   4152   ??  S     1:02PM   0:00.03 /usr/sbin/httpd -D FOREGROUND
_www               844   0.0  0.1  2478336   5004   ??  S     1:02PM   0:00.09 /usr/sbin/httpd -D FOREGROUND
root               843   0.0  0.1  2478080  10480   ??  Ss    1:02PM   0:00.32 /usr/sbin/httpd -D FOREGROUND
rilakkuma3xjapan   942   0.0  0.0  2432784    604 s000  S+    2:02PM   0:00.00 grep httpd

のように表示されていればOKです.

git tag

タグをつける

$ git tag v0.0.0

リモートリポジトリに反映する

$ git push origin v0.0.0

過去のコミットにタグをつける

$ git tag v0.0.0 [コミットID]

タグをすべてリモートリポジトリに反映する

$ git push origin --tags

タグの削除

$ git tag -d [タグ名]
$ git push origin :[タグ名]

Pull Requestをとりこむ

Pull Requestが送られてきた場合, 「Merge pull request」のボタンで自動的にマージするのは危険です.

Merge pull request
Merge pull request

そこで, 下記のような手順で安全にPull Requestをとりこみます.

1. コードレビュー

2. 受信側のローカルリポジトリを最新にする

$ git clone 受信側のリモートリポジトリ

あるいは,

$ git pull 受信側のリモートリポジトリ

3. 送信側のリモートリポジトリを取得する

$ git remote add PR送信者 PR送信者のリモートリポジトリ

4. マージ用のブランチを作成

$ git checkout -b pr1

5. マージする

$ git merge PR送信者/ブランチ名

6. 動作を確認する (問題があれば以降の手順はおこなわない)

7. メインのブランチにマージする

$ git checkout master
$ git merge pr1

8. 変更をpushする

$ git push

git stash pop でコンフリクトが発生した場合の解決方法

手動マージ

マーキングされた部分を手動で修正する方法です.

++<<<<<<< Updated upstream
// 現在のコミット
++=======
// コンクリフトした内容
++>>>>>>> Stashed changes

git checkout

現在のコミットにする場合

$ git checkout --ours .

checkoutを実行後, コンフリクトを解決するためにgit addが必要となります.

stashにする場合

$ git checkout --theirs .

checkoutを実行後, コンフリクトを解決するためにgit addが必要となります.

git stash

HEADと作業ディレクトリに差異がある場合 (つまり, 作業中の場合), ブランチの切り替えやgit rebaseなどはできません.

そういった一時的に作業内容をのけておく (スタックに積んでおく) ためにあるのが, git stashです

$ git stash

これで, 作業内容を保存し, 作業ディレクトリとインデックスをHEADと同じ状態にしたので, ブランチの切り替えやgit rebaseが可能になります.

また, 作業内容を復元するには,

$ git stash pop

とします.

ちなみに, 複数git stashしている場合は以下のように指定することで, ターゲットとなる内容を復元することができます

$ git stash list
stash@{0}: WIP on master: 4e99baf Commit Gruntfile.js
stash@{1}: WIP on gh-pages: 2efe8bc Add section for installation
....

$ git stash pop stash@{1}

ちなみに, git stash popは,

$ git stash pop stash@{0}

と等価です.

参考 : git stash 使い方

git reset のオプション

git reset のオプションでよく利用するものとしては,

  • –hard オプション
  • –mixed オプション (もしくは, オプションを指定しない)
  • –soft オプション

の3つがあります.

例えば, HEADの1つ前を対象に戻したい場合,

オプション 作業ディレクトリ インデックス コミット
$ git reset –hard HEAD~ HEAD~に戻る HEAD~に戻る HEAD~に戻る
$ git reset (–mixed) HEAD~ そのまま HEAD~に戻る HEAD~に戻る
$ git reset –soft HEAD~ そのまま そのまま HEAD~に戻る

git commit –amendの取り消し

git commit –amendでviエディタを起動してしまうと, そのまま終了してもコミットされてしまいます.

その状態で,

$ git reset --soft HEAD@{1}

とすれば, ヘッドの内容 (コミット) だけを直前の状態に戻すこと = git commit –amendを取り消すことが可能です.

ちなみに,

$ git reflog
2efe8bc HEAD@{0}: checkout: moving from master to gh-pages
4e99baf HEAD@{1}: checkout: moving from gh-pages to master
2efe8bc HEAD@{2}: checkout: moving from master to gh-pages
4e99baf HEAD@{3}: checkout: moving from gh-pages to master
2efe8bc HEAD@{4}: checkout: moving from master to gh-pages
4e99baf HEAD@{5}: checkout: moving from gh-pages to master
...

これで指定するコミットの内容のリストを表示できます.

GitHub SSH公開鍵の登録

1. 秘密鍵・公開鍵のペアを作成

$ ssh-keygen
  • 鍵を保存するディレクトリ (Mac だと, /Users/ユーザー名/.ssh/id_rsa)
  • パスフレーズ (+ パスフレーズ確認)

以上の入力をします.

2. GitHubに公開鍵を登録する

作成した公開鍵 (id_rsa.pub) の内容をGitHubに登録します.

まずは, 公開鍵の内容をコピペするために, クリップボードにコピーします. (~/.ssh/id_rsa.pubの部分は鍵を作成したときのディレクトリに読み替えてください)

$ pbcopy < ~/.ssh/id_rsa.pub

GitHubに公開鍵を登録します. GitHubのProfileページからSSH keysのメニューを選択します.

GitHub Profile
GitHub Profile

Add SSH keyボタンをクリックします.

GitHub Profile SSH keys
GitHub Profile SSH keys

Titleには公開鍵のための任意の名称を入力します (MacBook Airなど). Keyのテキストエリアに先ほどクリップボードにコピーした公開鍵の内容をペーストします. 最後に, Add keyボタンをクリックすれば完了です.

GitHub Profile SSH keys Add key
GitHub Profile SSH keys Add key

3. SSH接続

$ ssh -T git@github.com

秘密鍵・公開鍵を作成したときに設定したパスフレーズを入力すれば接続できて, 以下のようなメッセージが表示されます.

Hi username! You've successfully authenticated, but GitHub does not provide shell access.