- 1. 【SwiftUI】レトロスタイルを実装してみた
- 2. 【IT-DIY】AppleWatchを使って、インターネット回線を必要としないチャットツールの作成(Part.2)
- 3. 【IT-DIY】AppleWatchを使って、インターネット回線を必要としないチャットツールの作成(Part.1)
- 4. 【SwiftUI】タイピング風テキストアニメーションを作ってみた
- 5. NSAttributedStringと絵文字でなんで文字化けになる?
- 6. 【個人開発】交換日記のiOSアプリを作ってみました【Flutter】
- 7. 【SwiftUI】ロック画面ウィジェットの実装
- 8. 【LIFF・LINEログイン】自動ログインに失敗する・ユニバーサルリンクエラーの解消について
- 9. 【SwiftUI】Styleの指定方法を簡潔にする
- 10. [Swift]遅延処理(asyncAfter)をキャンセルする
- 11. React Native で OS判定 を実装する方法
- 12. React Native | fastlane コマンド実行時に README.md が自動生成されないようにしたい
- 13. iOSでTFLiteを動かすのにとても苦労した
- 14. 【Xcode】iOS16以上の端末で、OTA配信しているipaが開けないエラー
- 15. 【SwiftUI】iOS16から登場したPasteButtonについて調べた
- 16. カメラからQRコードの検出、ハイライト表示、SwiftUI対応ビューの作成
- 17. [TCA]推しがv1.0にいってくれたらしぬ
- 18. React Native Agora v3からv4の変更点
- 19. 【Swift】Xcodeのログを見やすくしたい
- 20. エラー処理についてすごく簡単にまとめてみた#3
【SwiftUI】レトロスタイルを実装してみた
# はじめに
[こちら](https://appmaster.io/ja/blog/2022nian-nomobairuapuriuidezainnoaideatotsupu10)のサイトを見ていたら90年代のスタイルがイケてたのでSwiftUIで再現してみました。
![appmaster](https://user-images.githubusercontent.com/84154073/209798974-add7bf62-234a-46b3-a215-4852594bec61.png)# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2022-12-28 at 19 37 47](https://user-images.githubusercontent.com/84154073/209799326-ffa20435-8047-41e1-9735-0ec843263049.gif)# 実装
“`swift:ContentView
import SwiftUIstruct ContentView: Vi
【IT-DIY】AppleWatchを使って、インターネット回線を必要としないチャットツールの作成(Part.2)
※こちらの記事はPart2です。
Part1はこちら↓
https://qiita.com/nextvision-sugakir/private/d2c9222160284639a156はじめまして、IT企業に入社して1年目のSEです。
Part1では開発までの道のり、DIYするアプリの概要までをご紹介しました。(Step1~Step3)
Part2では、DIYの実施から完成品の試用までをまとめました。# 【Step4】いざ実装
まず仕様をおさらいすると、iPhoneからAppleWatchにメッセージを送信する。AppleWatchはメインのアプリ画面を更新し、画面の上部に新規のメッセージを表示する。
今回作る機能は以下の通りです。
– ボタン、ラベルの実装(AppleWatch側アプリ)
– メッセージの入力機能(iPhone側アプリ)
– データの送受信の機能(両者の疎通確認)となります。それぞれ書籍等を参考に実装してみます。
まずはiOSのアプリからAppleWatchのアプリに接続したいと思います。既にOS側が提供してくれているWatchConnecti
【IT-DIY】AppleWatchを使って、インターネット回線を必要としないチャットツールの作成(Part.1)
はじめまして、IT企業に入社して1年目のSEです。
Part1では開発までの道のり、DIYするアプリの概要までをご紹介します。(Step1~Step3)
# はじめに
昨年、個人的にAppleWatchを購入しました。今年の春に入社した私は、弊社の取り組みでIoT/ウェアラブルデバイスを活用したDIYをするという活動があり、これはまたとないチャンスと思い、今回AppleWatchのアプリ開発をすることにしました。標題のアプリを作ろうと考えた経緯は【Step3】でご説明します。…とはいっても、もともとアプリ開発をしていたわけでもないですし、iPhoneユーザではありましたが、iOS(ましてやWatchOS)の知識があるわけではありません。1から勉強するしかない!と思い、以降の手順でDIYを行いました。
# 【Step1】書籍を購入
そもそもAppleWatchのアプリ開発はあまり頻繁に行われているものではなく、インターネット上のWebサイトの情報は古いものばかりでした。
そこで私は詳しくまとめられている、AppleWatchのアプリ開発に関する書籍を購入しました。
いざ読んでみ
【SwiftUI】タイピング風テキストアニメーションを作ってみた
# はじめに
ChatGPTはAIからの返答がタイピング風のアニメーションで返ってきます。
これをSwiftUIで再現できないかなと思い試してみました。![画面収録_2022-12-27_21_24_15_AdobeExpress](https://user-images.githubusercontent.com/84154073/209666946-f0f3dfb6-0459-40d9-a56e-3102bbf5fd1c.gif)
# サンプルアプリ
ChatGPTの返答をそのまま表示してます
![Simulator Screen Recording – iPhone 14 Pro – 2022-12-27 at 21 35 11](https://user-images.githubusercontent.com/84154073/209667552-b15dfd1c-821d-4279-afb9-558920d3c279.gif)# 実装
“`swift:ContentView
import SwiftUIstruct ContentView: View {
NSAttributedStringと絵文字でなんで文字化けになる?
# 背景
超久しぶりに文字列と戦ったのでここで残しておきたい!
みんなも文字のカウントいつ何を使えばいいか思い出してみましょう例のこちら文字列値がある
“`swift
@Binding var text: String
“`でその文字列に超えた制限だけハイライトをしたいな〜と思ったあなたへ、文字のみであればtext.countでも全然十分!
ただ、multibyte絵文字含めてしまうとどう計算すればいいのでしょうか?# text.count
上記の書いた通りに文字しか想定していない場合はこれだけでいける!“`swift
let text = “Hi my name is Adam!”print(text.count) // 24
let textView = UITextView()
textView.frame = CGRect(x: 150, y: 200, width: 200, height: 50)
let attributedText = NSMutableAttri
【個人開発】交換日記のiOSアプリを作ってみました【Flutter】
___「Exchange Diary」という交換日記を誰とでもできるアプリをリリースしました!___
https://apps.apple.com/jp/app/exchange-diary/id6444697825
– **誰でもいいから、誰かに話を聞いて欲しい**
– **誰かの日常を覗いて見たい**そんな人に是非使って欲しいアプリになります。誰かとマッチングしたら、交換日記が始まります。
家族や友達を誘って始めることも可能です。技術はFlutter、Firebaseを使いました。
詳しい話は別のところでしようかな。するかな。どうかな。僕自身も、奥さんや友達とこの交換日記をはじめてみまして、新しい発見や刺激を得ている気がします笑
みなさまにもこのアプリで交換日記の面白さを少しでも味わっていただけたら幸甚です
【SwiftUI】ロック画面ウィジェットの実装
# iOS16新機能
iOS16からロック画面ウィジェットが新しく登場しました。
ロック画面ウィジェットは、iOS14から登場したホーム画面ウィジェットを追加するWidgetFamilyに以下3点が新しく追加されました。
・accessoryRectangular = 晴れアイコンの箇所
・accessoryCircular = 月アイコンの箇所
・accessoryInline = 12月27日火曜日のテキストの箇所今回はRectangularとCircularウィジェットの実装方法を紹介します。
# 1.WidgetExtensionの作成
File→New→Target→Widget Extension
【LIFF・LINEログイン】自動ログインに失敗する・ユニバーサルリンクエラーの解消についてこんにちは。お久しぶりです。
今回は以下の問題について解説していこうと思います。
– [外部ブラウザにおいてLINEログイン(自動ログイン)に失敗する](#自動ログインの問題について)
– [外部ブラウザにおいてLIFFのURLスキーム “https://liff.line.me/{LIFFID}“ にアクセスした際に、LINEアプリ内のブラウザではなく、外部ブラウザでエンドポイントURLに遷移してしまう](#liffでの問題について)
– [これらの問題の原因について](#これらの問題の原因について)
– [備考](#備考):::note warn
今回取り上げるこれらの問題は主にiOS版LINEを利用しているユーザーで発生する場合があるようです
:::### 自動ログインの問題について
LINEログインの開発者の皆様はエンドユーザーなどからの不具合の報告などで、以下のような一度は目にしたことがあるのではないでしょうか。
– `LINEアプリが未インストール、もしくは、ユニバーサルリンクが正しく動作していません。メールアドレス・パスワードを入力してログインしてくだ
【SwiftUI】Styleの指定方法を簡潔にする
# はじめに
SwiftUIはUIコンポーネントにスタイルが指定できるようになっています。
そんなスタイルには指定方法が2つあります。
TabViewのPageスタイルを例に挙げてみます。
以下の2つの指定方法が考えられます。“`swift
TabView {
Text(“タブ1”)
Text(“タブ2”)
Text(“タブ3”)
}
.tabViewStyle(PageTabViewStyle())
“`
“`swift
TabView {
Text(“タブ1”)
Text(“タブ2”)
Text(“タブ3”)
}
.tabViewStyle(.page)
“`これらは同じ動きをします。
比べてみると下の方が簡潔に書けていると思います。今回は`.page`のようにカスタムスタイルを指定できるようにする方法を紹介します。
# サンプルアプリ
システム設定のようなリストを作成してみようと思います。
![IMG_1867](https://user-images.githubusercontent.com/8415407
[Swift]遅延処理(asyncAfter)をキャンセルする
# はじめに
時間差で処理を実行したい場合に使う`asyncAfter`の処理を、何らかのアクションでキャンセルしたい場合の方法を紹介します。# コード
“`Extension.swiftextension DispatchQueue {
func cancelableAsyncAfter(deadline: DispatchTime, execute: @escaping () -> Void) -> DispatchWorkItem {
let item = DispatchWorkItem(block: execute)
asyncAfter(deadline: deadline, execute: item)return item
}
}
“``DispatchWorkItem`を返す関数をextensionに追加します。
“`ViewController.swift
final class ViewController: UIViewController {
privat
React Native で OS判定 を実装する方法
## やりたいこと
React Native で OS判定 を行い
iOS と Android で処理を出し分けたい## 使用技術
– react : 18.1.0
– react-native : 0.70.2
– @types/react-native : 0.70.0
– typescript : 4.8.3## 実現方法
[React Native Platform](https://reactnative.dev/docs/platform) を使用すれば
iOS と Android で処理を分けることは実現可能以下に、実際のサンプルコードを記載しておきます。
### iOS判定をしたい場合
`Platform.OS === ‘ios’` で判定を行う
“`tsx
import { Platform } from ‘react-native’;
const isIOS = Platform.OS === ‘ios’
console.log(isIOS)
// expected output : iOSの場合`true`になる。Androidの
React Native | fastlane コマンド実行時に README.md が自動生成されないようにしたい
## やりたいこと
ローカルPCから `fastlane` コマンドを実行したときに
fastlaneディレクトリ配下に `README.md` が自動生成されないようにしたい## なぜ、この作業をやりたいと考えたのか?
fastlaneディレクトリ配下の `README.md` を独自で編集していたので、fastlaneコマンドを実行するたびに `README.md` に Gitの差分が出るのが面倒だったから
## なぜ、毎回 README.md が作成されるのか?
デフォルトの設定では`fastlane`コマンドを実行時に
`fastlane/README.md`が自動で作成される仕様だから## 実現方法
`fastlaneディレクトリ` の Fastfile に `before_each` block を追加する
Android も iOS も追加する処理は同様の処理で問題ない。
### Android の場合
“`ruby
# android / fastlane / Fastfiledefault_platform(:android)
iOSでTFLiteを動かすのにとても苦労した
前回の記事「[姿勢推定の精度をval2017で評価しつつiOSでの動作を試していく](https://qiita.com/mbotsu/items/13442b54a2358e084bec)」ではCoreMLを試しました。
今度はTensorFlowLiteでもVitPoseを動かしてみます。## モデルをTFLiteに変換する
Pytorch -> ONNX -> Tensorflow -> TensorFlowLiteの順に変換しました。
注意点としては、proftobufのバージョン違いが発生するので変換する環境は別々に作った方がいいです。### Pytorch -> ONNX
ViTPoseが提供しているONNX変換コードを使います。
https://github.com/ViTAE-Transformer/ViTPose/blob/main/tools/deployment/pytorch2onnx.py変換に必要なViTPoseの実行環境を作るのに地味にハマります。
環境が出来ればコマンドラインから実行します。
“`
$ python tools/depl
【Xcode】iOS16以上の端末で、OTA配信しているipaが開けないエラー
# 環境
– Mac M1 OS Monterey12.6
– Xcode 14.0.1
– iPhone13Pro iOS 16.1.2# OTA配信しているipaが開けない
iOS16の端末でOTA配信しているipaをインストールしたが、`”アプリ名”をインストールできません。あとでやり直してください。`とダイアログが出続けてしまう。
iOS12や13では正常にインストールすることができている。# 解決までに行ったこと
#### ①最新のXcodeでアーカイブを作成する
筆者はXcode13と14両方使用する機会があったため、案件のアプリによって対応するバージョンが異なっていることを忘れていたので、もう一度アーカイブを作成しました。ただそれでもうまくいかず、、#### ②manifest.plistをもう一度作成する
原因を考えていると、最近`manifest.plist`のファイルを作り直したらしくそれでOTAを配信行っていました。
なので、Xcode14の方でもう一度作り直してインストールするとダウンロードすることができました。# 参考
`manifest.pl
【SwiftUI】iOS16から登場したPasteButtonについて調べた
# はじめに
iOS16から追加されたコンポーネントで使ったことがなかったので調べてみました。# 基本的な使い方
`payloadType`には[こちら](https://qiita.com/SNQ-2001/items/093d56fba9bdb9c838e3)にある型が指定できると思います。
戻り値は指定した型の配列です。複数の型を取得する方法もありますが、使い方があまり変わらないので今回は省略します。
“`swift
import SwiftUIstruct ContentView: View {
@State var text: String = “”
var body: some View {
VStack(spacing: 50) {
TextField(text: $text, axis: .vertical) {
Text(“テキストフィールド”)
}
.textFieldStyle(.roundedBorder)
カメラからQRコードの検出、ハイライト表示、SwiftUI対応ビューの作成
この記事では、カメラからのビデオストリームを表示し、
QRコード(または他のタイプのコード)を検出し、
その周りに矩形を表示することによってコードを強調するビューを作成することについて話します。
また、SwiftUI互換のビューを作成し、SwiftUIのビュー内で使用できるようにします。![RPReplay_Final1671678172_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/94abc373-5262-de1b-0d03-130b4166d1af.gif)
# 変数を用意する
まず、スキャンした結果とカメラプレビューレイヤーを保存するために、以下の変数を追加します。
“`swift
@Binding var scannedCode: String?
var viewSize: CGSizeprivate var captureSession = AVCaptureSession()
private var qrCodeFrameV
[TCA]推しがv1.0にいってくれたらしぬ
# はじめに
この記事では、わたくしの推しOSSであるThe Composable Architecture(TCA)のバージョン1.0への道について、本家Discussionsに書かれていたことを軽く解説したり、これまでのバージョンを振り返ったりしてみます。
# 本題
## なぜまだv1.0ではないのか
v0.42.0の現在、v1.0へと至るロードマップのようなものがGitHub上のDiscussionsでRoad to 1.0というタイトルですでに述べられています。
https://github.com/pointfreeco/swift-composable-architecture/discussions/1477
上記を読むと、
> We’ve held off on 1.0 for this long not because we believe the library is in beta/unstable territory, but because there were a few key problem areas of library use th
React Native Agora v3からv4の変更点
現在はReact Nativeでビデオ通信を用いたアプリを開発しています。
初期の開発は[React Native WebRTC](https://github.com/react-native-webrtc/react-native-webrtc)を使用していましたが、現在はドキュメントの充実と将来的な開発の安定性を考えて[React Native Agora](https://github.com/AgoraIO-Extensions/react-native-agora)を使用しています。
導入時期はまだv3系でしたが、node_modulesをアップデートした際にv4系に上がっていました。
修正する箇所が何箇所かあったので、まずは調査を兼ねてミニマムなものを作りました。
## 作ったもの
以下の要件のシンプルなものを作成しました。
1. スクリーンをロードした際に自分のカメラの映像を表示
2. 「JOIN」をタップするとserverへuidTokenを作成をリクエストし、チャンネルへJOINする
3. 両方のデバイスがJOINすると相手の画面に映像が小窓で表示される
【Swift】Xcodeのログを見やすくしたい
# はじめに
成功or失敗で条件分岐させた時にどこが実行されたか一目でわかるようにしたいです。
そう思った時にログに色を付けられたらいいのでは?と思ったのですが出来なさそうなので別の方法を考えました。???????⬛⬜
このような絵文字を使用してログを出力できるようにします。
# 実装
“`swift
public enum LogType {
case verbose
case info
case debug
case success
case warning
case error
case custom(String)
}public func print(_ type: LogType, _ message: String) {
switch type {
case .verbose:
print(“⬜-VERBOSE: \(message)”)
case .info:
print(“?-INFO: \(message)”)
case .debu
エラー処理についてすごく簡単にまとめてみた#3
## はじめに
エラー処理について3にパターン分けて記事を投稿する。①Optional型 >>>>> 成功時は値を返し、失敗時はnilを返す
②Result型 >>>>> 成功時は値を返し、失敗時はエラーの値(詳細)を返す
③do-catch文によるエラー処理今回は③について記載する。
下記URLの続編である。
https://qiita.com/RammaruIshii/items/861da45cd8c610b43341
## 対象者
この記事は下記のような人を対象にしている。– プログラミング初学者
## 詳細
– do-catch文によるエラー処理
– エラーが発生する可能性のある処理をdo節内に記述する。そして、エラーが発生した場合、catch節へプログラムの制御が移る(要は、do節でエラーが起きると下で定義したcatch節内へ処理が走りますよってこと)。– コードを見る上で押さえておきたいキーワードなどを簡単に説明
– tryキーワード
– throwsキーワードを定義した関数などを呼び出すときに必要なキーワード。