『入る学科間違えた高専生』の日記

プログラミングのコードを書いたりする予定です。あとは日記等。あといつまで高専生やねん

Swift Package Manager ライブラリを xcframework ビルドする

はじめに

タイトル通り Swift Package Manager (以下 SwiftPM) で作ったライブラリを xcframework にする方法を n 番煎じですが備忘録がてら書きます。

xcframework についてはこちら

developer.apple.com

環境

Mint を使って上記で前置きした CLI ツールをインストールした。

github.com

最近まで Xcode12.5.1 環境がないとビルドができなかったが Xcode13.x でもビルドが可能な状態になっていました!!

  • Xcode 13.4
    • Swift 5.6.1
  • Mint 0.17.1
    • swift-create-xcframework v2.2.0
続きを読む

GitHub リポジトリの PR のレビューリクエストを Slack に通知してくれるツールを作った

はじめに

こんにちは今回は GitHub の PR のレビューリクエストを Slack に通知するツールを作ったので紹介です。

(2022年5月21日 18:00 JST 現在の状況です)


以下のやり取りはフィクションです

???「え、それ GitHub で提供してるよ?」
僕「うん知ってるよ。これだよね。」

docs.github.com

docs.github.com

???「それそれ、なんで作ったの」
僕「よく読んで。」

GitHubは、オーナーごとに5つのリポジトリまで、リポジトリごとに20のPull Requestまでしかリマインダーをトリガーしません。

???「5つのリポジトリ...リポジトリごとに20のPull Requestまで」
僕「5つのリポジトリ...リポジトリごとに20のPull Requestまで」


こんな制限がありました。
どうしてなのかはわかりかねますがその制限つらいのでもちろん制限はありつつもいい感じにフォローしてくれるようなツールにしました。

続きを読む

ハードコードを許されない変数をどうしても Xcode プロジェクトの Info.plist に差し込みたい🔑

この記事は,フラー株式会社 Advent Calendar 2021 の 18 日目の記事です.
17 日目の記事は @kousuke_sumiyasu さんで「 CoreMLとCreateMLを使って犬の分類器を作ってみた! 」でした.

CoreML と CreateML ,結局リリースされてから一度も触れていないんですよね.ちなみに再学習とかってできるんでしょうか?わたし,気になります.
MobileNetV2.mlmodel を見て MobileNetV2 の論文を読みながら電車に乗っていた記憶が蘇りました.

  • はじめに
  • 開発環境
  • ソースコードに埋め込めるようにするには
  • 本題
    • キーチェーン
    • PlistBuddy を使うパターン
      • 組み合わせて Info.plist に打ち込む
    • XcodeGen を使う
  • おまけ
  • 最後に
  • 参考

はじめに

みなさんは, Xcode プロジェクトで例えば iOS アプリ開発をしているときに API キー等などの秘密情報を扱う機会はありませんか?
私はよくあります.例えば GoogleMap の API キーとか TwitterAPI キーとかシークレットとか GitHub のアクセストークンとか etc...
上記に上げたものであれば基本的に Info.plist に差し込むなどはない実装になるかと思います.
もしくはそもそも上記で挙げた例だと通信時にパケットキャプチャされてしまえば見られてしまう情報だからハードコードしてしまうなどあるかとも思います.

しかし,たまたまどうしても業務でどうしても絶対にプライベートであっても GitHubリポジトリやプロジェクトに関係ない人には知られてはいけないと言われてしまった文書を組み込まなくてはならなくなった場合どうしたらよいかということで今回考えてみた対応策です.*1 *2

開発環境

  • Xcode12 以上
  • Swift

*1:どんな情報だよそんなのとか野暮なことは聞かないでください

*2:どっちしてもバイナリを解剖したりリバースエンジニアリングしたらわかるやん.みたいなやつはなしでお願いします!

続きを読む

FloatingPanel を UITabBarController から表示する

  • はじめに
  • 環境
  • 準備
  • UITabBarController に FloatingPanel をつけてみる
  • 解決法を探る
  • 解決方法
  • 最後に

はじめに

ウッ...タイトルが難しい.やりたいことはこうじゃ...

https://user-images.githubusercontent.com/9856514/139561045-0fff143b-02a3-42ed-a591-0ac5b17e0ef2.gif

Twitter のこんな感じでセミモーダルを UITabBarController を配置してるときにも表示したいっていう感じ.
今回はセミモーダルを実装するときに私がよく使っている FloatingPanel を使って実装した時に発生したクラッシュを交えて備忘録的なご紹介ができればと思います.

github.com

環境

  • Xcode 13.0
  • FloatingPanel 2.4.0
続きを読む

SwiftGen を Swift Package Manager で導入する

  • はじめに
  • 環境
  • SwiftGen を CLI として使用する
    • Mint
    • Package.swift
      • SwiftGen のみを CLI ツールとして管理している場合
      • 他の CLI ツールも一緒に使う場合
      • 実際に swiftgen を実行する
      • テンプレートエラーの解決
    • CocoaPods
  • 最後に
  • 参考記事

はじめに

今回は, SwiftGen を Swift Package Manager (以下 SwiftPM ) を使って導入する方法です.

SwiftGen を使用することはたびたびあるかと思います.
今までは私は R.swift でしたが最近は差分ビルドのこととかを考えてこっちに移行しました.

github.com

github.com

また,

xcassets:
  inputs:
    - App/Assets.xcassets
  outputs:
    templateName: swift5
    output: Generated/Assets.swift

のような swiftgen.yml を作るかと思います.
SwiftPM で導入した場合のエラーの解決も紹介します.

あと, SwiftGen の Package.swiftswift-tools-version: 5.3 になったら Swift Package Manager ( PackageDescription ) の Targetresources: [Resource]? が追加されるので簡単に対応できるようになるのではないかと思います.

環境

続きを読む