- 0.0.1. iPhone7でCプログラミングしてみた
- 0.0.2. Swiftでユニットテストを導入する上で押さえておきたいこと
- 0.0.3. シミュレータの画面収録メモ
- 0.0.4. Flutterで書くiOSアプリハンズオン(QiitaClientを作ってみよう)
- 0.0.5. 【Flutter】キーボード外タップで、キーボードを閉じる
- 0.0.6. #25 横ScrollViewの使い方1例
- 0.0.7. 今更MVCとかでiOSアプリつくってみた(Swift)・改
- 0.0.8. Xcodeでよく使うショートカットキー
- 0.0.9. swiftの基礎的な書き方
- 0.0.10. iPhoneのショートカットAppを使って、ヘルスケアに体温を楽々で記録する
- 0.0.11. 【SwiftUI】NavigationViewのようなカスタムViewを自作しようとして分かった事と分からなかった事
- 0.0.12. FlutterがiPhoneの実機ではビルドできない人へ
- 1. iOS13.3ではビルドできないよ!!!13.4にアップデートしましょう!!
- 1.0.1. その他注意点
- 1.0.2. “001 UILabelで文字を表示” iOS app開発 習得日記 (5)
- 1.0.3. iPhone実機のUDIDを確認する
- 1.0.4. RxSwiftとApolloでつくるGraphQL API Client
- 1.0.5. iOS app開発 習得日記 (4)
- 1.0.6. CompositionalLayoutでリマインダー風のレイアウトを実装する
- 1.0.7. WIP: コロナウイルス 下でAppleのアプリ審査にどのくらい時間がかかるか試してみた。
- 1.0.8. Sign in with apple実装中に、サーバーサイド側でJWTを検証しようとしたところ、Signature verification raisedが発生する
- 1.0.9. Storyboardが複数の場合の画面遷移
iPhone7でCプログラミングしてみた
#はじめに
今回、[**モバイル C [ C/C++ コンパイラ ]**][app]というiOSアプリを使いました。
やはり、今更感はありますかね?
インストールから間もなくて、あまり使い慣れていませんが
行ってみましょう…#実行環境
“`console
端末:iPhone7 (最近バッテリーが貧弱)
アプリ:モバイルC[C/C++コンパイラ] (無料版)
“`
#エディタ画面
縦画面でもできますし、フリック入力のキーボードでも入力できました。
画面のテーマ変更もできました。(これはdark)
![エディタ画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506931/ce8c3dc4-1fa6-f93c-1a88-674c633145ed.png)#色々実行してみた
実行は`ランボタン`もしくは`コンソールでファイル名を指定`するとできるみたい。
アプリ上での実行結果をコピペしてます。
###①おはよう世界
“`c:ex01.c
#include
int main(
Swiftでユニットテストを導入する上で押さえておきたいこと
## はじめに
技術書クラウドファンディングのPEAKSから販売されている[iOSテスト全書](https://peaks.cc/books/iOS_testing)の第2章・ユニットテストを読んで、ユニットテストを導入する上で押さえておきたい点を備忘録としてまとめました。
## ユニットテストとは
– ユニットテストとは、構造体やクラス、関数などのシステムにおける最小単位のコンポーネントに対して行うテストのこと
– **自動化**され、**繰り返し実行可能**で、**統一的な仕組みに支えられた**テスト
– 上記を満たすために、テストを資産として残すことが可能で、テストの実行や結果のレポートを行ってくれるテスティングフレームワーク(XCTest、Quick/Nimble)を用いる## 導入するモチベーション
**1. より早い段階で不具合に気づく**
処理単位で正しいことを検証できたら早いタイミングで不具合に気づくことができ、手戻りを減らせる**2. コードや設計を継続的に改善できる状態にする**
ユニットテストの整備が安全網として働き、コードや設計を継続的に改善でき
シミュレータの画面収録メモ
# 画面を収録する
「shift + command + 5」で収録する
https://support.apple.com/ja-jp/HT208721# Trimする
QuickTimePlayerで開いて、メニューバーの編集 > トリム…(Command + T)# 必要なら、FFmpegでgifにする
こちらの記事を参考に
https://qiita.com/wMETAw/items/fdb754022aec1da88e6e
Flutterで書くiOSアプリハンズオン(QiitaClientを作ってみよう)
## これは何?
Flutterを使ったハンズオン用の記事です。
以前Flutterの勉強をした際に簡単なQiitaClientを作ったので、イベントなどで登壇したときに使えるようにハンズオン形式にまとめてみました。## 使用するAPI
今回はQiitaAPiを題材とします。([ドキュメント](https://qiita.com/api/v2/docs))登録不要で使えて、例えば、 https://qiita.com//api/v2/items で、投稿を取得できます。
“`javascript
[{
rendered_body: ”プロローグ
## キーボードを閉じるには?
主に以下の2つの方法があります。
今回は、1の方法を紹介いたします。1. キーボード外の画面タップでキーボードを閉じる
2. キーボード上に閉じるボタンを配置する## キーボード外の画面タップでキーボードを閉じる
キーボードを閉じる処理は以下のコードです。
“`Dart
FocusScope.of(context).unfocus()
“`画面タップ時に上記の処理を発火させるには、`GestureDetector`を使用して、以下のように記載いたします。
“`Dart
GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: HomePage(),
),
“`だいたいこんな感じです
“`Dart
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@ove
#25 横ScrollViewの使い方1例
#はじめに
個人のメモ程度の出来なのであまり参考にしないで下さい.#環境
Xcode:11.4
Swift:5.2
2020/04##part1
`UIViewController`に`UINavigationBar`を置く.##part2
`UINavigationBar`に下の4つの制約を付ける.# はじめに
以前に書いた[今更MVCとかでiOSアプリつくってみた(Swift)](https://qiita.com/am10/items/6e76ec231ee1251560cc)はなぜ MVC を導入するのかふわっとしてるし分け方もふわっとしててなんか違うなと思っていたのですが何が違うかわからず放置していました。
が、未だに LGTM ついたりしてまずいなと思い MVC について再考するために今回の記事を書きました。(google で「swift mvc」で検索するとわりと上位にくる。やっぱり Qiita の SEO すげぇ)* アーキテクチャの起源は MVC であり他のアーキテクチャは MVC の課題を解決するために派生していったものであり MVC の理解がアーキテクチャの理解の第一歩と考え今更ですが MVC についての記事を書きました。
わりと長くなったのでめんどくさい人はソースだけでもどうぞ:bow:
* [VC3つのみでつくったやつ](https://github.com/adventam10/SwiftArchitecture2/tree/fat_fat
Xcodeでよく使うショートカットキー
#よく使うショートカットキー
・Shift+Command+O
上の画像のような検索バーが出てファイルを検索できる。・Command+B
ビルド・Command+R
ビルドして実行
上の画像のようなシュミレーターが起動する。・Shift+Command+L
swiftの基礎的な書き方Xcodeの基礎的なことを書いていきます。
#変数と定数
変数は数学で習う、χみたいなもので数字を何回でも入れ替えることができる。
変数では、先頭にvarをつける。
`var 変数名: 型名`
定数は一度決めたら変えられないもの。
例えば円の直径を計算するときのπ=3.14みたいな、変えたらおかしくなってしまうもの。
定数は先頭にletをつける。
`let 変数名: 型名`#Swiftのデータ型
Swiftのデータ型を書いていきます。
####Int型
正と負のデータを扱うときに使う。
####Double型
小数点を扱うときに使う。
小数点を扱うものにFloat型もあるがこれは扱える範囲が狭いため基本的にはDouble型を使う。
####String型
文字列を扱うときに使う。
####Bool型
論理演算でtrueかfalseを扱うときに使う。#条件分岐処理
条件分岐をするときは大体if文を使う。
こんな感じ“`swift
var num = 10if (num > 5) {
print(“true”)
} else {
print(“false”
iPhoneのショートカットAppを使って、ヘルスケアに体温を楽々で記録する
みなさんこんばんは、スズキです。コロナ流行ってますね。怖いです。
## 求められる検温
さて、世の中的にはリモートが広まりつつありますが、友人の会社は作業開始時の日報に検温の記録が求められ始めたそうです。いやまぁ確かに学校と保育園は既にそうではあった。
そして、**「検温記録で検索したらルナルナしか出ない、そうじゃないんだ」**という声が飛び込んできました。検温の記録自体は、iOS標準のヘルスケアアプリに記録することが出来ます。ですが、辿り着くまでのUIUXがちょっと分かりにくいんですよね。ご婦人系のカテゴリの中に入ってしまっていて…。(あんまり言うのも野暮なので各自確認してくれ)。
結論として、**iPhone標準のヘルスケアアプリで体温の記録の蓄積は行なえます。**
ちょっと調べてみたところ、ショートカットAppのAPIがあったので、気不味い画面を開くこと無くスムーズに健康を管理出来るよう、レシピを作ってみたので公開します。尚、本件は以下のサイトを大いに参考にさせて頂きました。
ありがとうございます。[何となく風は爽やか](https://kazesawayaka
【SwiftUI】NavigationViewのようなカスタムViewを自作しようとして分かった事と分からなかった事
この記事は、SwiftUIで以下のような**「内部のViewの情報をコンテナViewで読み取るデザインのカスタムViewを作りたい」**というiOSエンジニアへの知見共有を目的としています。
“`swift
NavigationView {
Text(“Hello World”)
.navigationTitle(“MyApp”)
}
“`iOSでもAndroidでもよく見かけるEmptyState(iOSでは昔DZNEmptyDataSetがよく使われてた)をPureSwiftUIで実装しようと思ったときに、分かった事とわからなかった事があったので紹介していきます。
この記事は現状では代替案を最後に解説していますが、正しい解決法が分かり次第タイトルを含む記事の内容を更新します。
# APIデザイン設計
冒頭にも挙げましたが、SwiftUIとのAPI一貫性を保つコンポーネントを作るために以下のNavigationViewようなAPIを目指しました。## 参考にしたデザイン
“`swift
NavigationView {
Text
FlutterがiPhoneの実機ではビルドできない人へ
iOS13.3ではビルドできないよ!!!13.4にアップデートしましょう!!
僕の伝えたいことはこれだけです。
謎のエラーにflutterでアプリ開発し始めた瞬間思いっきり出鼻を挫かれましたが、久々に触ってみて、iOSをアップデートしたら直りました。
しっかりstackoverflowか何かでアップデートに伴うバグはチェックしましょう、、、(自戒)
その他注意点
Xcodeの設定を忘れずにしましょう。
- Signing & CapabilityでTeamを設定すること
- BundleIDの設定
など。
・BundleIDの設定についてのメモ
アプリのBundleIDとそれが含めるbundleのBundleIDが一致しているよ(?)みたいなエラーが出た時はそれらのBundleIDを異なるものにしたら直りました。(雑すぎてすみません)リクエストがあればできるかぎり詳しく書いていこうと思います!!
“001 UILabelで文字を表示” iOS app開発 習得日記 (5)
UIkitを覚えるために
こちらの写経がいいときいたので始めた
(http://docs.fabo.io/swift/uikit/001_uilabel.html)001 UILabelで文字を表示
“`
import UIKitclass ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.let bWidth: CGFloat = 200
let bHeight: CGFloat = 50let posX: CGFloat = self.view.bounds.width/2 – bWidth/2
let posY: CGFloat = self.view.bounds
iPhone実機のUDIDを確認する
Appium等でiPhoneの操作を自動化するにあたって、UDIDを調べる必要が出てくる場合があります。
やり方も複数あるので、お好みの方法で。
## Apple Configurator2を使う
App Storeからダウンロードできます
### 手順
まず、iPhoneの実機をMacにUSB接続します。
次に、AppleConfigurator2を起動します。
すると、画面に接続済みのiPhoneが表示されます。![スクリーンショット 2020-04-08 17.03.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/46492/99336
RxSwiftとApolloでつくるGraphQL API Client
## はじめに
今までRxSwiftをあまり積極的に使用していなかったのですが、
最近業務で使う機会がありましたので、
勉強のために作ったデモアプリの内容をまとめていこうと思います。## 開発環境
|Tool|Version|Description|
|:–:|:–:|:–:|
|Xcode|11.3.1 (11C505)|IDE|
|apollo|2.26.0|Apollo GraphQLのコマンドラインツール
https://www.npmjs.com/package/apollo|ライブラリの導入は、Swift Package Managerで行いました。
|Library|Version|Description|
|:–:|:–:|:–:|
|apollo-ios|0.24.0|GraphQLクライアント|
|RxSwift|5.1.0|リアクティブプログラミング|
|RxApolloClient|1.3.0|Apolloクライアント用のRxSwift extension|
|RxViewController|1.0.0|UIViewControl
iOS app開発 習得日記 (4)
(https://qiita.com/nori0620/items/66ebc623f63fc3f0ca20)
こちらのサイトをみて勉強中
サーバーサイドのAPIというのを初めて作った。
json webサーバーにphpファイル遅れるだけで作れるとは。本チャンのios app
“`
import UIKit
import Firebase
import GoogleMobileAds@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {var window: UIWindow?
var myNavigationController: UINavigationController?
var json_string:String?
var selected_id: Int?func application(_ application: UIApplication, didFinishLaunchingWithOptions launc
CompositionalLayoutでリマインダー風のレイアウトを実装する
## はじめに
CompositionalLayoutとは2019年にWWDCで発表されたUICollectionViewのレイアウト手法です。個人的にこのレイアウト手法が登場してからすごく楽にUICollectionViewのレイアウトを組めています!!(Webでいうとfloatからflexboxに変わるくらい)
しかし、学習する際に調べたところハンズオン形式で学べる記事というものがなかなか見つからなかったので、今回はCompositionalLayoutを使ってiOSにデフォルトでインストールされているリマインダー風のレイアウトを作っていきたいと思います!!また、初心者さん向けの話し方で説明していますのでご了承ください。[CompositionalLayoutについての詳細はこちらの記事が参考になるかと思います。](“https://qiita.com/shiz/items/a6032543a237bf2e1d19”)
## 目標物
少し雑ですがこのようなレイアウトを組んでいきたいと思います!!
WIP: コロナウイルス 下でAppleのアプリ審査にどのくらい時間がかかるか試してみた。### 2020/2月
自作アプリ完成
・ アプリ名 PriLingo
アニメ「プリパラ」シリーズを題材にした語彙を収録する。日本語・英語・中国語(簡体字&繁体字)で閲覧・音声再生ができる。お気に入り登録ができる。![IMG_7739拷貝.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/53dc4609-d11f-e7e1-214e-fcca77721db0.png)
![IMG_7740拷貝.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/ff2ff1c0-7612-0721-f4ac-6cdd25a23e19.png)
![IMG_7741拷貝.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/81b56e3d-ccbe-ed2e-5327-4256368e3232.png)機能として
Sign in with apple実装中に、サーバーサイド側でJWTを検証しようとしたところ、Signature verification raisedが発生する
iOSクライアントからJwt送信 -> Rails側でデコードをする場合に `Signature verification raised`が発生した
各種パラメーターは正しく与えているのにデコードに失敗してしまう
jwtの有効期限が切れたのかと思ったがそういうわけでもないようだった
結論、keysの正しいkidを選択していなかったことだった
Appleのサイトから証明書のjsonを取得すると、keysが2つあるのに気づいていた
確認したところ、デコードに使えるのは片方1つのみで、それはjwtの中に指定されている
正しいkeyのkidを指定したところ、うまく動くようになった
Storyboardが複数の場合の画面遷移
# はじめに
`Storyboard:ViewController=1:1`で開発する時に画面遷移ってどうするんだろう、と思ったのでやってみました。
そこら中に記事があるので、自分用の備忘録として残しておきます。
想定は「Main.storybard」→「Sub.storyboard」の画面遷移です。# 手順
1.`Main.storyboard`を開いて画面遷移する用のボタンを用意する。
~~~swift:MainViewController.swift
import UIKitclass MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDid