どうも、攻殻機動隊シリーズでは S.A.C が一番好きな tobi462 です。
今回は Swift Package Manager で、ターミナルからXcodeを開くCLIツール xcode-open を作ってみたので、その紹介です。
モチベーション
- ターミナルからXcodeを1コマンドで開ける
- バージョン(e.g.
9.1
)も指定できる - 開くバージョンを記憶することもできる
使い方
インストール
Homebrewでインストールできます。(ビルドのためにXcode 9.0以上が必要です)
$ brew install YusukeHosonuma/xcode-open/xcode-open
あるいはGitHubのリリースページからバイナリを直接DLしてもOKです。
使い方
Xcodeプロジェクトまたはワークスペースのあるディレクトリに移動し、以下のようなコマンドが使えます。
デフォルト(xcode-select
で指定されているXcode)で開く:
$ xcode-open
Xcodeのバージョンを指定して開く:
$ xcode-open 9.1
バージョン指定を記憶する:
$ xcode-open 9.1 --save $ xcode-open # 9.1 で開かれるようになる
オススメのエイリアス設定
xcode-open
だと微妙に長いので、.bash_profile
や.zshrc
に以下を追記することを推奨します。
# xcode-open alias xopen="xcode-open"
xopen
で開けるようになります
$ xopen 9.1
なぜ作ったか?
ターミナルから起動したい
わたしは普段、ターミナルが作業の主軸になっています。
ターミナルからキーワード絞込で Git の作業ディレクトリに移動し、そこから VS Code を立ち上げたり、IntelliJ IDEA などを起動したりしています。
$ code . # VS Code を起動 $ idea . # IntelliJ IDEA を起動
Xcodeでも同様に1コマンドで起動したいと思ったのが最初のモチベーションです。
バージョンを指定したい、記憶させたい
複数のプロジェクトを同時に担当していると、そのプロジェクトによって利用している Xcode のバージョンが異なるということはままあります。
あるプロジェクトでは最新の 9.2
だけど、もう1つのプロジェクトでは 8.3
といったケースです。
であれば、プロジェクト毎に利用するXcodeバージョンを固定してしまいたいというのが2つ目のモチベーションです。
Swift Package Manager で CLI を作ってみたい
Swift Package Manager は現在バージョンは4まで出ています。
そろそろ実践で使えるレベルかなと思い、せっかくなのでCLIを作ってみようと思い立ちました。
作ってみた感想
わたしが欲しいものを作ったので当たり前ではありますが、必須ツールになりました(自画自賛?)。
もう手がxopen
を覚えてしまったので、他のMacで入って無いときあれ?となってりします。
Swift Package Manager はそれなりに良く出来ていると感じたのですが、面倒な部分やハマリポイントがあったり、Xcodeが正しくファイルやシンボルを認識しなくなることがあり、ちょっと面倒なところも感じました。これくらいの小規模なツールであれば Ruby とかで書いたほうが早いかな、という気もしました。
Swift Package Manager は標準でXcodeプロジェクト生成機能を備えているので、Xcodeとの相性については今後改善を期待したいと強く思いました。
最後に
といった感じで、Swift Package Manager で CLI ツールを作ってみたお話でした。
内部的な作りなど技術的な面については、またどこか別のタイミングで記事にできればと思っています。
もちろんOSSとして公開 していますので、IssueやPRも歓迎です。