サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
blog.personal-factory.com
開発環境 Xcode 14.1 macOS Monterey 12.6 はじめに Xcode CloueはAppleが提供するAppleプラットフォームのためのCI/CDサービスです。 https://developer.apple.com/jp/xcode-cloud/ 去年からBeta版として公開されていましたが、2022年にXcode Cloudがパブリックリリースされました。 CircleCIやBitriseなどすでにCI/CDサービスがたくさんありますが、ついにApple自身がApple開発者のためのCI/CDサービスを提供したということで、個人開発に取り入れてみました。 結果からいうと、とても良かったです。 まだまだリリースしたばかりで、機能は最低限ですが、個人開発では十分です。 逆にチーム開発としては使いづらそうな印象を受けました。 この記事では、私が個人開発で利用した内容を
2022年7月29日、インプレスR&D社よりSwift Concurrencyの解説本をリリースしました。 一冊でマスター!Swift Concurrency入門です。 こちらの本は一冊でSwift Concurrencyの機能をほぼ網羅したConcurrency機能の解説本です。 日本語でSwift Concurrencyを学べる解説本はまだ少ないので、Swift 5.5からの非同期処理をうまく書きたい方には必見の本となっています。 詳しい内容はこちらをご覧ください。 同人誌として先にリリースしましたが、商業版も同じ内容となっています。 技術解説本「Swift Concurrency入門」を刊行しました 同人版はBOOTHで販売中です。 https://personal-factory.booth.pm/items/3888109 さて、せっかくリリースしたばかりなのですが、一部のサンプ
非同期処理、並行処理を不具合なく実装することはとても難しいです。 クロージャーはどんどんネストされ読みにくくなり、複数のスレッドが同じデータを書き込めばデータ競合が起こります。 Swift 5.5からはSwiftの言語機能としてConcurrencyが登場しました。 これは非同期処理、並行処理のコードを簡潔かつ安全に記述できる機能です。 async/awaitを使えば、同期処理と同じような書き方で非同期処理を記述できます。 またactor型を使えばデータ競合を防ぐことができます。 actor型に関してはSwift 5.5から登場したActorについてをご覧ください。 この記事ではSwift 5.5からのSwift Concurrencyの機能の一つasync/awaitの使い方を解説します。 サンプルコード https://github.com/SatoTakeshiX/first-ste
サンプルコード https://github.com/SatoTakeshiX/first-step-swift-concurrency/tree/main/try-concurrency.playground 対応するサンプルコードにはページ名を記載します。 検証環境 Xcode 13.2.1 Swift 5.5 データ競合 マルチスレッドプログラミングにおいて、重要な問題はデータ競合(data race)をいかに防ぐかです。複数のスレッドから一つのデータにアクセスした場合、あるスレッドがデータを更新するとデータが不整合を起こしてしまう可能性があります。デバックが非常に難しくやっかいなバグをになることが多いです。 データ競合がどういうものかをコードで解説します。 例えばゲームの点数を管理するScoreという型をクラスで定義します。 // Page: 3-1-data-race class
SwiftUIでアプリを開発していると@Stateや@Bindingの使い分けについて迷ったりしていませんか? SwiftUIではデータを管理するProperty Wrapperがたくさんあります。 @State、@Binding、@StateObject、@ObservedObjectなどなどです。 Property Wrapperそれぞれの特徴を理解できれば、SwiftUIのアプリ開発がはかどるでしょう。 今回はSwiftUIのデータ管理を行うProperty Wrapperの使い分けについて解説します。 この記事は私が12月9日に発表した資料、 「SwiftUIのデータ管理」を記事化したものです。 SwiftUIのデータ管理記事一覧 SwiftUIのデータ管理 Single Source of Truth編 前回の記事 SwiftUIのデータ管理 Property Wrapper編
SwiftUIの画面遷移をCoordinatorパターンでまとめた話 SwiftUIのアプリの実装について、画面遷移をView実装から切り離す方法について考えていきたいと思います。 SwiftUIのアプリの実装について、画面遷移をView実装から切り離す方法について考えていきたいと思います。 何も考えずにViewを実装すると画面遷移ロジックがView実装に入り込むことはよくあります。 例えばNavigationViewとその遷移を決めるNavigationLinkを同じView内に実装するなどはよくやります。 struct ContentView: View { var body: some View { NavigationView { NavigationLink(destination: Text("detail")) { // 画面遷移実装がView実装に入り込む Text("ma
【Swift Argument Parser入門】Swiftでコマンドラインツールを作る 2020年2月、AppleがSwift向けライブラリーArgumentParserをリリースしました。 これはSwiftでコマンドラインツールを作る際にコマンド引数を簡単に扱えるライブラリーです。 CarthageやXcodeGenなどSwift製のコマンドラインツールはたくさんありますが、いざ自分で作ろうと思ったときにこのライブラリーが役に立ちます。 この記事ではArgumentParserの使い方を解説します。 Swiftでコマンドラインツールを作成した方にぴったりの記事です。 2020年2月、AppleがSwift向けライブラリーArgumentParserをリリースしました。 これはSwiftでコマンドラインツールを作る際にコマンド引数を簡単に扱えるライブラリーです。 CarthageやXco
SwiftUIアプリをVIPERアーキテクチャーで作り画面遷移処理をまとめる この記事では画面遷移処理をView実装から引き剥がす方法としてVIPERアーキテクチャを解説し、実際にSwiftUIアプリケーションに適応します。 ログイン画面やNavigation ViewのPush遷移, Tab Bar表示、アラートやモーダル表示など、アプリケーションで利用する画面遷移処理をどう扱うかをみていきましょう。 前回、SwiftUIの画面遷移をCoordinatorパターンでまとめた話にて画面遷移処理をViewから引き剥がすCoordinatorパターンを解説しました。そしてSwiftUIプロジェクトに当てはめました。しかし、画面遷移をUIHostingControllerでUIViewControllerに変換して実装したために純粋なSwiftUIのみで実装することができませんでした。 この記事
[iOS]画像解析フレームワークVision Framework入門 # Vision Frameworkとは? Vision FrameworkはAppleが提供する、コンピュータービジョン技術を簡単に扱えるフレームワークです。 2017年のWWDCで発表されました。iOS 11.0以上、macOS 10.13以上で利用できます。 コンピュータービジョン技術に精通していなくても物体認識をできるフレームワークです。 Vision Frameworkとは? Vision FrameworkはAppleが提供する、コンピュータービジョン技術を簡単に扱えるフレームワークです。 2017年のWWDCで発表されました。iOS 11.0以上、macOS 10.13以上で利用できます。 コンピュータービジョン技術に精通していなくても物体認識をできるフレームワークです。 組み込みで検知できるものもあります
WWDC19参加中です。4日目です。 ラボのSwift Open Hoursにいきまして、SwiftUIのコードを文法レベルで教えてもらいました。 Swift5.1になり、新しい構文がたくさん追加され、SwiftUIはそれをフルに活用しているので 今回はチュートリアルのこちらのコードを読み合わせしました。 Creating and Combining Views Section 6 Compose the Detail View struct ContentView: View { var body: some View { VStack { MapView() .edgesIgnoringSafeArea(.top) .frame(height: 300) CircleImage() .offset(x: 0, y: -130) .padding(.bottom, -130) VStac
WWDC19の様子WWDC19、最終日にDesign Labにいってきました。 Design LabはAppleのデザイナーと1対1でアプリデザインを相談できるLabです。 アプリのデザインはApp Storeにリリース済み、プロトタイプどちらでも構いません。 WWDCアプリから予約が必要です。 当日の7:00から7:30までに予約リクエストをして、枠が空いていれば正式に予約完了という流れになっています。 Design Labはとても人気のLabでなかなか予約が取りづらいLabです。 しかし、最終日ともなると、参加者の数も少なくなっているので予約が取りやすくなっています。 個人アプリのデザイン相談 Design Labで私は個人で製作している「フライングスター風水」のアプリデザインについて相談しました。 相談ごと1つ目 引っ越し間取り画面の写真登録UIを改善したいと思っています。 間取り画
wwdc19、4日目。 今回はApp Storeのマーケティングを相談できるExpanding to JapanとExpanding to Taiwanに行ってきました。 そのレポートをします。 私は個人でフライングスター風水という風水のアプリをリリースしています。 多くの人に使ってもらいたいのでどのようなアプローチがあるのかを相談しました。 Expandingのブースに行くと日本のAppStore担当の方と直接やりとりができ、質問をすると答えてくれました。 プロダクトページに命をかけろ!! App Storeに表示されるアプリの説明ページをプロダクトページというそうです。 インストールをしてもらう1番の顔となるページです。 そのページを一目見てユーザーが「ダウンロードしたい!」とわかるようとアドバイスを受けました。 ファーストビューでいかにダウンロードしたくなるような文章やスクリーンショ
数年前、iPhone4sが全盛期のころまでは、iOSアプリの開発者は各端末のレイアウトを考える必要はありませんでした。 初代iPhoneからiPhone4sまでは画面サイズは一緒だったからです。 その頃に端末サイズのレイアウトで苦労していたのはAndroidアプリのエンジニアでした。(今もそうですが。。) 各メーカーごとに端末のサイズが異なり、それに合わせてアプリをデザインしなければなりませんでした。 しかし、2010年にiOSで動くタブレット、iPadが発売され、2012年にiPhone5が発売され、iOSエンジニアも各端末ごとのレイアウトをそれぞれで設定しなければいけなくなりました。 以下は、2015年12月現在で発売されているiOS端末の画面サイズの一覧です。 ピクセル解像度は物理的なピクセルを計ったもので、ポイント解像度はプログラムからアクセスする座標系で計った解像度です。 各端末
アプリから設定アプリを開く方法をまとめました。 アプリから設定アプリを直接開く方法はiOS5.0.1まで可能だったそうですが、iOS5.1から禁止になったそうです。 しかしiOS8から復活。直接アプリから設定アプリを開けるようになりました。 通知やモバイルデータ通信など、設定アプリで設定してもらう機会は意外と多いです。そんなとき直接アプリから開けるようになれば、ユーザビリティが向上するでしょう。 それでは見ていきましょう。 実行環境 Xcode7.2 OSX Yosemite 10.10.5 Swift 2.1.1 UIApplicationOpenSettingsURLString を使う UIApplicationクラスで定義されているUIApplicationOpenSettingsURLStringという定数を使うとアプリから設定アプリ呼び出せます。 遷移する設定アプリのページは、
FacebookのSDKがSwift3になってからいろいろ変わっていたのでまとめました。 実施環境 この記事は以下の環境で確認しています。 Xcode8.2 Swift3 Cocoapod 1.1.1 Facebook Swift SDK 0.2.0 目次 Facebookデベロッパーでアプリを作成する CocoapodでFacebookのSDKをインストールする info.plistの設定 AppDelegateの設定 ログインボタンを作成しログインする ログイン中のユーザー情報を取得する Facebookデベロッパーでアプリを作成する Facebookと連携したアプリを作るにはまずFacebookアプリを作る必要があります。(Facebookアカウントが必要です)。 開発者ページ https://developers.facebook.com/apps/ に行き、「新しいアプリを追加」
ブログを書く上でけっこう手間なのが、画面のキャプチャです。 技術ブログを書く上で、現状PC上の画面を共有するためにMac標準のプレビューアプリで画面をキャプチャしています。 しかし標準のプレビューアプリ、デフォルト設定だとなかなかかゆいところに手がとどかない仕様になっています。撮影した後色々と手間を掛けないといけないのがつらいです。 具体的には デフォルトでは画像の保存先は~/Desktopになっています。このままだと取る度に画像が増えて~/Desktopが散らかるので私はブログ用の保存フォルダを作成していちいち画像を移動していました。 画像のサイズがとてつもなく大きいです。PCのディスプレイ解像度が上がっているので仕方がないのですが、1つのウインドウをキャプチャしただけで数千ピクセルの画像が出来上がってしまいます。このままブログにあげても無駄ですのでいい感じにリサイズをしたい。 デフォル
ジェネリクス 型をパラメーターとして扱う方法。型を抽象化できて便利なコードを書けるようになる。 Swiftの標準ライブラリーの多くがジェネリクスを使っている。 この記事ではジェネリクスを使っていないコードとジェネリクスを使ったコードを比較して、ジェネリクスの有効性から使い方までみていきます。 ジェネリクスを使わないイケてないコード Int型の引数2つを入れ替える関数を作ってみます。 func swapTwoInts(inout a: Int, inout _ b: Int) { let temporaryA = a a = b b = temporaryA } このswapTwoInts(_:_)関数を実行してみます。 var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt
Auto LayoutによるビューのレイアウトはStorybordのGUIで設定できますが、もちろんコードからもAuto Layoutは設定できます。 コードでAuto Layoutができるようになれば、コンテンツをサーバーから取得して動的にレイアウトができるようになり、アプリ制作の幅がさらに広がります。 ただStoryboardでGUIからレイアウトするのとは異なり、コード特有の設定がいくつかありますので1つずつ見ていきましょう。 コードでAuto Layout コードでAuto Layoutを設定する流れは以下です ビューを生成する translatesAutoresizingMaskIntoConstraintsをオフにする ビューを他のビューに配置 ビューの制約を設定する 今回作るレイアウト 今回作るレイアウトは、以下のように赤いビューと黄色いビューを水平に並べるものを作りたいと思
Swiftでナビゲーションバーの色を変更するTipsをご紹介します。 実行環境 Xcode7.1.1 OSX Yosemite バージョン10.10.5 AppDelegateで変更する場合 ナビゲーションバーのアイテムの色、背景色、タイトル文字色を変更したい場合は、AppDelegate.swiftの``` application:didFinishLaunchingWithOptions:``` メソッドで以下のような指定をします。 //AppDelegate.swift func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization
細かなUIがUXを向上することはよくあります。 今日ご紹介するTipsはUITextFiledでキーボード以外の領域をタップしたときにキーボードを非表示にする方法です。 Lineなどのメッセンジャーアプリなどでは、キーボード以外の領域をタップした時にキーボードが非表示になるUIがしばしばあります。 このUIを作ってみましょう 実装方法 実装方法はとっても簡単。 ViewControllerのサブクラスにtouchesBeganメソッドをオーバーライドし、以下のコードを書くだけです。 今回はstoryboardからtextFieldというUITextFieldをつなげている想定です。 //ViewController.swift //TextFiledをstoryboardからつなげておく @IBOutlet weak var textField: UITextField! //MARK:
UITableViewはアプリを作る上で一番基本になるViewですね。 アプリの設定画面、フォームなどでよく使います。 しかし、作るとなったらいろいろめんどくさいのも事実です。 デリゲートを作って、カスタムセル作って、データソースを管理したり。。。 そんな、UITableViewの面倒なものを一掃する便利なライブラリーがあります。 Eurekaです。 これを使えば、作業効率10倍アップは間違いない、あっと言う間にUITableviewを使った画面が作れちゃいます。 ただ、DSL(ドメイン固有言語)でセルを定義していくので、始めのうちは戸惑うかもしれません。 今回はEurekaライブラリーの使い方をご紹介します。 Eurekaとは? Eurekaはウルグアイのアプリデザイン会社XMARTLABSが開発をしているオープンソースです。 Swift2で作製されているフォーム作製ライブラリーです。
Auto Layoutには実は重大な欠点がありました。 それは、、 レイアウトの修正が大変 ということです。 レイアウトする要素が増えれば振れるに従って隣のビューとの関係も複雑になってしまいます。 例えば、画面上にボタンを縦に3つ並べるレイアウトを考えてみましょう。 ボタンをそれぞれ同じ大きさに縦に3つ並べるレイアウトを作ってみます。 このとき3つのボタンと親ビューとの関係性はざっと数えた分でも10個できてしまいます。 設定によってはそれ以上になることも考えられるでしょう。 ここで、ボタンを4つに増やしたいと思ったらどうでしょう? 少なくとも垂直方向の関係性は見直す必要があるでしょう。 ボタンが3つから4つになったとこで、親ビューとボタン同士の隙間の幅が変わることになるからです。 これはもう一大事です。 制約を1つずつ見なおしてボタンを増やすか、いっそのこと全ての制約を一度全部解除して、も
このページを最初にブックマークしてみませんか?
『Personal Factory』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く