Swiftをコマンドラインで使ってみる

Xcodeは入れたものの、どうやったらswiftが使えるようになるのかわからない。
XCode 6をインストールしたら、いきなりコマンドラインからswiftが使えるみたい。
では、コマンドラインでまずは実行してみよう。のメモ

wikipediaより
Swift（スウィフト）は、アップルのiOSおよびOS Xのためのプログラミング言語。

[SwiftをXcodeで使ってみる](http://qiita.com/tagosaku324/items/4d0742a60e0aa840b9d5)
を投稿しました（2015-5-14）

#コマンドラインでswiftを使う
・[Swiftをコマンドライン(CLI)で実行する](http://qiita.com/nntsugu@github/items/17d344cb5f505051687d)
を参考にさせてもらいました。

上記参考URLではXcodeをBata版をインストールした場合の動作です。
もし、Bata版を入れた場合、PATHを設定しないと使用できないようです。
AppStoreからXcode入れた場合は意図的にPATH設定をしなくても使えるようです。

**[　$ swift -h　]でパスが通っているのか確認**
>swiftのパスが通っていればhelp情報が表示されます。
![スクリーンショット 2015-04-21 17.56.33.png](https://qiita-image-store.s3.amazonaws.com/0/39911/963d4065-d126-450f-820b-493e3b0e5299.png)

**swift言語のファイルをつくる**
>[Hello Word]と表示させるファイルを作ります。
拡張子はなんでも大丈夫です。
でも、約束として拡張子を .swift にするようです。
無理に.swiftにしなくても動きました。。

```lang:hello.swift
var str = "Hello Swift World!!"
println(str)
```
これを実行すると無事に文言がでてきました。

```
$ swift hello.swift 
Hello Swift World!!
$
```

###＜番外編＞
swiftをコマンドラインから使うための準備
**SwiftコマンドにPATHを通す**
>毎回パスを通すのが面倒であれば、bashの設定をしてしまうのがいいかもしれません。
ホームに.bash_profileがなければ新しく作って自分環境を充実させるのもよいかと。。
私は、毎回パスを通すことにします。

```
$ export PATH=$PATH:`find /Applications/Xcode-beta.app -name swift|grep bin|xargs -I{} dirname {}`
```

**[　$ swift -h　]でパスが通ったのかを確認**
![スクリーンショット 2015-04-21 16.11.26.png](https://qiita-image-store.s3.amazonaws.com/0/39911/f4447548-e60f-cf9a-fc56-51512f01c42c.png)

もしも、以下の様なエラーがでてきて、ダイアログが立ち上がってきたらBata版のせいかもしれません。
```
$ swift -h
xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.
```
![スクリーンショット 2015-04-16 18.01.35.png](https://qiita-image-store.s3.amazonaws.com/0/39911/b91bc9fe-6943-1ab6-b73c-453e1e18b380.png)

＜念の為調査＞
swiftが入っているのかを確認。

```
$ find /Applications/Xcode-beta.app -name swift | grep bin
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
```
swiftはインストールされているみたい。
直叩きで、結果が返ってきたので、パスがおかしいだけのようです。

```
$ /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -h
OVERVIEW: Swift compiler
:
```
env　で確認してみると、ちゃんといる。。。
>PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

PATHではなく、違う名前で環境変数の設定をして実行してみました。
そしたら無事に実行できました。

```
$ export SWIFT=/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/
$ $SWIFT/swift -h
OVERVIEW: Swift compiler
```


#Swiftのバージョン確認しようとしたらREPLで開いてしまった！！　メモ（追記:20151217）
＜原因＞
ただバージョンを確認したかったので、ヘルプを良く見ずに[-v]オプションをつけてコマンドラインで実行してしまった。
すると。。。

```
$swift -v
Apple Swift version 2.1 (swiftlang-700.1.101.6 clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
/Applications/Xcode.app/Contents/Developer/usr/bin/lldb "--repl=-target x86_64-apple-darwin15.0.0 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -color-diagnostics"
Welcome to Apple Swift version 2.1 (700.1.101.6 700.1.76). Type :help for assistance.
  1> 

```
入力待機状態に陥ってしまった。
これはREPL(Read eval print loop)モードというらしい。
対話型でswiftソースを直接書いて実行できることがわかった。

```
Welcome to Apple Swift version 2.1 (700.1.101.6 700.1.76). Type :help for assistance.
 1>  var str = "Hello Swift World!!" 
str: String = "Hello Swift World!!"
  2>  
```
最初、この抜け方が全くわからなくて非常に焦った

```title:抜けれない・・・
 2> ^C
 2> bye
repl.swift:2:1: error: use of unresolved identifier 'bye'
bye
2> exit
repl.swift:2:1: error: use of unresolved identifier 'exit'
exit
2> return
repl.swift:2:1: error: return invalid outside of a func
return
 5> \q 
/var/folders/ts/8v366z5x49s75x6pv6_c43hc0000gq/T/./lldb/2710/repl9.swift:2:1: error: invalid character in source file
\q
````
思いつく抜け方で試して抜けれなくて調べた結果、REPLモードは[:quit]で抜けれることがわかりました。。

参考URL：
[REPLモードとシェルモードでギーク開発](https://mynavi-agent.jp/it/geekroid/2015/02/swift3repl.html)
[SwiftのREPLモード（インタプリタ）](http://blog.andgenie.jp/articles/639)
[[Swift] コマンドライン（Command Line）プログラムとして使う](http://blog.skipbit.jp/2014/08/swift-command-line-1.html)
```
```