2017 Software List

By chance, I set up laptop from scratch these days.
While I was setting up, I streamlined setup process.

So, I think this post would be my reminder just in case I set things up again.

Applications

Xcode

I spend most of time in business days on Xcode.

Simplenote

I am texting on Simplenote.

SublimeText

If I have to hack other than iOS things, I usually use SublimeText.
I use vim as well, as secondary editor.

iTerm2

I chose iTerm2 instead of built-in terminal app.

Alfred

better than spotlight.

Skype

communication

Spectacle

shortcut utility tool.

Echofon

Twitter client.

Karabiner

key configurations.

SourceTree

Git GUI tool.

Spotify

Juke box

scripts

I am running bootstrap script.
I decided to adopt third party laptop setup.
Current setup is based on script that thoughtbot made.

Here is how I do

$ cd path-to-dotfiles
$ ./bootstrap.bash

Wrap up

Let’s automate and dive into development immediately.

Swiftをbuildした話

千里の道も一歩から(どこへ向かってるのか?)

Swift1を使う人は多いけど、日常的にSwift(as プログラミング言語)をbuildしている人はおそらく500人以下 (2017/1現在)。

ということなので、とりあえず、ビルドしてみれば何かがわかるかもしれないということでビルドしてみました。

用意

  • Mac OS X Sierra and Xcode 8
  • Python2.x(SystemのものでOK). Python3.xは動かないので注意

あと、

brew install cmake ninja

あとはREADMEに沿って、ビルドして行く。

作業

READMEに書いてあるんですが、まずはroot directoryを作りましょう。

$ mkdir swift-resources

みたいな感じです。この中に大量のリソースがcheckoutされます。

全部うまく行くとこんな感じになるはず

swift-resources
	├── build
	├── clang
	├── cmark
	├── compiler-rt
	├── llbuild
	├── lldb
	├── llvm
	├── swift
	├── swift-corelibs-foundation
	├── swift-corelibs-libdispatch
	├── swift-corelibs-xctest
	├── swift-integration-tests
	├── swift-xcode-playground-support
	└── swiftpm

最終的に自分が実行したコマンドは

$ cd swift
$ utils/build-script -r

です。-rはdebuginfo付きのリリースビルドという意味らしいです。

ビルドすると、上記のようにbuildというディレクトリがswift-resourcesの中に作られます。
もしも、ビルドに失敗した、buildディレクトリを削除してから再コンパイルしましょう。
buildの中にはキャッシュファイルなどがあるので、何回も同じエラーが出てしまうことがあります。

コマンド実行後はじっくり待ちましょう。Machineが貧弱な場合、最悪1時間くらいかかります。2

いよいよ、自前のswiftが完成します。場所はbuild/Ninja-RelWithDebInfoAssert/swift-macosx-x86_64/binというところにあります。

build/Ninja-RelWithDebInfoAssert/swift-macosx-x86_64/bin
	├── Benchmark_DTrace
	├── Benchmark_Driver
	├── Benchmark_GuardMalloc
	├── Benchmark_O
	├── Benchmark_Onone
	├── Benchmark_Ounchecked
	├── Benchmark_RuntimeLeaksRunner
	├── complete-test
	├── lldb-moduleimport-test
	├── sil-func-extractor
	├── sil-nm
	├── sil-opt
	├── sil-passpipeline-dumper
	├── sourcekitd-repl
	├── sourcekitd-test
	├── swift
	├── swift-api-digester
	├── swift-api-dump.py -> path-to/swift-resource/swift/utils/swift-api-dump.py
	├── swift-autolink-extract -> swift
	├── swift-demangle
	├── swift-format -> swift
	├── swift-ide-test
	├── swift-llvm-opt
	├── swift-reflection-dump
	├── swift-reflection-test-macosx-x86_64
	├── swift-remoteast-test
	└── swiftc -> swift

ここにswiftがあるというわけです。
作業的には、ビルドに時間がかかるという以外に特に難しいところはありません。

感想

ビルド時間が長すぎるので、開発するには何らかの自動ビルドは必須だと思われます。リモートでは、swift-ciというのが動いてるっぽい。
次はproject fileをxcodeで開いてみるかな。