0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

まえがき

SwiftはiOSアプリ開発のための言語というイメージですが、
やろうと思えばサーバーサイドの開発や、コマンドラインツールの開発にも採用することが出来ます。

Xcode上でコマンドラインツールの開発プロジェクトを作ることができるのを最近知ったので、
実際にSwift製コマンドラインツールを作ってみましょう。

Xcodeプロジェクト作成

  • Xcodeの File... -> New -> Package... から新規プロジェクトを作成します。
    • 種類はmacOS -> Command Line Toolを選びます。

image.png

作ると↓こんな感じになります。

image.png

ライブラリを導入する

外部ライブラリの導入もできます。

File... -> Add Package Dependencies... で
検索窓にgithubのリポジトリのURLを直接入れて検索ができます。
ここではSwifterSwiftを入れてみます。

image.png

Add PackageでSwifterSwiftを入れた後、
XcodeプロジェクトのBuild Phases
-> 「Target Dependencies」「Link Binary With Libraries」
にSwifterSwiftを追加します。

プログラムを書く

main.dartにプログラムを書きます。

import Foundation
import SwifterSwift

print("Hello, World!")

let arguments = ProcessInfo.processInfo.arguments

func main() -> Int {
    
    for arg in arguments.enumerated() {
        if arg.offset == 0 {
            print("product path: \(arg.element)")
            continue
        }
        print(arg.element)
        if let intValue = arg.element.int {
            print("this is number: \(intValue)")
        } else {
            print("this is not number!!")
        }
    }
    
    return 0
}

_ = main()

ビルドして実行ファイルを作る

Xcodeの再生ボタンからビルドします。
プログラムで引数を取得していますが、第一引数が実行ファイルの出力先パスになるので、
それを参照して実行ファイルをどこか使いたい場所にコピーします。
(もっとスマートなやり方があればコメントお願いいたします)

スクリーンショット 2024-12-23 18.28.57.png

これで作成は完了です。

ターミナルから実行する

ターミナルから実行ファイルを実行します。

$ ./ForQiita 12 123 333 hoge fuga 444

Hello, World!
product path: /Users/username/Documents/ForQiita/ForQiita/
12
this is number: 12
123
this is number: 123
333
this is number: 333
hoge
this is not number!!
fuga
this is not number!!
444
this is number: 444
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?