- 1. 【SwiftUI】Toggleのあるセルを行全体タップで値を切り替える方法
- 2. 【個人開発】ティアリストを作成するアプリを作ってみた話
- 3. ExpandableListView ≒ UITableView
- 4. 【Flutter】Android / iOSアプリの2回目以降のリリース(アップデート)手順
- 5. iOS来月先月を取得する方法
- 6. ワンクリックで動画をかんたんGIF変換のショートカット
- 7. SwiftUIでプレビュー時にprivateな変数にアクセスする方法
- 8. クイズをコレクションしながら楽しく学べる!Notion連携の新アプリ『Quizionary』で知識を深めよう! ~覚えたいことが多すぎて復習する時間がないあなたに~
- 9. 日本時間でデータを簡単に確認!1NCEユーザー向けのIoT Lighthouseアプリを使ってみた
- 10. 【iOS】CallKitでプロジェクト名とは別のアプリ名を表示させる方法
- 11. [iOS]1年に1回のadhocの証明書更新を毎回忘れるので手順をまとめました
- 12. 【Swift】Swift6移行について
- 13. iPhone にあるゲームパッドを無線接続した際のメモ: アローンの「Switch用 スーパーミニコントローラー(ライトブルー ALG-NSWCSMLB)」
- 14. モバイルアプリのログを収集して「何が起きたかわからない」から脱却しよう
- 15. DeepLink, Deferred DeepLink 関連の技術について(FDL廃止)
- 16. [Swift]RxSwift TextFildで入力した文字をリアルタイムで表示させる
- 17. ショートカット.app でリッチテキストをプレーンテキストとして整形する
- 18. 容量パンパンのスマホを救え!画像を縮小して自動で保存したい
- 19. 【SwiftUI】アニメーション State 付きの Button の作り方
- 20. タイムサーバーの生存調査スクリプト(time.apple.com の一部がダウン)
【SwiftUI】Toggleのあるセルを行全体タップで値を切り替える方法
## こうする
“` swift
@State var isOn = false
~~~Toggle(isOn: $isOn, label: {
Text(“Toggle Test”)
})
.contentShape(Rectangle())
.onTapGesture {
self.isOn.toggle()
}“`
`.contentShape(Rectangle())` と `.onTapGesture` を一緒に書くことで、
行全体タップしたときに、Toggleの値を切り替えることができる。
行の中の空白部分をタップしてもイベントを拾うようになる。### 環境
* Xcode 15.4### 参考
https://stackoverflow.com/questions/57191013/swiftui-cant-tap-in-spacer-of-hstack
【個人開発】ティアリストを作成するアプリを作ってみた話
## はじめに
最近、YouTubeで動画を見ていると、ゲームやカードなどを『ティア』というランク形式で分類する動画をよく見かけます。この形式は情報を簡潔に伝えられるため、とても便利だと感じました。そこで、自分でも簡単にティアリストを作成できるアプリを作ってみることにしました。
### 開発したアプリ
本題に入る前に、まずは開発したアプリをご紹介します。このアプリは現在、App Storeで公開中です。気に入っていただけたら、レビューしていただけると幸いです。
[App Storeのリンク](https://apps.apple.com/jp/app/%E3%83%86%E3%82%A3%E3%82%A2%E3%83%A1%E3%83%BC%E3%82%AB%E3%83%BC/id6667102590)
[](http
ExpandableListView ≒ UITableView
Android の [ExpandableListView](https://developer.android.com/reference/android/widget/ExpandableListView) って見た目をほぼ iOS の [UITableView](https://developer.apple.com/documentation/uikit/uitableview) にできるよねって話です。
左:Android (ExpandableListView)、 右:iOS (UITableView)
![cropped.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/35b99f80-78c1-95a3-2993-7ec8a1e0430e.png)iOS の UITableView は、特に難しいことをしなくてもセクション + 行 というのが作れますが、Android の場合は、ExpandableListView 用のアダプターを作成する必要があります。
ちょっぴり
【Flutter】Android / iOSアプリの2回目以降のリリース(アップデート)手順
## はじめに
今回は、Android/iOSアプリの初回リリースではなく、2回目以降のリリース(アップデート)手順について記載します。というのも、リリース(アップデート)を行う度に、いつもやり方を忘れてしまうので、知見として残して、いつでも参照できるようにしたいと思いました。ぜひ、いいね👍・ストックして参照いただければと思います。
## 開発環境
– Flutter
– iOS/Androidアプリ開発## 共通の手順
アプリのリリース(アップデート)を行うには、pubspec.yamlを編集して、`アプリのバージョン`、`ビルド番号`を変更(カウントアップ)します。
“`diff
– version: 1.0.2+3
+ version: 1.0.3+4
“`
– アプリのバージョン:1.0.x
– ビルド番号:+以降の数字pubspec.yamlを変更後、ファイル保存をし、以下を実行します。
“`
flutter clean
flutter pub get
“`
これ以降は、Android/iOSそれぞれで必要な手順になります。## Andro
iOS来月先月を取得する方法
来月先月を取得する方法です
# 完成イメージ
![sumplee.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/39426230-ccec-4d7c-4637-1e2849dfee30.gif)DateComponentsを使って現在の年月を表示する
https://qiita.com/yuta317/items/e6bbf95eb3d303e030dd
こちらの記事の続きになります。
# 実装方法
“`NextLastDateViewModel.swift
class NextLastDateViewModel: ObservableObject {
@Published var text: String = “”
var component: DateComponentsinit() {
component = Calendar.current.dateComponents(in: TimeZone.current,
ワンクリックで動画をかんたんGIF変換のショートカット
変換後、GIFファイル保存前にクイックルックで確認できます。
https://x.com/maochanz/status/1829755550542021099
30 fps狙い の width 480 にしていますが、当然ショートカットなので好きに変更できます。
GIFサイズはやや大きいか。
作成したショートカットはメニューバーにも入れることができます。
![sc 2024-08-31 at 16.13.17.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/f61f554e-60f4-b39d-4543-b794d6f05a11.gif)
“`
ショートカットクリック↓
読み込み元動画ファイルの選択
↓ GIFへ変換
クイックルックによるプレビュー
↓
書き出し先フォルダの選択
↓
GIFファイル書き出し保存
“`
「ワンクリ
SwiftUIでプレビュー時にprivateな変数にアクセスする方法
SwiftUIでビューを作成する際、@Stateを使ってビューの状態を管理することが多いです。しかし、@State変数は通常privateとして扱われるため、プレビュー時に直接アクセスして変更することができません。この記事では、privateな@State変数にアクセスして、プレビュー時に表示内容や表示状態を変更する方法を紹介します。
**問題の背景**
通常、@State変数はprivateであり、外部から直接変更することができません。そのため、プレビュー時に特定の状態を再現したい場合でも、その状態にアクセスできず、手動で状態を変更しなければなりません。
例えば、以下のようなコードがあるとします。
“`
struct MainView: View {
@State private var isTextVisible: Bool = false
@State private var displayText: String = “Default Text”var body: some View {
VStack {
クイズをコレクションしながら楽しく学べる!Notion連携の新アプリ『Quizionary』で知識を深めよう! ~覚えたいことが多すぎて復習する時間がないあなたに~
|![quizView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260695/5431b470-7068-2c57-c528-bbbe73cecafe.gif)|![addQuizView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260695/60221792-c9e2-54e8-2dd5-8e90b6e5f481.gif)|![collectionView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260695/eaf59ba8-252b-c1fb-0079-fea7d82a227d.gif)|
|–|–|–|大人になるに連れていろんな分野の知識が必要だけれど、覚えている暇がない…
Notionにメモをとっているけど、メモするだけで定期的に復習する機会がない…
そんな問題を解決するために、「Quizio
日本時間でデータを簡単に確認!1NCEユーザー向けのIoT Lighthouseアプリを使ってみた
IoTデバイスのデータ使用量を把握するのって、結構面倒じゃないですか?
特に1NCEのポータルを使ってデータを確認しようとすると、情報が大雑把だったり、いちいちログインしなければならなかったり、ちょっとしたことがストレスになりがちです。それに、ポータルで表示される時間が現地時間じゃないと、どの日のデータなのかも分かりにくくなってしまいますよね。
iOSアプリ限定ではあるんですが、最近1NCEのAPIに対応した**IoT Lighthouse**というものを見つけたので、今回使ってみたいと思います。
このアプリを使えば、もっと手軽に、しかも現地時間でデータ使用量を日毎に確認できるんです。
https://apps.apple.com/jp/app/iot-lighthouse-for-1nce/id6502685366
## 簡単にデータをチェックしたい人にピッタリのアプリ
IoTデバイスのデータ使用量を毎日チェックしたい。でも、いちいちポータルにログインして、複雑なインターフェースを操作するのは面倒。そんなニーズにぴったりなのが、**IoT Lighthouseアプリ**で
【iOS】CallKitでプロジェクト名とは別のアプリ名を表示させる方法
## はじめに
この記事では、iOS14以降でCallKitのUIに表示させるアプリ名を設定する方法を説明します。過去の記事では`CXProviderConfiguration.init(localizedName:)`で以下の画像の赤枠の位置に表示されるアプリ名を設定していましたが、この方法はiOS14以降ではDeprecatedになっています。
この記事ではiOS14以降でこの部分の表示を変更する方法を説明します。![IMG_1251.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3768381/4160b281-7a7f-1e30-4162-8ffaa4a56075.png)
今回初投稿になります。至らない点、誤っている点がありましたら、コメントでご指摘いただけると幸いです🙇
## 遭遇した問題
前述したように、localizedNameがiOS14でDeprecatedになりました。“`Swift
let providerConfiguration = CXProviderC
[iOS]1年に1回のadhocの証明書更新を毎回忘れるので手順をまとめました
# はじめに
こんにちは、開発部のCLです。
今回はadhocの証明書更新手順についてまとめました。
adhocの有効期限は1年に1回必要なんですが、
ややこしいし、期間が空きすぎて毎回忘れてしまいます…。
備忘録として手順を残しておきます。
まず、ざっくりと手順は以下の通り。
| ステップ | 作業場所 |
|:–|:–|
| 1. CSRを作成 | あなたのMac(※以前作成したCSRが残っていれば作成不要) |
| 2. CSRからCERを作成 | Apple Developer |
| 3. CERからProvisioning Profileを作成 | Apple Developer |
| 4. Provisioning Profileをアプリに設定 | Xcode |
| 5. Ad Hoc作成 | Xcode|順に追っていきます!
# 1.csrの作成(以前作成したcsrが残っていれば作成不要) @ Mac
:::note info
超ざっくり解説
CSRとは各々のmacに発行される証明書の作成に必要なファイル。他のmacでは使え
【Swift】Swift6移行について
## はじめに
私自身Swift5でSwiftデビューしているのでSwiftのメジャーバージョンのアップデートが正直どのようなものか想像がついていません。なのでまずは4から5にアップデートがあった際は何が起きたのか遡ってみようと思います。今回は詳細な移行方法や変更点等は調査できていないのでまた別でまとめるとします。
## Swift4 → 5では
2019年当時の記事を漁ってみました。過去の中では破壊的変更も少なく大人しめなアップデートだったようです。移行に関する情報も結構簡素ですね。https://www.swift.org/migration-guide-swift5/
https://gihyo.jp/dev/serial/01/swift-introduction/0049
## Swift6への移行
結論、Swift5はしばらく使えそうなので現状維持も可能です。ですが生産性、安全性、保守性の観点や開発者・デバイスの体験向上の為にもSwift6へ移行していくのが良いと思います。> Swift 6は、デベロッパの生産性とコードの明確さの向上を目的とした新しい機能
iPhone にあるゲームパッドを無線接続した際のメモ: アローンの「Switch用 スーパーミニコントローラー(ライトブルー ALG-NSWCSMLB)」
## はじめに
以下の製品を入手したのですが、こちらを iPhone に無線接続して、ゲームパッド/キーボードとして動作させてみた時の話を記事に書きました。●Switch用 スーパーミニコントローラー ライトブルー ALG-NSWCSMLB | 株式会社アローン
https://140-041.co.jp/product/alg-nswcsmlbhttps://x.com/youtoy/status/1823245135993532521
ちなみに買った 1番の理由は「なんとなく面白そうだったから」で、その際に思い浮かべた用途としては、ゲーム用というよりはモノ作り系の展示などで使うという方向でした。
### 記事を書いた理由
このコントローラーは、以下のように様々なデバイスと有線/無線での接続ができる製品と書かれています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/70b8953e-a4ce-d1b5-edee-c11618db98c7.png)
この後
モバイルアプリのログを収集して「何が起きたかわからない」から脱却しよう
モバイルアプリの詳細ログをNew Relicに統合する方法をご紹介します。New Relicがデフォルトで取得する情報に加えてログを活用してトラブルシュートを効率化しましょう。
# 重要性を増すユーザー体験の把握(RUM)
日々の私生活や会社生活においてデジタルサービスが必要不可欠になっている昨今、デジタルサービスの提供側としてはサービスが止まったり、操作が重いなどのユーザーの体験を損なうような問題は迅速に原因を突き止め、解決する必要があります。
その際に重要になるのが、ユーザーがどのような操作をしてどのような体験をしているかを正確に把握することです。これにより問題事象の再現や原因の究明ができ、解決を早めることができます。
ユーザーの体験の把握、それをサポートするのがRUM(リアルユーザーモニタリング)です。オブザーバビリティプラットフォームをSaaS提供しているNew RelicではRUM機能として、PCやモバイルのブラウザやモバイルアプリのWebViewとして動作するアプリケーションからユーザーの体験を収集するNew Relic Browser、およびiOSやAndroid
DeepLink, Deferred DeepLink 関連の技術について(FDL廃止)
アプリにDeepLinkを実装したいと考え、検索をかけると複数の用語がヒットすると思います。
たとえば、「カスタムURLスキーム」「ユニバーサルリンク」「Android App Links」などです。要件を満たすには何から手をつけて良いか迷いが生じたため、それぞれの特徴について整理しました。
全体の構造としては以下のようになります。
– DeepLink
– カスタムURLスキーム
– ユニバーサルリンク
– Android App Links
…– Deferred DeepLink
– Firebase Dynamic Links
– Adjust
– AppsFlyer
…アプリをインストールしていない場合にアプリストアへ誘導するようにしたい場合は、通常のDeepLinkではなくDeferred DeepLink(ディファード・ディープリンク)を使用する必要があります。
そこで、まず初めにDeepLink と Deferred DeepLink の違いについてまとめていきます。
# DeepLink と Deferre
[Swift]RxSwift TextFildで入力した文字をリアルタイムで表示させる
# RxSwiftのbindメソッドを利用した実装
今回は簡単なRxSwiftの実装を行います。
初歩中の初歩ですがbindメソッドを利用して、TextFildで入力した文字をリアルタイムで表示させる実装を行います。今回の完成イメージです。
## 実装コード
使用した
“`Swift:
import UIKit
import RxSwift
import RxCocoafinal class ViewController: UIViewController {
@IBOutlet private weak var nameTextFild: UITextField!
@IBOutlet private weak var nameLabel: UILabel!
pri
ショートカット.app でリッチテキストをプレーンテキストとして整形する
# 概要
iOSやmacOSで処理を自動化できる「ショートカット」アプリ。
ウェブサイト上のテキストなどを **「コピペ」** した時についてくるテキストスタイルを削除して、ついでに紛らわしい記号をひたすら置き換えて整形するショートカットアクション。
「スマート引用符」などで自動置換されてしまった場合にも。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216596/27cd884d-2bd2-33cc-b388-b74b98594e24.png)
### 完成版ダウンロード
https://www.icloud.com/shortcuts/30a7396cd4744fa99d3cc81eaa886ffc
*※使用は自己責任で*
# ショートカットの中身(アクション)
## 1. 対象テキストの取得
iOS、macOS共に取得しやすい形ということで「共有シート」を使い、入力がない場合には「クリップボード」から取得するようにする。>`共有シート, クイックアクション` から
容量パンパンのスマホを救え!画像を縮小して自動で保存したい
## :camera: 推し活あるある?!限界を迎えるスマホ容量
最近ものすごい沼に足を踏み入れてしまったんです。
それは・・・**推し活!!** 女の子13人グループを箱推ししているのですが、全員かわいいんですよもう!!一瞬も逃したくない
↓
めちゃめちゃ写真を撮る
↓
データフォルダやばいもともと、仕事で記録用の写真もたくさん撮る私。
ついにその時がやってきました。だからと言って、iCloudに今(200GB)以上課金するのももったいない・・・。ということで・・・
## :robot: ChatGPTと膝を突き合わせて、画像縮小&保存をほぼ自動化してみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
【SwiftUI】アニメーション State 付きの Button の作り方
Apple 公式チュートリアルから引用。
“`swift
Button {
showDetail.toggle()
} label: {
Label(“Graph”, systemImage: “chevron.right.circle”)
.labelStyle(.iconOnly)
.imageScale(.large)
.rotationEffect(.degrees(showDetail ? 90 : 0))
.animation(nil, value: showDetail)
.scaleEffect(showDetail ? 1.5 : 1)
.padding()
.animation(.spring(), value: showDetail)
}
“`
https://developer.apple.com/tutorials/SwiftUI/animating-views-and-transitionsアニメーションとエフェクトの関係を考えればいろいろ書けますよね。
以下、微妙な差があっ
タイムサーバーの生存調査スクリプト(time.apple.com の一部がダウン)
macOS の時刻が狂う原因を調べていたら、time.apple.com の一部がダウン相当だとが分かった。(Apple には連絡済みですが改善の兆しはありません)
IPv6 通信が有効な場合、時刻を拾えない場合があります。(恐らく日本地域のみ)
iPhone / iPad では通信がWi-Fiのみ環境だと time-ios.apple.com となるようですが time.apple.com と同じサーバーのようです。
macOS はタイムサーバーの設定がありますが、iPhone / iPad では IPv6 を無効にする(DNS設定を手動でIPv6サーバーを排除)しか手段がなさそうです。
### タイムサーバーの反応の有無を簡易的に調べるスクリプト
macOS の sntp コマンドは約1秒でタイムアウトになるようなので、既定のタイムアウトを1秒としています。
“`python:check_time_server.py
#!/usr/bin/env python3import argparse
import socket
import sysCHECK = {