新型 MacBook Pro を買った

家で使っている MacBook Proカーネルパニックを頻繁するようになり、開発どころかネットを見ることですら支障をきたすようになった。一度、初期状態に戻してみたけど、改善しない。これは寿命が来たのだろうか。購入してから 4年以上は立つからなぁ。

Apple Care はとっくの昔に切れたし、ちょうど新型 MacBook Pro も発売されたので、思い切って買い替えることにした。

購入したのは新型 MacBook Pro 13インチ TouchBar モデル。SSD が 512GB のやつをカスタマイズして、メモリを 16GB に増やした。それで予算オーバーになったので CPU は据え置き。

www.apple.com

注文してから待つこと2週間。ようやく届いた。

開封の儀。

まず最初に、本体の薄さと軽さに驚いた。前の MacBook Pro は 13 インチとは言え、とても持って歩きたいとは思えない重量だったのに対し、新しい MacBook Pro は鞄に入れて毎日通勤しても問題無いレベル。実際にはやらないけど。

次に Retina ディスプレイの解像度の高さにビビった。じつは初 Retina。 良さはさんざん聞かされたけど、ここまで美麗だったなんて。 そんな Retina ディスプレイになって嬉しいのは、もう iOS シミュレーターのサイズを半分に設定しなくて済むことだったりするのだけども。

SSD かつ、メモリを 16GB に増量したおかげで、なにもかもが爆速に感じる。そういえば SSD も初体験。2016 年も終わりになってようやくとは、エンジニアの端くれとして情けない気もするが、だって金ないねん…。Safari がキビキビ動くのは当然として、前のマシンでは動作が非常にもっさりしていた SoureTree でさえも、まるで違うアプリのようにサクサク動く。これが金の弾丸か!動作が重いアプリの代表格である IDE はまだインストールできていないが、Visual Studio for Mac なんかは前のマシンの時とは比べ物にならないくらい機敏な動作になるのではと期待している。

あと、自分はファンクションキーをほとんど使わない人間だったので、1日触ったぐらいでは TouchBar に変わったことによる影響は感じられなかった。ただ、タッチタイピングしていると、ほとんど TouchBar を見ないような。視界の下で表示がなんか切り替わっているな、というのは認識しているけど、わざわざ視線を下に移動しないな。自分の場合は。

.NET Core で開発する環境を MacBook Pro に構築

.NET Core と ASP.NET Core が RTM になった。 RTM になったら本気出す、って言ったので行動しないといけないな。 有限実行。 まずは家の MacBook Pro で、開発環境を作り直すところから始めよう。

まずは Homebrew で OpenSSL の最新版を先にインストールしておく。

$ brew update
$ brew install openssl
$ brew link --force openssl

.NET Core の公式サイトから、Mac 用のインストーラーをダウンロードして実行。

Get Started with .NET Core

これだけで、エディタと dotnet コマンドを使って開発できるようにはなった。

ただ、Hello World に毛が生えたような超単純なアプリならともかく、ちょっと規模の大きいアプリを作るとなると、 これだけではツライ。 特に ASP.NET Core で Identity を使うとき、 認証周りの定型コードを自分で書くとか面倒この上ない。

Visual Studio でプロジェクトを新規作成するときみたいに、テンプレートからプロジェクトを生成できるようにしたい。 そこで yo の出番。

yo を動かすためには Node が必要なので、Node から順にインストールする。 あと ASP.NET Core プロジェクトを作成するためのテンプレートも。

$ brew install node
$ npm install -g yo
$ npm install -g bower
$ npm install -g generator-aspnet

これでテンプレートから、.NET Core や ASP.NET Core のプロジェクトを作成できるようになった。

試しに、Identity を使った認証付きの ASP.NET Core プロジェクトを作成してみる。

$ yo aspnet

     _-----_     ╭──────────────────────────╮
    |       |    │      Welcome to the      │
    |--(o)--|    │  marvellous ASP.NET Core │
   `---------´   │        generator!        │
    ( _´U`_ )    ╰──────────────────────────╯
    /___A___\   /
     |  ~  |
   __'.___.'__
 ´   `  |° ´ Y `

? What type of application do you want to create? Web Application
? Which UI framework would you like to use? Bootstrap (3.3.6)
? What's the name of your ASP.NET application? HelloAspNetCore

Nuget のパッケージをインストールして、SQLite のデータベースを作ってから、アプリ実行。

$ cd HelloAspNetCore
$ dotnet restore
$ dotnet ef database udpate
$ dotnet run

Safarilocalhost:5000 にアクセスすると、ASP.NET Core MVC おなじみのページが表示された。 ユーザー登録とログインもちゃんとできる。

f:id:griefworker:20160721230204p:plain

作りたいアプリのアイデアはいくつかあるので、 それが .NET Core + ASP.NET Core で実現できるか、 これから調べていこうと思う。

Mac OS X に ASP.NET 5 開発環境を構築

はじめに

そろそろ自宅の MacBook Pro にも ASP.NET 5 の開発環境を作るとしよう。

.NET Version Manager (DNVM) をインストール

Homebrew を使ってインストールする。

brew tap aspnet/dnx
brew update
brew install dnvm

Zsh の設定に追加して、dnvm コマンドが使えるようにしておく。

echo "source dnvm.sh" > ~/.zshrc
source ~/.zshrc

.NET Execution Environment (DNX) をインストール

ランタイムは CoreCLR で。

# プレビュー版の CoreCLR を試してみる
dnvm upgrade -r coreclr

ASP.NET 5 プロジェクトの雛形を生成できるようにする

npm で yo と generator-aspnet をインストールすれば、 プロジェクトの雛形が生成できるようになる。

# Node を入れてなければインストール
brew install node

# Yeoman は deprecated みたいなので個別にインストール
npm install -g yo bower grunt-cli generator-aspnet

あと、bowser と grunt もついでにインストール。 grunt じゃなくて glup でもよかったかも。

ASP.NET 5 プロジェクトを新規作成

yo aspnet

を実行するとプロジェクトの雛型が生成される。 Dockerfile まであるね。

f:id:griefworker:20151019064355p:plain

Startup.cs の中身はこんな感じ

これが最小の ASP.NET 5 アプリケーション。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;
using Microsoft.Framework.DependencyInjection;

namespace HelloAspNet
{
    public class Startup
    {
        // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        public void Configure(IApplicationBuilder app)
        {
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }
}

ASP.NET 5 アプリを実行してみる

cd HelloAspNet
dnu restore
dnu build
dnx kestrel # または dnx web

ブラウザで表示させてみる

Safari を起動して、localhost:5000 にアクセスすると

f:id:griefworker:20151019064438p:plain

ちゃんと表示されてるね。

まとめ

Mac OS XASP.NET 5 の開発環境作れたんで、 クロスプラットフォームな Web アプリを何か作りたい。

Launchpad に勝手に追加された Chrome アプリを削除

Launchpad に Chrome アプリが勝手に追加されてうざかったので、 下記のフォルダを削除したら表示されなくなった。

Macintosh HD/ユーザ/<ユーザー名>/アプリケーション/Chrome アプリ

Launchpad に表示されなくなるだけで、Chrome アプリ自体が削除されるわけじゃないから、フォルダを削除しても実害なし。

SourceKitService が頻繁にクラッシュする

OS X Yosemite + Xcode 6 の環境にアップグレードしてからというもの、Xcode でコード書いていると SourceKitService Crashed や SourceKitService Terminated が頻繁に発生するようになった。

ネットで調べると同じ問題に遭遇した人は多いみたいで、stackoverflow に投稿を見つけた。

いくつか回答があるが、どうやら DerivedData を削除することで改善したらしい。

試しに

$ rm -rf ~/Library/Developer/Xcode/DerivedData

で削除してみたところ、確かに SourceKitService Crashed は発生しなくなった。 今のところは、だけど。

Pow をアンインストール

だいぶ前に、マルチテナントの Rails アプリをテストするために Pow を導入した。

便利に使っていたけど、もう用済みになったのでアンインストール。

$ curl get.pow.cx/uninstall.sh | sh

Pow は Mac 以外で使えないのがもったいない。 Node ではなく Go で作られていたら Windows でも使えたりしたかもな。

Control + Space で Spotlight ではなく Alfred の検索フィールドを表示する方法

Control + Space は Spotlight の検索フィールドを表示するショートカットキーだけど、今は Alfred をメインに使っているから Alfred 表示したい。

違うショートカットキーを覚えるのはだるいので、Alfred が表示されるように設定してみた。MacBook を移行したときのために、やり方をメモしておく。

まずシステム環境設定のキーボードを開き、ショートカットを選択。Spotlight のショートカットを無効にする。

f:id:griefworker:20140821053018p:plain

そして、Alfred Preferences でショートカットに Control + Space を設定。

f:id:griefworker:20140821053030p:plain

Control + Space で Alfred が表示されるようになって、いろいろ捗る。