xcopenというSwift製CLIを作った

GW暇だったので、Swift製CLIを作ってた。

github.com

現状あるのは openlist というコマンドだけだけど、とりあえず実用を始めることができるレベルにはなったかなと思ったので、公開した。

f:id:yutailang0119:20180504211933p:plain

動機

構想自体は3ヶ月くらい前からあったが、SwiftPM Utility周りの理解がおぼつかなくて、実際にロジックを組み始めるまでの時間がかかってしまった。

最近、working directory構成を

- Documents
    - workspace
        - github.com
            - Swift
            - others
        - gitlab.com
            - Swift
            - others

みたいな感じにしてみた。
(golang~/go/src/github.com/yutailang0119/ にあるので、ちょっと歪ではあるんだけど)

これはこれで事故が起こりにくくてよいなと思う反面、「あのファイルどこに置いたっけ?」となったり、リポジトリをforkしつつ、オリジナルのリポジトリも手元に置いていた時に、混乱することが多々あった。
たぶん各々効率的なやり方があるとは思うんだけど、我々iOSアプリケーションエンジニアはpcを開いている間の90%はXcodeと戯れることとなると思うので、Xcodeに特化したものを作ろうと思った。
ということで、

  • .xcodeproj
  • .xcworkspace
  • .playground

といったXcodeで扱うであろうファイルを簡単に開いたり、リスト表示したりするツールを作った。

また、xcopen という名のツールはいくつか存在する https://github.com/search?utf8=✓&q=xcopen&type= が、自分が想定しているユースケースではないこと、メンテされていないことを鑑みて、この名前のツールの覇権を奪いに行くつもりで付けた。

所感

前に xccache-sweeper というCLIも作ったが、これはgolangで作った。
この時はSwift PM Package.swiftでかなり疲弊して、Swiftで作るのを断念したので、今回はSwiftで作るぞ!とやった。
ツール自体のロジックは、普段使い慣れているSwiftなので、非常に書きやすかった。
一方で、普段iOSアプリでは扱うことがないDarwinモジュール使ってみたりと、初めてのことも多々あり、新鮮だった。

謝辞

今回のツールを作るにあたり、岸川さんがSwift PM Utility ArgumentParserについて解説してくれた。
ありがとうございました! 🙇‍♂️