- 1. RxSwift の subscribe 内の処理を共通化する
- 2. コピペでFlutter その2
- 3. コピペでFlutter その1
- 4. Unity 研究期間の成果
- 5. UnityでUIをスマホ画面準拠にする方法
- 6. UISearchBarで初期表示時にキー入力(フォーカス)状態にする
- 7. VMwareを使い、WindowsでmacOS環境を構築する(VMwareインストールまで)
- 8. モバイルエンジニアが内定者としてインターンシップにフロントエンドで参加した話(ざっくりまとめ)
- 9. 【AdMob】ネイティブ広告で画像広告だけ表示する
- 10. アプリに撮影機能を実装した時の注意点
- 11. 【SwiftUI】影を特定のViewだけに付与する
- 12. 【SwiftUI】アプリ内でWebサイトを表示する方法
- 13. 【SwiftUI】自動スクロール機能を持つCustom TabView
- 14. 18ヶ月を振り返ってみたよ
- 15. SwiftUIでのiOS・iPadの画面遷移時の表示方法の違い
- 16. Swift/Objective-C コードに見出しをつけて可読性を上げよう
- 17. 【Swift】バックグラウンドスレッドからの変更はできないらしい
- 18. 【SwiftUI】@Bindingの使い方
- 19. SwiftPM を用いたプロジェクトで出たエラー対処法
- 20. Diffable DataSource 入門
RxSwift の subscribe 内の処理を共通化する
# はじめに
あまり発生しないケースかもしれないですが、 RxSwift の subscribe 内の処理を共通化したいと思ったことはないでしょうか。例えば、 API 通信でエラーが発生したらダイアログを出す処理や Firebase Crashlytics にエラー情報を送信する処理などです。その共通化の方法を実装する機会がありましたので、備忘録として残します。# 実装
## Observable の場合
共通処理を置いておく独自 Observer を用意します。そして、 subscribe の引数にその observer を入れるだけです。“`swift:SampleObserver.swift
import RxSwiftclass SampleObserver
{
let onNext: ((T) -> Void)?
let onError: ((Error) -> Void)?
let onCompleted: (() -> Void)?init(onNext: ((T) -> Void)? = nil,
コピペでFlutter その2
[前の記事 コピペでFlutter その1](https://qiita.com/netineti512/items/583bfdfb6b141894679f)
[参考](https://docs.flutter.dev/cookbook/animation/opacity-animation)
“`sample1.dart
import ‘package:flutter/material.dart’;void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});@override
Widget build(BuildContext context) {
const appTitle = ‘Opacity Demo’;
return const MaterialApp(
title: appTitle,
home: MyHomePage(title: appTitle),
)
コピペでFlutter その1
mainの雛形をコピぺで変更するだけで実行できると思います。
雛形
“`main.dart
import ‘package:flutter/material.dart’;void main() {
runApp(const MyApp());
}class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with “
Unity 研究期間の成果
# はじめに
研究期間(実装したことないものを実装する期間)中に実装したものについて、実装方法や参考資料を本記事にまとめました。
他に面白そうな実装物などあれば、是非コメント下さい!# 目次
1.AdMob起動時広告の実装
2.Google Play In-App Review APIの実装# 1.AdMob起動時広告の実装
①下記サイトから “GoogleMobileAds-v7.1.0.unitypackage” をダウンロードする
※v7.2.0は未確認https://github.com/googleads/googleads-mobile-unity/releases/tag/v7.1.0
②Unityのプロジェクト内に①でダウンロードした “GoogleMobileAds-v7.1.0.unitypackage” をインポートする
③下記サイトから “MainScene.cs” と “AppOpenAdManager.cs” をダウンロードする
https://github.com/googlecodelabs/admob-appopen-unity/tr
UnityでUIをスマホ画面準拠にする方法
備忘録
## Canvasオブジェクト作成
1. ヒエラルキーで右クリック
1. UI→好きなUIを選択![スクリーンショット 2022-09-03 17.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1135021/3593bce6-11e8-a587-4b1f-ee535389b72a.png)
## 画面をスマホサイズに設定
1. ゲームタブを選択
1. Free Aspectを好きな端末の比率に変更![スクリーンショット 2022-09-03 17.51.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1135021/62fa0e07-8cb9-bb73-e8d2-327835ffb952.png)
UISearchBarで初期表示時にキー入力(フォーカス)状態にする
# 1.はじめに
仕事で、UISearchBarで初期描画時にフォーカスを当てた状態で表示する必要がある場面がありました。
一行追加するだけでフォーカス状態にできるようですので共有したいと思います。# 2. UISearchBarでのフォーカスについて
UISearchBarの初期フォーカスについては、
UIResponderのbecomeFirstResponderを使ってフォーカス状態にできるようです。
UIResponderクラスは画面タッチやデバイスのモーションなどのイベントを管理するクラスです。イベントには、タッチイベント、モーションイベント、リモコンイベント、プレスイベントなど、いくつかの種類があります。becomeFirstResponderの説明に戻りますが、
[Apple Developper – becomeFirstResponder()](https://developer.apple.com/documentation/uikit/uiresponder/1621113-becomefirstresponder)には下記のように説明書きが載っています。
VMwareを使い、WindowsでmacOS環境を構築する(VMwareインストールまで)
# はじめに
大学時代に支給されたMacBookでiPhoneアプリを作っていたが、卒業し回収されてしまった。
Windowsしか持っていないが、またアプリを作りたくなったため、その開発環境を作っていこうと思う。
~PCスペック~
プロセッサ Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz 3.60 GHz
実装 RAM 16.0 GB
エディション Windows 11 Home# VMwareのダウンロード
![ダウンロード1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821619/9bfd0129-a0ed-640e-4819-0893ff2a127c.png)
VMWareの公式サイト([https://www.vmware.com/jp/products/workstation-player.html]())
無償でダウンロードすることができる。![ダウンロード2.png](https://qiita-image-store.s3.ap-no
モバイルエンジニアが内定者としてインターンシップにフロントエンドで参加した話(ざっくりまとめ)
#### 本記事は、「モバイルエンジニアが内定者としてインターンシップにフロントエンドで参加した際の話」をざっくりまとめたものです。
もしかしたら、この話の各テーマごとに深掘りした記事を今後出すかもしれないです# 自己紹介
自動車産業が有名な県で専門学生をしている20歳男性です。
高校の頃に独学でプログラミングを始め、専門学校に進学。
来年の4月にはビジネスチャットを提供している企業に、モバイルエンジニアとして新卒入社する予定です。半年ほど前まではFlutterを書いていましたが、最近では入社に向けてSwiftを書いていています。
今回は、入社予定の企業のインターンシップに内定者として参加させていただいたので、その経験や感想をまとめていこうと思います。
# インターンの内容
インターンの期間:3週間
– #### 講義パート :1週間
– __環境構築__ から __デザイン__ , __React__ , __型システム__ , __要件定義__ , __ドメイン駆動設計__ , __運用__ , __アジャイル・スクラム__ …などなど様々な講義を受
【AdMob】ネイティブ広告で画像広告だけ表示する
# はじめに
ネイティブ広告には画像広告と動画広告があります。
動画広告は重いのでスクロールがカクついたりします。
ですので、画像広告だけを表示したいと思い、
AdMobの実装関係のドキュメントを一生懸命読んでました。なかなか見つからないのでないのか。。。と諦めかけた所、マイページで設定ができたので紹介します。
# 設定方法
1, ハンバーガーメニューを開きます。
2, 「広告ユニット」を選択します。
![スクリーンショット 2022-09-03 0.25.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/89f6f1a1-5776-eef4-c0ef-f24d72047031.png)3, 該当の広告ユニットを選択します。
![スクリーンショット 2022-09-03 0.26.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c7d57517-bd9c-df79-3be3
アプリに撮影機能を実装した時の注意点
# はじめに
アプリに撮影機能を実装した際に挙動がおかしな点が見つかったので備忘録として記事にしました。
# 問題
音量ボタンでシャッターを切る実装をした際に、撮影画面でホーム画面に戻る、または画面ロックすると再度撮影画面に復帰した際に音量ボタンで撮影できなくなってしまいました。
# 原因
https://developer.apple.com/documentation/avfaudio/avaudiosession/1616596-interruptionnotification上記ドキュメントのNoteにこう書かれていました。
> Starting in iOS 10, the system deactivates an app’s audio session when it suspends the app process.日本語に翻訳すると、
> iOS 10から、アプリのプロセスを中断する際に、アプリのオーディオセッションを非アクティブにするようになりました。つまり、音量ボタンで撮影するためにアクティブにした[AudioSession](https://dev
【SwiftUI】影を特定のViewだけに付与する
# はじめに
SwiftUIを使っていてこれどうやるんだ?と思った事があったので記事にします。# 現在のコード
“`swift
struct ContentView: View {
var body: some View {
Text(“影のテストです”)
.frame(width: 200, height: 80)
.background(Color.yellow)
.shadow(color: .black, radius: 3, x: -5, y: -5)
}
}
“`# 問題
背景の黄色だけに影を付けたいのにTextにも影が付く
![スクリーンショット 2022-09-02 22.19.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7a0fe59d-1bd2-15c4-66a2-c9b50df4eede.png)# 解決方法
`shadow`の前に`com
【SwiftUI】アプリ内でWebサイトを表示する方法
## はじめに
アプリ内でWebページを見せる## 環境
Xcode 13.3.1## Code
“`swift: MainView
struct MainView: View {
var body: some View {
NavigationView{
VStack(spacing: 30){
NavigationLink(destination:
WebView(urlToLoad: “https://www.google.com”)) {
Text(“Google”)
.foregroundColor(Color.white)
.padding()
.background(Color.blue)
【SwiftUI】自動スクロール機能を持つCustom TabView
## はじめに
基本的なTabViewではTabViewの活用に限界がある。TabItemをカスタマイズし、一回タップで最初のページに戻り、2回目でスクロールを一番上に戻す機能を加える。
## 環境
Xcode 13.3.1## Code
“`swift: MainTabView
struct MainTabView: View {@EnvironmentObject var value : ValuesModel
@State var showNextPage = false
init(){
UITabBar.appearance().isHidden = true
}@State var countForScroll = 0
@State var currentTab = “house”var body: some View {
VStack {
TabView(selection: $curr
18ヶ月を振り返ってみたよ
遡ること2年半前、金融機関を退職し昼夜逆転の生活を繰り返しながら遊び呆けてました。
グランド・セフト・オートのオンラインで知らないユーザーに虐殺されて発狂していたのを思い出します。そんな底辺生活を脱してiOSアプリの開発に携わらせてもらったのが約1年半前。
このような機会を与えてくれた弊社にはとても感謝しています。今回は今までのアプリ開発を振り返って記事を書いてみようと思います。
## 私という人物について
大学までずっと文系でした。**どちらかというと今も文系かもしれません。**
高校までサッカーしかしておらず勉強は二の次でした。大学では法学部で、主に商法を勉強してました。
その他にも経済刑法(いわゆるマルチ商法)や原価計算などといった経済学部的なことも勉強してきました。新卒で信用金庫に就職し営業として働いてました。
札勘は得意です。いつでも数えられます:fist:ここまで書いて、自分でもびっくりするくらいエンジニアとはかけ離れています。
## 文系の人間がエンジニアとして働くために意識してきたこと
勉強するときに特に意識していたのは、
**身近なもので
SwiftUIでのiOS・iPadの画面遷移時の表示方法の違い
SwiftUIで画面遷移を実装した際に、
iPadとiPhoneで微妙に遷移時の表示が異なる場合があったので、まとめました。■ 動作環境
iOS15.8
iPadPro mini(6th Generation)
※iPadPro(12.9inch)(5th Generation)も一部あり
iPhone13 mini## タブ遷移
■ iPad
![Simulator Screen Recording – iPad mini (6th generation) – 2022-08-07 at 21.19.37.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160605/d6728129-84ec-b7f0-f6f0-767e85c179c3.gif)■ iOS
![Simulator Screen Recording – iPhone 13 mini – 2022-08-07 at 20.51.08.gif](https://qiita-image-store.s3.ap-northeas
Swift/Objective-C コードに見出しをつけて可読性を上げよう
# 1.はじめに
プロジェクトや個人開発でコードを書く際、後でソースコードを見る人(未来の自分を含む)に向けてコメントを残すのはとても重要だと思います。
そのメソッドはどんなものなのか、何をしているのか、後で付け足すことや今後の懸念点がないか、考えるべきことは様々です。
そんなコメントの一環として、
“`
– delegate実装の先頭
– まとまった意味を持つメソッド郡の先頭
“`
に見出しをつけることによって、ソースコードが見やすくなると思います。また、今回の環境については、下記の通りです。
__環境__
__Xcode Version 13.4.1__
__Swift version 5.6.1__# 2. 実際の見出し
では、具体的な見出しの方法について見てみましょう。
## ●Swift
Swiftでの見出しの書き方は下記の通りです。“`swift:SampleViewController.swift
// MARK: 見出し文
// MARK: – 見出し文
// MARK: 見出し文 -(-の後ろに空白を入れないこと)
// MARK: – 見出し
【Swift】バックグラウンドスレッドからの変更はできないらしい
# はじめに
https://qiita.com/mesummery/items/9d096162a351e2e922c5上記のリンクを参考にインターネット接続の監視を実装してる際にViewの切り替え時に紫色警告が発生したので対処法を載せておきます。
# 実装内容
“`swift
// ネットワーク監視
private func observeNetwork() {
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
self.isNetwork = true // オンライン
} else {
self.isNetwork = false // オフライン
}
}
monitor.start(queue: queue)
}
“`
“`swift
import SwiftUI@main
struct TwitterSearchApp: App {
@Obser
【SwiftUI】@Bindingの使い方
## はじめに
@Binding の使い方異なるView間で値を共有する方法として`@Binding`を用いる
## 環境
SwiftUI
Xcode: 13.3.1## Code
`@State`を用いて値を渡す場合
“`swift: HomeView
struct HomeView: View {@State var showNextPage = false
@State var button = falsevar body: some View {
NavigationView{
VStack{
Text(“Home page”)
Button {
self.button.toggle()
} label: {
Text(self.button.description)
SwiftPM を用いたプロジェクトで出たエラー対処法
# エラー内容
SwiftPMを利用しているプロジェクトをcloneしてビルドした時に以下のエラーが出た。“`
the package at ‘/’ cannot be accessed (Couldn’t read ‘v10.28.6’:
“`# 対処法
`[AppName].xcworkspace/xcshareddata/swiftpm/Package.resolved` に存在するPackage.resolvedを削除する。
削除後、再度ビルドしたらうまくいった。
なお、Finderで上記ファイルにアクセスする場合、[AppName].xcworkspaceを右クリックし、「パッケージの内容を表示」をクリックすればアクセスできます。
# まとめ
その他、良い解決策があれば教えていただけるとありがたいです!# 参考
* https://stackoverflow.com/questions/67185817/package-resolved-file-is-corrupted-or-malformed
Diffable DataSource 入門
## 概要
iOS 13 から `UICollectionView` / `UITableView` に表示するデータを管理する方法として `UICollectionViewDiffableDataSource` / `UITableViewDiffableDataSource` が登場しました。 Diffable DataSource を使うことにより、以前までの方法と比べて宣言的に書くことや美しいアニメーションのサポートも受けることができますが、一見すると登場人物が多く複雑に見えます。この記事では、 Diffable DataSource を触ったことがない人でもざっくりとその使い方が理解できるように Diffable DataSource の基礎知識をまとめます。そのための例として Todo アプリを取り上げ、以下の順で作っていきます。その過程で一通り Diffable DataSource の使い方が理解できるようにします。
– Todo アプリの最小構成を作る
– Todo を削除できるようにする
– Todo を編集できるようにする
– セクションヘッダを追加する
–