Parallels Desktop 11 for Mac の Ubuntu 15.10 上で Swift をビルド、example のコンパイル、GitHub にある Apple のリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集を紹介。

以前の書き込みから随分経ってしまいました。新年を跨ぎましたが、今年も宜しくお願いします。

Swift.org - Welcome to Swift.org
https://swift.org/

Swiftオープンソースとして公開されてから、2ヶ月程経ちました。コンパイラの仕組みについては、以前から興味があったのでビルドに挑戦してみました。ただし、OS X 側の環境を汚したくないので、Parallels Desktop 11 for Mac の仮想環境で Ubuntu 15.10 をインストールして Swift をビルドしてみました。swift-package-manager を使った example のコンパイルGitHub にある Appleリポジトリを全てダウンロードするスクリプトとコマンド git の補助スクリプト集を紹介したいと思います。

最初に自作スクリプトを下記URL で公開しておきます。詳細は、アーカイブに含まれる ReadMe.rtfd ファイルとブログの後半を参考にしてください。

GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集。
http://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip

Parallels Desktop 11 for MacUbuntu 15.10 の仮想環境を作成。

まず、最初に Linux ディストリビューションUbuntu 15.10 をダウンロードする必要があります。

The leading OS for PC, tablet, phone and cloud | Ubuntu
http://www.ubuntu.com/
Download Ubuntu Desktop | Download | Ubuntu
http://www.ubuntu.com/download/desktop

上記 URL から (ここでは、英語版での解説になります。)

Ubuntu 15.10
64-bit

‘ダウンロード’ ボタンをクリックして、ファイル ubuntu-15.10-desktop-amd64.iso をダウンロードしてください。

Parallels Desktop 11 for Mac を起動し、メニュー/ファイル/新規… を選び、イメージファイルとして ubuntu-15.10-desktop-amd64.iso を選択してインストールしてください。

インストールに成功したら、Ubuntu 15.10 を Software Updater で最新の状態にしてください。

Ubuntu 15.10 上で swift コマンドを実行できる環境を作成。

次に Ubuntu 上で swift コマンドを実行できる環境を作成します。詳しい解説は、

Swift.org - Download Swift
https://swift.org/download/
Linux
https://swift.org/download/#linux

を参照してください。上記 URL の

Latest Development Snapshots
Linux	Ubuntu 15.10 Swift 2.2 Snapshot (Signature) January 11, 2016

から Ubuntu 15.10 Swift 2.2 Snapshot のリンクを Ubuntu 15.10 上の Firefox などのウェブブラウザでクリックして、ファイル swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz をダウンロードしてください。さらに (Signature) のリンクをクリックして swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig ファイルもダウンロードしてください。Signature ファイルはダウンロードしたファイルが改変されていないか検証するために使います。

(最新の Snapshot をダウンロードしてください。2016/01/17(Sun) 現在、Ubuntu 15.10 Swift 2.2 Snapshot (Signature) January 11, 2016 が最新です。)

Ubuntu 上で Terminal を起動し、

~ $ sudo apt-get install clang libicu-dev
~ $ 

で必要なパッケージをインストールします。

~ $ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -

上記コマンドで公開鍵をインポートします。これは、1回だけ実行すれば良いようです。

swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz
SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig

先ほどダウンロードした上記2つのファイルをデスクトップに移動します。

~/Desktop $ gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift

上のコマンドを実行した後、

~/Desktop $ gpg --verify swift-<VERSION>-<PLATFORM>.tar.gz.sig

ダウンロードしたアーカイブが改変されていないか上記コマンドで検証します。ここでは、

~/Desktop $ gpg --verify swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig
gpg: assuming signed data in `swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz'
gpg: Signature made Tue 12 Jan 2016 10:02:41 AM JST using RSA key ID xxxxxxxx
gpg: Good signature from "Swift Automatic Signing Key #1 <swift-infrastructure@swift.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
~/Desktop $ 

上記コマンド gpg –verify swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz.sig になります。gpg: Good signature と表示されれば良いようです。ただし、警告が表示されています。どこか間違っているのかもしれません。

~/Desktop $ tar xzf swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz

コマンド tar を使って上記のように swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10.tar.gz を展開します。

swift コマンドのパスを環境変数 PATH に設定します。ホームディレクトリの .profile ファイルは、.bashrc ファイルを読み込んでいます。.bashrc ファイルの最後に

export PATH=$HOME/Desktop/swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu15.10/usr/bin:"${PATH}"

emacsvim、vi などのエディタを使って追加します。Terminal を再起動し、

~ $ swift --version
Swift version 2.2-dev (LLVM 3ebdbb2c7e, Clang f66c5bb67b, Swift 42591f7cba)
Target: x86_64-unknown-linux-gnu
~ $

上記のように swift コマンドで実行できるか確認できます。

swift-package-manager を使った example のコンパイル

Apple · GitHub
https://github.com/apple/
GitHub - apple/example-package-dealer: Example package for use with the Swift Package Manager
https://github.com/apple/example-package-dealer

上記の example の大元は example-package-dealer です。依存関係はパッケージマネージャーが面倒を見てくれます。

~/Desktop $ git clone https://github.com/apple/example-package-dealer.git
Cloning into 'example-package-dealer'...
remote: Counting objects: 18, done.
Unpacking objects: 100% (18/18), done.
remote: Total 18 (delta 0), reused 0 (delta 0), pack-reused 18
Checking connectivity... done.

上記のように git clone コマンドで example-package-dealer リポジトリをダウンロードし、

~/Desktop $ cd example-package-dealer/
~/Desktop/example-package-dealer $ swift build
Cloning https://github.com/apple/example-package-deckofplayingcards.git
Using version 1.0.2 of package example-package-deckofplayingcards
Cloning https://github.com/apple/example-package-fisheryates.git
Using version 1.0.2 of package example-package-fisheryates
Cloning https://github.com/apple/example-package-playingcard.git
Using version 1.0.1 of package example-package-playingcard
Compiling Swift Module 'FisherYates' (1 sources)
Linking Library:  .build/debug/FisherYates.a
Compiling Swift Module 'PlayingCard' (3 sources)
Linking Library:  .build/debug/PlayingCard.a
Compiling Swift Module 'DeckOfPlayingCards' (1 sources)
Linking Library:  .build/debug/DeckOfPlayingCards.a
Compiling Swift Module 'Dealer' (1 sources)
Linking Executable:  .build/debug/Dealer
~/Desktop/example-package-dealer $ 

example-package-dealer ディレクトリに移動した後、 上記のように swift build コマンドを実行します。

実行ファイルは .build/debug に作成されます。

~/Desktop/example-package-dealer $ cd .build/debug
~/Desktop/example-package-dealer/.build/debug $ ./Dealer
♠︎Q
♣︎3
♠︎8
♢4
♣︎Q
♢6
♢J
♡2
♡5
♠︎J
~/Desktop/example-package-dealer/.build/debug $ 

上記が実行結果です。

Ubuntu 15.10 上で swift コマンドをビルドする。

Ubuntu 15.10 上で Terminal を起動し、

~ $ sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config

を実行してください。

Apple · GitHub
https://github.com/apple/
GitHub - apple/swift: The Swift Programming Language
https://github.com/apple/swift

から Swiftリポジトリを Ubuntu15.10 デスクトップ上の Apple という名前のフォルダに

~ $ cd Desktop/
~/Desktop $ mkdir Apple
~/Desktop $ cd Apple/
~/Desktop/Apple $ git clone https://github.com/apple/swift.git
Cloning into 'swift'...
remote: Counting objects: 324410, done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 324410 (delta 62), reused 0 (delta 0), pack-reused 324254
Receiving objects: 100% (324410/324410), 68.43 MiB | 5.43 MiB/s, done.
Resolving deltas: 100% (265946/265946), done.
Checking connectivity... done.
~/Desktop/Apple $ ls
swift
~/Desktop/Apple $

上記コマンド git clone https://github.com/apple/swift.git を使ってダウンロードします。

Swift のビルドの仕方の詳細は、

~/Desktop/Apple/swift/README.md

に書いてあります。(後で、AppleGitHub 上のリポジトリを全てダウンロードするスクリプトを紹介します。そのスクリプトOS X 上で実行し、Finder 上で Apple/swift/README.md ファイルをダブルクリックすると Xcode で Markdown 形式のファイルを見ることができます。)

追記) 2016/03/09(Wed)
Markdown 記法ファイルの表示、編集には下記 URL の Atom エディタを使うのが一番簡単です。

Atom
https://atom.io/

Markdown の表示は、Markdown ファイルを開き、

ショートカットキー: ctrl-shift-M
コマンド: Markdown Preview:Toggle

で表示できます。

Split Pane だと扱いにくいので
Settings/Packages の Package: markdown-preview をクリックして、設定画面を表示し、Open Preview In Split Pane のチェックを外してください。別 Pane に表示されるようになります。

~/Desktop/Apple $ cd swift
~/Desktop/Apple/swift $ ./utils/update-checkout --clone
--- Cloning 'cmark' ---
--- Cloning 'lldb' ---
--- Cloning 'llvm' ---
--- Cloning 'swift-corelibs-xctest' ---
--- Cloning 'swift-integration-tests' ---
--- Cloning 'swiftpm' ---
--- Cloning 'swift-corelibs-foundation' ---
--- Cloning 'clang' ---
--- Cloning 'llbuild' ---
~/Desktop/Apple/swift $ 

上記コマンド ./utils/update-checkout –clone を使って必要なパッケージをダウンロードします。(swift フォルダではなく、Apple フォルダに保存されので注意してください。)

最後に ./utils/build-scrip スクリプトを実行して swift コマンドをビルドします。引数 -R を指定しない限り debug モードでビルドされます。引数 -R の場合 release モードになります。引数 -t は Ninja による基本的なテストを行います。

詳しい解説は

~/Desktop/Apple/swift $ ./utils/build-script -h

を参照してください。環境変数 SWIFT_SOURCE_ROOT(ソースの位置)、SWIFT_BUILD_ROOT(swift が作成される位置) を設定できます。設定されていない場合、推論されます。

実際に ./utils/build-script -t でビルドすると

~/Desktop/Apple/swift $ ./utils/build-script -t
.
.
libLLVMSupport.a -lrt -ldl -ltinfo -lpthread -lm -Wl,-rpath,"\$ORIGIN/../lib" && :
clang: error: unable to execute command: Killed
clang: error: linker command failed due to signal (use -v to see invocation)
[1121/1984] Linking CXX executable bin/llvm-ar
ninja: build stopped: subcommand failed.
./utils/build-script: command terminated with a non-zero exit status 1, aborting
~/Desktop/Apple/swift $ 

上記エラーによりビルドに失敗します。メモリが足りないと表示されるようです。

図 1) 構成…/ハードウェア/CPU および メモリ

Parallels Desktop 上で、メニュー/処理/構成… を選び 、’ハードウェア’ タブを選択し、上図のように Ubuntu 側のメモリを 8192MB に変更します。

また、メモリを節約する意味で、引数 -j 1 を指定して、ビルドプロセスを1つにします。最終的に

~/Desktop/Apple/swift $  time ./utils/build-script -j 1 -t

上のコマンドを実行します。(time コマンドはビルド時間を計測してくれます。)

私の MacBook Pro の動作環境は

OS X El Capitan バージョン 10.11.3
MacBook Pro (Retina, 15-inch, Late 2013)
プロセッサ 2.3GHz Intel Core i7
メモリ 16GB 1600 MHz DDR3
グラフィクス
Intel Iris Pro 1536 MB
NVIDIA GeForce GT 750M
Parallels Desktop 11 for Mac
バージョン 11.1.2 (32408)
~/Desktop/Apple/swift $  time ./utils/build-script -j 1 -t
-- check-swift-linux-x86_64 finished --
--- Finished tests for swift ---
real	108m35.712s
user	112m17.964s
sys	4m48.860s
~/Desktop/Apple/swift $ 

です。上記のように time コマンドで確認するとビルドに1時間40分ほどかかりました。

ビルドした swift コマンドの位置は、

~/Desktop/Apple/build/Ninja-DebugAssert/swift-linux-x86_64/bin/swift

にあります。

最後にOS X 上で使用する自作スクリプトを紹介したいと思います。

GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集。

GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプトhttp://kyoshiaki.sakura.ne.jp/osx/Sample/Apple.zip

上記 URL で GitHub にある Appleリポジトリを全てダウンロードする自作スクリプトとコマンド git の補助スクリプト集を公開します。

ダウンロードした Apple.zip をデスクトップに移動し、Finder 上でダブルクリックして展開します。コマンド install.sh を

~/Desktop/Apple $ ./install.sh
Cloning into 'swift'...
Cloning into 'swift-package-manager'...
.
.
~/Desktop/Apple $ 

上記のように実行すると、GitHub にある Appleリポジトリを全てダウンロードします。すべてのリポジトリを最新の状態にアップデートしたい場合は update.sh を使用します。

~/Desktop/Apple $ ./log.rb
0: example-package-dealer
1: example-package-deckofplayingcards
2: example-package-fisheryates
3: example-package-playingcard
4: swift
5: swift-3-api-guidelines-review
6: swift-clang
7: swift-cmark
8: swift-corelibs-foundation
9: swift-corelibs-libdispatch
10: swift-corelibs-xctest
11: swift-evolution
12: swift-integration-tests
13: swift-llbuild
14: swift-lldb
15: swift-llvm
16: swift-package-manager
?
4

上記のように log.rb を実行するとリポジトリ一覧を表示し、番号を入力することで選択したリポジトリのコミットログを表示することができます。次ページを見るには、スペースキーを押してください。カーソル上下キーでもスクロールできます。終了するには、q キーを押してください。その他のスクリプトは、Apple/Dcuments フォルダの ReadMe.rtfd を参照してください。

OS X 10.9 Mavericks 上での Go インストール方法。CotEditor 用 Go 言語シンタックスカラーリング定義ファイル Go.plist と Go で作った初めてのプログラム zlist.go 公開。

iPhone 6、iPhone 6 Plus が発売され、10月16日10時 (現地時間) のスペシャルイベントでは、新型iPadMacOS X Yosemite も発表されました。特に、27 インチ iMac Retina 5K ディスプレイモデルは、15インチMacBook Pro Retina ディスプレイモデルを所有していなかったら、すぐにでも手に入れたいですね!

OS X 10.10 Yosemite も、早速 MacBook Pro Retina にインストールしました。ただし、残り1分の表示から1時間かかりました。Homebrew などで /usr/local にデータをインストールしていると残り1分の表示から1、2時間かかるようです。

もうすぐ iOS 8.1 も公開されます。拙作 iYKRSS は、iPhone 6、 iPhone 6 Plus に対応する予定です。しばらくお待ちください。

Docker - Build, Ship, and Run Any App, Anywhere
https://www.docker.com/

Linux コンテナ管理ソフトウェア Docker の開発に使用されているプログラミング言語 Go に以前から興味を持っていました。

Amazon で洋書を探してみると

Programming in Go: Creating Applications for the 21st Century (Developer's Library)

Programming in Go: Creating Applications for the 21st Century (Developer’s Library)

  • 作者: Mark Summerfield
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2012/05/04
  • メディア: ペーパーバック
  • クリック: 1回
  • この商品を含むブログを見る
Programming in Go: Creating Applications for the 21st Century (Developer's Library) [Kindle Edition]
Mark Summerfield (Author)

上記本が良さそうなので購入してみました。読み終えた感想は、struct フィールドの tags 利用方法、defer の解説など説明不足のところもあります。結局、

Documentation - The Go Programming Language
http://golang.org/doc/
References

を参照したり、Go のパッケージソースを参考にしました。

Mac に Go をインストール方法は、2通りあります。(残念ながら OS X 10.9 Mavericks 上での説明になります。)

最初は、

Homebrew — The missing package manager for OS X
http://brew.sh/

Homebrew を使って、

$ brew install go	

上記コマンドを実行してインストールする方法です。

.bash_profile ファイル

export GOPATH=$HOME/go
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

に上記内容を追加してください。

$GOPATH は、

~ $ go get -u github.com/jessevdk/go-flags

上記コマンド go get を使って、github にあるパッケージをインストールするフォルダを指定するのに使います。この場合 go-flags パッケージを $GOPATH にインストールしています。go-flags を利用するには、ソースに

import (
"github.com/jessevdk/go-flags"
)

上記のように import 宣言する必要があります。

後、コマンド godoc をインストールするには mercurial が必要なので

~ $ brew install hg

上記コマンドで hg をインストールしてください。

~ $ go get code.google.com/p/go.tools/cmd/godoc

上のコマンドを実行すると $GOROOT/bin に godoc コマンドがインストールされます。godoc の使い方は

~ $ godoc fmt

この場合は fmt パッケージのドキュメントが表示されます。Safari などでドキュメントを見たい場合は、

~ $ godoc -http=:8080

上記コマンドを実行し、Safarihttp://localhost:8080 にアクセスしてください。

コマンド vet は

~ $ go get code.google.com/p/go.tools/cmd/vet

上記のようにインストールしてください。

$ go vet zlist.go

vet 単独コマンドではなく、上記のように利用してください。

基本的に Go では import するパッケージは $GOPATH/src に置くことになります。

export GOPATH=$HOME/go:$HOME/Desktop/Book\ Sample/goeg

のように : で分けて複数のパスを宣言することもできます。

export GOPATH=path

なら

path/ + src/ + shaper1/   + shape1.go
|            |
|            + shapes/        + shapes.go
|
+ safemap/   + safemap.go 

main プログラム shape1.go から shapes/shapes.go、safemap/safemap.go パッケージを利用するには

import (
"shaper1/shapes"
"safemap"
)

と宣言する必要があります。もちろん、main プログラムが $GOPATH 以外にあるときもパッケージを利用するには、上記のように宣言します。

もう一つの Go のインストール方法は、

Getting Started - The Go Programming Language
http://golang.org/doc/install

を参考に

Downloads - The Go Programming Language
https://golang.org/dl/

から、

go1.3.3.darwin-amd64-osx10.8.tar.gz	Archive	OS X 10.8+	64-bit
go1.3.3.darwin-amd64-osx10.8.pkg	Installer	OS X 10.8+	64-bit

上記バイナリパッケージ、どちらかをダウンロードし、

go1.3.3.darwinamd64-osx10.8.tar.gz の場合、ターミナルで

~ $ tar -C /usr/local -xzf ~/Downloads/go1.3.1.darwin-amd64-osx10.8.tar.gz 

上記コマンドを実行してインストールしてください。

go1.3.3.darwin-amd64-osx10.8.pkg	Installer	OS X 10.8+	64-bit

go1.3.3.darwinamd64-osx10.8.pkg の場合は、Finder 上でダブルクリックしてインストールしてください。

.bash_profile に

export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin

を設定してください。バイナリパッケージは /usr/local/go にインストールされます。

Go についての感想は、すべてのオブジェクトを interface{} で表したり、クラスや継承がサポートされなかったり、また、ソースや Reference の読み方に慣れるまで苦労しました。

struct フィールドの tags の理解するのにパッケージソースを参考にしました。パッケージのソースは $GOROOT/src/pkg にあります。

tags の理解には、$GOROOT/src/pkg/reflect/type.go の

763行目
func (tag StructTag) Get(key string) string {

が参考になります。

peco/peco · GitHub
https://github.com/peco/peco
Bash - pecoの基礎の基礎 - Qiita
http://qiita.com/xtetsuji/items/05f6f4c1b17854cdd75b

上記サイトも Go プログラミングがどんなものか理解するのに役立ちました。

Go のパッケージソースにメモを付けたいので、必要なソースを PDF 化する時に CotEditor

CotEditor -Text Editor for OS X
http://coteditor.github.io/

を利用しました。PDF 書類にメモを書き込むには、Apple 純正の ‘プレビュー’ を使っています。Go の文法をハイライトするために、Go のシンタックスを色分けするシンタックスカラーリング定義ファイル Go.plist を作成しました。Go で初めて作ったプログラム zlist.go と一緒に下記 URL

CotEditor 用の Go 言語シンタックスカラーリング定義ファイル Go.plist と
Go で作った初めてのプログラム zlist.go 公開。
http://kyoshiaki.sakura.ne.jp/osx/Sample/go_example.zip

で公開します。メニュー/CotEditor/環境設定の ‘フォーマット’ タブで

上図のようにウインドウ一番下、中央のギアアイコンから、’読み込み…’ を選択し、上記 URL に含まれる Go.plist を選んでください。

シンタックスカラーを Xcode に近づけるため

上図のようにシンタックスカラーリングを変更すると見やすくなります。

いろいろなテキストエディタシンタックスカラーリングファイルは

$GOROOT/misc

にあります。

以前は、ソースの PDF 化には、mi

mi - テキストエディタ
http://www.mimikaki.net/

を使っていたのですが、デフォルトのシンタックスカラーリング対応言語が少ないのであきらめました。また、Mac App Store から Jedit X Plus を購入して使用しているのですが、’メニュー/ファイル/ページ設定…’ で拡大縮小を設定し、’メニュー/ファイル/プリントで PDF 化する’ を選択すると、ページごとに縮小してしまい、思ったように縮小してくれません。その点、CotEditor は、全体を問題なく縮小してくれます。

シンタックスカラーリング作成には Kate の go.xml が参考にしやすいです。XcodeVim、Kate などいろいろ試しましたが、PDF 化には CotEditor が一番使いやすいです。

Xcode の場合、

$GOROOT/misc/xcode/4/go4xcode.sh

を実行すれば良いのですが、Mac App Store から Xcode をダウンロードした場合、Xcode の所有権が root になっています。Homebrew を使って Go をインストールした場合は、go4xcode.sh ファイルの先頭、 set -e の後に

GOROOT=/usr/local/opt/go/libexec

を追加し、また、バイナリパッケージを使ってインストールした場合は、

GOROOT=/usr/local/go

を追加してください。その後、下記のように sudo ./go4xcode.sh を実行してください。

~ $ cd $GOROOT/misc/xcode/4
/usr/local/opt/go/libexec/misc/xcode/4 $ sudo ./go4xcode.sh
Password:
Backing up plugindata file (copied to DVTFoundation.xcplugindata.bak).
Adding Go language specification entry.
Installing Go language specification file for Xcode.
Run 'sudo rm -rf /var/folders/*' and restart Xcode to update change immediately.
Syntax coloring must be manually selected from the Editor - Syntax Coloring menu in Xcode.
/usr/local/opt/go/libexec/misc/xcode/4 $ 

上記説明にあるように、

/usr/local/opt/go/libexec/misc/xcode/4 $ sudo rm -rf /var/folders/*

を実行し、Xcode を起動します。
Xcode で Go のソースファイルを開いた後、メニュー/Editor/Syntax Color/Go を選ぶとシンタックスがカラーリングされます。Go ファイルを開いても自動でカラーリングされないので注意してください。

Vim の場合、

macvim - Vim for the Mac - Google Project Hosting
https://code.google.com/p/macvim/

ターミナル上で vim を使用するのも良いのですが、折角なので、上記 URL から MacVim をダウンロードしました。設定は共通のようです。

インストールされた Go の

$GOROOT/misc/vim/syntax/go.vim 

にある go.vim

~/.vim/ftdetect/go.vim:

にコピーするとシンタクスカラーリングされます。

しかし、Vim には、プラグイン管理ツール neobundle.vim があるので、こちらを利用する方がお勧めです。

Shougo/neobundle.vim · GitHub
https://github.com/Shougo/neobundle.vim

インストールするには

~ $ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh

を実行し、スクリプトを実行すると下記内容

Please write NeoBundle initial setting to your vimrc path ...
"NeoBundle Scripts-----------------------------
if has('vim_starting')
set nocompatible               " Be iMproved
" Required:
set runtimepath+=/Users/yoshiaki/.vim/bundle/neobundle.vim/
endif
" Required:
call neobundle#begin(expand('/Users/yoshiaki/.vim/bundle'))
" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'
" My Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'kien/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'
" You can specify revision/branch/tag.
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }
" Required:
call neobundle#end()
" Required:
filetype plugin indent on
" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck
"End NeoBundle Scripts-------------------------

が表示されます。

"NeoBundle Scripts-----------------------------

の次の行から

"End NeoBundle Scripts-------------------------

の上の行まで、ファイル .vimrc としてホームディレクトリに保存します。

次に、下記のようにターミナルで vim を実行するとパッケージをインストールするか聞いてくるので y を選択してください。

~ $ vim
Not installed bundles:  ['vimshell', 'ctrlp.vim', 'vim-colorschemes', 'vim-fugitive', 'neosnippet.vim', 'neosnippet-snippets']
Install bundles now?
(y)es, [N]o: y

Go の Vim プラグイン、ファイラーなど

Shougo/unite.vim · GitHub
https://github.com/Shougo/unite.vim
vimfiler.vim をインストールするのに unite.vim が必要。
Shougo/vimfiler.vim · GitHub
https://github.com/Shougo/vimfiler.vim
fatih/vim-go · GitHub
https://github.com/fatih/vim-go

をインストールします。

~/.vimrc ファイルの

" My Bundles here:
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'kien/ctrlp.vim'
NeoBundle 'flazz/vim-colorschemes'

の次に

NeoBundle 'Shougo/unite.vim’
NeoBundle 'Shougo/vimfiler.vim’
NeoBundle 'fatih/vim-go'

github.com の ’名前/パッケージ名’ を追加し、Vim を起動すると

~ $ vim
Not installed bundles:  ['unite.vim', 'vimfiler', 'vim-go']
Install bundles now?
(y)es, [N]o: y

と聞いてくるので y を選択してください。これで終了です。Finder 上で MacVim をダブルクリックし、:VimFiler (:Vim と入力した後、Tab キーを押してください。補完されます。) と入力して Return キーを押します。ファイラーが起動します。カーソルキーと Return キーで移動し、編集したい Go ソースファイル名で e キーを押してください。シンタクスカラーリングされているはずです。:q で終了です。

Kate の場合、

Kate は、KDE が必要なので、Paralells Desktop 10 上に

Main Page - Linux Mint
http://www.linuxmint.com/

から

Download - Linux Mint
http://www.linuxmint.com/download.php
KDE	32-bit	64-bit	An edition featuring the KDE desktop	 Yes

KDE 64-bit 版をダウンロードしインストールしました。

Mac

$GOROOT/misc/kate/go.xml

ファイル go.xml を Mint 側のデスクトップにコピーし、

Linux Mint 側の

~/.kde/share/apps/kate

フォルダに syntax フォルダ作成し、デスクトップの go.xml ファイルを ~/.kde/share/apps/kate/syntax にコピーします。

~/.kde/share/apps/kate $ mkdir syntax
~/.kde/share/apps/kate $ cp ~/Desktop/go.xml syntax/

これで、Kate で Go ソースファイルを開くと Go のシンタックスがハイライトされます。

Radiko 録音スクリプト rec_radiko2.sh を同時録音に対応。Raspberry Pi に Samba をインストールして iPhone と Mac で Raspberry Pi にアクセス。

iTunes Podcast
Apple Special Event, WWDC 14
Apple Keynotes
iOS App
2014 Session Video
WWDC
WWDC - Apple

以前、ブログを書いてから随分日にちが経ってしまいましたが、上記の 2014 WWDC 基調講演、セッションビデオを見ました。一番の話題はプログラミング言語 Swift だと思います。

The Swift Programming Language
The Swift Programming Language - Apple Inc.
Using Swift with Cocoa and Objective-C
Using Swift with Cocoa and Objective-C - Apple Inc.

上記 URL のブックを iPad で読み終えました。個人的な感想は次回にでも書きたいと思います。 iPhoneiPadスクリーンショットからステータスバーを取り除く処理を毎回画像編集ソフトで行うのも面倒なので、Swift で作ってみました。いずれ公開してみたいですね。

Radiko.jp プレミアムは、1つのID/パスワードで、同時にログイン可能な機器が3つまでです。私が公開している rec_radiko2.sh スクリプトは、同時録音に対応していません。不便なので、修正してみました。

ただし、rec_radiko2.sh ファイル 8 行目

cookiefile="/tmp/pre_cookie.txt"

cookiefile="/tmp/pre_cookie_${pid}_${date}.txt"

に変更しただけです。これで問題無いと思うのですが!あまり自信はありません。これで同じ時間帯に3つまで rec_radiko2.sh が実行できるように crontab で設定できます。

追記: 2019/04/01(Mon) 19:17:08

Flash 版の RTMP を利用した拙作 rec_radiko2.sh ではなく、HLS配信データを保存する rec_radiko_live.sh を使用してください。詳しい解説、ダウンロードリンク先は下記 URL を参照してください。

rec_radiko_live.sh
https://github.com/kyoshiaki/yplayer/blob/master/tools/README.md

同時録音できるように修正した rec_radiko2.sh は、下記 URL

同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip
タイムフリーの仕様変更に対応した
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

で公開します。iPhoneradiko.jp アプリでログインしていると同時にログインしている機器に数えられるので注意してください。忘れずにログアウトしてください。


図 1

iPhoneradiko.jp アプリのログアウトは、放送局を選択した後、上図のように画面下にある ‘設定’ タブをタップし、


図 2

上図のように ‘ログアウト’ を選択してください。

よくある問題なのですが iPhoneradiko.jp アプリでラジオ音声の再生に失敗することがあります。ログアウトしてからログインし直すとラジオ音声の再生に成功します。それでもだめなら、ログアウトしてから Home ボタンを 2 回素早く押し、radiko.jp アプリを上部にスワイプして完全に終了させます。できればすべてのアプリを終了させてください。それから iPhone の電源を長押しして iPhone の電源を切ります。電源ボタンを押して iPhone を再起動し、radiko.jp アプリをタップして起動させ、ログインしてください。これでラジオ音声の再生に成功するはずです。

前回予告した Raspberry Pi に Samba をインストールして

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748
タイムフリーの仕様変更に対応した
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

で録音した Radiko 音声を iPhoneiPod touchiPad で再生する方法を紹介したいと思います。

Setting up a SAMBA Server on Raspberry Pi | TheUrbanPenguin
http://theurbanpenguin.com/wp/?p=2415

上記 URL を参考に Samba をインストールしました。簡単に説明したいと思います。

まず、最初に ssh を使って Mac のターミナルから Raspberry Pi にログインします。

Raspberry Pi の入手方法と基本設定 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455

ssh の設定、基本的な使い方は上記 URL を参考にしてください。

~ $ ssh pi@192.168.xx.xx
pi@192.168.1.14's password:
pi@raspberrypi ~ $ 

コマンド apt-get を使って Samba をインストールするのに必要なパッケージをインストールします。次に /data ディレクトリを指定したアクセス権限で作成し、smb.conf のバックアップを作成します。(sudo コマンドはスーパーユーザー (root) の特権レベルでコマンドを実行します。)

pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get install samba samba-common-bin
pi@raspberrypi ~ $ sudo mkdir -m 1777 /data
pi@raspberrypi ~ $ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.$(date +%F)
/etc/samba/smb.conf/$(date +%F) ではなく
/etc/samba/smb.conf.$(date +%F) なので注意してください。
(samba.conf の後にドットが入ります。)

sudo bash で root ユーザーで bash を起動します。

pi@raspberrypi ~ $ sudo bash
root@raspberrypi:/home/pi#

先ほど保存した smb.conf.2014-xx-xx ファイルを ls コマンドで確認します。

root@raspberrypi:/home/pi# cd /etc/samba
root@raspberrypi:/etc/samba# ls
dhcp.conf  gdbcommands	smb.conf  smb.conf.2014-xx-xx
root@raspberrypi:/etc/samba#

smb.conf.2014-xx-xx ファイルを参考に grep コマンドで smb.conf ファイルを作成します。
(ファイル名 smb.conf.2014-xx-xx の 2014-xx-xx の部分は、ls コマンドで表示されたものに置き換えてください。)

root@raspberrypi:/etc/samba# grep -ve ^# -ve '^;' -ve ^$ smb.conf.2014-xx-xx > smb.conf
root@raspberrypi:/etc/samba# ls
dhcp.conf  gdbcommands	smb.conf  smb.conf.2014-xx-xx
root@raspberrypi:/etc/samba# 

エディタ nano を使って

root@raspberrypi:/etc/samba# nano smb.conf

ファイル smb.conf の最後に

[data]
comment = Data share
path = /data
browseable = yes
read only = no

を追加します。CTRL+O でファイル名が表示されるので Return キー押して保存し、CTRL+X で nano を終了します。

シェル bash を終了して Samba を再起動します。

root@raspberrypi:/etc/samba# exit
exit
pi@raspberrypi ~ $ sudo service samba restart
[ ok ] Stopping Samba daemons: nmbd smbd.
[ ok ] Starting Samba daemons: nmbd smbd.
pi@raspberrypi ~ $ 

コマンド smbpasswd を使って root、pi のパスワードを設定してください。通常、パスワードは raspberry で良いと思います。(root、pi のパスワードは、あらかじめ設定されている raspberry ではないものに変更したほうが危険性は少ないです。)

pi@raspberrypi ~ $ sudo smbpasswd -a root
pi@raspberrypi ~ $ sudo smbpasswd -a pi

exit コマンドで ssh を終了してください。

pi@raspberrypi ~ $ exit
logout
Connection to 192.168.xx.xx closed.
~ $ 

これで Samba の設定は終わりです。

iPhoneiPod touchiPadRaspberry Pi にアクセスするには

GoodReader 4
カテゴリ: 仕事効率化
¥700
GoodReader 4 - Good.iWare Ltd.
Documents 5
カテゴリ: 仕事効率化
無料
Documents 5 – 高速 PDF リーダー、メディアプレーヤー、ダウンロードマネージャ - Readdle
FileExplorer Free
カテゴリ: ユーティリティ
無料
FileExplorer Free - Steven Zhang
FileExplorer
カテゴリ: ユーティリティ
¥500
FileExplorer - Steven Zhang

などを使います。FileExplorer Free 版の制限は

1つのコンピュータにしかアクセスできません。
リモートコンピュータのファイルを管理できません。
AVI, MKV, XVID などの動画を再生できません。
DropboxGoogle Drive、Box、SkyDrive、WebDAV は利用できません。

です。有料版 FileExplorer ¥500 を購入すると制限は解除されます。ファイルをダウンロードせずストリーミング再生できるので便利です。ただし Raspberry PiRadiko 録音した音声を MP3 形式に変換中、書き出したファイルにアクセスしてストリーミング再生すると、書き出しを中断してしまいます。注意してください。

無料版を選択するなら Document 5 一択だと思います。(日本語ローカライズされています。)

個人的には、有料ですが GoodReader 4 を推薦します。GoodReader は、色々なバージョンがありますが、2014/07/22(Tue) 現在 GoodReader 4 が最新版だと思います。残念なのは日本語に対応していません。

ここでは

GoodReader 4
カテゴリ: 仕事効率化
¥700
GoodReader 4 - Good.iWare Ltd.

を使って Raspberry Pi にアクセスする方法を紹介したいと思います。他のアプリでもファイルサーバー名を Windows か SMB にするかの違いだけでほとんど同じだと思います。

GoodReader 4 を起動します。(iPhoneiPod touchiPad でもほとんど同じです。ここでは、iPhone を基準にします。)


図 3

上図のように、最初に iPhone 内にある My Documents フォルダの中身が表示されます。ここでは、あらかじめ用意された Downloads フォルダと私が作った radio フォルダが表示されています。フォルダを作成するには、右上上部の アイコンをタップします。


図 4

上図のようにコマンド一覧が表示されます。ファイル名左横の◯を選択して、ファイルを削除したり、上図赤枠の New Folder ボタンをタップすると新規のフォルダが作成できます。下部の黒いエリアを左へスワイプすると次のページを開くことができます。右へスワイプすると戻ります。ファイル管理を終了するには、右上上部の アイコンをもう一度タップします。


図 5

図 3) の Connect ボタンをタップすると上図のようにサーバーにアクセスする画面が開きます。画面下の Servers ボタンをタップしてください。


図 6

上図の Add ボタンをタップすると接続するサーバー選択画面が下図のように開きます。


図 7

スクロールして上図のように SMB Server をタップしてください。


図 8

上図のように入力画面が開きます。

Readable Title: 名前
Network address: IP アドレス
User: ユーザー名
Password: パスワード
(パスワードは Samba を Raspberry Pi にインストールした時に使ったコマンド
pi@raspberrypi ~ $ sudo smbpasswd -a pi
で設定したパスワードです。)

上記内容を入力してください。上図も参考になるはずです。


図 9

これで、上図のように先ほど指定した Raspberry Pi のサーバー名が表示されます。Raspberry Pi の文字列をタップしてください。


図 10

iPhoneRaspberry Pi の Samba サーバーにアクセスし、中身が上図のように表示されます。上図 pi フォルダの中身を表示したいので、名前 pi の右横 をタップしてください。(注意、フォルダの移動は、フォルダ名ではなく をタップしてください。フォルダの名前をタップするとフォルダが選択されてしまいます。もう一度タップすると選択は解除されます。)


図 11

上図のように pi フォルダの中身が表示されます。


図 12

ダウンロードしたい MP3 ファイルがあるフォルダまで移動し、上図のようにMP3 ファイル名をタップして選択してください。


図 13

ここでは、TBS_2014-07-22-13-00.mp3 ファイルを選択しています。上図、右下赤枠部分の Download ボタンをタップしてファイルをダウンロードします。


図 14

すると保存先を尋ねてくるので iPhone の My Documents フォルダが開きます。(以前のフォルダの位置を覚えているので、必ず、My Documents フォルダが開くわけではありません。左上のフォルダ名をタップすると親フォルダに移動できます。)


図 15

保存先のフォルダに > アイコンをタップして移動します。上部中央に表示されている名前が保存先フォルダです。ここでは tama という名前のフォルダです。上図、右下赤枠部分の Download file here ボタンをタップして、このフォルダをダウンロード先として指定します。ダウンロードが始まります。


図 16

Raspberry Pi の中身を表示している画面に変わります。右上赤枠部分 Close をタップして閉じてください。Raspberry Pi の Samba サーバーへのアクセスを終了します。(ダウンロードは続いています。)


図 17

左下、Downloads ボタンをタップするとダウンロード中のファイル名が表示されます。


図 18

ダウンロードが終了したら、上図、左下赤枠部分の << をタップして、iPhone の My Documents フォルダを開いてください。


図 19

iPhone の My Document 内の tama フォルダに移動し、先ほどダウンロードした TBS_2014-07-22-13-00.mp3 ファイル名をタップしてください。


図 20

上図のように再生が始まります。30 秒ごとの早送り、巻き戻しボタンもあります。上図、左上赤枠部分 << をタップすると iPhone の My Documents フォルダ内を表示する起動画面に戻ることができます。右下タブに Player タブが追加されています。再生中の曲にアクセスしたい時に利用します。

Mac から Raspberry Pi にアクセするには、Finder を使います。


図 21

上図のように Finder のメニュー/移動/サーバへ接続… を選択すると下図のようなウインドウが開きます。


図 22

サーバアドレスに、先頭に smb:// を付けて Raspberry Pi の IP アドレスを入力します。Raspberry Pi の IP アドレスが 192.168.1.4 なら smb://192.168.1.4 になります。サーバアドレスを入力したら、右下の接続ボタンをクリックしてください。


図 23

上図のようにログイン画面が開くので

ユーザーの種類: 登録ユーザー
名前: pi
パスワード: raspberry
(パスワードは Samba を Raspberry Pi にインストールした時に使ったコマンド
pi@raspberrypi ~ $ sudo smbpasswd -a pi
で設定したパスワードです。)

上図のように上記内容を入力し、右下の接続ボタンをクリックしてください。


図 24

ボリューム選択画面が開くので pi を選択し、OK ボタンをクリックします。


図 25

上図のように Raspberry Pi の /home/pi フォルダを Finder で表示します。


図 26

/home/pi/radio/tama フォルダに移動すると Radiko プレミアムで録音した TBS ラジオ ‘たまむすび’ の録音ファイルが上図のように表示されます。


図 27

マウスカーソルを TBS_2014-07-22-13_00.mp3 ファイルのアイコンに重ねると、上図のように再生ボタンがあらわれます。再生ボタンをクリックすると MP3 ファイルのストリーミング再生が始まります。ダウンロードする必要はありません。


図 28

再生ボタンが上図のように停止ボタンに変わります。Raspberry Pi の接続を切るには、上図左下、共有の Rapberry Pi の IP アドレス横のイジェクトボタンをクリックしてください。