投稿

[iOS15] String catalog リンク

下記あたりの先駆者の記事が参考になりそうです。 String catalogsの使い方サイト  iOS15のローカライズ           https://rightcode.co.jp/blog/information-technology/ios-string-catalogs-xcode-15-syain           https://qiita.com/shimoto/items/99d52a12ed3a2323bae3 複数のテーブルに分けて管理が可能 If your string catalog gets too big, you can create multiple string catalog files within a single Xcode project, and give each a unique name. Then choose which string catalog to use for each translation by passing the string catalog name to the  table Name  or  table  parameter to the respective localization API as follows:    ドキュメント参照 https://developer.apple.com/documentation/xcode/localizing-and-varying-text-with-a-string-catalog   String catalogへの移行 [iOS] Localizable.strings からString catarogsに移行する           https://qiita.com/yoshitaka/items/1c15b590d063b20ccb64          https://dev.classmethod.jp/articles/localizable-strings-to-string-catalog/ パッケージでの利用 パッケージ内でString Catalogを管理する方法 https://qiita.com/k_lzrd/items/6de490ec22b980f4cf39 考え方としては、下記のリンクの方

[SwiftUI](iOS15復習) AsyncImageの特徴から利用シーンを考えてみる

アプリで、サポートOSが15になっている昨今、iOS15回りで、利用できるようになった機能についてフォーカスしてみる 今回は、AsyncImageを利用機会について取り上げてみよう。 AsyncImageの使い方は、 CodeCandy さんの記事がわかりやすいです。 AsyncImageの下記の[特徴]から[利用シーン]が想定されるのではないでしょうか [特徴] ・URLから画像の取得から、PlaceHolderの設定、画像の表示のアニメーション制御ができます。 ・ドキュメントの記載や他サイトの記事をみているとキャッシュ機構がないようです。 [利用シーン] iOS15をMinimum TargetOSとした場合のアプリは画像表示での利用は、 1)キャッシュ不要 AsyncImageを利用する ※キャッシュ機構が不要な箇所は、AsyncImageを利用して、実装の簡素化ができる 2)キャッシュが必要 2-1) 案件でライブラリの利用ができる場合は、「Kingfisher」、「Nuke」あたりを利用するのが良いさそう 理由:メモリキャッシュ、ディスクキャッシュ、プリフェッチ機能があるため 参考: Rettyさんの記事 https://engineer.retty.me/entry/2022/08/18/161226 ※KingFisherはWebPもサポートしているようです。 https://github.com/onevcat/Kingfisher/wiki/FAQ#can-i-load-some-special-image-format-like-webp 2-2) ライブラリが利用が難しい案件のプロジェクトについて 下記のようなURLSessionのコードで記載

SwiftUI Appleのチュートリアルを再度確認してみた。

SwiftUIが出始めた時のチュートリアルより、わかりやすく見やすくなっている印象をもった SwiftUIの導入方法はもちろん、Xcodeを利用した開発で便器な機能も紹介をしてくれている https://developer.apple.com/tutorials/swiftui/creating-and-combining-views 気づき ・プレビューの編集モードでは、プレビューのパーツにカーソルを当てると、コードの該当パーツにカーソルがあたる ・右上の+ボタンからの利用したい部品を選択ができるが、選択したパーツの使い方のプレビューが表示される ・Previewを並べることができる ・UiKitのViewを使う時は、よく下記の書き方を利用しますね。 https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit

ADEP(Apple Developer Enterprise Program)が更新できない場合、非公開アプリをどうする?

企業が利用していたADEP(Apple Developer Enterprise Program) 契約更新ができない場合は、90日を超えるとアプリが使えなくなるようです。 https://www.micss.biz/2022/03/21/5164/ 契約更新には、 https://www.micss.biz/wp-content/uploads/2023/05/20230515_adep_eligibility.jpg (参照:) https://www.micss.biz/2023/05/15/5972/ こちらの発表された資料より、 https://doc.feedtailor.jp/seminar/20230902_iosdc2023/iOSDC2023_day1TrackC1615_adep2adp.pdf ADEPの契約更新が不可の場合で、非公開なAPPを作りたい場合は、 ADP(Apple Developer Program)に契約を変更して、カスタムAppを作ることになりそうですね。 非公開appという選択もありそうですが、 「非表示Appは非公開App ではないことに注意して下さい。AppStoreで公開されるアプリにたどり着く方法を直リンクに限るだけの話です。直リンクURLが広く知られたら、AppStoreで公開するのとさほど変わらない状態になります。」 (参照: https://www.micss.biz/2022/02/07/5041/ )

iOSDC2023 公開資料及び、Qiitaリンク

1)iOSDC2023 公開資料 day1以降の公開されている資料です。ご参考までに https://doc.feedtailor.jp/ seminar/20230902_iosdc2023/ iOSDC2023_day1TrackC1615_ adep2adp.pdf https://speakerdeck.com/ swiftty/swiftui-plus-kotlin- multiplatform-kai-fa-dejian- etachang-suo-toduan-suo https://speakerdeck.com/ kamimi/understanding-the- fundamentals-privacy-changes- to-address-by-next-spring https://speakerdeck.com/ras0q/ iosdc-2023-how-to-control- device-orientations-in-ios16- 8eb197f3-45a3-41eb-9937- a1b01aa86baf https://speakerdeck.com/ akihiro_kokubo/ swiftkodonopahuomansue-hua- 6tunokesudenoshi-yan-jie-guo- wobao-gao-iosdc-japan-2023? slide=1 2) 参考:Qiita記事 Qiitaの@miyakooti(に)さん、@yuukiw00wさんの記事です。 ご参考までに https://qiita.com/miyakooti/items/5d812dd8508c04ff3a6b https://qiita.com/yuukiw00w/items/4a8c67a21618fd4626fc

iOSDC2023 day1 公開資料

 9/2 day1の公開されている資料とレポートを集めてみました。ご参考までに ・基礎から理解する!来年春までに対応すべきプライバシーの変更点  https://speakerdeck.com/kamimi/understanding-the-fundamentals-privacy-changes-to-address-by-next-spring ・基礎から理解する!来年春までに対応すべきプライバシーの変更点 https://speakerdeck.com/satoshi0212/macosdezi-fen-nokamerawozuo-tutemiyou-core-media-io-extensions ・iOSDC2023:聴いて話すiOS 現実世界の「音」との連携 https://speakerdeck.com/chocoyama/iosdc2023-ting-itehua-suios-xian-shi-shi-jie-no-yin-tonolian-xi ・6年間運用したiOSアプリのリアーキテクトについて具体的に解説 https://dev.classmethod.jp/articles/iosdc-japan-2023-report-07/ ・SwiftUI + Kotlin Multiplatform 開発で見えた長所と短所 https://speakerdeck.com/swiftty/swiftui-plus-kotlin-multiplatform-kai-fa-dejian-etachang-suo-toduan-suo ・macOSで自分のカメラを作ってみよう - Core Media IO Extensions https://speakerdeck.com/satoshi0212/macosdezi-fen-nokamerawozuo-tutemiyou-core-media-io-extensions ・ソーシャルログイン機能のデバッグ地獄をくぐり抜けてリファクタリングした https://speakerdeck.com/taka1068/sosiyaruroguinji-neng-nodebatugudi-yu-wokuguriba-keterihuakutaringusitahua ・旅行アプリでより正確にパスポートを読み込む技術

iOSDC2023 day0 公開資料

 今年も始まりましたね🎵 公開していた資料を掲載します。 [資料] ・UIKit ベースの Custom UIContentConfiguration API を 用いた複雑なカスタムセルの作り方 https://speakerdeck.com/shimastripe/configuration ・ステートマシンを活用したWebView-ネイティブ間連携へのアプローチ https://speakerdeck.com/marcy731/an-approach-to-webview-native-communication-using-state-machines ・SharePlayの歴史と進化 そしてvisionOSへ https://speakerdeck.com/tokorom/shareplaynoli-shi-tojin-hua-sositevisionoshe-iosdc-2023 ・watchOS開発最前線 https://speakerdeck.com/0si43/watchoskai-fa-zui-qian-xian ・SwiftUIの進化に ついていくためにやったこと https://speakerdeck.com/recruitengineers/iosdc-japan-2023 ・Swift Packageを使った 巨大な依存グラフのキャッシュ戦略 https://speakerdeck.com/giginet/how-to-cache-swift-package  ・Appleにおけるプライバシーの全容を把握する https://speakerdeck.com/akatsuki174/appleniokeruhuraihasinoquan-rong-woba-wo-suru [資料2] [補足] iOSDC2023 day0で呟かれていた資料です。 https://speakerdeck.com/koooootake/5min-idfa-att-skadnetwork https://zenn.dev/akatsuki174/articles/f6a71bf2ebb8e7 https://zenn.dev/akatsuki174/articles/1b536652f81511

Appleのホリデーと審査

 appleの今年の12月のホリデー期間は12月23日から27日までの期間とのこと 去年の文面と比較すると「平均すると、提出されたアイテムの90%が24時間以内に審査されます。」と追加されてますね。 ホリデー期間以外は、大体1日で審査されているということですね。 審査はされるのですね。 ・今年 https://developer.apple.com/jp/news/?id=xpkhwg3l ・去年 https://developer.apple.com/jp/news/?id=y4fgrhhe

iOSDC Japan2022 2日目の聴講資料まとめ

 参加後の発表者の資料をまとめさせて頂きました。 発表者の方発表お疲れ様でした。 ・動画だけじゃない!iOS 15のピクチャ・イン・ピクチャを使って好きなUIを表示させよう! https://speakerdeck.com/tsuzuki817/dong-hua-dakeziyanai-ios-15nopikutiyainpikutiyawoshi-tutehao-kinauiwobiao-shi-saseyou ・即時通知を導入する際に考えるべきこと https://speakerdeck.com/aomathwift/ji-shi-tong-zhi-wodao-ru-suruji-nikao-erubekikoto ・シーンに応じた使いやすいQRコード読み取り機能を実装しよう(原稿) https://zenn.dev/jollyjoester/articles/a053d4e25523b6 https://github.com/jollyjoester/QRReaderSample ・サーバーと同期してリアルタイムに更新する画面を実装する https://speakerdeck.com/rizumi/sabatotong-qi-siteriarutaimunigeng-xin-suruhua-mian-woshi-zhuang-suru ・iOSにおけるWakeword検知機能の実装」 https://www.slideshare.net/exwzds/ioswakeword ・ホーム画面の無効化 https://doc.feedtailor.jp/seminar/20220912_iosdc2022/iOSDC2022_day2TrackE1015_restricthomeandappswitch.pdf ・Swift Concurrency時代のiOSアプリの作り方 https://speakerdeck.com/koher/swift-concurrencyshi-dai-noiosapurinozuo-rifang ・Effective PencilKit / 新聞スクラップ体験の実現 https://speakerdeck.com/shimastripe/pencilkit ・SceneKit AND SwiftUI https://speakerde

iOSDC Japan2022 1日目の聴講資料まとめ

  iOSDC 2022 2日目 https://iosdc.jp/2022/ 参加後の発表者の資料をまとめさせて頂きました。 発表者の方発表お疲れ様でした。 ・アニメーションのすべて https://github.com/kishikawakatsumi/UltimateGuideToAnimations ・Swift アクターモデルと Elm Architecture の融合 https://speakerdeck.com/inamiy/iosdc-japan-2022 ・音声配信アプリにおけるiOSを使った音声配信の全てと裏側 https://speakerdeck.com/entaku/yin-sheng-pei-xin-ahuriniokeruioswoshi-tutayin-sheng-pei-xin-noquan-tetoli-ce-bc19d655-874e-4123-80af-69ac70a0712a ・UIKITベースの大規模なプロジェクトへ https://speakerdeck.com/kuritatu18/uikit-besunoda-gui-mo-napuroziekutoheno-swiftui-dao-ru 上記のアーキテクチャ https://github.com/uber/RIBs ・既存サブスクリプション商品にアップグレード・ダウングレード商品を追加しよう https://speakerdeck.com/aratayokoyama/ji-cun-sabusukuripusiyonshang-pin-niatupuguredodaunguredoshang-pin-wozhui-jia-siyou ios16からは,sandboxでもgraceperiod等を扱えるみたいです ・タクシーアプリ「GO」から学ぶ Google Maps SDK 活用術 https://speakerdeck.com/imairi/takusiapuri-go-karaxue-bu-google-maps-sdk-huo-yong-shu?slide=1 ・正規表現って結局何なのさ?〜エンジニアのためのコンピューターサイエンス入門〜 https://www.docswell.com/s/ta_ka_tsu/K78885-2022-09-10-0000

iOSDC Japan2022 0日目の聴講資料まとめ

iOSDCが2022年9月10日から12日まで開催しています。 https://iosdc.jp/2022/ 参加後の発表者の資料をまとめさせて頂きました。 ■SwiftUI ・ウーニャ、しってる。みんなふんいきでSwiftUIをつかってる。  https://speakerdeck.com/uhooi/iosdc-japan-2022 ・SwiftUIのNavigationのすべて https://speakerdeck.com/kalupas226/swiftui-navigation-nosubete ■SwiftPM ・SwiftPMのプラグイン機能をiOSアプリ開発に活用する https://speakerdeck.com/usamik26/development-app-with-swiftpm-plugins ■CI/CD ・CI/CD自動化入門 https://speakerdeck.com/kuroruri/cdzi-dong-hua-ru-men ■ディープリンク ・施作基盤としてのディープリンク https://speakerdeck.com/natmark/iosdc-japan-2022-deeplink?slide=33 以上、ご参考までに 

アプリのリリース🎉🎉

 iOSアプリをリリースしました!🎉🎉 試行錯誤したことを記載することで 思考の整理に役立てるアプリです。 アプリのダウンロードURL: https://apps.apple.com/jp/app/id1612021152 アプリの概要ページ: https://oz-app.blogspot.com/ Instagram画面  この投稿をInstagramで見る smart_tech_ozawa711(@smart_tech_ozawa711)がシェアした投稿

【SwiftUI】(その3) ZStack構成のViewの配置で、ignoreSafeAreaとキーボード回避についてキーボード回避で避けた方が良いと思うUI

・問題のUI構成 UI構成として、TextFildが数多く並んだリストが上部で、 最下部に、固定入力フィールドがある構成のUIは キーボード回避をした時に、おかしな挙動になるので、 UIデザインを検討する際に避けた方が良いです。 例えば以下のようなコードの構成で、 ScrollViewの画面下の方にあるTextFieldをタップすると、 画面下部の固定のTextFieldも一緒にリストアップする。 タップしたのが、 ScrollView中のTextFieldであるにも関わらず、 他のTextFieldも、キーボードと一緒にリフトアップされる。 この動作が人により違和感を感じることだろうと思います。 これは、キーボードによりViewの下部が迫り上げられるため、 本現象は発生します。 VStack {  // 表示量が画面の高さをこめる量とする ScrollView ForEach { TextField } } TextField } ・代替案 固定のTextFieldを上部に配置して、その下部に、 TextFieldを並べたScrollViewを配置した場合は、 キーボード回避に違和感はなくなリます。 →そもそも、ScrollView内に、すべてTextFieldを 配置してしまう場合もありでしょう。 ・検討案 もし、どうしても上部に TextFieldを並べた ScrollViewで、 下部に固定のTextFieldに したい場合は、以下の方法を検討してみてはいかがでしょうか。 上部のScrollViewと下部の固定のTextFieldを キーボード回避を無効にして、 キーボード出現時に、 上部のScrollView内部のoffsetと下部の固定の TextFieldのOffsetをそれぞれタップされ、 Focusが あたったときに、 導き出す。 この動作が可能な場合、それぞれで キーボード回避の挙動が実現できるのではないでしょうか。

【SwiftUI】(その2) ZStack構成のViewの配置で、ignoreSafeAreaとキーボード回避について

前回の記事でGemetory Readerを利用したコードを記載しましたが、利用せずに、ZStackのViewでキーボード回避ができることがわかったので以下にコードを掲載します。 サンプルコード 上記の例で利用したコードです

【SwiftUI】(その1) ZStack構成のViewの配置で、ignoreSafeAreaとキーボード回避について

イメージ
 iOS14、edgesIgnoringSafeAreaがdeprecateに表示になり、safeAreaへの表示の拡張はignoreSafeAreaを利用します。 https://developer.apple.com/documentation/swiftui/view/edgesignoringsafearea(_:) また、 ignoreSafeAreaは、表示の拡張だけではなく、キーボードを表示した際に、キーボードの下とTextFieldと重ならないようにする設定も可能です。 設定については、先駆者の方のサイトとして 以下サイトがわかりやすかったです。 ・カピ通信さんのサイト https://capibara1969.com/3617/ ■ZStackの構成のサンプル ZStackで、一部のViewはキーボード回避を無効させ、一部のViewは、キーボード回避をさせたい場合は、ハマりました。 以下のようなコードで実施するとうまくいきました。 Gemetoryを一番外側にする構成です。 残念ながら理由については、定かではありません。 stackOverFlowで、ZStackを利用した場合にキーボード回避を無効にしたい場合は、Geometoryを利用している記事があり、その成功事例からのサンプルコードになります。 ・サンプル画面の構成について [画面] [画面構成について] ・Z座標で一番上にくるのが中央のリストです。textFieldを並べたリストです。placeHolderに、Item+アイテム要素番号が表示されています。 ・上記のリストの奥のViewでは、画面下に「入力してください」というplaceholderのあるTextViewを配置しております。中央のリストとの重なりで、「入力して」というplaceHolderのみ見えています。 ・一番後ろにある黄色の画面は、背景の想定でセーフエリア外に表示して、キーボードが出現した場合にリフトアップしない想定です。 [動作] ・リストの要素のitem+15のTextFieldをタップ キーボード出現に伴い、item+15が隠れないようにリフトアップします。 ・リストの後ろの「入力して」のTextField部分をタップ キーボード出現に伴い、「入力して」