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

iOS関連のことを調べてみた2020年12月25日
目次

[Swift] 現在propertyWrapperでは変数名に日本語を使えません

Swiftは変数名に日本語や絵文字や、その他のかなり多くの文字を使うことができます。
そこで英語の苦手な知人に日本語名の変数でいろいろ説明していたのですが、なんと「propertyWrapperでは日本語が使えない」という事実が明らかになったので、共有します。

環境はSwift5.3です。

# 実験
実際にはSwiftUIをいじっている際に起こったのですが、結局問題なのはpropertyWrapperなので一緒です。
まずはシンプルなラッパとそれを使う構造体を宣言します。ポイントは「値」という変数名です。

“`Swift
@propertyWrapper
struct MyWrapper{
let wrappedValue: T
let projectedValue: T

init(wrappedValue value: T){
self.wrappedValue = value
self.projectedValue = value
}
}

struct MyValue{
@MyWrapper

元記事を表示

【Swift】日時、数、通貨、データサイズ、リスト、人の名前、単位付きの数から String へのフォーマットは自分で実装しないで

**令和1998年……?**

この記事は [iOS Advent Calendar 2020](https://qiita.com/advent-calendar/2020/ios)

元記事を表示

GoogleFormをチョット理解してガワだけオリジナルフォームにする

#ガワだけオリジナルフォーム??
画面だけを自分の好きなデザインのフォームにしたいけどGoogleFormみたいな機能使いたいという時に使うちょっとした小技です。

#下準備
適当にGoogleFormを作ります
適当に入力形式の項目などを追加します
適当に解答集計用のスプレッドシートを作っておきます
適当なところから叩けるようにログインが必要のない設定にしておきます

#Chrome Developer Tool
GoogleFormを開いたまま、ChromeのDeveloperToolを開きます
※option + command + i (Macの方は)

#テキストフィールドに割り当てられたフィールド名を確認する
![スクリーンショット 2020-12-25 6.00.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84002/e2455b87-bc73-4790-154c-db01210c447f.png)

#実はこっちの方が楽説・・・・
昔こんなのあったけ?みたいな気持ちですが、

元記事を表示

【SwiftUI】アプリの起動状態を取得する方法【iOS】

初投稿です!
SwiftUIでiOSアプリを開発していて、アプリの起動状態を取得する方法を調べるのに苦労したので備忘録も兼ねてこの場で共有させていただきます。

# iOSアプリにおける起動状態について
iOSアプリの起動状態はActive, Inactive, Backgroundの3つの状態に分けることができます。
状態遷移図は下図の通りです。起動するときはInactiveを経由してからActiveになることや、ActiveからBackgroundになるときもInactiveを経由することが分かると思います。

詳しくは[SwiftUI] Textの省略位置の指定方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638786/d8465754-0bc8-dec4-d213-d2fdc238fea7.png)

調べ方が悪くなかなか情報が見つからず、「SwiftUI Text Overflow」で調べてようやく見つかりました。文字溢れっていうんですね。

“`Swift
struct TestView: View {
var body: some View {
VStack{
Text(“SwiftUIでTextの省略位置を指定するにはtruncationModeを使用しましょう”)
.truncationMode(.tail)
.lineLimit(1)
Text(“SwiftUIでTextの省略位置を指定するにはtruncationModeを使用しましょう”)
.truncatio

元記事を表示

かくつかないiOSアプリを作るために

## 自己紹介

Link-Uの原野です。iOS 50% / Web フロント 50%くらいで仕事をしてます。

## iOSにおけるカクツキとは

iOS では画面をスクロールした際に、滑らかにスクロールせず一瞬アニメーションが飛んでしまうフレーム落ちをするタイミングがあります。
これはユーザー体験によくない影響があり、iOS アプリでは改善の対象となります。

Appleも最近この辺に力を入れているっぽく、WWDCでも一大テーマとして多くのセッションがありました。

## iOS の描画の流れ

まずはカクツキの機序を知るために、iOSが描画のために何をやっているかをざっくり追っていきましょう。

### リフレッシュレート

iOS では画面の描画の処理は一定のリフレッシュレートで行われています。
その速度は iPhone/iPad では 60Hz(16.67ms/回)、最新の iPadPro では 120Hz(8.33ms/回)となります。
カクツキは描画のための処理がこのリフレッシュレート内で処理しきれない場合に発生します。

### RenderLoop

iOS では描

元記事を表示

【Flutter】スマホアプリでよく見かけるチュートリアルページを作る方法(3つのパッケージを比較)

# 最終的にこういったチュートリアルが作れるようになります

左から、tutorial_coach_mark flutter_sliding_tutorial flutter_overboardを使用したチュートリアルページです。

元記事を表示

ARKit 4でのFace Trackingの改善

ARKit 4では、TrueDepthカメラを搭載していないデバイスでもFace Tracking(フェイストラッキング)が利用可能になった。つまり、**今まではiPhone X系、iPad Pro系のフラッグシップモデル(わかりやすく言うと、「ホームボタンのないモデル」)でしか利用できなかった同機能が、より幅広いiOSデバイスで利用できるようになった**。

![picture_pc_29069b334e00e11dc0184dd785bab291.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3180/2e1fabd1-9f16-3041-2746-c255c1f6476c.png)

## なぜ嬉しいのか

Face Trackingは**なかなか実用途が見えづらいスマホARの中でも「顔に合わせてアバターを動かす」というわかりやすい用途**があり、

![picture_pc_2441254802dfde109d7795232c69a095.png](https://qiita-image-sto

元記事を表示

Swift TextFieldに入力された文字がメールアドレスかどうか確認する方法

#TextFieldに入力された文字がメールアドレスかどうか確認する方法
今回、TextFieldに入力された文字がメールアドレスかどうかによって条件分岐する方法を実装していきたいと思います。

#まず初めにLabel,TextField,Buttonを設置
![スクリーンショット 2020-12-24 15.47.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933229/43dc3e32-4c14-3462-ea9b-e5a5b9cf19b4.png)

#次にitemとコードを接続
![スクリーンショット 2020-12-24 15.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933229/15ecf39f-3f3c-9782-47bd-9b2e3fbc78c7.png)

#下記のコードを追加する

“`
//メールアドレスかどうかのクラス
class func isValidMailAdd

元記事を表示

続・App Store Small Business Programを申請してみた→結果が出ました

App Store Small Business Programの概要と申請手順については、以下の記事をご参照ください。
[App Store Small Business Programを申請してみた](https://qiita.com/y-some/items/4a18f0e8a805f0d6de83)

この記事は、申請後の結果についてです。

2020/12/23に、Appleから `Welcome to the App Store Small Business Program.` という題名のメールがきました。

そこには英語で以下のような内容が書かれていました。

– 有料アプリとアプリ内課金の手数料が、2021年1月1日から15%になる。
– 2021年に収益が100万米ドルを超えた場合、残りの期間には標準の手数料率が適用される。
– 2020年12月31日以降に、アプリの転出または転入を行った場合は、プログラムの参加資格がなくなる。

ということで、申請は無事に通ったようです。:grinning:

元記事を表示

意識の高いヘルシープログラマはショートカットアプリを活用する

Hello, World! あーみーです.
夏は朝6時30分に起きてラジオ体操をして,一日を始める意識の高い(笑)生活を心がけていました.
しかしながら,冬の朝はとても寒くめっきり実行できなくなってしまいました.
また,6時30分にラジオつけるって起床時間が合わないと結構辛いです.
そこで,今回はiOSのショートカットアプリを使用して,自分の設定した起床時間になったらラジオ体操の曲が流れ,その後,簡単にブリーフィングをしてくれるショートカットを作成しました.

## 制作物

今回,実際に作ったショートカットは[こちら](https://www.icloud.com/shortcuts/905a910d66094a8881589a768988bbb7).使用の条件は以下です.

– ラジオ体操の音源がある(Apple Music等)

あとは,ショートカットアプリのオートメーションで,「このショートカットを起床時に実行する」ように設定すれば,朝自分が起きたタイミングでラジオ体操が自動的に流れます.なお,**「実行の前に尋ねる」をオフにしておかないと自動で流れません.**

> 12月

元記事を表示

mac スクショ方法(忘備録)

#Macでのスクショ方法
一定の期間が空くと「どうやってやるんだっけ〜」となってるのでここに記します。

###全画面のキャプチャ
“`php
command + shift + 3
“`
###選択部分のキャプチャ
“`php
command + shift + 4
“`
#最後に
よし。

元記事を表示

サブする iOS で取り組んでいる DI(Dependency Injection)可能な実装について

iXIT で iOSエンジニアをしています、 @branch10480 です。今回は私が担当しているプロダクト [サブする](https://sabusuru.jp/) で対応している 「**DI(Dependency Injection)**可能な実装」について書いていきたいと思います。

# 依存性注入:DI(Dependency Injection)って何?

この DI (Dependency Injection) については Wikipedia ではこのように記載されています。

> DIを利用したプログラムを作成する場合、コンポーネント間の関係はインタフェースを用いて記述し、具体的なコンポーネントを指定しない。具体的にどのコンポーネントを利用するかは別のコンポーネントや外部ファイル等を利用することで、コンポーネント間の依存関係を薄くすることができる。

最初、「具体的なコンポーネントを記載しない」、「コンポーネント間の依存関係を薄くすることができる」などがあまりピンと来ず、どういうケースで役に立つのかがイメージできませんでした。

ですのでその時の自分に説明するつもりで書い

元記事を表示

【アプリ開発】こども向けアプリのペアレンタルゲートの設置

個人開発で、こども向けアプリ内にAppStoreのレビュー画面に遷移する機能を追加しいた際に、ペアレンタルゲートの存在を初めて知り、色々苦労したため、残しておきます。

#経緯
私は、甥っ子のために計算練習と復習ができる計算アプリの開発をし、iOSアプリでリリースをしておりました。
軽微な修正を行っている中、せっかくならユーザにレビューをいただけるよう、AppStoreのレビュー画面に遷移する機能を構築しました。

#審査
却下。。
こども向けアプリ(リリースする際に設定)では、外部リンクへ遷移する際は、子供だけの判断で遷移できないよう、ペアレンタルゲートを設ける必要があると。

なにそれ?
Google先生に聞いてみると、Appleの公式でも普通に書いてありました。勉強不足。。

+ 子ども向けのAppを開発する
https://developer.apple.com/jp/app-store/kids-apps/

#修正
初回リリース時も、子供向けアプリで広告は入れちゃダメとリジェクトされていたため、実は、今回のリリースでは子供向けのチェックを外していたのですが、もうダウンロー

元記事を表示

iOS標準のショートカットアプリで、色々なアクションを効率化してみよう

# この記事について
この記事は、[aslead Agile](https://aslead.nri.co.jp/solution/aslead_agile.html)の開発チーム「[オキザリス](https://speakerdeck.com/viva_tweet_x/huesudeyong-qi-wode-taxin-gui-timugashi-yan-wozao-rifan-sitejin-nizhi-rumadefalsewu-yu)」にて行っているアウトプット企画である
「[チーム「オキザリス」Advent Calendar](https://qiita.com/advent-calendar/2020/oxalis)」の24日目の記事です。

# あるハッカソンでのできごと
先日、同期と一緒にあるハッカソンに出ました。
開発テーマはなんでもOK!の自由度高いハッカソンだったので
「食欲旺盛な同期 Pくん が彼女の外出中に冷蔵庫を開けると、その場で彼女のお叱りの音声が響き渡り、
彼女に『あいつ冷蔵庫開けてんぞ!』と告げ口LINEが飛ぶ **つまみぐい防止のための冷蔵庫監視シス

元記事を表示

実務未経験からiOSエンジニアへ

2020年10月からフラー株式会社に入社して約3ヶ月になります。
念願だったiOSアプリ開発に携わっています。

iOS開発に関するチャレンジングな知見はまだ持ち合わせていないこともあり、
今回は、個人開発と時を振り返ってみて、iOS開発に興味を持っている方や、iOSアプリを仕事としてやっていきたいという方向けに意識して書きました。

**本記事は技術的観点というより、就業するまでどんな行動をしたのかという点に重きを置いています。**
最初は身の上話が続くので、アプリ開発については「[取り組んだこと](#取り組んだこと)」に飛んでいただければと思います。

#わたし
情報系専門学校卒
約10年、COBOLやJavaで業務システムを開発・保守とか、医療システムの保守をしたり。

#きっかけ
4,5年前に、Swift、モダン。お、かっこよさそう。アプリ作れたら楽しいだろうな。
きっかけはこんな感じでした。
ずっとAndroidユーザーでしたが、Appleの統合された美しさによろめいていた時期でした。

何事も形から入りたかったので、
まずは、無印Macbook(スペック盛り盛り)を購入しま

元記事を表示

iOSアプリ開発でぶち当たるエラー処世術〜Xcode編〜

# エラー処世術
アプリケーション開発を行なっていると必ずぶち当たるエラー.検索しても解決策が得られない.開発が滞ってしまい,やる気が削がれる.といったことは誰しもが経験することだと思います.
私自身もその一人で,毎日技術力不足を痛感させられます.この記事では,Xcodeで開発する際に効率よくエラーの解明を行い,圧倒的成長を遂げるための処世術を少し紹介したいと思います.

# この記事の対象者
– iOSアプリ開発を始めたての方(Xcodeでの)
– LLDBって何?デバッガって?という方
– 追加したUI部品(button, viwe…)が表示されない!どこいったの?という方

# 処世術1 〜LLDB〜
LLDBとはXcodeのデフォルトデバッガです.皆さんお馴染みの画面の下の方にいます.デバッガとは不具合の原因を探すお手伝いをしてくれる機能やソフトを指します.基本的にはプログラムを一時停止させたりしてエラーを見つけます.

CoreImageフレームワークを使ってSwiftでしみ消し、くま消し機能を実装した話

バイトル履歴書アプリに画像の補正機能を追加するエンハンスを担当したのでやったことまとめておきます。

今回のエンハンス内容としましては画像補正機能として撮影した写真全体に対して独自で定義したフィルター処理を行うのと、目の下のくまの部分や頬のあたりのしみの部分を部分的に画像補正処理を行う機能をCoreImageフレームワークのみを使い実装しました。

写真全体に対してフィルター処理を行うケースはそんなに難しくないのでサンプルコードだけ載せておきます。

“`Swift
import CoreImage

// フィルター処理をかけたいSampleイメージを準備
var image = UIImage(named: “sample.jpg”)

// UIImageからCIImageへの変換
let ciImage: CIImage? = CIImage(image: image)

// Sepiaフィルターの準備
var filter = CIFilter(name: “CISepiaTone”)

// フィルターに画像を渡す
filter.setValue(ciImage

元記事を表示

[iPhone12まで]ステータスバー・セーフエリアトップ・ナビゲーションバーのサイズ一覧

| | ナビゲーションバー高さ | ステータスバー高さ | safeareaInsets.top |
| —— | —— |—— |—— |
| iPhone12mini | 44 | 44 | 50 |
| iPhone12 | 44 | 47 | 47 |
| iPhone12Pro | 44 | 47 | 47 |
| iPhone12ProMAX | 44 | 47 | 47 |
| iPhone11 | 44 | 48 | 48 |
| iPhone11 Pro | 44 | 44 | 44 |
| iPhone11 Pro Max | 44 | 44 | 44 |
| iPhoneX | 44 | 44 | 44 |
| iPhoneXR | 44 | 44 | 44 |
| iPhoneXS | 44 | 44 | 44 |
| iPhoneXS Max | 44 | 44 | 44 |
| iPhoneSE | 44 | 20 | 20 |
| iPhone8 | 44 | 20 | 20 |
| iPhone8 Plus | 44

元記事を表示

iOS: SFTPでファイルアップロード

– Swift 5
– Xcode Version 12.3
– NMSSH

iOSアプリ開発にて、SFTPでサーバーにファイルをアップロードする仕様でした。
今回使用したライブラリは[NMSSH](https://github.com/NMSSH/NMSSH)。これ以外、見つけられませんでした。
– https://github.com/NMSSH/NMSSH

## CocoaPodのインストール
まずはここでつまづきました。
参照)https://qiita.com/spring_i/items/181bc3c05142d1f80d93

“`bash
$ sudo gem install -v1.8.4 cocoapods -n /usr/local/bin
$ pod setup
“`

## MNSSHのインストール

Xcodeのプロジェクトは作成済みとしています。

“`
$ cd [プロジェクト名]
$ pod init
“`

Podfileが生成されますので、それを編集。

“`bash:Podfile
# Uncomment the next l

元記事を表示

OTHERカテゴリの最新記事