- 1. エラー状況
- 2. 解決方法
- 3. ソフトウェア要因
- 4. ハードウェア要因
- 4.0.1. 古いiOSでのLet’s Encrypt証明書の対応方法
- 4.0.2. iOSアプリの配信手段まとめてみた
- 4.0.3. Flutter Webviewでソフトウェアキーボードで input[type=text] が隠れる不具合を解消(iOS)
- 4.0.4. 【Xcode】ファイル作成時に自動生成されるコメントの本名を変更したい
- 4.0.5. 【iOS】ワンタップで天鳳部屋建て&共有【秒で麻雀】
- 4.0.6. 【Swift】SwiftGenをSwiftPMで管理する
- 4.0.7. Swift UI (主にアノテーション・データバインディング関連) ひとまとめ
- 4.0.8. 【Swift】LicensePlistをSwiftPMで管理する
- 4.0.9. App Store / Google Play の フィーチャー枠獲得について
【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 SwiftUIstruct 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 Bundlerxcrun 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=sampleTARGET_NAME=sample
SRCROOT=/Users/miyamototaishin/Desktop/sample
“`# 調べ方
① プロジェクトを選択します
② ターゲットを選択します
③ 「Build Phases」を選択します
④ 「
iPhoneが急にタッチできなくなった際のソリューション
ソフトウェア要因
iPhoneのタッチパネルに不具合が生じる原因は一様ではありません。大きくは、ソフトウェア要因とハードウェア要因に二分されます。
ソフトウェア要因の場合、再起動が最も優先して行うべき対応です。
画面が反応しない場合、電源ボタンとボリュームダウンボタンを長押し後、画面に表示される「スライドで電源オフ」を行うことができないため、強制再起動が必要です。
強制再起動は以下の手順で行います。
- ボリュームアップボタンをクリック
- ボリュームダウンボタンをクリック
- 電源ボタンを長押し。画面がブラックアウト後、リンゴマークが表示されたら電源ボタンから手を放す
以上の手順で強制再起動が完了します。
これでタッチの不具合が改善した場合、一時的なシステム異常だったと言えます。ハードウェア要因
- 画面が割れている
- 液晶漏れがある
- 画面に虹色の縦線が表示される
画面が
古い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/c56658193d54c040c1fbhttps://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/c56658193d54c040c1fbhttps://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-
App Store / Google Play の フィーチャー枠獲得について
# はじめに
App Store / Google Playのアプリストアには、特定のアプリをピックアップして宣伝するフィーチャー枠というものがあります。フィーチャーされればアプリの知名度は飛躍的に向上し、ダウンロード数の増加にも直結します。
広告などによる地道な宣伝も、もちろん重要ですが、アプリのリリース後やアプリを盛り上げるイベントの際はフィーチャー枠を利用して集中的にアピールすることも大切です。この記事では、アプリの注目度を高めるフィーチャーという制度の基本と、フィーチャーされるためのポイントであるAndroid バックキーについてまとめました。
### 参考になる本
– [スタートアップ・個人で作れる スマホ向けUnity ソーシャルゲーム開発ガイド](https://amzn.to/3QKy2rc)## App Store / Google Play の フィーチャー枠とは
App Store / Google Playなどのアプリストアには、特定のアプリをピックアップして宣伝するフィーチャー枠というものがあります。フィーチャーされればアプリの知名度は飛躍的に向上し