- 1. 【Swift】UIAlertControllerやUIAlertActionを手軽に実装できるライブラリ「Alertift」の操作
- 2. 【Swift】ユーザーレビューを促す訴求ダイアログを表示する方法
- 3. 【ハッカソン】初めてハッカソンに参加してのいろいろ
- 4. Core Dataでのデータ更新時にnewBackgroundContextを使う場合にはperform/performAndWait内でそのコンテキストに対して実行する
- 5. iOS Safari から、ショートカットアプリでファイルメーカーに URLとタイトルを記録する
- 6. 【詳解】Firebase iOS SDKをSwift Package Manager (SwiftPM)で導入する
- 7. iOSアプリからスプレッドシードのデータを読み込む
- 8. 【Swift】GCDについて
- 9. Xcode13でiOSアプリの代替アイコンを簡単に追加できます(3つの簡単なステップで)
- 10. Flutterチュートリアル Todoアプリを作ろう! ~環境構築~
- 11. iOS15でAppTrackingTransparency許可ポップアップが表示されなくなる問題解決法
- 12. Xcode13 iOS15でアプリアイコンが表示されないバグについて
- 13. 【就活】iOSエンジニア志望の面接で聞かれたことまとめ
- 14. 【iOS】続・半強制アップデートの仕組みをカジュアルに実装する
- 15. iOSアプリ開発のための外部ライブラリのリンクの種類や配布/利用方法
- 16. iOSアプリ開発用パッケージマネージャーごとのStatic/Dynamicリンク設定とカスタマイズおよび各種調査方法
- 17. 【iOS】Metal Best Practicesの解説(14)パイプライン
- 18. 【iOS】Metal Best Practicesの解説(13)関数とライブラリ
- 19. 【iOS】Metal Best Practicesの解説(12)間接バッファ
- 20. [Swift] 複数の ビルドTARGET へ Swift Package Manager でライブラリを入れる
【Swift】UIAlertControllerやUIAlertActionを手軽に実装できるライブラリ「Alertift」の操作
SwiftでUIAlertControllerやUIAlertActionを実装するとコード量が多く見辛いというデメリットが有る。
そんな悩みを解決してくれるのが「Alertift」というライブラリ。
## 基本情報
Alertiftの基本情報。CocoaPodsまたはCarthageで導入可能。
https://github.com/sgr-ksmt/Alertift
## 実装コード
実際に実装すると以下のようになる。
“`swift
Alertift.alert(title: “タイトル”, message: “メッセージ”)
.action(.default(“OK”)) { [unowned self] in
print(“OK”)
}
.action(.destructive(“削除”)) { [unowned self] in
print(“delete”)
}
.action(.cancel(“キャンセル”))
.show(on: self)“`
最後の`.show(on: self)`がないと表示されないので注意が必要。`UI
【Swift】ユーザーレビューを促す訴求ダイアログを表示する方法
Swiftで開発したiOSアプリでユーザーレビューを促すダイアログを表示させる方法。
## 公式リファレンスの解説
#### SKStoreReviewController
> An object that controls the process of requesting App Store ratings and reviews from users.
ユーザーにAppStoreの評価とレビューを要求するプロセスを制御するオブジェクト。#### Overview
> Use the requestReview() method to indicate when it makes sense within the logic of your app to ask the user for ratings and reviews within your app.
このメソッドを使用して、アプリのロジック内でユーザーにアプリ内の評価とレビューを求めることが理にかなっている場合を示します。## 実装コード
必要なのは2行だけ。
“`swift
import StoreKi
【ハッカソン】初めてハッカソンに参加してのいろいろ
#はじめに
2021年10月23日〜10月24日に開催のモバイルハッカソンに参加して学んだことやチーム開発でのことをまとめていきます。
ハッカソン初参加でこれを書いている時点(10月14日)では何すればいいんだろうって感じですね
ゆるく書いていくので、ハッカソンってこんな感じなんだってぐらいで見ていただければと思います。#10月14日
4人のチーム編成が行われた。
言語の技術スタックは大体以下のような感じ
・自分: Swift
・Aさん: Ruby on Rails, Python
・Bさん: HTML, JavaScript, PHP
・Cさん: Laravel, Vue, React
どうでしょうか?みなさんバラバラですね笑
早速、Discordで自己紹介、作るアプリのテーマ決め。
slackのmiroというサービスで、課題重視、難易度の軸を作り、四人で出したアプリ案を分けて作るアプリの方向性を決めた。#10月15日
#10月16日
#10月17日
#10月18日
#10月19日
#10月20日
#10月21日
#10月22日
Core Dataでのデータ更新時にnewBackgroundContextを使う場合にはperform/performAndWait内でそのコンテキストに対して実行する
## はじめに
Core Dataの並列実行時にXcodeのデバッグオプションとして`-com.apple.CoreData.ConcurrencyDebug 1`が存在する。このオプションを有効にしておくとCore Dataの間違った使い方をすると実行時エラーになって止めてくれる。
アプリをリリースしていると、動いているんだけどたまにクラッシュするエラーログがあるが、そういうものを事前に見つけてくれる(いや、オプションとかなくても開発時からクラッシュしてくれたらもっと良い気がするんだけど)。
実際にどんな使い方が間違っているかについて書こうと思う。Appleのサンプルコードである[Handling Different Data Types in Core Data](https://developer.apple.com/documentation/coredata/handling_different_data_types_in_core_data)を見たら`newBackgroundContext`でperformのちょうどよいサンプルがある。
![スクリーンショット 2
iOS Safari から、ショートカットアプリでファイルメーカーに URLとタイトルを記録する
## やりたかったこと
iOS の Safari で見つけたサイトのURLとタイトルを FileMaker Go にレコードとして記録したかったので、最初は Safari で URL を長押し → コピー、FileMaker Go 19 を起動して記録用のファイルを開き、登録スクリプトを起動するボタンを押す、という手順で記録していた。
登録スクリプトでは、クリップボードのURLからページデータを読み込んで、“`“`タグからページタイトルの情報を得て、URLとタイトルをそれぞれのフィールドにセットするようにしている。
これでも良いのだが、Safariの共有ボタンでショートカットアプリを起動し、FileMakerファイルのスクリプトを実行させることができることを知ったので、試してみた。## 実現した手順
Safari で記録したいサイトを開いている状態で、下にある共有ボタン(画像の赤丸)をタップ。
![ショートカット起動1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164
【詳解】Firebase iOS SDKをSwift Package Manager (SwiftPM)で導入する
# ? FirebaseのSwift Package Manager対応
Xcode 11よりSwift Package Manager (以下、SwiftPM)でライブラリなどの依存をXcodeのGUI上で管理できるようになりました。
かねてよりbetaとしてSwiftPM対応していたFirebaseもv8.0.0よりついに正式に対応されました :tada:SwiftPMはApple純正ツールであり、Xcodeとシームレスにライブラリ管理を実現できる点はCocoaPodsやCarthageと一線を画します。
ビルドのための下準備が不要で、プロジェクトのビルドを実行すれば依存パッケージもそのフローの中で追加されます。
そのため、特に新規のライトなiOSプロジェクトなんかでは第一の選択肢に上がってくるのではないでしょうか。
そんな、SwiftPMを用いてFirebase iOS SDKを導入する手順を示したいと思います!# ? 導入手順
もちろん、GoogleのFirebase Documentationにもしっかりとドキュメントが存在しています。
[Install Fireba
iOSアプリからスプレッドシードのデータを読み込む
iOSアプリからスプレッドシートのデータを読み込みたい時が人生にはあります。その方法です。
# 大まかな流れ
iOSからスプレッドシートのデータを読むためには、スプレッドシート側にGAS(Google Apps Script)を実装する必要があります。GASでスプレッドシートをReadするGETを実装し、iOSからそこ目掛けて通信する実装をすれば完成です。# GASの実装
スプレッドシートの「シート1」シートに下記のようなデータがあるものとします。スプレッドシートメニューの`ツール>スクリプトエディタ`を選択します。
##GCDとは
GCD(Dispatch)はGrand Central Dispatch の略で、DipatchQueueに処理を投入することで、コードを同時実行することができます。
##DispatchQueueとは
GCDのキューはディスパッチキューといいます。キューに行いたい処理をクロージャで渡し実行します。ディスパッチキューの実行方式には以下があります。直列→他のスレッド終了を待機し、完了後タスク処理を実行します。
並列→他のスレッド処理を待機せず、タスク処理を同時実行します。##キューの取得
GCDには既存のディスパッチキューとして以下の2つがあります。
mainQueue :
mainQueueはメインスレッドでタスクを実行する直列キューです。
iOSやmacOSのアプリケーションにおいては、UIの更新処理は常にmainQueueで行われます。なので、他のQueueで実行した処理の結果をUIに反映させるにはmainQueueを呼び出してタスクを渡す必要があります。globalQueue:
システム全体で共有される並列キュー。実行優先度(Qos)を指
Xcode13でiOSアプリの代替アイコンを簡単に追加できます(3つの簡単なステップで)
アイコンのカスタマイズは、新しい機能ではありません。
しかし、Xcode 13のリリース前は、その作業は一筋縄ではいきませんでした。Xcode 13では、簡単にアプリアイコンを追加し、ユーザーがその中から選択して使用できるようにしています。
## まず、追加となるアイコンカタログを追加します
以前と同様に、アセットフォルダー内の`AppIcon`フォルダーにアプリアイコンを追加します。
デフォルトのアプリアイコンを追加したら、下のバーにある「+」アイコンをクリックし、`iOS`を選択し、`iOS App Icon`を選んで、新しいiOSアイコンパックを作成します。
![スクリーンショット 2021-10-09 15.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/e04fe90f-938b-fd54-fd46-857cea8379a5.png)
そして、新しいアイコンをアプリのバンドルに入れてください。
次に、新たに作成したアイコンパックにアイコンを追加する必要が
Flutterチュートリアル Todoアプリを作ろう! ~環境構築~
# この記事を書こうと思った理由
この記事を書く前はFlutterでMarkdownで書けるメモアプリを作成していました。そのアプリの制作が終わったので、ここらへんで一旦自分のFlutterの知識をアウトプットしようと思いこの記事を書きました。## デバック環境
– Windows 10
– Android 30## Flutter環境構築
1. FlutterSDKのダウンロード
[FlutterSDKのダウンロードリンク](https://flutter.dev/docs/get-started/install)
ここからSDKをダウンロードしCドライブ直下などに展開してください。2. Flutter SDKのパス通し
SDKの展開したフォルダ・ディレクトリの名前が「flutter」になってると思います。その中の「bin」のファルダのパスを通してください。3. Android Studioのインストール
[Android Studioのダウンロードリンク](https://developer.android.com/studio)
ここからインストーラーをダ
iOS15でAppTrackingTransparency許可ポップアップが表示されなくなる問題解決法
公式フォーラムにて解決方法が提示されておりました
https://developer.apple.com/forums/thread/690762## 要約すると
AppDelegateクラス内のapplicationDidBecomeActiveメソッド内にてポップアップ処理を記述、とのこと## その他・雑談
iOS15でポップアップされなくなり審査リジェクトされた方が世界中でいる様子でした
※世界中で困ってた頃のフォーラムは以下でした
https://developer.apple.com/forums/thread/690607アプリ審査リジェクトされると以下のようなメッセージが来ます(参考までに)
“`
Guideline 2.1 – Information NeededWe’re looking forward to completing our review, but we need more information to continue. Your app uses the AppTrackingTransparency framework, but
Xcode13 iOS15でアプリアイコンが表示されないバグについて
#はじめに
Xcode13・iOS15にアップデートしてから、アプリをXcodeでビルドしてインストールしてもアプリアイコンが反映されなかったので、一時的な方法ではありますが解決方法を残しておきたいと思います。
#解決方法
シュミレーターでビルドした場合はインストールしたアプリを一度削除(アプリのアイコンを長押で消せます)してからもう一度ビルドすると反映されます。
実機転送でビルドした場合は、アプリインストール後に端末を再起動すると反映されます。
その他のアプリアイコンの作成などはいつも通りに行っていただいて問題ないと思われます。iPhoneのバージョンが最新ではない場合はiOS15.0.1からiOS15.0.2にアップデートしてからビルドすると通常通りアプリアイコンの反映がされました。
おそらくiOS15.0.1のバグだったと思われるので、アイコンの反映がされていない場合はまずバージョンが最新か確認をしてから行うと大丈夫そうです。
#最後に
簡単な解決方法でしたが、この方法に行き当たるまで30分ほどしどろもどろしたので、同じ問題で悩んでいる方々のお役に立てると嬉しいです。
#参考
【就活】iOSエンジニア志望の面接で聞かれたことまとめ
#はじめに
面接で聞かれたことをまとめていきます。iOSに限らず、エンジニア志望の方に役に立てばいいなと思っています。
具体的な社名などは伏せますし、面接日時や合否は書きません。#「技術」系
#「将来」系
#「チーム開発」系
【iOS】続・半強制アップデートの仕組みをカジュアルに実装する
# はじめに
ユーザの端末にインストールされているアプリのバージョンが古いままだと、最新機能やバグ修正が提供できないだけでなく、メンテナンスが難しくなっていきます。ユーザには常に最新バージョンを使ってもらうのが望ましく、アップデートを促す仕組みは積極的に取り入れた方が良いと考えています。
アプリを起動したとき、最新バージョンがApp Storeにリリースされていることをユーザに伝え、アップデートを促す仕組みをこの記事では**半強制アップデート**と呼びます。
以前、「[【iOS】半強制アップデートの仕組みをカジュアルに実装する](https://qiita.com/hituziando/items/fc2ad0642ccdb1258840)」という記事でiTunes Search APIを利用した半強制アップデートの実装を紹介しました。このソースコードは僕が開発しているいくつものアプリに導入されており、これだけ流用するのならばフレームワーク化して一元管理した方が楽になってきます。
ということで、**アプリの最新バージョンがApp Storeにリリースされたらアップデートを促す機能
iOSアプリ開発のための外部ライブラリのリンクの種類や配布/利用方法
# はじめに
[iOSアプリ開発用パッケージマネージャーごとのStatic/Dynamicリンク設定とカスタマイズおよび各種調査方法](https://qiita.com/yimajo/items/a2736191f402060707c1)について整理したのですが、スタティックとかダイナミックリンクってなんなのよ、ということもあるので、その前提知識としてiOSアプリ開発のための外部ライブラリのリンクの種類や配布/利用方法についても整理しておきます。
この記事では大きく分けて下記の2つのことを説明します
– 外部ライブラリのリンク種類
– スタティックリンク
– ダイナミックリンク
– 外部ライブラリの配布/利用方法
– Library
– Framework
– XCFrameworkそしてこれは例えば、”スタティックリンクのFramework”や”ダイナミックリンクのFramwork”の組み合わせが存在するということです。
用語としてややこしいのは外部ライブラリの配布方法にLibraryとFrameworkがあることです。この記事で
iOSアプリ開発用パッケージマネージャーごとのStatic/Dynamicリンク設定とカスタマイズおよび各種調査方法
# はじめに
iOSアプリ開発のためのパッケージマネージャー別のリンク指定を整理しておきます。
勘違いしやすいポイントとしては、Carthageを使ってもデフォルトでdynamicリンクなのでstaticリンクするよりもアプリ起動は遅くなります。つまりCarthageを使って事前にビルドしておくことで都度のビルド時間を短縮しても、何もしないとアプリ起動が遅くなるわけです。その他、ちょっとややこしい話ですが、CocoaPodsでは`use_frameworks!`にするとdynamicリンクなフレームワークになりますが、これはstaticリンクにすることもできます。
この記事では、自分のアプリでどのように設定するかのプラクティスではなく、それぞれのパッケージマネージャーのデフォルトがどうなっていて、設定でそれを変える方法とビルドされたライブラリ/フレームワークが本当に意図通りになってるか確認する方法について書いておきます。
StaticやDynamicとはなにかということについては[iOSアプリ開発のための外部ライブラリのリンクの種類や配布/利用方法](https://qiita
【iOS】Metal Best Practicesの解説(14)パイプライン
[Metal Best Practices](https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/MTLBestPracticesGuide/index.html#//apple_ref/doc/uid/TP40016642-CH27-SW1)は、iOS/MacOS/tvOSのAPIであるMetalを用いた設計のベストプラクティスガイドです。
本稿では、何回かに分けてこのガイドを読み解き、コード上での実験を交えて解説していきます。
読んでそのまま理解できそうなところは飛ばしますので、原文を読みながら原文のガイドとしてご利用下さい。
また、iOSの記事なので他のOS(MacOS, tvOS)についての記載は割愛します。他の記事の一覧は、初回記事よりご覧下さい。
https://qiita.com/TokyoYoshida/items/521619d6d8dd8d8ef9e4
### [Pipelines (パイプライン)](https://developer.apple.c
【iOS】Metal Best Practicesの解説(13)関数とライブラリ
[Metal Best Practices](https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/MTLBestPracticesGuide/index.html#//apple_ref/doc/uid/TP40016642-CH27-SW1)は、iOS/MacOS/tvOSのAPIであるMetalを用いた設計のベストプラクティスガイドです。
本稿では、何回かに分けてこのガイドを読み解き、コード上での実験を交えて解説していきます。
読んでそのまま理解できそうなところは飛ばしますので、原文を読みながら原文のガイドとしてご利用下さい。
また、iOSの記事なので他のOS(MacOS, tvOS)についての記載は割愛します。他の記事の一覧は、初回記事よりご覧下さい。
https://qiita.com/TokyoYoshida/items/521619d6d8dd8d8ef9e4
### [Functions and Libraries (関数とライブラリ)](https://d
【iOS】Metal Best Practicesの解説(12)間接バッファ
[Metal Best Practices](https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/MTLBestPracticesGuide/index.html#//apple_ref/doc/uid/TP40016642-CH27-SW1)は、iOS/MacOS/tvOSのAPIであるMetalを用いた設計のベストプラクティスガイドです。
本稿では、何回かに分けてこのガイドを読み解き、コード上での実験を交えて解説していきます。
読んでそのまま理解できそうなところは飛ばしますので、原文を読みながら原文のガイドとしてご利用下さい。
また、iOSの記事なので他のOS(MacOS, tvOS)についての記載は割愛します。他の記事の一覧は、初回記事よりご覧下さい。
https://qiita.com/TokyoYoshida/items/521619d6d8dd8d8ef9e4
### [Indirect Buffers (間接バッファ)](https://developer.
[Swift] 複数の ビルドTARGET へ Swift Package Manager でライブラリを入れる
# [Swift] Swift Package Managerでライブラリを入れる
複数のビルドTARGETにライブラリを入れる際のメモ
## 1、swift packagesからライブラリを入れる。
[iOSアプリ開発にSwift Package Managerを使おう](https://qiita.com/hironytic/items/09a4c16857b409c17d2c)
今回は[QGrid](https://github.com/Q-Mobile/QGrid)をプロジェクトへ導入する。
(1) File → Swift packages → add package dependency
(2) プロジェクトへ導入したいライブラリのgit url (https://github.com/Q-Mobile/QGrid) を入れる![スクリーンショット 2021-10-08 22.26.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1322570/3c70e8fb-a51a-