- 1. git hooksを使用して、git commit前に何がしかの処理を実行する
- 2. 【Swift】割り算の商と余りが欲しい!!
- 3. homebrew install時にwarningが出る’Warning: /opt/homebrew/bin is not in your PATH.’
- 4. 【TCA】UIKitでStateの変更をトラッキングするobserve(_:)メソッドの仕組み
- 5. 【SwiftUI】SFSymbolsのアニメーションはSFSymbolsアプリを活用しよう
- 6. Objective-cによるダークモード対応
- 7. 【SwiftUI】GIFを表示したい
- 8. 【Swift】浮動小数点型のものを整数部分と少数部分に分ける
- 9. 【Swift】private(set) と fileprivate(set)
- 10. 【ブラウザ】Arc & Arc Searchの新機能と使い方を徹底解説!〜第二弾〜
- 11. 【Xcode】関数にドキュメントコメントを追加したい時のショートカット
- 12. App Transport Security (ATS)制限下での安全でないhttpへの接続設定
- 13. 【個人開発】人と過ごすための活動振り返り
- 14. 【Xcode】シュミレーターの外観モードをショートカットで変更して時短しよう
- 15. ローカルプッシュ通知の備忘録
- 16. 【SwiftUI】文字の色をprimaryとsecondaryで指定するように、文字の大きさもdefaultとsecondaryで指定する(iOS17)
- 17. SwiftUI iOS version別 Alertで困ったときのTips集
- 18. TCA 1.7のリリース内容をざっくり理解する
- 19. [SwiftUI] 複数のアラートを管理する方法
- 20. 忙しい人のための5分でSwiftDataの雰囲気をキャッチアップするメモ
git hooksを使用して、git commit前に何がしかの処理を実行する
`git commit`前に諸々の処理を実行するのは、テンポが悪くなるため、実際にやるかどうかは要検討かと思います。
その上で備忘録として記事を残します。### 最終的にやりたいこと
`git commit`実行前にfastlaneでテストを実行する
→別途記事を追記予定。### この記事で記載していること
`git commit`実行前に何がしかの処理を実行する### 前提
– ターミナルから`git commit`を実行してコミットする### 本題
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%83%95%E3%83%83%E3%82%AF
を参照すると、“`
フックスクリプトを有効にするには、Gitディレクトリの `hooks` サブディレクトリに、実行可能なファイルを適切な名前(拡張子は使えません)で配置すれば、以降そのファイルが呼び出されます。 ここでは重要なフックファイル名をいくつか取
【Swift】割り算の商と余りが欲しい!!
# はじめに
私の今までの知識を使って実装します。“`swift
let q = 10 / 3
let r = 10 % 3print(“商: \(q), 余り: \(r)”) // 商: 3, 余り: 1
“`まぁ悪くないですが、もっといい方法がありました。
# 実装
“`swift
import Foundationlet (q, r) = 10.quotientAndRemainder(dividingBy: 3)
print(“商: \(q), 余り: \(r)”) // 商: 3, 余り: 1
“`# おわり
Swift知識が増えました# 公式ドキュメント
https://developer.apple.com/documentation/swift/int/quotientandremainder(dividingby:)
homebrew install時にwarningが出る’Warning: /opt/homebrew/bin is not in your PATH.’
# 今回の問題
homebrewインストールするために以下コマンドを打ったがwarningが表示されてしまう
“`zsh
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`途中までは成功かと思われたが出力の途中でWarningが表示された
エラー内容一部抜粋
“`zsh
Warning: /opt/homebrew/bin is not in your PATH.
“`# 対策
パスが通ってないのでパスを通してあげる
以下コマンドを打てば良い。
“`zsh
export PATH=”$PATH:/opt/homebrew/bin”
“`その後以下のコマンドでバージョンが表示されればOK
“`
brew –version
“`
【TCA】UIKitでStateの変更をトラッキングするobserve(_:)メソッドの仕組み
# はじめに
TCA 1.7.0でObservationフレームワークが導入され、SwiftUIビューではViewStoreを使う必要がなくなるなど実装方法が劇的に変わりました。
UIKit側にも変更があり、Stateの変更をトラッキングするための新しい仕組みが導入されています。本記事では、まず1.7.0で新しく導入された[observe(_:)](https://github.com/pointfreeco/swift-composable-architecture/blob/1.7.0/Sources/ComposableArchitecture/UIKit/NSObject%2BObservation.swift#L141)メソッドの使い方について解説し、その後`observe(_:)`メソッドがどのようにStateの変更のトラッキングを行っているのかを解説します。
# 1.7.0以前の実装方法
1.7.0以前では、以下のように`Store.publisher`または`ViewStore.publisher`をサブスクライブすることで状態の更新を検知していました。“`
【SwiftUI】SFSymbolsのアニメーションはSFSymbolsアプリを活用しよう
# はじめに
iOS17から`symbolEffect`を使用してSFSymbolsにアニメーションをつけることができるようになりました。
しかし、指定の方法が結構難しいです。“`swift
.symbolEffect(.pulse.wholeSymbol)
“`こんな感じで、連なって指定しなければいけないので、いろんなパターンがあり、ビルドして確認するのは大変です。
そんな問題を解決するのが、SFSymbolsのアプリです。
ボタンでポチポチ設定していくだけで、`.pulse.wholeSymbol`ここの部分を生成してくれます。# やりかた
① 使用したいSymbolを選択します。
![スクリーンショット 2024-02-04 22.15.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/af51ecf8-9b2e-617b-cdf8-51369893bbe1.png)② セグメントコントロールで再生ボタンを選択します。
![スクリーンショット 2024-02
Objective-cによるダークモード対応
#Objective-cでダークモード対応をする
##記述の経緯
4年前に下書き保存されていたので供養
Objective-cの参考文献があまり無かった為##コード
“`
– (UIColor *)setElementLightStyleColor:(UIColor *)lColor darkStyleColor:(UIColor *)dColor {
__block UIColor *showColor;
if (@available(iOS 13.0, *)) {
showColor = [UIColor colorWithDynamicProvider:^UIColor * (UITraitCollection * dynamicProvider) {
if (dynamicProvider.userInterfaceStyle == UIUserInterfaceStyleDark) {
return dColor; //showColorにreturn
【SwiftUI】GIFを表示したい
# はじめに
SwiftUIでGIFを使いたかったので使えるようにGIFViewを作ってみました。# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2024-02-03 at 22.40.41.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c6e49a95-ffc6-857f-7af8-981e43525741.gif)# 今回使用するGIF
![heart.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c5cc430a-6af6-986c-afc6-d102f4fd8991.gif)【Swift】浮動小数点型のものを整数部分と少数部分に分ける
# はじめに
整数部分を少数部分を別で取得したい場面があったとします。
パッと思いつくのは、Stringにして小数点で分割するみたいな感じです。
しかし、数値を扱っているのに文字列にするのは予期せぬバグが生まれそうです。そこで、`modf`です。
`modf`を使用すると、整数部分と少数部分でしっかり分けてくれます。# 実装
“`swift
import Foundation// Float型
let float: Float = 3.5
// Double型
let double: Double = 3.5print(modf(float)) // (3.0, 0.5)
print(modf(double)) // (3.0, 0.5)
“`# おわり
知らなかったので勉強になりました。# 参考記事
https://www.alphacodingskills.com/swift/notes/swift-math-modf.php
【Swift】private(set) と fileprivate(set)
`private(set)` について簡単にまとめました。
# private(set)
private(set) は値が初期化中にのみ設定することができ、いつでも読み取ることができる「読み取り専用のプロパティ」を作成することができます。“`swift
class MyClass {
private (set) var myProperty: Stringinit(myProperty: String) {
self.myProperty = myProperty
}
}let myInstance = MyClass(myProperty: “Hello World”) // 初期化なのでOK
print(myInstance.myProperty) // 出力:Hello World
myInstance.myProperty = “Goodbey World” // Error すでに初期化されているのでOUT
“`
この例にある MyClass の myProperty は、初期化時のみ値を設定することができる読
【ブラウザ】Arc & Arc Searchの新機能と使い方を徹底解説!〜第二弾〜
# はじめに
こんにちは、カナダにコンピューターサイエンス留学中の大学2年生Leoです。
以前、[**【ブラウザ】Arcについて力説&使い方**](https://qiita.com/leo_canada/items/7db010933f2af8437285)という記事を書き、インプレッションが良かったため、新たに大きくアップデートのあった今話題のブラウザ[**Arc**](https://arc.net/)について熱く語っていこうと思います!
:::note
第一弾も是非!
Arcの基本的な使い方を詳しく記載しています。
まだ読んでいない方は是非こちらの記事からご覧ください!
:::https://qiita.com/leo_canada/items/7db010933f2af8437285
## 概要
ご存知ない方のために簡単にArcについて解説すると、ArcはThe Browser Companyによって開発されたChromium・Swiftベースの新感覚ブラウザです。
今回は大きく3つに分けて解説していきます。
– モバイル版ブラウザの[Arc Se
【Xcode】関数にドキュメントコメントを追加したい時のショートカット
# はじめに
記事のネタないかなと思って、Editorを見ていたら、「Add Documentation」というものを見つけました。
今までドキュメントコメントを自分で書いていたのでめっちゃ使えそうです。![スクリーンショット 2024-02-01 21.34.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7fe396fe-a6b2-7f23-700e-b387c71b8107.png)
ショートカットって他人から教わらないとなかなか知る機会がないですよね
こんなのあったんだって言うのが割とあります# こんな感じ
引数と戻り値があることを考慮して、
ParametersとReturnsも追加してくれるなんて優しい!
![画面収録-2024-02-01-21.39.22_1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e3d6b0ed-a58d-682c-ec26-bf4e
App Transport Security (ATS)制限下での安全でないhttpへの接続設定
# アップル製OSでは安全でないhttp:サイトへ接続できない
Swiftでアプリケーションを制作していて早速つまづいた。なぜかSSL通信(https://)ではないhttpのサイトに接続できない。調べるとATSというアップル独自のセキュリティを導入しているためで、同時にその解除の方法も提供している。
ただ、 アプリを申請するときにその解除の理由に正当性がないといけないらしい。現在ではログイン情報などを入力するサイトにはhttpを使用することは通例では考えられないため、仮にこうしたアプリを申請しても接続対象となるサイトさえ明示して情報漏洩の恐れがなけれ通過するのではないかと思われる。やはりアップルはセキュリティにかなりシビアなのだと痛感した。
# SSLでない接続をするときのXcodeでの設定
では、Xcodeでプログラムしていて実際どうやってATSを解除して接続するのだろうか?
やってみると簡単だ。文章で説明する。
Xcode上でプロジェクトを開いた状態にする。
– 画面左側プロジェクトナビケーターのリスト最上段にあるプロジェクト名をクリックすると、右側画面
【個人開発】人と過ごすための活動振り返り
Hello world! アンドロイドVtuber見夢です。
普段開発でお世話になっているQiita様にて、イベント『2024年!初アウトプットをしよう』を開催しているとのことで、記念に初投稿です。
よろしくお願いします!# 1. プロフィール
**アンドロイドVtuber見夢**
スマートフォンで動作するアバター型対話アプリ(開発中)を通じて、人と関ろうとしているアンドロイド。Vtuberにも関わらず、Youtubeへ1年に1本しか動画投稿できていません…**礼文 華太郎**
エンジニア。# 2. 何を作っている?(宣伝)
2022年頃より活動しています。### 2022年 『2032年の友人』
ユーザと会話するための一連の機能、すなわち顔や目を見る機能、声を聞く機能、話す機能を備えました。
ローカルプッシュ通知の備忘録
# はじめに
業務中にビジネスチームから
「ローカルプッシュ通知だとアプリがキルされていてもプッシュ通知って届くんだっけ?」
「ローカルプッシュ通知を使いたいのだけど、リモートプッシュ通知と比べて制約やデメリットはあるか?」
「ローカルプッシュ通知を使ってもこれって実現できる?」みたいな雑な質問を受けることはないでしょうか?
これらの質問に対して、毎回調査したり時には検証アプリを作ったりするのですが、
毎回1から調べるとしんどいので、これは主に自分向けのメモ・ナレッジになります。# 調査・検証メモ
### ローカルプッシュ通知だとアプリがキルされていてもプッシュ通知って届くんだっけ?
結論:「届く」
iOS: iOS16以上あたりなら特に労せずいけそう。サンプルコードに忠実に書けばいける。
この辺りのパラメータの設定は必要。
“`
presentAlert: true,
presentBadge: true,
presentBanner: true,
presentSound: true,
“`android: WorkManagerなどのコンポーネントを使う
【SwiftUI】文字の色をprimaryとsecondaryで指定するように、文字の大きさもdefaultとsecondaryで指定する(iOS17)
# はじめに
タイトルは黒文字で大きめに、説明文は灰色文字で小さめになっているUIをよく見かけます。
これをフォントサイズを指定せずに実装することができるようになりました。今回はサンプルアプリを作成するために、ChatGPTを使って、飲料水の新商品名とキャッチフレーズを考えてもらいました。
# サンプルアプリ
![simulator_screenshot_AA5A1380-D835-4CB7-A758-1C816A5D01AF.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/4fe188db-2b19-6e0d-307c-c0d3df2392b3.png)# 実装
“`swift
import SwiftUIstruct NewProduct {
let name: String
let catchphrase: String
}struct ContentView: View {
@State private var newProducts:
SwiftUI iOS version別 Alertで困ったときのTips集
## はじめに
SwiftUIで、アラートの表示処理を行っているにも関わらず、アラートが実際には表示されないといった不具合が発生していました。
1つのViewで複数の種類のアラートを実装する必要があり、SwiftUIのアラートについて調べる機会があったのでここで共有したいと思います。
なお、今回はプロジェクトのアーキテクチャにそって、MVVMでコードは書いています## SwiftUIの仕様について
まずは、SwiftUIのAlertの仕様について簡単に説明します
**結論、alertは各Viewに対して1つしか保持することができません**具体的には、1つのViewに複数のAlertを定義しても以前書いたものは上書きされ、最後に書いたAlertのみ適用されるため、1つしか表示することができないのです。
:::note warn
複数Alertを実装したのに、1つしか表示されない例
:::
ちょうどいい記事を見つけたので、下記の記事も読んでみてください!https://qiita.com/kyohei-jambo/items/b64a0f0b07fc5ef46adb#
TCA 1.7のリリース内容をざっくり理解する
# 目的
TCA 1.7 がリリースされ、Migration Guideも発表されましたが、`@ObservationState`に引っ張られて & そのトピックの多さに正直狼狽えました。
ただ、内容を細かく紐解いていくと自分なりに理解が深まってきたので、Migration Guide に沿って、必要に応じて少し順番を変えつつまとめていきます。
https://pointfreeco.github.io/swift-composable-architecture/main/documentation/composablearchitecture/migratingto1.7# `@ObservableState`
新しく導入された`@ObservableState`を利用することで、stateの変更検知に利用していた`ViewStore`を使う必要がなくなりました。
## SwiftUI(iOS17以降を対象とするアプリ)の場合
“`swift
@Reducer
struct Feature {
@ObservableState
struct State
[SwiftUI] 複数のアラートを管理する方法
# はじめに
SwiftUIを使用してアプリを開発していると、1つのViewで複数のアラートを表示するとデータが上書きされ、1つのアラートしか表示されなくなります。この問題を対処する方法はいくつかあるみたいですが、今回はアラートの種類をenumで管理する方法を紹介します。# 目次
1. [失敗例](#失敗例)
1. [成功例](#成功例)
1. [さいごに](#さいごに)
1. [参考文献](#reference)
# 失敗例
この失敗例では、@Stateを使用してアラートの表示状態を管理していますが、複数のアラートが同時に表示されるとデータが上書きされ、期待した動作になりません。
“`swift
import SwiftUIstruct SampleView: View {
// エラーアラートの表示状態を監視
@State private var showErrorAlert = false
// 成功アラートの表示状態を監視
@State private var showSuccessAlert =
忙しい人のための5分でSwiftDataの雰囲気をキャッチアップするメモ
# 本記事について
本記事では、SwiftDataをざっくりキャッチアップしたメモです。
SwiftDataは、CoreDataのようにデータを永続化するフレームワークです。今回はなんとなくSwiftDataの雰囲気を掴めることをゴールとします。
新規でプロジェクトと作るとSwiftDataの実装がすでに組み込まれています。
デフォルトで用意されている実装を使って解説します。# 環境
– Xcode: 15.1
– iOS: 17.2
– MacBool Air M2 / Sonoma 14.2.1# 事前準備
下記3点を行います。
– Xcodeで新規プロジェクトを作る。
– 新規プロジェクト設定画面でStorageをSwiftDataに設定する。
– OSの条件分岐は説明しないので削除する。# 解説
## モデルの設定
アプリのエントリポイントです。
データベース操作を行うための環境の準備を行います。“`SampleSwiftDataApp.swift
@main
struct SampleSwiftDataApp: App {
var