メインコンテンツまでスキップ

「swift」タグの記事が6件件あります

全てのタグを見る

· 約3分
arasan01

macOSにはソースコードのNSLocalizedStringで定義されている文字列に対して抽出してLocalized.stringsを生成するコマンドがあります。これはAppleのドキュメントのManagin Strings Files yourselfのドキュメントで解説されています。

このコマンドはgenstringsというコマンドで定義されており使い方としてはファイル名をgenstringsにpipeから渡すことで使うようです。

$ find . -name \*.m | xargs genstrings -o .

· 約8分
arasan01

こんちは、あらさんです。ロックマンエグゼアドコレの発売日が近づいていてワクワクしている毎日です、発売日はお仕事をお休みしてネットバトラーになります。ぜひ一緒にやりましょう、Twitterで気軽なお誘いお待ちしております。

https://www.capcom-games.com/megaman/exe/ja-jp/

Firebase iOS SDK 10.8.0について

今回の話題にあげる内容は、ビルドをもっと高速化するためにバイナリターゲットとして配布してくれ、というIssueを解決した成果によるものです。当時SPMはまだ本格対応するには時期が早すぎる、必要な機能が揃っていないなどの理由で今まで見送られてきました。そして2023/04/11の週のリリースにより、ついにリリースされることになった待望の機能になります。

対象のIssue

https://github.com/firebase/firebase-ios-sdk/issues/6564

今回のリリースノート

https://firebase.google.com/support/release-notes/ios#cloud-firestore

· 約15分
arasan01

この記事はarasan01 Advent Calendar 2022の2日目です。

https://qiita.com/advent-calendar/2022/arasan01

こんにちは、あらさん(@arasan01_me)です。ポケモンSVのシナリオがはちゃめちゃに良くてポケモントレーナーだったのでは,という思い込みが加速しています。

https://twitter.com/arasan01_me

iOSアプリのテスト概要

iOSアプリでは大きく分けて2つのテストの管理方法があります。Xcodeを使うこと,Swift CLIからtestコマンドを利用することです。これらのテストはXCTestというAppleが提供しているフレームワークのチカラにより実現されています。またXCUITestを利用することによりXcode上でテスト実行をするとアプリが自動で立ち上がりUIテストが起動します。

XCTestでは特定の処理をテストする用途に向いています。例えば関数単位として意図している処理になっているかを確認できます。

· 約14分
arasan01

この記事はarasan01 Advent Calendar 2022の1日目です。

https://qiita.com/advent-calendar/2022/arasan01

こんにちは、あらさん(@arasan01_me)です。10周年を迎えたドラゴンクエストXオンラインを今更始めてみました,めちゃめちゃ面白いです。ぜひ始めてみてください。

https://twitter.com/arasan01_me

iOSアプリの開発環境について

iOS開発の環境はここ数年で大きく変わりました。Swift Package Manager(SPM)と銘打たれたコード配布管理ツールは、想像以上の汎用性によりプロジェクト構築に大きく変化をもたらしました。Point-Freeのisowordsが発端となって広く知られるようになったプロジェクト構成に応用できる発見は,開発ツールとして必須となっていたXcodeGen, tuistなどのXcodeプロジェクト生成ツールの必要性を再考する機会を開発者に与えました。また,SPMによるパッケージ配布が一般化することにより今までCocoapdosやCarthageに依存していたことによるRubyへの強い依存からの脱却,Cocoapodsの依存を持つことによるプロジェクトの制約からの脱却,SPMによるマルチモジュールができることにより軽量なディレクトリ構成とビルド時間の短縮の実現などが挙げられます。これらの進化により今まで開発者にとって必須だったツールは必須ではなくなり非推奨となるものが増えてきました。

· 約2分
arasan01

SwiftUIでObservableObjectを作成すると@Publishedが付与されたメンバーが更新されるたびにwillChangedが発行されて観測しているViewがそれぞれ再描画されます。2つのViewがあった場合に,片方の再描画が重たいと画面が固まってしまいます。 そのため描画の分離を行いたいです。

解決策

一つの巨大なオブジェクトを作成してそのメンバにObservedObjectをもたせることで変更通知の分離ができました。また,Bindingを利用して依存関係を使うことで変更通知を飛ばさずに別のパラメータを更新できました。

· 約10分
arasan01

こんちには,@arasan01です。Twitterで流れてくるポケモンのマンガがどれも良すぎて毎日つらいです,早くポケモンと暮らしたい。

今回は関数に対する実装と抽象の分離について考察します。

実装と抽象の分離を考えます,以下のような対応を考えると関数も抽象を捉えられそうです。

実装抽象
構造体・クラスプロトコル
関数?

純粋関数の場合は明確に実装と抽象が分離できます。下記の通常の関数の定義では実装はビルド時に決定されますが,分離した場合には実行時まで実装の選択が遅延されます。そのため依存性の注入が実行時に可能です。

// 通常の関数の定義
func add(first: Int, second: Int) -> Int {
first + second
}

// 分離した場合の定義
let impl: (Int, Int) -> Int = { first, second in first + second }
func add(first: Int, second: Int) -> Int {
impl(first, second)
}