ペンギン村 Tech Blog

技術をこよなく愛するエンジニア集団が在住するペンギン村から、世界へ役立つ(かもしれない)技術情報を発信する技術系ブログです。某アラレちゃんが済む村とは一切関係ありません。んちゃ!

ターミナルからXcodeを1コマンドで開くCLIツールを作ってみた

どうも、攻殻機動隊シリーズでは S.A.C が一番好きな tobi462 です。

今回は Swift Package Manager で、ターミナルからXcodeを開くCLIツール xcode-open を作ってみたので、その紹介です。

f:id:yu_dotnet2004:20180121012156g:plain

モチベーション

  • ターミナルから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も歓迎です。