iOS関連のことを調べてみた

iOS関連のことを調べてみた

話題のkotlin Multiplatformを使ってみた(~実装まで)

# はじめに
基本、公式のチュートリアルをなぞってます。
https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html

公式チュートリアルは全文英語の記事となっているので、英語苦手だよーって方とかは参考にしていただけると幸いです。

いままでアプリ開発とかをしてこなかった方でも理解できるよう、深くまでは掘らず比較的ざっくりとした感じの記事構成となっていますので、あらかじめご了承ください。

# 前提
– kotlin multiplatformの環境構築が完了していること
https://qiita.com/atsu123456789/items/147e9e03d2018b20841b

# ロジックの実装
## 共通処理について
まずは`GreetingKMP/composeApp/src/commonMain/kotlin/com/jetbrains/greeting/Greeting.kt`の中身を書き換えてみます。

“`Greeting.kt
package com.jetbrains.

元記事を表示

【Swift】UIImagePickerControllerを使って画像を選択しよう(その3)

# 1. はじめに
こちらの記事の続きです

https://qiita.com/Hiroki01100001/items/c183a67c962cbbdf3340

本記事ではUIKitの **`UIImagePickerController`** クラスを使って、カメラロールから画像を選択する方法について解説します。
全部で3つの記事があり、本記事はその**3番目**の記事となります。

:::note warn
本文の内容は、ChatGPTに質問して得た回答を下敷きに、公式ドキュメント等で裏を取りながら執筆しました。
また、英文の和訳はDeepL翻訳を用いて訳したものを記載しています。
:::
:::note info
SwiftUIには、もっと手軽にカメラロールを扱うことができる **`PhotosPicker`** という構造体があります。

「別にUIKitを使わなくてもいいよ」という方はここで読むのをやめて、以下の解説サイトを閲覧されることをおすすめします:thumbsup:

[【SwiftUI】iOS16+のPhotosPicker|フルSwiftUIでのフォトピッ

元記事を表示

【Swift】UIImagePickerControllerを使って画像を選択しよう(その2)

# 1. はじめに

こちらの記事の続きです:arrow_down:

https://qiita.com/Hiroki01100001/items/e98c76ad0406263e198b

本記事ではUIKitのクラス **`UIImagePickerController`** を使って、カメラロールから画像を選択する方法について解説します。
全部で3つの記事があり、本記事はその**2番目**の記事となります。

:::note warn
本文の内容は、ChatGPTに質問して得た回答を下敷きに、公式ドキュメント等で裏を取りながら執筆しました。
また、英文の和訳はDeepL翻訳を用いて訳したものを記載しています。
:::
:::note info
SwiftUIには、もっと手軽にカメラロールを扱うことができる **`PhotosPicker`** という構造体があります。

「別にUIKitを使わなくてもいいよ」という方はここで読むのをやめて、以下の解説サイトを閲覧されることをおすすめします:thumbsup:

[【SwiftUI】iOS16+のPhotosPicker|フルS

元記事を表示

【Swift】UIImagePickerControllerを使って画像を選択しよう(その1)

# 1. はじめに
本記事では、UIKitの **`UIImagePickerController`** クラスを使って、カメラロールから画像を選択する方法について解説します。

なぜ`UIImagePickerController`クラスを使うのかというと、そうしないとカメラロールから画像を選択する機能を実装することができないからです。
SwiftUIはまだ完全に成熟しきっていないため、このようにUIKitから部品を借りてこないと実装できない機能があるのです。

:::note info
現在は、SwiftUIにもっと手軽にカメラロールを扱うことができる **`PhotosPicker`** という構造体が用意されています。

「別にUIKitを使わなくてもいいよ」という方はここで読むのをやめて、以下の解説サイトを閲覧されることをおすすめします:thumbsup:

[【SwiftUI】iOS16+のPhotosPicker|フルSwiftUIでのフォトピッカー実装方法](https://blog.code-candy.com/swiftui_photospicker/)
:::

元記事を表示

Popoverをソースコードで出現させる(iOS編)

# Storyboardを使えば簡単だが、こんな時はどうする!?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202602/09fd54ca-84c7-d743-2eb9-9a82e20145f5.png)

こんな感じで、Storyboardを使えば簡単にポップオーバーが実現できます。

良いUIかどうかの議論は別として、状況によってポップオーバーする内容を変えたい場合があったとします。
Storyboardではボタン1つに対して、1つのポップオーバーしか指定できません。

このような場合は、`ソースコードで状況に応じたポップオーバーはどれかを判断し、用意しておいた複数のStoryboardからオブジェクトを生成して表示する`というのが現実的でしょう。

# 二つのStoryboardを用意する
`CSetting`と`CSubSetting`という二つのStoryboardを用意しました。
![スクリーンショット 2024-08-12 9.47.32.png](https://qi

元記事を表示

iOSDC 2024 ノベルティボックス開封してみた

# はじめに
本記事では、iOSDC 2024のノベルティボックスに入っていたノベルティについて紹介していきます。

なぜ紹介するのかというと、
昨年自分がノベルティボックス付きのチケット購入ができず、
ノベルティボックスにはどういったものが入っていたのか気になったといったことがあったためです。

今年ノベルティボックス付きのチケットが購入できなかった人向けに記事投稿します。

# iOSDCとは
そもそもiOSDCとは何かについて、言及しておこうと思います。
引用になりますが、下記に記載します。

> iOSDC Japan 2024はiOS関連技術をコアのテーマとしたソフトウェア技術者のためのカンファレンスです。今年もリアル会場とオンライン配信のハイブリッド開催を予定しています。
日本中、世界中から公募した知的好奇心を刺激するトークの他にも、パンフレットに掲載された技術記事、自分のペースでゆっくり参加できるポスターセッション、気持ちを盛り上げるネイルアートやフェイスペインティング、オープニングパーティ & 懇親会などなど、初心者から上級者まで楽しめるコンテンツがみなさんを待っていま

元記事を表示

Flutter iOS Module xxx not found の対処法

Flutter iOS でビルドすると「Module xxx not found」とうエラーが出ます。
何回もハマっています。そのいくつかの対処法をまとめます。

# ① flutter clean を試す
いったんこれを試しましょう。
flutter clean .
flutter pub get

# ② XCodeで開いてみる
Runner.xcodeproj ではなく Runner.xcworkspace なのがポイント。

# ③ pod install
ios/Podfile の2行目のバージョンを変えてみます。

platform :ios, ‘14.0’ ← このコメント#を外してバージョンを色々変える

Podfile を更新
cd ios
pod install ← Podfile.lockを参照
pod update ← Podfile.lockも更新

# ここで理由を整理してみよう
Pods/Target Support Files 以下にあるモジュールを
参照できない、もしくは、動かないのが原因です。

# ④ パスが違う
XcodeのRun

元記事を表示

複数の非同期処理を並列に実行し、非同期関数の結果が返されるまで待機する!~Swift Concurrency: async let~

# はじめに
SNSアプリでユーザーのプロフィールを表示する画面が表示されたとき、ポスト数といいね数が同時に取得されるのではなく、下記の画像のように先にいいね数取得し表示し、ポスト数を取得後表示するようにタイムラグがあるのは不自然ですね。
それを解決するため`async let`を用い、いいね数取得とポスト数を取得を並列して行い、2つとも取得できるまで待機し、同時に画面を更新するという実装にアップデートした方法を紹介したいと思います!

# async let 使用前

“`Swift
func updateMyCounts(userID: String) {
myPostCount = “”
myLikeCount = “”
Task {
do {

元記事を表示

WKWebViewで新しいウィンドウを開くリンクを外部ブラウザで処理する方法

## 概要
`WKWebView` を使用する際に、新しいウィンドウを開く必要があるリンクをクリックしたときに、そのリンクを外部ブラウザで開く方法を紹介します。このテクニックを使うことで、アプリ内で複雑なウィンドウ管理を避け、ユーザーにシームレスなブラウジング体験を提供できます。

## はじめに
iOS アプリで `WKWebView` を使ってウェブコンテンツを表示することはよくありますが、リンクが新しいウィンドウやタブで開かれるように設計されている場合、デフォルトではその動作を処理する必要があります。特に、そのようなリンクを外部ブラウザで開きたい場合、このテクニックが有効です。

## コードの解説

以下のコードは、新しいウィンドウを開くためのリンクがクリックされた場合、そのリンクを外部ブラウザで開く処理を行います。

“`swift
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNaviga

元記事を表示

TipKitを使ってアプリの機能のヒントを提示する

## はじめに

こちらの記事ではWWDC2023、2024に発表されたTipKitについて、非iOSエンジニア向けにまとめたものとなります。
– アプリ内の新機能をユーザーに認知してもらいたい
– そもそもTipKitを知らない
– TipKitというものを聞いたことはあるがどのように活用すればよいか分からない

これらに当てはまるデザイナーやPMの方に伝わりやすい内容となることを目指しています。
非エンジニア向けの記事になるので技術的な詳細は省いていきます。

## TipKitとは

TipKitはアプリにヒントを簡単に表示できるフレームワークです。主にユーザーのUI学習体験を向上させることができると個人的には思っています。
– アプリの新しい機能について教える
– 隠れた機能の発見を手伝う
– ユーザーの目的をより早く達成するやり方を教える

などの使い道があります。

## 必要な環境

– iOS17以上
– iOS18以上でしか使えない機能も追加で登場していますが、iOS17以上であれば後述する基本的なヒント表示できます
– SwiftUIで構築されたView

元記事を表示

【.NET MAUI】iOSウィジットの署名がおかしいのを修正する

## 何が起きたか

.NET MAUI(iOS)アプリに、iOSのウィジットを組み込んだアプリで、UserDefaultsの情報が共有されない状態になりました。

色々Try-And-Errorで試していたところ、どうやらアプリやウィジットの署名をしなおすと解決するようだったのでそのときの記録を残しておきます。

## 環境

このページの作業は、以下の環境で確認しました。

– macOS Ventura (Intel)
– Xcode 15.2
– Visual Studio Code + MAUIの拡張機能
– .NET SDK 8.0.302
– Visual Studio for Mac (インストールしていますが今回はIDEを使用していません)
※当作業時にMac版はすでに提供終了が決まっています

## 何をして解消したか

.NETでビルドの署名後に、手動でアプリやウィジットを再署名するようにして解消しました。

**.csproj**

まず、以下の定義を追加し、.NETによる署名後に任意のスクリプトを実行を割り込ませるようにしました。

“`xml

元記事を表示

PODの作り方(iPhoneアプリ制作)

ディレクトリ移動しプロジェクトの直下に移動してください

cd Documents/XXX

下記を実行するとpodファイルがプロジェクト配下にできる

pod init

Podfileをエディターで修正
下記のようにPodfileを修正
 ※今回はAdmobを入れたい

platform :ios, ‘15.0’
target ‘XXX’ do
use_frameworks!
pod ‘Google-Mobile-Ads-SDK’
end

修正後下記実行

pod update

完了

元記事を表示

プログラミングを行う上で意識していること4選

## 本記事について

プログラミングを学び始めたばかりの頃、どのように学習すれば良いか悩む方が多いと思います。私自身も最初は同じように悩み、遠回りしてしまったと感じています。

そんな私が、プログラミング経験を積んで年数を重ねた今だからこそ実感する、プログラミングを学ぶ際に意識すべき4つのポイントを紹介します。

:::note warn
今回紹介する内容が全て正しいとは限りません。
全て鵜呑みにせず、参考程度に留めてください。
:::

## 意識するポイント4選

1. ざっくりと全体像を掴む
1. コメントを活用する
1. デバッグでコードの流れを把握する
1. 自身で作りたいものを考えてコードを書いてみる

### 1. 全体像を掴む

コード細かく全てを理解せずに、ざっくり把握することを意識しています。
ざっくり把握するために、まず大枠のstruct(構造体)やclass(クラス)の名前から理解していきます。

下記のサンプルコードを見ながら、実際にイメージしてみましょう。
これはどんなデータまとまりでしょうか?

“`swift
struct UserSetting

元記事を表示

話題のkotlin Multiplatformを使ってみた(環境構築~ビルドまで)

# はじめに
みなさん、kotlin Multiplatform(KMP)ってご存じでしょうか?
https://www.jetbrains.com/ja-jp/kotlin-multiplatform/

Kotlin Multiplatformはさまざまなプラットフォーム向けのアプリケーションを作成し、ネイティブプログラミングのメリットを維持しながらプラットフォーム間でコードを再利用可能にするテクノロジーです。(公式原文まま)

何がすごいってiOS, android, windows, Linuxなど異なるOSで動作するので、これを使えば極論、全てのコードを一括管理できるわけなんです。

ひと昔はiOSならObjective-Cやswift、androidならandroid kotlinなど、OSごとに異なるソースで管理されていたものが、KMPを使うと一つのコードに集約できちゃうらしいんですよ!(筆者はiOSエンジニアなのでandroidエアプです)

最近はFlutterとか、React Nartiveとかでクロスプラットフォームフレームワークがどんどん出てきましたが、今回は、

元記事を表示

Tab Bar の上に AdMob バナー広告を表示する

昔作った iPhone 向けのアプリにバナー広告を Tab Bar の上へ追加したのですが、そのときにかなり時間がかかってしまったので、備忘録を残しておきます。SwiftUI ではなく、Storyboard でのお話です。

### 完成図
Tab Bar の上に広告が表示され、タブを切り替えても同じ広告が表示されます。

![screen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853334/b6b617d4-bcdb-d85f-8e1d-01cf5a00d474.png)

### 環境
Xcode: 15.2
Firebase Apple SDK: 10.28.0

### 画面構成 (Storyboard)
画面の下にタブの切り替えボタンがあるごく普通のレイアウトです。View Controller は、わかりやすく背景に色をつけた View を配置しています。青と赤の画面では、ボタンを配置し、それぞれ緑・黄色の画面へ遷移できるようにしています。

Tab Bar Controller

元記事を表示

iPhoneの実機からMacのlocalhostに接続する方法

Mac上のモック化されたAPIサーバーにiPhoneの実機から接続する方法です。

# 手順
* iPhoneのインターネット共有を有効にします
* MacからiPhoneのネットワークを利用するようにネットワーク設定を変更します
* MacのIPアドレスを調べます
* MacのIPアドレスをコードで指定します(例: `http://172.20.10.2/hoge.json` )
* iPhoneの実機からAPIなどを実行します

参考
https://ishwar-rimal.medium.com/accessing-macs-localhost-on-your-iphone-5d564a387f09

元記事を表示

iOSバーコードリーダーの読込範囲指定方法

# はじめに
iOSバーコードリーダーの読込範囲指定をしたかったが、なかなか上手くいかず、
解決するまでに時間がかかったため、読込範囲指定方法についての記事を投稿します。

またソースコードは最低限しか載せていません。
基本的なバーコード読み取り方法に関しては、他の記事を参考にしてみてください。

# 完成図
作成中のアプリにはなりますが、
バーコード読み取り後、楽天APIを叩き、楽天から書籍情報を取得し、表示させています。

![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204266/fbb3a7cd-2aea-ac71-0478-77e4bcd9a9fe.gif)

# バーコードリーダーの読込範囲指定方法

### 1. 読込範囲を指定するためのViewを作成

下記画像の通り、captureViewを作成します。

![スクリーンショット 2024-08-05 23.44.37.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

[2024年]FlutterをiOS Simulatorでデバックがうまくいかなかった時の解決方法

Fluttterをやり始めて、最初のころはchromeでデバックしていたのですが
iOS Simulatorでデバックしようとしたところうまくいかず苦労したので、
解決方法をメモしておきます。

【環境】
・PC:Mac(OS: Sonoma ver14.6)
・Flutter: ver. 3.22.3
・エディタ: cursor

## 症状
本来は、Simulatorを起動させておいてcursorのデバイス選択からSimulatorを選択し、
![sdヴィっxっcえ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3332453/aeccfdaf-cf45-5ab1-58aa-c767b37c219e.png)

“Flutter”を選択状態で三角ボタンを押してデバックを実行するだけでいけます。
![流ううn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3332453/392363a8-6c0e-642d-f9be

元記事を表示

【XCode】Scheme名の変更方法

# はじめに
iOSのアプリ開発を進めているうちに、途中でプロジェクト名を変更したくなりました。
ネットに落ちている記事である程度プロジェクト名を変更できたものの、
Scheme名の部分のみネットの情報が不足しており、変更に時間がかかりました。
上記の経緯から、本記事にScheme名の変更方法についてまとめることにしました。
誰かの参考になればと思います。

# 変更方法
Scheme名を変更する手順は以下の通りです。

### 1. Schemeの管理
下記画像の通り、「Manage Schemes…」を選択します。
※この例では、「Rakucode」から「Simplebook」に名前を変更したい想定です。

![スクリーンショット 2024-08-04 22.23.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204266/d91656ab-8cb6-46d1-0d1e-8e267df6430e.png)

![スクリーンショット 2024-08-04 22.24.08.png](http

元記事を表示

完全未経験からiOSエンジニアを目指してみた

こんにちは
今までエンジニアとは無縁の人生を送ってきたかつ理系でも文系でも無い自分がiOSエンジニアを目指すようになって普段からしている事などまとめます。
何より現在は初歩の初歩状態なのでこの初心者手前の状態を記録することに何か将来意味があるのではと思ったので。

何故急にエンジニアに方向転換を決めたのか?
趣味です。

何故iOSエンジニアにしたのか?
元々Appleのオタクをしていたから。 つまり好きだから。  以上

動機はこんなもんです。軽くていいの。それで十分です。面接の時はもう少し話すかな…でも好きとか楽しいに勝る動機なんか存在しません。

さて、今の時代エンジニアを目指すにあたって便利な学習ツールが数多く溢れてます。
chatGPT Udemy Amazonで売ってる書籍 YouTube Apple Developer Document ネットに落ちてる様々な記事など。 これらをフル活用して自分は日々勉強してます。

chatGPT-4oについて少し語ろうと思います。
このツールが優秀すぎてこれからエンジニアをやろうと考えてる方も簡単になれますみたいなのも言われてる

元記事を表示

OTHERカテゴリの最新記事