はじめに
最近作るスクリプトはperlからpythonに切り替えるなどしているわけですが、ふとSwiftの開発なんかもやってみたいなと思っているカピバラおじさんです。
新しいMacなども欲しいわけで、口座に残っているいい感じの金額を見て「か、買える」と一瞬だけ思ったけれど、これは子カピバラの学費・・・・これに手をつけたら今度こそ・・・・
「カピバラ家では粗大ごみを車で持ち込んで処分するんだけど、いつもよりによって一番重いのを出さずに持ち帰ってしまうんだって」
「なんで?」
「そりゃ、帰りに車を運転する奴がいなくなるからだろ」
はいお客さん、これ、カピバラジョークね、笑うところ。
・・・・笑えない・・・
それでも衝動買いの起爆剤のため勉強のためにSwiftを触ってみたいという気持ちは変わらず、何らかの形で動かしてみたいと調べてみるとdockerのイメージが提供されているとのことなので、トライしてみることに。
環境
手元にあるMacMiniはMid 2007。メモリは増やしているとはいえ、2GB。この上で動かしているVirtualBox上のCentOSへの割り当ては762MB。(おそらく768MBにしたかったんだと思うけど、酔っぱらっていたに違いない)
dockerはインストール済なので、インストールについては割愛。適当にyumしてあげてください。
dockerでSwiftを使えるようにするまで
イメージのダウンロード
$ docker pull swiftdocker/swift
しばらくダウンロード表示が続き、プロンプトに戻る。
確認してみよう。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/swiftdocker/swift latest 466addff05d1 7 weeks ago 1.299 GB
コンテナの作成~起動
ダウンロードしたイメージを利用してコンテナを作成し起動してみる。
$ docker run -i -t --privileged --name swift swiftdocker/swift:latest /bin/bash
root@921f2ed79fe8:/#
2行目の表示はdocker上のbashプロンプト。921...は、コンテナID。
触り始める前に、やっておいた方がいいこと
vimのインストール
今回使用したイメージにはvimが入っていない。
じゃ、インストールしておこう。
# yum install vim
bash: yum: command not found
え・・・と、数秒固まったが、そういえばこれはいつものCentOSではなく、ubuntu。慌てず騒がず(←慌ててたじゃん)
# apt-get update
# apt-get install vim
exitでコンテナを停止させないために
コンテナ内でexit
してしまうとコンテナが停止してしまい、次に使う時にはdocker start
docker attach
の2オペレーションが必要になる。再起動を必要とせずに抜けるためには、[Ctrl]+[P], [Ctrl]+[Q]
で抜けるのが正しいらしい。
このキーアサインを変更することはできるようだが、exit
で悲しい目に遭うことには変わらない。
どうしよう。
カピバラオヤジは黙ってvimを起動し、~/.bashrc
に下記のラインを追加。
alias exit='echo "to exit, press [Ctrl]+[P], [Ctrl]+[Q]"'
これでよし (エ ´ \
それでは、おなじみの「あれ」を。
プロジェクト作成
# mkdir myproject
# cd myproject
# swift package init --type executable # パッケージの初期化
これで、下記のようなファイルとディレクトリが作成される。
myproject
├ Package.swift
├ README.md
├ Sources
│ └ myproject
│ └ main.swift # とりあえず、これがメインとなるソース
└ Tests
初期状態でのmain.swift
は、
print("Hello, world!")
となっているので、これを
print("Hello, Capybara world!")
に変更する。(もちろん、全く必要のない変更です)
コンパイル~実行
# swift build
Compile Swift Module 'myproject' (1 sources)
Linking ./.build/x86_64-unknown-linux/debug/myproject
これで、myproject直下の./.build/x86_64-unknown-linux/debug/myproject
に実行モジュールが出来上がり。
# ./.build/x86_64-unknown-linux/debug/myproject
Hello, Capybara world!
とりあえず、動くようになりました!