- 1. [Swift]weak var がnilになるケースに遭遇した!
- 2. 新 App Store 審査ガイドライン 翻訳&差分ガイド 2022年6月号
- 3. [WWDC22概要] Platforms State of the Union
- 4. 【SwiftUI】画面遷移の方法
- 5. Platforms State of the Union WWDC2022をまとめてみたら大量のアップデートがあってすごいことになっていた件について
- 6. 事業フェーズごとにiOS/Androidエンジニアに求められるスキルやアウトプット
- 7. 【Xcode】Swift Package Managerの使い方
- 8. UIFont.TextStyleについて
- 9. NCMBのFlutter SDKを使ってプッシュ通知を送信する(iOS編)
- 10. xcode_backend.sh: Operation not permitted【iOS】【Flutter】
- 11. Xib、Storyboardを作成する上でのノウハウ
- 12. Point Free製のURL-ROUTINGを使ってディープリンクのルーティング書くとめちゃくちゃ便利でした
- 13. Apple Developer Programを自動更新にする方法
- 14. Unity as a LibraryをXCFramework化してiOSの実機とシミュレーターの両方で動かせるようにする
- 15. UIWebViewからWKWebViewへの移行時、対応したはずなのにAppStoreConnectへ反映されない
- 16. XCode13で使用しているライブラリのバージョンが勝手に書き換えられる件の対応
- 17. マークダウン記法の基本・書き方
- 18. SwiftUIのLazyVGridで表示した画像のメモリを解放したい
- 19. 【iOS】iOSのBLEのセキュリティ関連の振る舞いを調べてみるby M5Stack
- 20. 【2022年版】Cisco ルータ コマンド メモ
[Swift]weak var がnilになるケースに遭遇した!
## 投稿の経緯
循環参照を避けるための手段として使う`weak`を付与したインスタンスがnilになるケースに遭遇したので備忘録として投稿。## 循環参照とは
> 循環参照とは「クラスAとクラスBのインスタンスがそれぞれ存在した時、クラスAのインスタンスをクラスBのプロパティに格納し、クラスBのインスタンスをクラスAのプロパティに格納する」といった状態になった時に、お互いにインスタンスを参照しあうため、どちらも解放されずにそのまま残り続けてしまう、という現象です。下記記事から引用。
https://qiita.com/1234224576/items/2241266f7d307cd25ba9#:~:text=%E5%BE%AA%E7%92%B0%E5%8F%82%E7%85%A7%E3%81%A8%E3%81%AF%E3%80%8C%E3%82%AF%E3%83%A9%E3%82%B9,%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86%E3%80%81%E3%81%A8%E3%81%84%E3%81%86%E7%8F%BE%E8%B1%A1%E3%8
新 App Store 審査ガイドライン 翻訳&差分ガイド 2022年6月号
# はじめに
これは2022年6月6日付けで変更された App Store 審査ガイドラインの翻訳&差分ガイドです。
[前回](https://qiita.com/midnightSuyama/items/14ae8afc7636bd704302)からの変更に新規項目はありませんが、既存要件が削られ緩和されています。これまでは、バイナリに最低限のデータを含める必要がありましたが、旧 4.2.3 (ii) が削除されたことで、今後はデータを完全に切り分けて管理できるようです。
全体的に表記が `countries` から `countries or regions` に変更されていますが、今回の修正項目には含めていません。
[https://developer.apple.com/app-store/review/guidelines/](https://developer.apple.com/app-store/review/guidelines/)
# 修正項目
## 1.1.4 ポルノ表現は不可。
> Overtly sexual or pornographic ma
[WWDC22概要] Platforms State of the Union
WWDC22で発表される機能の概要を説明したビデオ「Platforms State of the Union」のまとめ記事になります。皆様のご参考になれば幸いです。
[https://developer.apple.com/videos/play/wwdc2022/102/](https://developer.apple.com/videos/play/wwdc2022/102/)
# Xcode Cloud
今日から利用可能。
XcodeCloudは2023年末まで月々25時間以下なら無料。
この夏の後半からデベロッパアプリケーションで、どのXcodeCloudサブスクリプションレベルにも登録できるようになる。# 3つのトピック
– Vision for Platform
– プラットフォームの現状そして今後の方向性について
– System Experience
– アプリをAppleのプラットフォームのシステム体験と統合するための新しい方法
– New APIs
– 新しいAPIについて# Vision for Platform
##
【SwiftUI】画面遷移の方法
# はじめに
SwiftUIで公式に提供されている画面遷移方法は3つあります。
① NavigationLink
② sheet
③ fullScreenCover今回は上記の3つ + カスタム遷移を1つ紹介しようと思います。
# NavigationLink
![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1eb773ae-9c64-b288-5ca5-6981747daf3f.gif)“`ContentView.swift
import SwiftUIstruct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(“NavigationLink”) {
SubView()
}
}
}
}
“`
“`SubView.sw
Platforms State of the Union WWDC2022をまとめてみたら大量のアップデートがあってすごいことになっていた件について
こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[もぐめっと](https://mogmet.com)です。
![mogmet](https://user-images.githubusercontent.com/1166342/172364673-f3aabf4e-c2fa-4aa2-866e-839205d1ded1.jpg)
先月宮古島へ行ってみたのですが、梅雨でずっと雨でした。5月に南の島はお勧めしません。本日はWWDC2022で発表されたplatforms state of the unionをまとめてみました。
みなさんkeynoteに目が行きがちですが、開発者はこちらに目を通してから各セッションに臨んでみるといい目印になります。https://developer.apple.com/videos/play/wwdc2022/102/
下記の三本で情報をお届けします!
– 1. AppleのPlatformの現
事業フェーズごとにiOS/Androidエンジニアに求められるスキルやアウトプット
色々な事業フェーズに関わる中で、アプリエンジニアが関係者から何を求められていて、何をアウトプットすべきなのかが見えてきたのでまとめておきます。
# 前段
事業状況は0→1、1→10、10→100などの局面によって変化していくものです。
その事業の局面ごとに、アプリエンジニアが為すべきことや求められることというのは変化していくのではないかと私は思います。
もちろん、事業の形態や人員体制などによっても求められることやアウトプットは変わるものですが、そこはサブ要因として今回は踏み込まずに思うところを記載していこうと思います。ちなみにこの記事は
https://qiita.com/yuukiw00w/items/1191c5afde8d3c9e4440
を書く中で、本人が何を気をつけたらいいかという観点だけじゃなく、周りが何を求めて何をアウトプットすべきかという部分も記載したほうがいいかなと思ったので書きました。
こちらの文章はどちらかといえば組織的にアサインする上で気をつけるべきことや、何を期待値とするべきかという部分に関わる話なので、人員体制を決定するような人が読むと参考になるかも
【Xcode】Swift Package Managerの使い方
# 追加
①: リポジトリのURLをコピーする
![スクリーンショット 2022-06-06 21.39.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/da86f855-485b-30e5-0973-35783ecca643.png)
![スクリーンショット 2022-05-07 15.06.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/ebdf2dc3-754b-6382-ce48-3287a423abe7.png)②: Xcodeのメニューバーの「File」を選択
![スクリーンショット 2022-05-07 15.07.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7a84e170-12a7-b2f6-ef2f-0291670921ad.png)
③: 「Add
UIFont.TextStyleについて
ダイナミックタイプ(デバイスのテキストサイズ設定に、アプリのテキストサイズも対応する仕組み?)は公式ドキュメントでも推奨されている事なので、可能なら対応しましょう。
そこで今回は自動的にダイナミックタイプが対応されるUIFont.TextStyleについてまとめました。
# UIFont.TextStyleのフォントを使う方法
“`Swift:ViewController.swift
class func preferredFont(forTextStyle style: UIFont.TextStyle) -> UIFont
“`
UIFontのクラスメソッドであるpreferredFontメソッドを使います。
そしてstyleパラメータに希望のUIFont.TextStyleを指定すれば戻り値として指定のフォントが返ってきます。# UIFont.TextStyle一覧
|UIFont.TextStyle|用途|
|:-:|:-:|
|.body|body(本文)用|
|.callout|callout(図の一部に線を引いて説明するテキストの事らしいです)用|
|.cap
NCMBのFlutter SDKを使ってプッシュ通知を送信する(iOS編)
NCMBのコミュニティSDK(公式サポートは提供されていません)としてFlutter向けのSDKを提供しています。Flutter SDKはiOS/Androidはもちろんのこと、Webなどでも利用できます。つまりスマートフォンネイティブの機能は提供していません。
NCMBのプッシュ通知機能は数多くの方に使われている機能でもあり、今回はFlutter SDKを使ってどうプッシュ通知機能を使えば良いのかを紹介します。まずはiOS編です。
[ncmb | Dart Package](https://pub.dev/packages/ncmb)
## 利用するライブラリ
上述の通り、Flutter SDKにはネイティブ機能がありませんので、プッシュ通知で利用するデバイストークンを取得する機能がありません。そこで下記のライブラリを使います。
– [push | Flutter Package](https://pub.dev/packages/push)
## セットアップ
iOSの場合はiOS Dev Centerにてアプリを登録し、Push Notificationを有効にしま
xcode_backend.sh: Operation not permitted【iOS】【Flutter】
# Error
“`
/bin/sh: /Users/xxxxx/Documents/dev/flutter/packages/flutter_tools/bin/xcode_backend.sh: Operation not permitted
Command PhaseScriptExecution failed with a nonzero exit code
“`# Solution
If you open a app with xcode and another code editor, close another code editor.
Xib、Storyboardを作成する上でのノウハウ
# この記事の対象者
– Autolayout のチュートリアルや入門書を読んだけど、実務のレイアウト作成が作りづらいと感じている人
– iOS のUI作成のガイドラインを作成したい人
– 他の開発者が Autolayout をどう使っているか知りたい人## 公式ドキュメント
[Auto Layout Guide
](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/index.html)## Storyboardのノウハウ
– StoryboardにViewが多いとXcodeで開くときに時間がかかる
– Storyboardは分割して使用しよう
– 可能ならXibにしよう
– SegueをStoryboard上で使うと動作が重くなるので、画面が少ないアプリ以外ではやめておこう
– 分割すると、Storybaordで何をやっているかわからなくなるが、動作が重いデメリットは大きい
– UINaviga
Point Free製のURL-ROUTINGを使ってディープリンクのルーティング書くとめちゃくちゃ便利でした
# Point Free製のURL-ROUTINGを使ってディープリンクのルーティング書くとめちゃくちゃ便利でした
## 動機
使用してみて便利だったので記事にします。
DeepLinkで渡っていたURLをどう処理するかを、文字列をゴニョゴニョすることなく、
うまくルーティングすることができたので備忘録として残しておきます。SwiftでiOSアプリ開発だけでなく、サーバーサイドにも使用できるそうです。
## ルートをenumで定義する
ルーティングをenumで定義していきます。
“` swift
enum AppRoute {
case books
case book(id: Int)
case searchBooks(query: String, count: Int = 10)
}
“`URLごとに、どういうPathで渡ってきた場合、
どのcaseで返せばよいかを記述します。
パラメータとして渡される場合、どんな型で渡されるかも記述します。
Apple Developer Programを自動更新にする方法
Apple Developer Program は年に一度、更新が必要で30日前になると下記のようなメッセージがAppStoreConnect上に表示されます。
![appStoreConect.001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1281022/500160e8-83c3-5a55-c0ec-859982bdde4a.png)
自動更新がうんぬんと書いていますが、青字のApple Developper Webサイトからだと日本は自動更新に対応しておらず毎度、手動で更新する必要があります。
日本語でApple Developer Programの更新について解説しているサイトではこのように解説していますが、StoreにあるApple Developer Appからだと通常のアプリと同様にサブスクリプション契約できます。
Unity as a LibraryをXCFramework化してiOSの実機とシミュレーターの両方で動かせるようにする**[Unity as a Library](https://unity.com/ja/features/unity-as-a-library)**(以降、`UaaL`と省略)をiOSネイティブアプリに組み込んだ上でシミュレーターで動かそうとした所、以下のような課題に直面しました。
– **Unityが実機向け or シミュレーター向けのどちらかでしかビルドできない問題**
– UnityのiOSビルドは元より「実機向け」か「シミュレーター向け」かのどちらかでしかビルド出来ないという制約が存在するが、**UaaLを組み込んだネイティブアプリ側でも同じ制約が発生してしまう**
– → 例えば「[Player Settings -> Target SDK](https://docs.unity3d.com/Manual/class-PlayerSettingsiOS.html#Config-Device)」に`DeviceSDK`を指定してビルドしたUaaLをネイティブアプリに組み込んだ場合には、ネイティブアプリ側も実機でしかビ
UIWebViewからWKWebViewへの移行時、対応したはずなのにAppStoreConnectへ反映されない
# 何があった
2020年ころにWKWebViewに移行しないとアプリが公開できなくなるということがあった。
WKWebViewに対応してアップロードしたが、何故かAppStoreConnectで弾かれ続けていたという事象です。
化石アプリで更新が止まっているアプリだとまだUIWebViewあるかもしれないので一応残しておきます。# どういう事象よ
参考:[【iOS UIWebView廃止の対応策】(2020年12月対応必須)cordova利用のハイブリッドアプリにおける「WKWebView」への移行対応について](https://b-risk.jp/blog/2020/08/uiwebview_to_wkwebview/)AppStoreConnect上で起きていた事象は、上記の記事で書かれている内容とほぼ同じです。
AppStoreConnectへはアップロード出来ていたのですが、該当のビルドバージョンを処理中…のような表記がしばらく出た数分後、何事もなかったように消え去りました。
この時、本来であればAppleからメールが来るので原因に気づけるはずですが、当時はメール
XCode13で使用しているライブラリのバージョンが勝手に書き換えられる件の対応
# 何が起きたか
いつも通りアプリリリースのためにビルドをアップロードした。ところがなぜかアプリの動作がおかしい・・・。
確認したところ、ライブラリのバージョン(CFBundleShortVersionString)がアプリのバージョンに書き換えられていたことにより障害となっていることが発覚した。# なぜ起きたか
XCode13から追加された「Manage Version and Build Number」にチェックを入れると再現される。
ライブラリのバージョンがアプリのバージョンで上書きされる。
確認方法は、アップロード前の確認画面でライブラリのバージョンを確認するとよい。# 参考
[Xcode “Manage Version and Build Number” option](https://stackoverflow.com/questions/68237292/xcode-manage-version-and-build-number-option)
[Xcode 13 app archiving is modifying framework plist](https:
マークダウン記法の基本・書き方
## マークダウン記法の書き方
会議の議事録や社内ドキュメント、自分のメモを効率化するためにオススメなのが、「**マークダウン記法**」。上記の見出しや強調、文字装飾が簡単にできるので、読みやすい文書ができ、業務効率が上がる。初回は、簡単にできる「マークダウン記法」の基本と使い方について解説します。
#### 改行
行末で「**半角スペース**」を「2個」入力すると改行される。
【例】
表記:私は〇〇です。(半角スペース×2)よろしくお願いします。
表示:私は〇〇です。
よろしくお願いします。#### 見出し
冒頭に「#」を入力することで見出しを作ることができる。「#」の数によって見出しの大きさを変えることができる。
【例】
表記:# Blogの書き方
## Blogの書き方
### Blogの書き方
表示:
# Blogの書き方
## Blogの書き方
### Blogの書き方#### 箇条書き
文字の前に「*」(アスタリスク)をつけることによって箇条書きになる。
【例】
表記:
*LINE
表示:
* Twi
SwiftUIのLazyVGridで表示した画像のメモリを解放したい
## ObservableObjectを使って実装
– ObservableObjectのinitと画像取得がlazyに実行されていることが確認できる
– しかしスクロールしていってもdeinitが呼ばれない
– したがって画像のメモリも解放されず、アプリの**メモリ使用量が増え続ける**“`swift
struct ContentView: View {
var body: some View {
ScrollView {
LazyVGrid(columns: [GridItem(.adaptive(minimum: 100))]) {
ForEach(0..<1000, id: \.self) { id in SwiftUIImageView(id: id) .frame(width: 100, height: 100) } } }
【iOS】iOSのBLEのセキュリティ関連の振る舞いを調べてみるby M5Stack
# はじめに
Corebluetoothの実装について記載していきます。
[①その1:BLEにおける役割](https://qiita.com/JunNonaka/items/348eeecc63cbce4cfed0)
[②その2:セントラルの実装](https://qiita.com/JunNonaka/items/cde2f4f3934a3d452770)
[③その3:ペリフェラルの実装](https://qiita.com/JunNonaka/items/c7bd386e4a3aa5e245d3)
[④その4:セントラルとペリフェラルで通信させてみる](https://qiita.com/JunNonaka/items/13bee62e911471b5a736)
⑤番外編:iOSのBLEのセキュリティ関連の振る舞いを調べてみる←今回はここ今回はCoreBluetoothの使いかたというよりもiOSのBLEのセキュリティ関連の振る舞いについて記述していきます。
# 開発環境
+ iOS 15.5
+ M5Stack-Core2# 導入
BLEの機器をiOSと接続す
【2022年版】Cisco ルータ コマンド メモ
# Cisco ルータ コマンド メモ
– Cisco Packet Tracer上におけるコマンド利用のメモ
– [Cisco Packet Tracer のダウンロード](https://www.netacad.com/courses/packet-tracer)## 設定モードへ
“`
>enable
“`## 共通設定
– ドメイン名を引かせない(コマンドをミスタイプすると名前解決しようとする不便を解決)
“`
(config)#no ip domain-lookup
“`## 設定保存
### 現在の設定を起動時設定に保存“`
#copy running-config startup-config
“`## パスワード設定
“`
(config)#enable password {password}
“`## ユーザ設定/作成
“`
(config)#username {username} password {password}
“`## ホスト名・ドメイン名・NTP・DNS設定
“`
(config)#hostn