- 1. ショートカット.app でリッチテキストをプレーンテキストとして整形する
- 2. 容量パンパンのスマホを救え!画像を縮小して自動で保存したい
- 3. 【SwiftUI】アニメーション State 付きの Button の作り方
- 4. タイムサーバーの生存調査スクリプト(time.apple.com の一部がダウン)
- 5. [Swift]RxSwiftの導入(CocoaPods)
- 6. Flutter で share_plus を利用してシェア機能を実装する
- 7. DateComponentsを使って現在の年月を表示する
- 8. ASWebAuthenticationSession の実装でハマったこと
- 9. 【Flutter】Releaseモードでiosをビルドする
- 10. Flutter環境構築手順書(Mac)
- 11. 【Skip】SwiftでAndroidアプリも開発できちゃうゾ!
- 12. Flutter でセキュアに Key/Value を保存する
- 13. jig.jpinternship
- 14. iOS開発における、ボタンなどのTintColorデフォルト値が青色である理由を考えてみた
- 15. Xcode 15.3/15.4で発生する`Package.resolved`の削除問題について
- 16. 【SwiftUI】アニメーションとトランジションを組み合わせて連続して使う
- 17. iOSDC 2024セッション資料まとめ
- 18. HTTP Catcher を使って iPhone だけで通信を書き換える
- 19. Unit Testを始めよう①~DI・モック・スタブ・Modelのテスト~
- 20. 【fastlaneエラー解消】[!] Your current version () does not respect the format A or A.B or A.B.C
ショートカット.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/0/
【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 = {
[Swift]RxSwiftの導入(CocoaPods)
# RxSwiftとは
RxSwiftとはリアクティブプログラミングを実現するためのライブラリを提供してくれます。
リアクティブプログラミングとは、一言で説明すると
**「何かの値が変化したら、その変化に応じて素早く自動的に何かのアクションを行う」**
です。
– ID・PWを全て入力し終えたら、ログインボタンを活性させる
– PW設定において非推奨の文字が入力されたら警告を表示させる
– お天気アプリなどで検索対象の地域を設定したら、その地域の天気情報を表示させるもっと身近な例で例えるとExcelで「ある値を入力すると自動で計算結果が変更される」ようなイメージです。
学習コストが高く私自身まだまだ経験、理解が浅い状況ですので少しずつアプトプットを進めていきます。## RxSwiftを導入してみる。
今回RxSwiftとRxCocoaをCocoaPodsで導入していきます。
`SettingRxSwift`サンプルPJを作成し、導入までの流れを記入していきます。### 1️⃣podファイルを生成
-下記のコマンドをターミナルで実行します。
“`title.Swift
po
Flutter で share_plus を利用してシェア機能を実装する
# これなに
Flutter でのシェア機能実装の備忘録# 利用するパッケージ
### 必須今回の実装のキーパッケージ、OSのシェア機能を利用可能にする
https://pub.dev/packages/share_plus
### 任意
具体的な実装の際に画像ファイル取得のために利用しただけなので、ファイルピッカーから取得しても良いと思う
https://pub.dev/packages/screenshot
# モジュール化したコード
– `flutter pub add share_plus` でパッケージを取得
– メソッド化した以下のコードを呼び出して共有を実装
– 画像とシェアするときのメッセージにあたる image, subject は任意に設定
– text は必須にしている
“`dart
import ‘package:flutter/material.dart’;
import ‘package:share_plus/share_plus.dart’;class ShareImageAndTextController {
void s
DateComponentsを使って現在の年月を表示する
DateComponentsを使って現在の年月を表示する方法です。
# 完成イメージ
![Simulator Screenshot – iPhone 15 Pro – 2024-08-15 at 14.57.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/6af09567-2df8-1177-1cd1-8b7f7a43e44a.png)
# 実装方法
`DateComponents`の`extension`を作成します
“`.swift
extension DateComponents {
func getYearMonthFormat() -> String {
if let monthString = month, let yearString = year {
return String(format: “\(yearString)-%02d”, monthString)
}
return “
ASWebAuthenticationSession の実装でハマったこと
## 概要
ざっと2年前、ASWebAuthenticationSessionでSSOを実装した際にハマったことを記載する
故にこの記事では実装についての説明はしない
他にいい記事がたくさんあるのでそちらを参考にしてほしい
私のハマりが誰かのハマり解消に貢献できることを祈りQiitaの海に本記事を投稿する#### ASWebAuthenticationSessionとは?
Appleが提供するSSOフレームワーク
SafariとCookie情報を共有し認証情報を使い回すことでSSOが可能となる公式ドキュメントは[こちら](https://developer.apple.com/jp/documentation/authenticationservices/authenticating_a_user_through_a_web_service/)
#### 当時ハマったこと
ということで本題– ***ASWebAuthenticationSessionのCookieの扱いに注意!!***
永続Cookieのみ対象!
非永続CookieはSafariと共有しないので注意が必
【Flutter】Releaseモードでiosをビルドする
## はじめに
iOSで実機ビルドしたが、ケーブルを外すと途端に動かなくなりました💦💦
原因を見てみると、デバッグモードでビルドされていたためにケーブルを外すと動かなくなったようです。そのため、今回はRelaseモードでビルドする方法を紹介します。## やりかた
1. Xcodeの「Product」メニューを確認:
「Product」→「Scheme」→「Edit Scheme…」をクリックします。2. Edit Schemeウィンドウで確認:
左側のリストから「Run」を選択し、右側の「Build Configuration」が「Release」になっているか確認します。
デフォルトでは「Debug」になっていることが多いので、「Release」に変更してください。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/7421c897-96fb-16fc-aebb-ac95cb2fbc75.png)
3. ビルドを実行
## 参考
https:/
Flutter環境構築手順書(Mac)
## Flutter SDK インストール
– flutterファイルをダウンロード
– https://docs.flutter.dev/get-started/install/macos/mobile-ios– 通常ダウンロードフォルダにダウンロードされているはずなので、developmentフォルダに解凍する
“`bash
$ unzip ~/Downloads/flutter_macos_arm64_3.24.1-stable.zip \
-d ~/development/
“`– PATHを通す
“`bash
$ vim ~/.zshrc// 以下を.zshrcに追加
export PATH=$HOME/development/flutter/bin:$PATH$ which flutter
/Users/ユーザ名/development/flutter/bin/flutter$ which da
【Skip】SwiftでAndroidアプリも開発できちゃうゾ!
## はじめに
先日Skipのバージョン1.0がリリースされました。
SkipとはSwiftでAndroidアプリも作れちゃうよというやつですね。早速ちょっとだけ触ってみたので、サンプルアプリをビルドするまでを記事にしてみます。
SwiftでiOS、Android両方開発できるのはSwift出身の僕にとっては最高ですね。#### 公式
https://skip.tools/
## 実際に動かしてみよう
### 1.Skipで開発する環境を整える
#### Skipのインストール以下のコマンドでSkipをインストールしましょう
“`
brew install skiptools/skip/skip
“`次に以下のコマンドでSkipが動くかどうかをチェックします
“`
skip checkup
“`僕は以下のように“`Java version“`のところでエラーがでましたが、特に問題なくSkipを使って両OSのビルドができました。今後どこかで困るのかもしれません。
![スクリーンショット 2024-08-24 14.44.07.png](https://
Flutter でセキュアに Key/Value を保存する
# はじめに
アプリを開発していると設定などを Key/Value として保存するケースが多く、簡単に実現する場合は [shared_preferences](https://pub.dev/packages/shared_preferences) パッケージを使うことで簡単に実現できます。
しかし、多くの場合で平文は避けたいこともあり、暗号化して保存したいということになります。
Flutter には、 [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) という KeyChain などを利用してセキュアに保存できるパッケージもありますが、この保存された値はアプリをアンインストールしても消えないというデメリット?もあります。そこで、これらを組み合わせることで、セキュアでかつ簡単に Key/Value を保存できるようにしてみました。
# 実装
## 利用する Flutter Packages
以下の3つのパッケージを導入します。
“`pubspec.yaml
dependencies:
jig.jpinternship
iii
iOS開発における、ボタンなどのTintColorデフォルト値が青色である理由を考えてみた
# はじめに
こんにちは。私は徳島大学院で物質機能化学の研究を行っている修士2年の[akidon0000](https://x.com/akidon0000)です。↓趣味でこんなアプリ開発を行なっています
https://qiita.com/akidon0000/items/5dab4e425796d6e32f8a
このアプリを開発している時に、ふと思ったことがあります。
それは、
`なぜデフォルトが青色!?`
ということです。
ここで指している「デフォルト」とは、ボタンのTintColorのことを意味しています。
私は、これらをそのまま実装してしまうと
・安っぽい(チープ)
・初心者っぽいとなる印象を抱いており、そのために無闇に色を変更したことが何度もありました。
![スクリーンショット 2024
Xcode 15.3/15.4で発生する`Package.resolved`の削除問題について
Xcode 15.3および15.4で、git ブランチの変更や `pod install` など、リポジトリに変更を加えるたびに、ワークスペースの `Package.resolved` が削除されてしまう現象が報告されています。この問題により、ビルド時にSwift Package Manager (SPM)で管理しているライブラリが一部削除され、ビルドエラーが発生するケースが確認されています。本記事では、この現象の再現手順と対処方法について解説します。
## 再現手順
以下の手順で問題を再現することができます。
1. `pod install` を実行する。
2. Xcodeでプロジェクトをビルドする。ビルドエラーが発生し、エラーログが表示される。
3. Xcodeで「Resolve Package Versions」を実行すると、エラーが解消される。しかし、この方法ではキャッシュを削除しても問題は完全に解決しません。## 問題の詳細
この問題は、`pod install` やgitブランチの切り替えを行う際に、`Package.resolved` が意図せず削除されること
【SwiftUI】アニメーションとトランジションを組み合わせて連続して使う
こんなカクカクのメッセージ的な表示。
![sc 2024-08-23 at 11.20.52.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/3617e8dd-4365-3ace-7b55-f6fe230b78bf.gif)
“`swift
import SwiftUIstruct Message: View {
var text: String@State private var showIcon = false
@State private var showText = falsevar body: some View {
HStack(spacing: 0) {
if showIcon {
Image(systemName: “heart.fill”)
.foregroundStyle(.red)
.font(.title)
.padding()
iOSDC 2024セッション資料まとめ
https://iosdc.jp/2024/
iOSDC2024の登壇資料、スライドのまとめです。
X等で見つけ次第掲載しますが、もし資料を見かけた方or資料を公開した登壇者の方がいらっしゃいましたら、コメント等でお声がけください。# Day 0
## Track B
### [App Clipの魔法: iOSデザイン開発の新時代](https://fortee.jp/iosdc-japan-2024/proposal/66f33ab0-0d73-479a-855b-058e41e1379b)
### [StoreKit 2によるモダンなアプリ内課金](https://fortee.jp/iosdc-japan-2024/proposal/370206f7-82a4-4f7d-800e-995dc58178a6)
https://speakerdeck.com/0si43/storekit-2n
HTTP Catcher を使って iPhone だけで通信を書き換える
# はじめに
開発をしていると、通信内容を見てデバッグするという状況はかなりあると思います。
特にモバイル開発だと、パソコンを介して通信を覗くのが一般的で、そのためのプロキシツールが多く存在します。以下は今までに私が使用してきたものです。
https://www.charlesproxy.com/
https://mitmproxy.org/
https://proxyman.io/
これらのツールは無料で多くのことができますが、**設定するのが少し面倒な側面**もあります。
## 課題
特にリモートワークが増えた昨今では、社外からの接続のためにVPNを繋ぐ会社も多いと思います。
その時に
– 端末のWifiを接続先PCと同じに切り替える
– 繋ぐためにその都度でIPとポートを手動入力する
– 社内ではうまく動作していたのにVPNとバッティングして動かない
– 同僚は繋がるのに、なんか知らんけど自分のは動かない(冗談のようであるw)パソコンを経由せずに**直接スマホで通信を監視**すれば良いじゃないかという話です!この煩わしさから解放されるために便利なのが *
Unit Testを始めよう①~DI・モック・スタブ・Modelのテスト~
# はじめに
テストコードを学び始めたばかりの時、テストコードを書くの難しい、何をテストしたら良いかわからないと思っていました。現役のiOSエンジニアの方々にアドバイスをいただきながら学習を進める中でテストコードのありがたみが少し理解できたので、**MVVMの設計で作成したAPI通信のサンプルアプリのコードを用いてUnit Testの始め方**を紹介します。
GitHub: https://github.com/hinakkograshi/QiitaViewer
# 用語の説明
### Dependency Injection(DI・依存性注入)
依存している部分を外から注入する!「あるオブジェクトが別のオブジェクトに依存している場合、その依存関係を外部から注入することによってオブジェクト間の結合度を低くし、柔軟性を持たせる」
今回の例では外部に依存しているURLSessionモックオブジェクトを外から注入することで、サーバー環境に関わらずテストを実行することが可能になります。
### モック
ダミー・偽物を作成
### スタブ
特定の処理を差し替え、任意の値を返すようにする# テ
【fastlaneエラー解消】[!] Your current version () does not respect the format A or A.B or A.B.C
## 解決方法
#### info.plistにCFBundleShortVersionStringとCFBundleVersionを追加する。#### info.plistをコードで開く
![スクリーンショット 2024-08-20 8.56.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883687/0028dac4-fee5-643b-a1f3-0f6c640e5257.png)#### CFBundleShortVersionStringとCFBundleVersionを追加
“`
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた