LoginSignup
12
12

More than 5 years have passed since last update.

SwiftでCLIコードを書く

Posted at

Xcode6 beta3 が一般開発者向けにリリースされ、ダウンロードできるようになりました。
ダウンロードするには開発者アカウント(無償)が必要になります。

Xcode - Downloads - Apple Developer
https://developer.apple.com/xcode/downloads/

Xcode6 beta3を使用してSwift言語でのCLIプログラミングができます。

Xcode6 beta3をインストール後、使用するXcodeを変更

$ sudo xcode-select -switch /Applications/Xcode6-Beta3.app/Contents/Developer

Swift言語でスクリプトの作成

Hello Worldを標準出力するサンプル

$ touch hello.swift
$ chmod +x hello.swift
hello.swift
#!/usr/bin/env xcrun swift -i

var str = "Hello World"

// 標準出力
println(str)

ソースコードを実行

$ ./hello.swift

Macのアラートを表示させるサンプル

$ touch alert.swift
$ chmod +x alert.swift
alert.swift
#!/usr/bin/env xcrun swift -i

import Cocoa

class Alert {
  func put(str :String) {
    // アラートメッセージを出力
    var alert = NSAlert()
    alert.messageText = str
    alert.runModal()
  }
}

let message = "Hello Swift"

var alert = Alert()
alert.put(message)

ソースコードを実行

$ ./alert.swift

HTTP通信の結果表示させるサンプル

$ touch http_request.swift
$ chmod +x http_request.swift
http_request.swift
#!/usr/bin/env xcrun swift -i

import Cocoa

class HttpRequest {

  /**
   * HTTP通信をして取得結果のBodyを返す
   */
  func get(urlStr :String) -> String {
    var url = NSURL.URLWithString(urlStr)
    var request = NSURLRequest(URL: url)
    var response:AutoreleasingUnsafePointer<NSURLResponse?> = nil;
    var error: AutoreleasingUnsafePointer<NSErrorPointer?> = nil;

    var responseData = NSURLConnection.sendSynchronousRequest(request,returningResponse: response, error:nil) as NSData

    if error != nil {
       // HTTPエラー時の処理を書く

       return ""
    } else {
       // HTTP通信成功処理を書く
       var responseStr:NSString = NSString(data:responseData, encoding:NSUTF8StringEncoding)

       // 取得結果を返す
       return responseStr
    }
  }
}

var urlStr = "http://www.yahoo.co.jp"

var http_request = HttpRequest()
var response = http_request.get(urlStr)

// 結果を標準出力
println(response)

ソースコードを実行

$ ./http_request.swift
12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12