iOS関連のことを調べてみた2023年01月23日

iOS関連のことを調べてみた2023年01月23日
目次

R Markdownでスライドを作成(ioslides)

# Rでスライドを作ろう
この記事を読むと、以下の3つができるようになり、どうでもいいことを1つ(4.)知れます。
ちなみに、2と3はスライドでなくても、HTMLファイルにKnitしたものであればできます。
注)Windowsのコンピュータを想定して書いています。他のOSでもできますが多少キーや、やり方が違うかもしれません。

1. R Markdownでスライドを作成できるようになる
2. 細かいスライドの設定のやり方が分かる(上下左右にスクロールできるページなど)
3. 作成したスライドをページのリンクとして共有できる
4. @masato-terai がなぜRでスライドを作るべきだと思っているのか

# Rでスライドを作成するには
 Rでスライドを作成する方法はいくつかあるのですが、今回はioslideを用いて行う方法を紹介します。その他のスライドについてはこちらで紹介されていました [[1]](https://rstudio-pubs-static.s3.amazonaws.com/869589_0491c9112c6d4d48af55a8e114280be2.html#4)。

元記事を表示

【SwiftUI】特定の条件でのみオーバーレイする

# はじめに
条件によって`Text(“Hello, world!”)`にオーバーレイの有無を決定したいとします。

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2023-01-21 at 21.35.26.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/8039a8ff-ea86-d602-c248-ec9f0ac3dc15.gif)

# やりかた
“`swift:ContentView
import SwiftUI

struct ContentView: View {
@State var isShowBorder: Bool = false
var body: some View {
VStack(spacing: 50) {
Toggle(“”, isOn: $isShowBorder)
.labelsHidden()

元記事を表示

XcodeのリリースビルドでError (Xcode): “Runner” requires a provisioning profile.

XcodeのSigning & Capabilitiesにてただしく、
Apple DistributionのProvisioning Profileを設定しているのに、見つからないとのエラーがリリースビルドのたびに発生しました。

# 結論
Build & Setting
に行き、
・Code Signing Identityの
ReleaseがiOS Distribution

.Provisioning ProfileのReleaseが、manual設定で作成したprovisioning Profileが設定されているか確認する。(私の場合は無しになっていました。)

元記事を表示

Github Actionsのセルフホステッド ランナーでUnityをIOSビルドしてDeployGateに上げるまでの手順

# 概要
Github Actionsのセルフホステッド ランナーでUnityをIOSビルドしてDeployGateに上げるまでの手順です。
Appleの証明書周りのやりかたや各機能などは解説しません。手順と必要なコードのみ記載します。

おおまかな手順
1. GithubActionsにセルフホストランナーを登録
2. Unityにビルド用のコードを追加
3. IPAを手動でビルド
4. プロジェクトにExportOptions.plistを追加
5. main.ymlを追加
1.プロジェクト情報を追加
2. DeployGateの情報追加
6. (おまけ)GitHubAppでslackに通知する

# 1.GithubActionsにセルフホストランナーを登録
リポジトリもしくはorganizationsのSettingsのRunnnersからNew runnerから必要な環境を選択してDownloadとConfigureのコマンドを実行。
この時すでにactions-runner導入済みであればDownload部分は不要です。
新しいリポジトリな

元記事を表示

Mac OS Ventura 13.1にアップデート後、 ExpoでiOSシミュレーターを開けないエラーが発生。

エラー状況

Mac OS Ventura 13.1にアップデートしたところ、
ExpoでiOSシミュレーターを開けないエラーが発生。

“`
› Opening on iOS…
Started Metro Bundler

xcrun exited with non-zero code: 2
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2):
Unable to boot device because we cannot determine the runtime bundle.
No such file or directory
“`

解決方法

Xcodeを立ち上げ

-> Xcode メニュー
-> Open Developer Tool
-> Simulator でシミュレータを立ち上げ

シミュレータメニューの Device
-> Erase all content and settingsでセッティングをクリア

元記事を表示

【Swift】returnの為だけに改行したくない

# はじめに
何を言ってるのかというと
“`swift
guard let url else {
print(“URLが見つかりませんでした”)
return
}
“`
guard文を使用するとelseでは必ずreturnを書かないといけません。

しかしreturnを書く為だけに改行をするのはちょっと。。。
って思うのは私だけですか??

# やりかた
“`swift
guard let url else { print(“URLが見つかりませんでした”); return }
“`

# 解説
`;`で繋げる感じですね

# おわり
これが良いのかどうかはわからないですが、個人的には1行にした方が見やすいと思いました。

元記事を表示

IonicとCapacitorを使ったモバイルアプリをCLIによる初期ファイル生成なしで構築する

ウェブの技術を使ってAndroidやiOSなどのモバイルアプリを作成できればコードの共通化ができ、OSごとに個別のアプリ開発の知識を要求されることがなくなります。このようなことを実現するためのフレームワークに[Ionic](https://ionicframework.com)と[Capacitor](https://capacitorjs.com/)があります。

本稿ではIonicとCapacitorとVueを使ったモバイルアプリをIonicの公式ドキュメントにあるCLIによる初期ファイル生成を使わずに一から作成することで、構成を深く理解することを目指します。特にIonicとCapacitorの関係性は明確な説明が無いせいでわかりづらいのですが、そこを理解し実際に最低限のアプリを作成することで確認します。

作成したコードは以下から見られます。コードを早くみたい人はどうぞ。

https://github.com/silane/capacitor-ionic-vue-sample

# Scaffold(CLIによる初期ファイル生成)すると中身が理解できない
Ionicでのモバイル

元記事を表示

SwiftUI BindingのあるViewのプレビューを正しく表示する

# 概要

例えば、地図を表示するViewをSwiftUIで構築します。
このViewは地図と、現在地を示す位置情報をテキストで表示します。
地図はMapKitを使って、`Map`で表示します。

Mapのinitの形式には`MKCoordinateRegion`や`MKMapRect`を使いますが、いずれの型式でもBindingでの指定が必要になります。
構築するViewが外から@Bindingの形でパラメータを受け取る形の場合、PreviewにもBindingに指定する@Stateなどの値が必要になります。

Stateを用意せず、プレビューで`.constant`で固定のMKCoordinateRegionを入れておけばビルドとしては動きますが、プレビューとしては、地図を動かしても位置情報テキスト部分の値が変わりません。

![修正前.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687960/399db71d-a6cb-8e5a-2e3c-06f86727a58b.gif)

# 正しくBi

元記事を表示

【個人開発】会話AIを「ずんだもん風」に話せるように作ってみる

みなさんは「ずんだもん」というキャラクターをご存知でしょうか。ずんだもんはSSS合同会社が運営する東北地方応援キャラクターとして誕生したものでした。しかし音声合成ソフトVOICEVOXに導入されたことをきっかけにYoutubeなどの動画サイトでもよく見かけるようになり、それらにおける汎用キャラとしての役割の方が目立っています。

![名称未設定のデザインのコピー-4-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/9a2e859d-0a90-b730-9d66-f3b897e7cde9.jpeg)

> VOICEVOX公式サイトより 「呼び方」のページも参考になります

ずんだもんの特徴は何といっても「ボクはずんだもんなのだ」「元気なのだ」というような「〜なのだ」口調です。どんな内容でも話し方で共通の個性が出せることも普及した一つの要因だと言えるでしょう。また、これは文章においても同じです。

そこで今回はこの「〜なのだ」口調を導入した会話AIを作っていきたいと思います。

# 作

元記事を表示

【Swift】CollectionViewを使ったスライドショーをボタンで制御する

# はじめに
iOSアプリの中でスライドショーを作る必要があって、かつフリックではなくボタンで前後にスライドするという要件。意外にそのものが見当たらなかったので、備忘録として。

# 実行環境
– Xcode 13.4.1
– macOS Monterey(12.1)

# 前提
– 基本は最後に書いたリンクに詳しいので、そちらを見てもらう前提で(備忘録なので)。
– スライドショーで使う画像のサイズが、表示エリアに対して大きいサイズだったので、SliderCollectionViewCell.swiftの中の「func resize(image: UIImage, width: Double) -> UIImage」でサイズ調整しています(本題とは無関係なので、不要な方は無視していいです)。

# 実装内容
– レイアウトはstoryboardを使ってます。パーツの構成はこんな感じ。
– 「@IBOutlet weak var」してないボタン(storyboard上は「Button」で表示されているもの)は、このControllerへの画面遷移用なので、無視してください。
![スク

元記事を表示

【Xcode】$PRODUCT_NAMEなどは何を表しているのか

# はじめに
Run Scriptをいじっていると`$PRODUCT_NAME`や`$TARGET_NAME`など意味不明な暗号が出てきます。
これが何なのか気になったので調べてみました。

# 正体
サンプルというプロジェクトを作成して解説を行います。
![スクリーンショット 2023-01-18 21.19.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/88314962-f48a-a663-2686-8a85e48851c4.png)

$PRODUCT_NAMEなどの正体はパスなのです。

先ほど作成した「sample」プロジェクトの場合は以下のようになっています。
“`
PRODUCT_NAME=sample

TARGET_NAME=sample

SRCROOT=/Users/miyamototaishin/Desktop/sample
“`

# 調べ方
① プロジェクトを選択します
② ターゲットを選択します
③ 「Build Phases」を選択します
④ 「

元記事を表示

iPhoneが急にタッチできなくなった際のソリューション

ソフトウェア要因

iPhoneのタッチパネルに不具合が生じる原因は一様ではありません。大きくは、ソフトウェア要因とハードウェア要因に二分されます。
ソフトウェア要因の場合、再起動が最も優先して行うべき対応です。
画面が反応しない場合、電源ボタンとボリュームダウンボタンを長押し後、画面に表示される「スライドで電源オフ」を行うことができないため、強制再起動が必要です。
強制再起動は以下の手順で行います。

  1. ボリュームアップボタンをクリック
  2. ボリュームダウンボタンをクリック
  3. 電源ボタンを長押し。画面がブラックアウト後、リンゴマークが表示されたら電源ボタンから手を放す

以上の手順で強制再起動が完了します。
これでタッチの不具合が改善した場合、一時的なシステム異常だったと言えます。

ハードウェア要因

  • 画面が割れている
  • 液晶漏れがある
  • 画面に虹色の縦線が表示される

画面が

元記事を表示

古いiOSでのLet’s Encrypt証明書の対応方法

iOS 9以前が入ったiPhone、iPadでは[Let’s Encrypt](https://letsencrypt.org/)証明書を利用したhttpsのWebサイトはエラーになって見ることができません。
これはLet’s Encryptのルート証明書DST Root CA X3の有効期限(2021年9月30日)が切れているためです。

[参考] https://letsencrypt.org/ja/docs/dst-root-ca-x3-expiration-september-2021/

下記はいずれかの方法でLet’s Encrypt証明書に対応できます。

## iOS側で対応する場合
iOSのルート証明書を更新することでLet’s Encrypt証明書の対応が可能です。

[「Let’s Encrypt」](https://letsencrypt.org/certificates/)の証明書関連のページから[ISRG Root X1のルート証明書](https://letsencrypt.org/certs/isrg-root-x1-cross-signed.pem)を

元記事を表示

iOSアプリの配信手段まとめてみた

## はじめに
Apple Developer Enterprise Programの更新がほぼほぼの企業でできなくなり
一般企業でのin houseなどの配信が難しくなりました。
ただ、テスト端末へのアプリ配信はアプリのデバック用に必要のため
アプリ配信などで現状使用している配信手段を整理してみます
※Apple Developer Program については加入前提としています

## Test Flight
Apple公式の配信手段で、[AppStoreConnect](https://appstoreconnect.apple.com/)にアプリを作成しArchiveしたビルドデータをストアに送ることで使用可能
公式だけあり、クラッシュを含む機能が便利
また審査も入るため、ストアリリース前にリジェクト内容があった場合の確認が可能

### メリット
– Apple公式の配信手段
– Storeにデータをアップロードすることで使用が可能
– ストア未公開状態でも使用可能
– ストアリリース前にリジェクト理由を知ることができる
– メールアドレスのみで配信可能
– メールア

元記事を表示

Flutter Webviewでソフトウェアキーボードで input[type=text] が隠れる不具合を解消(iOS)

# 概要
Flutterで側アプリ(WebView)内のテキスト入力にフォーカス時に現れるソフトウェアキーボードでテキスト入力が隠れる不具合を解消する方法です。
WebViewはwebview_flutter: ^3.0.1
※今のところiOSのみ確認済みです。

# Before
![before.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167934/f8274a79-713f-e24f-5aa7-8805cdeae9fe.gif)

# After
![after.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167934/ce076d3e-9055-285a-7194-b8f278575187.gif)

# 解決方法
WebView をラップしている Scaffold の resizeToAvoidBottomInset を false にします

“`dart:webview.dart
@overr

元記事を表示

【Xcode】ファイル作成時に自動生成されるコメントの本名を変更したい

# はじめに
タイトルだけだとわからないかもしれないので画像載せておきます。
これです。
![スクリーンショット 2023-01-17 14.51.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/884f8acd-8387-e7c3-a653-ce89ece207b9.png)

この自動生成されるコメントを変更したのでやり方を記事にしておきます。

# やりかた
Xcode内のUserDataフォルダに移動します。
“`:ターミナル
cd ~/Library/Developer/Xcode/UserData
“`
![スクリーンショット 2023-01-17 14.56.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/149f946b-57c9-c2ec-b03b-ebda9deea5b2.png)

`IDETemplateMacros.plist`を作成します。
“`:

元記事を表示

【iOS】ワンタップで天鳳部屋建て&共有【秒で麻雀】

こんにちは、TSMENです。

# やってみて
いくつかステップがあったものが簡略化できたのでかなり便利になりました。
友人と「ネット麻雀する?」って話題に上がった瞬間、裏でURL発行しに行けるので
やると決まったはいいものの、天鳳なのかMJなのか、雀魂なのか、、、
誰が部屋建てる、、?俺、、?お前、、?
のようなグダグダを解消できました

# 完成図

# 動作結果(LINEに共有した場合)

:::note warn
2023年1月11日時点で動いています。
あまりないとは思いますが、今後天鳳のサイト側の変更などで動かなくなる場合があります。悪しからず。
:::

元記事を表示

【Swift】SwiftGenをSwiftPMで管理する

# はじめに
https://qiita.com/SNQ-2001/items/c56658193d54c040c1fb

https://qiita.com/SNQ-2001/items/e202893e37898bb0c721

https://qiita.com/SNQ-2001/items/b2ea9cd49238db352f5c

これまでSwiftFormat、SwiftLint、LicensePlistをSwiftPMで管理する方法を記事にしてきました。
今回はSwiftGenをSwiftPMで管理してみます。

「swiftpm-swiftgen」というプロジェクトを作成しました。

![スクリーンショット 2023-01-16 16.56.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/bf98e948-7874-37af-9698-ce79b66933eb.png)

# やりかた
swiftpm-swiftgenに移動します。
“`:ターミナル
cd /Use

元記事を表示

Swift UI (主にアノテーション・データバインディング関連) ひとまとめ

### AnyView

– AnyView とは
– https://developer.apple.com/documentation/swiftui/anyview
– https://www.swiftbysundell.com/articles/avoiding-anyview-in-swiftui/
– https://qiita.com/noppefoxwolf/items/22a243b28d39b97c8ccb
– https://www.paveway.info/entry/2022/03/02/swiftui_anyview
– どんなViewが来ても大丈夫なように型消去したViewがAnyViewである。ただパフォーマンスは悪くなるので、可能なら@ViewBuilderを利用するなどして使用を避けたほうが良いかもしれない。

### @ViewBuilder

– 以下、引用

> 複数画面で共通のナビゲーションバーやボタンを使う場合、毎回同じViewやmodifierを書くのは

元記事を表示

【Swift】LicensePlistをSwiftPMで管理する

# はじめに
https://qiita.com/SNQ-2001/items/c56658193d54c040c1fb

https://qiita.com/SNQ-2001/items/e202893e37898bb0c721

SwiftFormatとSwiftLintに続いてLicensePlistをSwiftPMで管理してみました。

「swiftpm-licenseplist」というプロジェクトを作成しました。
![スクリーンショット 2023-01-15 20.34.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5f327ba1-c05e-d547-b48a-b0282696c699.png)

# やりかた
### 各種ファイルを設定
swiftpm-licenseplistに移動します。
“`:ターミナル
cd /Users/miyamototaishin/Desktop/swiftpm-licenseplist
“`
![スクリーンショット 2023-01-

元記事を表示

OTHERカテゴリの最新記事