- 1. Responderチェーンを辿る
- 2. Flutter・webViewで、Webサービスをモバイルアプリ上に実装し、個別通知機能を追加した話
- 3. Visual Regression Testingを導入してみた(iOSアプリ)
- 4. ラクマ夏のインターン2022に参加してみて
- 5. 【SwiftUI】Textに長押しメニューを追加する
- 6. SpriteKitで2D横スクロールゲームをつくろう(その5)
- 7. @dynamicCallableのdynamicallyCallはasync/awaitでも使える
- 8. 【Swift】iOSでStableDiffusionを使ってみた
- 9. SwiftUIとUIKitが共存している環境でカスタムダイアログを作ろうとして踏んだ罠
- 10. PC,モバイル,VRに対応したマルチプラットフォームアプリのリリースフロー
- 11. SpriteKitで2D横スクロールゲームをつくろう(その4)
- 12. iOS&AndroidのSDK開発で心がけていること
- 13. SwiftUIで円形のプログレスバーを作る
- 14. WWDC2022の面白かった話をまとめてみた
- 15. MacOSX の環境にて iOS アプリを Flutter で開発する環境構築の話
- 16. NavigationStackを使ってみた?
- 17. 複数アーキテクチャ用の xcframework; Rust などで作った静的ライブラリ (*.a) から
- 18. 【Xcode】DerivedDataによるストレージ圧迫に気をつけろ!
- 19. 【備忘録】PushKitのdidUpdateがどうしても呼ばれない場合の対処法
- 20. AppsFlyerとそのアトリビューションの仕組み
Responderチェーンを辿る
bitFlyer システム開発本部 フロントエンド開発部 部長の林です。
マネジメント職ですが、気持ちは今もiOSエンジニアです。
この記事は bitFlyer Advent Calendar 2022 の10日目として書かれました。優秀なiOSアプリエンジニアは画面を平面としてではなく階層として扱う、という持論があります。
ViewやViewControllerの階層が正しく設計され、あるべき層にあるべき情報が保持されていると、複雑な状態を伴うアニメーションにも耐えられる強度を持った美しいアプリが完成します。さて、階層構造を基本とするUIKitですが、他にもう一つ興味深いデータ構造があります。
タイトルにもなった`Responderチェーン`です。
UIResponderはイベントハンドリングを担当するクラスで、UIViewやUIViewController, UIWindow, UIApplication, UIApplicationDelagateなどUIKitにおける主要なクラスはUIResponderを継承しています。
UIResponderはnextというプロ
Flutter・webViewで、Webサービスをモバイルアプリ上に実装し、個別通知機能を追加した話
# ? はじめに ?
アドベントカレンダー参加したいなということで・・・
今日は、「Flutter × webView で開発したサービスに個別通知機能を追加」した話をします。
同じような境遇の方がいたら、ぜひ実装方針参考にしてみてください。
また、他の方法がある方はアドバイスお願いします。# ? 背景 ?
現在、会員制ECサービス Pantrii のバックエンド兼クライアントエンジニアをやっています。
こちらのサービスは「オンライン版コストコ」というキャッチフレーズで活動しています。https://prtimes.jp/main/html/rd/p/000000005.000084659.html
こちらのECは主にアプリ利用をメインターゲットにしており、開発に Flutter を用いています。
是非、記事を読む際に、下記からアプリをダウンロードして触りながら読んでみてください。
– [iOS](https://apps.apple.com/jp/app/pantrii-%E3%83%91%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC-%E3%82
Visual Regression Testingを導入してみた(iOSアプリ)
この記事は[レコチョク Advent Calendar 2022](https://qiita.com/advent-calendar/2022/recochoku)の10日目の記事となります。
https://qiita.com/advent-calendar/2022/recochoku
# はじめに
最近学生時代の友人と会い、昔やっていたギターの熱が再熱してきました村田です。
株式会社レコチョクでiOSアプリ開発をしています。Visual Regression Testing(以下VRT)をタワーレコード株式会社と弊社が共同で開発してる
TOWER RECORDS MUSICという音楽サブスクリプションサービスのiOSアプリに導入したので、
それを紹介しようと思います。https://music.tower.jp/
# VRTとは?
特定の時点でのUIのスクリーンショットをピクセル単位で比較し、差分を検知する回帰テストです。
CIと連携してPR毎に自動でテストを実行することでデグレの検知ができるため、非常に高い効果を発揮します。
# 導入検討時の課題は?
ラクマ夏のインターン2022に参加してみて
# 初めてに
ラクマの iOS Mobile Developer チームで約3ヶ月インターンしました。3ヶ月いろいろ経験させてもらい、本当にあっという間に過ぎてしまいました:sob:
せっかくなので、このインターンの感想を書いてみました。
# 感想
## きっかけ
このインターンはボスキャリという海外大の留学生用のキャリアサイトで見つけ、応募しました。
応募は英語のレジュメを出すだけでとても楽でした。そのあとは簡単なコーディングテストをし、面接に進むことができました。私は日本の面接はすごくお堅いイメージがあって、すごく緊張していましたが、実際やってみると志望動機なのではなく今まで何をやってきたかというのをメインで聞かれたので話しやすかったです。
今回はインターンのために日本に戻るということで、**楽天側が飛行機などの手続きをしてくれ**て、とても助かりました!人事の人もこまめに連絡を取ってくださり、ありがたかったです。
## インターン
インターンはほぼリモートで家から出ることなく仕事ができたので快適でした。もちろんオフィスも広々としていて、動く机もあり居心地が良
【SwiftUI】Textに長押しメニューを追加する
# はじめに
iOS15からTextに長押しできる機能が追加されてました。
意外と使えそうなので記録しておきます。# サンプル
![スクリーンショット 2022-12-09 18.46.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3a4b28c9-f43c-9540-38e9-c6e637ad1ae2.png)# 実装
“`diff_swift
import SwiftUIstruct ContentView: View {
var body: some View {
Text(“テキスト”)
+ .textSelection(.enabled)
}
}
“`# おわり
他にも良さそうな機能があったら記事にします
SpriteKitで2D横スクロールゲームをつくろう(その5)
![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)
## はじめに
[前回](https://qiita.com/am10/items/90e3a2f58ae88e4ad6c4)の続きです。今回はついにゴール作成です:sunglasses:
## 実装
ゴール判定は迷ったのですが指定のブロックに接触したらゴールしたことにします。横に 50 個ブロックをならべているので最後の3つのブロックを判定に使います。
### クリア画面作成
クリア画面を作成します。“`swift
final class ClearScene: SKScene {private let jumpTextures: [SKTexture] = [
.init(imageNamed: “j1”),
.init(imageNamed: “j2”),
@dynamicCallableのdynamicallyCallはasync/awaitでも使える
# 概要
タイトルそのままですが、Swiftの`@dynamicCallable`を使う上で実装が必要になる`dynamicallyCall`で、async/awaitが使えます。
## dynamicCallableについて
dynamicCallableはSwift 5で追加された機能です。
`@dynamicCallable`がマークされた型のインスタンスは、好きな名前で引数をつけて関数呼び出しが可能です。`@dynamicCallable`がマークされた型は`dynamicallyCall(withArguments:)`もしくは`dynamicallyCall(withKeywordArguments:)` のfuncを実装します。
dynamicallyCallは、引数の名前によって動作させることができます。dynamicallyCallは好きな返り値を設定することができます。
“`swift
@dynamicCallable
struct Foo {
func dynamicallyCall(withKeywordArguments pairs:
【Swift】iOSでStableDiffusionを使ってみた
# はじめに
AppleからStableDiffusionのCoreML変換バージョンが公開されました。
StableDiffusionに興味があったので使ってみました。https://github.com/apple/ml-stable-diffusion
しかし、READMEに記載されている方法だと貧弱メモリのMacBookではできなかったので、貧弱MacBookでもできる方法を紹介します。
# サンプルアプリ
今回のサンプルアプリはこちらです。以下の設定ができます。
– Prompt
– Image Count
– Step Count
– Seed
![スクリーンショット 2022-12-08 22.03.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/6c20fa77-c559-9656-03ba-3b46c631723a.png)ちなみに「StepCount」を50にすると生成までに1時間くらいかかります笑
この例では「StepCount」は5で実行して
SwiftUIとUIKitが共存している環境でカスタムダイアログを作ろうとして踏んだ罠
現状(2022/12現在)のSwiftUIでは`alert`にカスタムViewを設定することができません。
そのため、UIKit時代のようにカスタムダイアログを作ろうとすると力技[^1]になりがちです。
[^1]:https://qiita.com/yyokii/items/ec984833c4d040001fcaしかし、UIKitとSwiftUIを共存させようとしているプロジェクトでカスタムダイアログを作ろうとした際に思わぬ引っ掛かり方をしたので共有します。
# 何が起きたか
## やったこと
StackOverflow[^3]を参考にカスタムViewをセットできるViewModifierを作りました。
[^3]:https://stackoverflow.com/questions/66547657/swiftui-full-screen-view-over-navigationbar-and-tabbar※だいぶ端折ってますがそれでも長いので畳んでます
CustomDialog.swift
“`s
PC,モバイル,VRに対応したマルチプラットフォームアプリのリリースフロー
この記事は [クラスター Advent Calendar 2022](https://qiita.com/advent-calendar/2022/cluster) 8日目の記事です。
昨日は @UnlimitedBuildWorks さんの [私とEyePhoneの出会い](https://qiita.com/UnlimitedBuildWorks/items/0952ad190f0052d532bb) でした。
30年前からHMDが存在していたのに驚きですね!!こんにちは!クラスター株式会社でSoftware Engineerをしているizumiです。
私は現在主にiOS/Unityの開発と、アプリのリリース担当をしています。# clusterの対応プラットフォーム
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117503/6a1a6686-e1a9-0030-9a32-c53a5f979c43.png)「cluster」は、VRからスマホまでどこからでも遊べるメタバー
SpriteKitで2D横スクロールゲームをつくろう(その4)
![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)
## はじめに
[前回](https://qiita.com/am10/items/8729f77f3ee512a86052)の続きです。今回はさみしかった画面に敵キャラを登場させます:smiling_imp:
## 素材準備
敵キャラはマヨネーズにしました(とくに意味はありません)。| m1 | m2 | m3 |
| — | — | — |
|![m1](https://user-images.githubusercontent.com/34936885/205437544-999592a3-0c88-4230-a93f-0e86305d043a.png)|![m2](https://user-images.githubusercontent.com/34936885/205437608-8a3310iOS&AndroidのSDK開発で心がけていること
## はじめに
:::note info
この記事は、[Supershipグループ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/supership) 8日目の記事になります。
:::
## 自己紹介![logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608850/18517075-7d09-448b-6704-5a9a23b69b94.png)
[Ad Generation](https://supership.jp/business/adgeneration/)というプロダクトで、
iOS/Androidアプリ向けのSDKを開発している、 @napo と申します。普段は .xcframeworkと.aarを開発して過ごしています。
## なんの記事?
業務で、「モバイルアプリ向けのライブラリを開発する」という、あまり馴染みの少ないポジションについて、
日々、どんなことをやっていて、どんな気付きがあるか、SwiftUIで円形のプログレスバーを作る
こんにちは!
[アイスタイル Advent Calender 2022](https://qiita.com/advent-calendar/2022/istyle) 8日目の記事をを担当します。[hayakawat](https://qiita.com/tomoyuki_HAYAKAWA)です。
アイスタイルではアプリ開発グループでiOSアプリの開発をしています。
今回は最近個人で開発したアプリで利用した円形のプログレスバーについて書こうと思います。## 今回作るもの
円形のプログレスバーとはiPhoneのバッテリーウィジェット等で使われている緑の円のやつです。iPhoneユーザの方は見覚えあるかと思います。
## 作り方
緑の円と背景のグレーの円をピッタリ重ねることで円が満たされていくように見せています。WWDC2022の面白かった話をまとめてみた
# 初めに
WWDCの動画を視聴し、内容についてまとめていきます。
# 内容
## – Meet Swift Async Algorithms
https://developer.apple.com/videos/play/wwdc2022/110355/
前提知識として、`Concurrency` の `AsyncSequence` を用いることで、非同期の値に対しても `Sequence` のように `for in` ループを使うことができました。(らしいです)
以下の例では公式ドキュメントで紹介されているカスタム `Counter` を使用しています。`AsyncSequence` を使用する場合は `makeAsyncIterator()` の実装が必要で、`AsyncIteratorProtocol` を使用する場合は `next()` の実装が必要です。
“`.swift
for await i in Counter(howHigh: 10) {
print(i, terminator: ” “)
}
// Prints: 1 2 3 4 5 6MacOSX の環境にて iOS アプリを Flutter で開発する環境構築の話
本投稿は [テクノロジー検証 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/technology_validation) の 9日目として投稿しています。
https://qiita.com/advent-calendar/2022/technology_validation
今回は、前回紹介しました OSX 10.13 に対し、
開発環境のセットアップ 〜 iPhone のエミュレーション表示までのお話です。> 前回:
[MacOSX の環境にて iOS アプリを Flutter で開発する前段階のお話](https://qiita.com/nk-nara/items/50b5e0740f6826913772)https://qiita.com/nk-nara/items/50b5e0740f6826913772
—
# 今回の目標
以下の画面表示ができる状態までのセットアップです。
![image.png](https://qiita-image-store.s3.ap-northeaNavigationStackを使ってみた?
## はじめに
[SwiftUI Advent Calendar 2022](https://qiita.com/advent-calendar/2022/swiftui)の8日目です?iOS 16からNavigationStackという新しい画面遷移のViewが使えるようになりました?
これにより画面遷移の実装がより簡単になったと日々の個人開発の中で実感しております。NavigationStackの使い方を模索しておりまして、一旦現状を共有することで皆さんに助言をいただきより良いものにしようとする魂胆です。
ですのでこうした方が良いよ!とかなんでこんな書き方しているの?とかご意見ありましたら、ぜひコメントください!また投稿前日に書いているため支離滅裂な箇所もあるかと思いますので生暖かい目で見ていただければと思います?
NavigationStackを使ってモリモリ開発しているアプリが気になる方はこちらから?
https://apps.apple.com/jp/app/ticketmania/id6444087177
(レビューください⭐️)サンプルリポジトリはこちら
複数アーキテクチャ用の xcframework; Rust などで作った静的ライブラリ (*.a) から
# モチベーション
Rust で作った静的ライブラリ(*.a)を, Xcode でビルドしている iOS(/Mac) アプリにリンクして使用したい.
それぞれのプラットフォーム/アーキテクチャ向けにビルドした複数の *.a (とヘッダファイル) を,
1つの xcframework にバンドルする.## ポイント
iOS シミュレータ(や Mac) については, 動作ターゲットが
– x86_64 な Intel Mac
– aarch64(ARM64) な M1/M2 Macのどちらでも使えるように, x86_64 と aarch64 向けの両方を用意したい.
## Rust ? ?
Apple の複数プラットフォーム, アーキテクチャについてビルド済みの静的ライブラリ(*.a)をバンドルしたい, といった需要があるならば, Rust に限った議論ではない.# Rust ビルドターゲットの整理
Apple の各プラットフォーム, アーキテクチャについて, Rust の target triple をまとめておく.
[Target Tier](https://doc.【Xcode】DerivedDataによるストレージ圧迫に気をつけろ!
# はじめに
MacBookのストレージがパンパンになっている原因がわかったので記録しておきます。# 原因
![スクリーンショット 2022-12-07 19.47.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5efbccdc-b5ff-07e8-40be-5fd09ef28a3a.png)こいつでした。
自分のXcodeの設定だとプロジェクトごとにDerivedDataが作成されるようになっていました。
# 修正方法
### まず削除
いま作成されているDerivedDataを全て削除します。### プロジェクトごとに作成されないようにする
① 「Xcode」を選択します。
② 「Settings…」を選択します。
![スクリーンショット 2022-12-07 19.52.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1f238fe8-7d8b-1e76【備忘録】PushKitのdidUpdateがどうしても呼ばれない場合の対処法
結論
アプリのプロジェクト名 → Singing & Capabillitiesから、
Push Notificationが追加されているか確認する。
追加されていなければ、右上のプラスボタンから追加する。
AppsFlyerとそのアトリビューションの仕組み
この記事ではAppsFlyerと、その基本的な機能であるアトリビューションについて解説しています。
## AppsFlyerを一言で言うと・・・
[AppsFlyer](https://www.appsflyer.com/ja)はモバイルアプリのデータを収集・整理し、「アトリビューション」を行うことで、広告の効果を統一的に評価するためのプラットフォームを提供するサービスです。
このようなサービスは、モバイル計測パートナー(MMP; Mobile Measurement Patner)という名前でも知られていて、AppsFlyer以外の類似のサービスとしては adjust, branch, Kochava, singular, tenjin 等が挙げられます。
この中で、グローバルシェアがNo.1のサービスがAppsFlyerになります。![AF-logo_Horizontal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73759/eeb0ed79-45cd-6ea0-b1d6-000645
関連する記事
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関連のことを調べてみた