iOS関連のことを調べてみた2021年12月14日

iOS関連のことを調べてみた2021年12月14日

iOS版MSリモートデスクトップでAzureAD参加PCに接続する方法

インターネット上にもMicrosoft公式にも無い方法を見つけたので記載します。

#ハマりポイント
1.ユーザーアカウント名:メールアドレス は駄目。

2.PC版でのAzureAD参加PCに接続方法の「azuread¥メールアドレス」も駄目。

3.原因はiOSの文字の「¥」と「@」がMicrosoft側で認識できないこと

#結論(接続方法)
1.azureadアカウントでログインしているPCで、コマンドプロンプトでwhoami

2.1の結果(例:hogead\123456)をユーザーアカウント名に指定する
 ※「¥(円マーク)」ではなく「\(バックスラッシュ)」

元記事を表示

【Swift】APIでサッカー選手検索してみた

## はじめに

初めまして、株式会社やどかり超絶怒涛のOkaです。
入社してちょうど半年が経ちました。
希望していたスマホアプリ開発に携われて、
コードの理解に苦しみながらも日々楽しんで仕事しています。

## 今回のGOAL

みなさん、ご存知の通り12/13は全世界注目のマドリードダービーでしたね!
~~もちろん、僕が愛するAtletico de Madridの圧勝です!
ということで、Atleticoの勝利を祝して~~サッカー関係のAPIを使ってみました!(0-2で敗北…)
GOALは、”選手検索でAPI叩いて選手の詳細情報と画像を表示させる”です。
(成果物は一番下なのでskipしてもOkです!)
![IMG_6270.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2318159/cc31cbeb-2848-af41-3d4b-bf58feff9610.jpeg)
かっちょええ〜

## 前提
Xcode: 13.0
Podライブラリ: SwiftyJSON, AlamofireImage

元記事を表示

SceneKitの衝突判定(Swift)

![Xcode-13.0](https://img.shields.io/badge/Xcode-13.0-brightgreen) ![Swift-5.5](https://img.shields.io/badge/Swift-5.5-brightgreen) ![iOS-15.0](https://img.shields.io/badge/iOS-15.0-brightgreen)

## はじめに
SceneKit で物体を衝突させようと思うといろいろ設定しないといけません:dizzy_face:

“`swift
let floorNode: SCNNode = {
let floor = SCNFloor()
floor.firstMaterial?.diffuse.contents = UIColor.blue
let floorNode = SCNNode(geometry: floor)
return floorNode
}()
scnView.scene?.rootNode.addChildNode(floorNode)

let b

元記事を表示

[iOS] 無料でCI/CDのパイプラインを構築したい

# Github Actions のセルフホストランナーで無料CI/CDをやりたい。

## セルフホストランナーとは
セルフホストランナーを使用して、githubActionsが用意した仮想環境でなく、自前で用意した環境(EC2などのWebサーバーなど)で実行できる機能。
自分のMacBookでも実行できるのでjob実行の際に、料金がかからないのが利点。
何十回と実行しても、使用時間は0分で収まっており、料金は発生していない。
なので、自社開発や個人開発、github actionsの学習には重宝されると思う。

![スクリーンショット 2021-12-13 15.09.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1322570/a8321e78-30ed-6691-c5f0-d45ce5b0bba7.png)

## github上でのセルフホストランナーに必要な設定

![スクリーンショット 2021-12-06 21.32.58.png](https://qiita-image-sto

元記事を表示

実は、デザイン好きエンジニアはココを見てます…!

# はじめに
日頃 iOS アプリエンジニアとして活動している私は、個人アプリ開発でデザインも自身で行うなど、趣味レベルでデザイン領域を嗜むことがよくあります。今回は、そんな私が **デザインデータを見る時に注視しているポイント** をご紹介します。

– あ、、そこ適当にしがちだ…
– へぇ!そんな視点で見てるんだ!
– お!!私は問題なさそうだ!

こんな気付きを得てもらえたらと思い、執筆しました。
最後まで読んでいただけますと幸いです。

# 前提
iOS アプリのデザインデータであることを前提とします

# Font
文字ラベルに指定されている **フォントの種類** は必ず確認を行います。フォントの種類でそのデザイナーが Apple 製品の **フォント事情にどれだけ詳しいかがわかる** くらい重要だと私は考えています。
例えば、Apple 公式サイトの日本語フォントには「SF Pro JP」という Apple オリジナルの非公開フォントが使われています。これにできるだけ近いフォントを採用するという **こだわり** は、個人的には好きですね。他にも、**Android と

元記事を表示

Swift Package Managerで公開しているライブラリのPackage.swiftを最適化する

# はじめに
[MultipartFormDataParser](https://github.com/417-72KI/MultipartFormDataParser)というテスト用のライブラリを公開しています。
このライブラリのテストでいくつか別のpackageを使用しているのですが、これが理由でちょっとした課題を発見しました。
この記事では、その課題と解決策をご紹介します。

# 概要
MultipartFormDataParserとAlamofireのみを使ったサンプルプロジェクトを作成してみました。
以下のようなPackage.swiftを作成しています。

“`swift:Package.swift
import PackageDescription

let package = Package(
name: “Dependencies”,
products: [
.library(
name: “Dependencies”,
targets: [“Dependencies”]),
]

元記事を表示

iOS開発から見るcluster

この記事は [クラスター Advent Calendar 2021](https://qiita.com/advent-calendar/2021/cluster) 14日目の記事です。
昨日は、[yoshioka_ko57](https://zenn.dev/yoshioka_ko57) さんの、「[デザインデータの読み解き](https://zenn.dev/yoshioka_ko57/articles/understand_design_data)」 でした。普段やり取りさせてもらっているデザインデータですが、データの節々から様々な工夫や配慮を感じながら日々作業させてもらっています。圧倒的感謝:pray:

こんにちは。クラスター株式会社でソフトウェアエンジニアをしている橋本です。今年も残すところ半月ほどとなりましたが、みなさまいかがお過ごしでしょうか。私は、この残り半月という事実を到底受け入れられそうにありません…:innocent:

さて、[モバイル版clusterのアプリ](https://apps.apple.com/app/id1490075175?mt=8&l=

元記事を表示

Pigeonで安全なFlutter画面-ネイティブ画面のコミュニケーションを実装する

この記事は[Makuake Advent Calendar 2021](https://adventar.org/calendars/6822)の6日目の記事です。

# 概要

Flutter-Native間の通信は受け渡しできるデータ型がStringやprimitive型に限られたり、ネイティブメソッドを呼び出す際にメソッド名を文字列で取り扱う場面があるなど保守性に多少不安を感じてしまうところがある。

Pigeonを使うと、事前に定義したschemeをもとにFlutter/Java/Objective-Cのコードを自動生成しFlutter-ネイティブ間の通信をより安全に実装することができる。

例えば既存アプリにFlutterを部分的に導入したいがどうしてもFlutter-ネイティブのやりとりが発生してしまうケースにおいて、Pigeonを活用することでその障壁を下げられるかもしれない。

今回はFlutter化したログイン画面でのログイン成功時にネイティブ側にコールバックするケースを想定して実装してみる。

“`
[ネイティブ画面] -> [ログイン画面(Flutter)]

元記事を表示

個人開発アプリに Xcode Cloud を導入してみた

この記事は [and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory) 13日目の記事です。
昨日は、@y-okuderaさんの[『FlutterでアクティブなBottomNavigationBarItemがタップされたらトップまでスクロールさせてみる』](https://qiita.com/y-okudera/items/fcb9ed97a8e351e86e6a)でした。

# はじめに
今回は WWDC2021 で発表された [Xcode Cloud](https://developer.apple.com/jp/xcode-cloud/) を個人開発しているアプリ [『クラロワガイド』](https://apps.apple.com/us/app/id1542346138) に導入した際の記事になります。
基本的な部分は [『Xcode Cloud でプロジェクトをビルドしてみる』](https://qiita.com/koogawa/items/74a6c62

元記事を表示

[iOS]カスタムUIView研究

こちら https://qiita.com/maebaru/items/90f915f82e3d6425cbdc のやり方だが、カスタムビューを他のstoryboardから生成するとエラーになる。

init coder -> loadNib -> CustomView.xibを見に行く -> CustomView.xib上のViewがCustomViewクラスに設定されている -> init coder…という無限ループになってしまう。

CustomView.xibで、カスタムクラスとして設定するのをやめると上手く行くようだった。
https://tellusium.hatenablog.com/entry/2018/09/30/183523

files ownerとはxibをロードするクラスで、ibOutletなどを設定するクラスのことを意味する。通常ViewControllerはこれに当たる。UIViewでも、xib上のibOutletを受け取りたい時は、そのクラスをfiles ownerに設定すべきと考えられる。
https://stackoverflow.com/qu

元記事を表示

[flutter]freezedでdataクラスを生成する

flutterでapiリクエスト(json形式)する際のdataを、freezedを使用して生成することにしたので、メモ書きとして残します。

今回、freezedで生成する対象は前回のログインアプリのリクエスト/レスポンスに使っていたデータクラスになります。
https://qiita.com/yufuku/items/a7ddcb13ede86df6459a

# 環境
“`shell
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.5.3, on macOS 11.2.3 20D91 darwin-x64, locale ja-JP)
[✓] Android toolchain – develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode – develop for iOS and macOS
[✓] Chrome – develop f

元記事を表示

ios15の場合、デフォルトでは、tableviewとnavigation barが透過されてしまう

[SwiftUI] iOS15の場合、デフォルトでは、tableviewとnavigation barが透過されてしまう
ので、それを防ぐ

“`swift
@main
class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

// TabViewの背景色の設定
UITabBar.appearance().backgroundColor = UIColor.white

// NavigationBarの背景色の設定
let appearance = UINavigationBarAppearance()
appearance.c

元記事を表示

こんな時どう書くの?初級者向けSwift Combineチートシート

この記事は、ニフティグループ Advent Calendar 2021 13日目の記事です。

[ニフティライフスタイル](https://niftylifestyle.co.jp/)所属エンジニアから3人目の投稿です!
iOSアプリエンジニアなのでiOSアプリについての記事を投稿します。

# はじめに
WWDC 2019にてCombineが発表されて早2年、ようやくiOS12のサポートが切れて自分のプロダクトにCombineが導入できる!って方もいるのではないでしょうか…
私が携わっている[ニフティ不動産アプリ](https://myhome.nifty.com/apps/)もついにiOS13以上サポートになり、今年初めてCombineをプロダクトコードに導入しました。

DelegateやClosureを駆使して実装してきた私にとって、Combineの宣言的な概念や実装を理解するのは結構大変でした。
今回は自分の復習も兼ねて、Combineをざっと学んでみたけどこんな時にどんな文法を使えば良いんだっけ?というときに使えるCombineチートシートを作成しました!

# とり

元記事を表示

ユーザーのインスタ写真を取得する


認証してくれたユーザーの投稿を取得できます。
**Webアプリでもモバイルアプリでも取得可能です。**
**Instagram Basic Display API** をつかいます。
手順に沿っていけば、そんなにややこしくないです。

**【画像:インスタグラムから画像データを取得してランダムに並べかえてみた】**
**→Get with API→**flutter_riverpodでアプリをMVVMにする

# はじめに
前回のログインアプリをflutter_riverpodを使用して、MVVM風にリファクタしてみました。
前回作成したアプリ(https://qiita.com/yufuku/items/24dac97e6052b2571386)
設計方針については下記を参考にさせていただきました。
https://github.com/wasabeef/flutter-architecture-blueprints

今回のゴールはview(ui)側で実装していた処理をviewModelに移行して、view側ではstateを持たないようにすることです。

最初のフォルダ構成とコードは下記になります。

“`shell
└──lib
   ├── main.dart
   ├── requester
   │   └── requester.dart
   └── ui
   ├── hello.dart
   └── login.dart
“`

“`dart:lib/main.dart
import ‘package:flutter/material.dart’;

元記事を表示

手順メモ NiftyのセカンドメールをiPhoneから使えるようにする

# はじめに
すごくマイナーな話で、なかなかネットに情報がなかったので、自分用メモ

# Nifty側設定
最初にNifty側で、セカンドメールのメールアカウントに対してimapを有効にする。
(popでも設定できそうだがこちらの方が便利なので。)

名前 (任意)
メール (メールアドレス)
説明 (任意)

受信メールサーバー
ホスト名 imap.nifty.com
ユーザー名 (メールアドレス)
パスワード (パスワード)

送信メールサーバー (詳細画面に)
smtp.nifty.com
SSL 使用
認証 パスワード
サーバーポート 993

元記事を表示

[swiftUI]せっかくなのでアドベントカレンダーが作りたい(後編)

#前回までのおさらい
####概要
こちらは会社のアドベントカレンダーを書く企画に便乗してアドベントカレンダーを作ってみたい記事の後編です。
前編は [こちら](https://qiita.com/mame3/items/6187f393d3d64c9e3a95 “[swiftUI]せっかくなのでアドベントカレンダーが作りたい(前編)”)。

####前編の最後の進捗
~~1.1日~25日までのボタンを配置する~~
~~2.ボタンをタップすることでモーダル表示されるようにする~~
3.モーダルで何かしらの表示をする ←今回はここからやっていきます。
4.もし当日以降の日付がタップされた場合、「まだ開けられないよ!」と表示する

#3.モーダルで何かしらの表示をする

何にしようかな、と悩んだのですが、それぞれの日にちに古今東西の偉人の名言を入れることにしました。
もちろん25日はキリストです。お誕生日なので。
見た目はこんな感じ。
![スクリーンショット 2021-12-11 11.55.33.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

スマホの充電を騙くらかすアプリを作ったらAppleに怒られた話

本記事はクソアプリAdvent Calendar 13日目の記事です。

私は6月からモバイルアプリ開発の道に飛び込んだ新参者です。
普段は個人開発でFlutterでのアプリをひたすら作成しています。

「クソアプリAdvent Calendarとは、なんて素敵な試みだろう、これは参加するしかない!」
そう思い今回初参加させていただきます。

 

本記事では、作成したクソアプリの紹介ののち、
余談としてAppleに怒られた話を致します。
「こんなアプリを作ると、こういうリジェクト理由で割とガチ目に怒られる」
という一つの事例として捉えていただければと思います。

##作成したアプリ##

ちょっと気まずい相手からLINEの連絡先を聞かれ、

「スマホの充電が切れていたらいいのに、、、」

こう思ったことありませんか?

そんな時のために、いつでもどこでも充電切れ画面を表示するアプリを作成しました!

![Android_FeatureGraphic_ja.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

SwiftUIのPull to Refresh実現方法ケース別まとめ

最近iOS開発に復帰した @ruwatana です。[iOS Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ios) の13日目を担当させていただきます :bow:

# SwiftUIでPull to Refreshを実現するには?
SwiftUI自体が提供されてからの歴は非常に浅く、UIKitで実現できていた簡単な機能をSwiftUI上で実現することが難しいケースも少なくありません。

Pull to Refreshの純正APIは、SwiftUI 3.0(iOS 15以降)でようやくサポートされました。
しかし、詳しくは後述しますがまだまだ制約が多い現状です。
そこで、2021年末時点のSwiftUIにおけるPull to Refreshの実現方法とどれを使うべきかのベストプラクティスについてまとめてみたいと思います。

## Case1: Apple純正APIを使う
SwiftUI 3.0 (iOS 15以降) にて、SwiftUIユーザが待ちに待ったPull to Refreshの機能がついに提供されま

元記事を表示

今更聞けない Auto Layout を使うときに考えるべきこと

# 前書き

ご無沙汰しております。[元 Auto Layout 絶対◯すマン](https://qiita.com/lovee/items/7454c9f27638a8e471fa)です。

元、と聞くと、まるで筆者が Auto Layout と和解したかのように見えますが、そんなことは一切ありません。単純に SwiftUI の登場により、アップルが事実上自ら Auto Layout を◯してくれた[^apple-killed-autolayout]から、もう私の役目は果たしたと思って、「元」と名乗っただけです。

[^apple-killed-autolayout]: とは言え、実は少なくとも現在の SwiftUI の場合、裏ではまだ Auto Layout が動いているけどね…あくまでユーザ=エンジニアが直接 Auto Layout と格闘しなくて済んだだけです。

ところが残念ながら、登場して 2 年経ちましたが、SwiftUI がまだまだ UIKit を完全に取っ払えるほど強力とは言えませんしバグや罠もたくさん潜んでいます。筆者自身の個人プロジェクトですら、SwiftUI の

元記事を表示

OTHERカテゴリの最新記事