- 1. 【Swift】浮動小数点型のものを整数部分と少数部分に分ける
- 2. 【Swift】private(set) と fileprivate(set)
- 3. 【ブラウザ】Arc & Arc Searchの新機能と使い方を徹底解説!〜第二弾〜
- 4. 【Xcode】関数にドキュメントコメントを追加したい時のショートカット
- 5. App Transport Security (ATS)制限下での安全でないhttpへの接続設定
- 6. 【個人開発】人と過ごすための活動振り返り
- 7. 【Xcode】シュミレーターの外観モードをショートカットで変更して時短しよう
- 8. ローカルプッシュ通知の備忘録
- 9. 【SwiftUI】文字の色をprimaryとsecondaryで指定するように、文字の大きさもdefaultとsecondaryで指定する(iOS17)
- 10. SwiftUI iOS version別 Alertで困ったときのTips集
- 11. TCA 1.7のリリース内容をざっくり理解する
- 12. [SwiftUI] 複数のアラートを管理する方法
- 13. 忙しい人のための5分でSwiftDataの雰囲気をキャッチアップするメモ
- 14. Swift Packageの作り方
- 15. Flutterのurl_lanucherとuni_linksでOAuth
- 16. FlutterアプリをNotionと連携する
- 17. 【Xcode】タイプミス・スペルミスを検出する
- 18. Cinematic Frameworkを使ってシネマティックモードの動画のDepthを取得する
- 19. 【Xcode】改行の目安を表示する
- 20. 【SwiftUI】 Xcode15での「sizeThatFits」について
【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
Swift Packageの作り方
# 手順
##### GitHub でリポジトリを作成
![スクリーンショット 2024-01-30 3.40.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/3832c9cd-68c0-5873-59e6-f5b489737ba2.png)
##### ローカルでディレクトリを作成“`shell
mkdir avplayerview
“`##### ディレクトリに移動、パッケージを初期化
“`shell
cd avplayerview
swift package init –type library
“`##### Sources にコードを追加
**パッケージの外から使いたい class や func は public にする必要がある**
“`swift
public class AVPlayerView: UIView {
public func play() {
…
“`##### Package.swift にミニマム iOS
Flutterのurl_lanucherとuni_linksでOAuth
[この記事](https://qiita.com/meique/items/c1933247803d92829020)の補足記事になります。
認証部分は読んだ前提で話を進めるので、読んでください!
webviewを使ったGoogleのOAuthがセキュリティ的にちょっとアレなため、url_launcherとuni_linksを使用した正攻法(?)で実装してみます。
サンプルのリポジトリは同じです。
https://github.com/Taichiro-S/notion_sample## 使用するFlutterパッケージ
– [url_launcher](https://pub.dev/packages/url_launcher) : 端末のデフォルトブラウザでWebページを開く
– [uni_links](https://pub.dev/packages/uni_links) : deeplinkするやつ## 実装
修正箇所は以下の2点です。
1. **「連携」ボタンクリック時にnotionの認証ページをurl_launcherで開くようにする**
2. **un
FlutterアプリをNotionと連携する
[Notion](https://www.notion.so/ja-jp)は史上最高の万能アプリなわけですが(異論は認める)、Flutterアプリ連携しちゃお〜ってやってたら案外苦労しました。というお話。
サンプルのリポジトリ公開しています!
https://github.com/Taichiro-S/notion_sample## 前提
– notionアカウント作成済み
– flutterアプリ作成済み(fvmを使っているなら[これ](https://qiita.com/kilalabu/items/7ed07a99024e1687a8f4)が早いです)
– OAuthの仕組みなんとなくわかる([この記事](https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be)がわかりやすいかも)## 実装する機能
FlutterアプリからNotionアカウントを連携し、Databaseにデータを書き込む
### 動作イメージ
※動画はiOS simulatorですが、androidでも同じように動作します。
【Xcode】タイプミス・スペルミスを検出する
# はじめに
僕めちゃくちゃ英語できないのでめっちゃスペルミスするんです。
僕以外にもいますよね?そんなあなたに朗報です。
なんと!Xcodeにはスペルチェック機能あるらしいんです!
知りませんでした。設定方法を記録しておきます。
# 今回検出したいスペルミス
本当は`digital`ですが、スペルミスをして`degital`になっています。![スクリーンショット 2024-01-29 20.53.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/768cbc2a-e045-a3ce-1e56-a599c35e82f5.png)
これを検出したいです。
# やりかた
① 「Edit」を押します。
② 「Format」を選択します。
③ 「Spelling and Grammar」を選択します。
④ 「Check Spelling While Typing」にチェックを入れます。
![スクリーンショット 2024-01-29 20.35.59.png](https:/
Cinematic Frameworkを使ってシネマティックモードの動画のDepthを取得する
# Cinematic Frameworkを使ってシネマティックモードの動画のDepthを取得する
iOS17からCinematic Frameworkが追加されました
Cinematic Frameworkを利用することで、シネマティックモードで撮影した動画を簡単に操作できるようになりましたhttps://developer.apple.com/documentation/cinematic
シンプルに映像とdepth、フォーカスの取得を試してみました
シネマティックモードの動画のdepthやフォーカス取るのできた!
指の感じも分かるくらい思ってたよりdepth精度よく取れてそう pic.twitter.com/TJjxFb41E4— ふじき (@fzkqi) 【Xcode】改行の目安を表示する
# はじめに
普段大きいモニターを使って開発をしているので1行の文字が200行とかになっても1行で表示されて見やすいのですが、モニターの接続を外してmacbook単体で開発してると折り返し表示されて見にくかったりします。そこで、「1行〇〇文字になったら、改行しよう!」と決めても現在が何文字なのかパッと見でわかりません。
ある設定をするだけで、改行目安のところに線が表示されて一目でわかるようになります。
![スクリーンショット 2024-01-28 19.57.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/781ce963-342e-d432-58c2-233d93fb59a2.png)
# やりかた
① 「Xcode」を押します。
② 「Settings…」を押します。
![スクリーンショット 2024-01-28 19.59.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174【SwiftUI】 Xcode15での「sizeThatFits」について
# Xcode15での「sizeThatFits」について
Xcode14までは普通に動作していたはずの「sizeThatFits」が
Xcode15からは急に適用されななくなったみたいで色々調べましたところ、
***`#Preview` Macro***を利用している際には、「sizeThatFits」が使えないようでした。その代わりに`trait`を付けて、`.sizeThatFitsLayout`を書けば解決できるということで、実際に試してみることにしました。
## sizeThatFits/sizeThatFitsLayoutについて
そもそもsizeThatFitsとsizeThatFitsLayoutというのは一体何でしょう?
基本的にsizeThatFitsというのは、ContainerをPreviewに合わせて、Viewのみのpreviewにするためのメソッドです。
レファランスから調べたところ、sizeThatFitsとsizeThatFitsLayoutは全く同じ機能であり、
sizeThatFitsLayoutの方がiOS17.0のリリースに当たって導入