Personal Factory

Personal Factory

iOSエンジニアの技術ブログ

Accessibility in SwiftUIまとめ
iOS

Accessibility in SwiftUIまとめ

Accessibility in SwiftUI [https://developer.apple.com/videos/play/wwdc2019/238/] をまとめます。 アクセシビリティ 誰でもアクセスアプリが使えるようにするためにアクセシビリティがあります。 アクセシビリティの計測基準 * Understandable:Labels * 理解しやすさ:ラベル * Interactable: Actions * インタラクティブ性:アクション * Navigable: Ordering and Grouping * ナビゲーション:順序やグループ化がされているか? 自動で行われるSwiftUIのアクセシビリティ SwiftUIのビューを作ると自動でアクセシビリティ要素を各ビューごとに作ってくれる。 アクセシビリティへの値の変更も自動 Viewの値が変更したら自動でアクセシビリティ機能へ通知してくれる。 画像とボイスオーバー 画像が修飾的なもので読み上げが必要ないなら Image(decorative: "xxxx
2 min read
Introducing SwiftUI: Building Your First App まとめ
iOS

Introducing SwiftUI: Building Your First App まとめ

WWDC19のビデオ、Introducing SwiftUI: Building Your First App [https://developer.apple.com/videos/play/wwdc2019/204/]をまとめます。 Videoの概要 * 社内の会議室を一覧できるアプリを作成することを通してSwiftUIを使ったアプリの開発の流れを紹介 * Xcodeのプレビュー機能の紹介 * コードとキャンバスがシームレスに同期する * キャンバスで変更加えたものはコードも変更される * コードでビューに対して⌘+クリックすることでHStack/VStackをEmbedしたり、Extract viewとしてビューを切り分けたりできる * 切り分けたビューを組み合わせて画面遷移を作る方法の解説 * @Stateを使ったzoomedプロパティで画像のズームをタップで切り替える * Source of Truth(単一データソース)とDerived Value(派生データソース) * 依存関係の管理は難しい * 値を変えたとき、
5 min read
Platforms State of the Union 書き起こし(SwiftUIのみ)
iOS

Platforms State of the Union 書き起こし(SwiftUIのみ)

Platforms State of the Union - WWDC 2019 [https://developer.apple.com/videos/play/wwdc2019/103/]で語られたSwiftUIの部分を書き起こします。 Developer Productivity Platforms Core Technologies デベロッパーの生産性についての話。 優秀なツールは生産性を劇的に向上させる。時間に余裕ができて、よりよいアプリケーションが作れる。その土台がプログラミング言語です。 この5年でSwiftは成熟し、全プラットフォームに組み込まれ、SwiftUIの基礎になりました。Xcodeはエディターとデバッカーではなく、必要なものすべてが入っている。 継続したテストをサポートしたり、機械学習や拡張現実などの新しい技術を試す様々なツールも提供する。そして新たなフレームワークSwiftUiがUIの構築に革命をもたらす。 Swift、Xcode、SwiftUIの3つの要素で生産性のレベルが格段に上がり、アプリケーションの作り方が一新される。 SwiftUI Swif
6 min read
SwiftUI On All Devices まとめ(概要のみ)
iOS

SwiftUI On All Devices まとめ(概要のみ)

wwdc19のSwiftUI On All Devices [https://developer.apple.com/videos/play/wwdc2019/240/]をまとめます。 SwiftUIはアップルプラットフォームならどれでも動作するように作られています。 各プラットフォーム向けにアプリを作る際にどんな考えをもっておけばいいのかが解説されています。 後半には同じアプリを4つのプラットフォームそれぞれに最適化するデモが話されていました。 このまとめでは割愛しましたが、参考になる解説です。 SwiftUI On All Devices SwiftUIはあらゆるデバイス上で動くアプリを作るための近道。 Appleデバイスのアプリケーション開発には以下の4つのプラットフォームがある * AppKit(Mac) * UIKit(iPhone/iPad) * TVUIKit/UIKit(Apple TV) * WatchKit(Apple Watch) 従来ではデバイス間で同じコードを使うことはできなかった。 SwiftUIはすべてのデバイスで動作する。 なので開発者に
2 min read
Building Custom Views with SwiftUI まとめ
iOS

Building Custom Views with SwiftUI まとめ

WWDC19のSwiftUI関連のビデオをまとめたいと思います。 今回はこちら * Building Custom Views with SwiftUI - WWDC 2019 [https://developer.apple.com/videos/play/wwdc2019/237/] SwiftUIでのレイアウトの仕組みとグラフィックが解説されています。 今回はレイアウトの仕組みのみをまとめました。 プレゼンテーション資料はこちら https://devstreaming-cdn.apple.com/videos/wwdc/2019/237x70rryl2b933v/237/237_building_custom_views_with_swiftui.pdf?dl=1 SwiftUIのレイアウトシステム レイアウトは画面上の表示領域を決めること。 struct ContentView: View { var body: some View { Text("
6 min read
【個人活動実績】2019年1月〜6月
個人活動

【個人活動実績】2019年1月〜6月

2019年も半年経ちました。今年の個人活動の記録を残したいと思います。 毎月一度は外部に向けて発信することを目標にイベントの運営、ファシリテーター、LTなどしました。 1月 メルペイに転職しました 株式会社MAMORIO [https://mamorio.jp/]からメルカリグループの株式会社メルペイ [https://www.merpay.com/] に1月から転職しました。 IoTからフィンテックに業界は変わりましたが、変わらずより良いプロダクトを作ることに満身していきます。 【朝活】「iOSアプリ設計パターン入門」勉強会の運営 去年の12月から今年の2月末まで行われた株式会社UZUMAKI [https://uzumaki-inc.jp/] 主催の朝活、「iOSアプリ設計パターン入門」勉強会の運営をしました。 全四回の実施で、MVCからMVVM、Fluxまでの設計方法を学びました。 私はファシリテーターも行い第4回目のFluxについて解説しました。 * イベント: 【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #4 - connpass
5 min read
WWDCのDesign Labが 最高だった
iOS

WWDCのDesign Labが 最高だった

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を改善したいと思っています。 間取り画面で引越し先の住宅の運勢を占うには以下の2つのタスクが必要です。 1. 写真の北方向と端末画面上部を回転させて合わせる 2. 玄関の方向に画像を回転させる しかしセミナーなどで実際に
4 min read
iOS

SwiftUIにおけるVStack,HStackとFunction Builderの関係

WWDC19,5日目。 前回SwiftUIのコードを読み解く [https://blog.personal-factory.com/2019/06/07/understand-swiftui-code/] の記事の最後にVStackでViewBuilderが使えるかがわからないという話をしました。 Labで質問をしたのでその結果をまとめます。 そもそもの疑問 SwiftUIのVStackとHStackはクロージャーの中にViewコンポーネントを宣言的に実装することができます。 VStack { MapView() .edgesIgnoringSafeArea(.top) .frame(height: 300) CircleImage() .offset(x: 0, y: -130) .padding(.bottom, -130) VStack(alignment: .leading) { Text("Turtle Rock") .font(.titl
2 min read
iOS

SwiftUIでUIViewControllerAnimatedTransitioningは使える?

WWDC3日目、SwiftUIのLabにて聞いたことをメモします。 以前私は「ハーフモーダルで理解するFluid Interfece [https://personal-factory.booth.pm/items/1316137]」という技術同人誌を執筆しました。 そのサンプルアプリとしてUIViewControllerAnimatedTransitioningを使ったカスタムトランジションをするアプリ [https://github.com/SatoTakeshiX/FluidInterfaceBook/tree/master/02_PhotoTransition] を作成しました。 今回SwiftUIが登場して、カスタムトランジションができるかどうかが気になったのでLabで聞きました。 組み込みのトランジションはある まず、SwiftUIには組み込みのトランジションがあります。 それを使えば画面遷移は実現できるそうです。 こんな感じ。 body { VStack{ if isPresent { MyView().transi
iOS

SwiftUIのコードを読み解く

WWDC19参加中です。4日目です。 ラボのSwift Open Hoursにいきまして、SwiftUIのコードを文法レベルで教えてもらいました。 Swift5.1になり、新しい構文がたくさん追加され、SwiftUIはそれをフルに活用しているので 今回はチュートリアルのこちらのコードを読み合わせしました。 * Creating and Combining Views Section 6 Compose the Detail View [https://developer.apple.com/tutorials/swiftui/creating-and-combining-views#compose-the-detail-view] struct ContentView: View { var body: some View { VStack { MapView() .edgesIgnoringSafeArea(.top) .frame(height: 300)
1 min read
SwiftUIの子ビューのクロージャーSelf参照について
iOS

SwiftUIの子ビューのクロージャーSelf参照について

WWDC19にて発表されたSwiftUIのチュートリアルを試し中です。 Handling User InputのCreate a Favorite Button for Each Landmarkの項目でButton(action: {}) メソッドの引数のクロージャーにSelfにアクセスしているところがありました。 URL https://developer.apple.com/tutorials/swiftui/handling-user-input#create-a-favorite-button-for-each-landmark Button(action: { self.userData.landmarks[self.landmarkIndex] .isFavorite.toggle() }) { if self.userData.landmarks[self.landmarkIndex] .isFavorite { Image(systemName: "star.fill")
1 min read
技術書典6で同人誌を配布するまで考えたこと全て
技術書

技術書典6で同人誌を配布するまで考えたこと全て

2019/04/14 (日) 技術書オンリーイベント技術書典6 [https://techbookfest.org/event/tbf06]が開催されました。 私は新作「ハーフモーダルで理解するFluid Interface [https://techbookfest.org/event/tbf06/circle/48210003]」を配布しました。 イベント開催時間の11:00から17:00まで、ひっきりなしに人がブースに遊びにきていただき大いに盛り上がりました。お陰様で販売数も170冊以上 (製本+PDF合わせて)配布することができました。 ご購入頂いた方、ブースをのぞいてくれた方ありがとうございます。 この記事では新作を作り、読者に届けるまでの過程を振り返りたいと思います。 > 本日ご購入いただいた方、見本誌お読みいただいた方ありがとうございました!たくさんの方に興味を持ってもらい書ききった甲斐がありました。(〆切前に泣きながら書いてました。。) #技術書典 [https://twitter.com/hashtag/%E6%8A%80%E8%A1%93%
12 min read
【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #2を開催しました
iOS

【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #2を開催しました

今週月曜1/21、【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #2 [https://uzumaki-swift.connpass.com/event/113059/]を開催しました。 このイベントはPeaks社から発売されている「iOSアプリ設計パターン入門」をみんなで読み合わせる朝活です。 [https://peaks.cc/hatakenokakashi/iOS_architecture]iOSアプリ設計パターン入門 [http://peaks.cc/hatakenokakashi/iOS_architecture] * 著者:関 義隆,史 翔新,田中 賢治,松館 大輝,鈴木 大貴,杉上 洋平,加藤 寛人, * 製本版,電子版 * PEAKSで購入する [http:
4 min read
イベントレポート

Go勉強会 Webアプリケーション編 #4(context)を開催しました

昨日2019/1/24、株式会社IDOM [https://221616.com/idom/]さんを会場に、Go勉強会 Webアプリケーション編 #4(context) [https://go-golang.connpass.com/event/113840/]を開催しました。 ファシリテータは私で、私がまとめた[Go]contextパッケージの解説 [https://qiita.com/SatoTakeshiX/items/8afa57d2ecd4f6a4a80a] の記事を元にGo のContextパッケージについて、みんなで勉強していきました。 議論の中心になったのは並行処理。 並行処理はどの言語でもハンドリングが難しいですね。 Goではゴルーチンを使って完結に完結に表現できますが、それでも「スレッドによってどのコードが呼ばれるのか?」を実感するのが難しい印象でした。 内容 contextパッケージの定義を直接みて理解を深めました。 select文について 私の理解が追いついてなくてGo言語のselect文の説明がうまくできなかったです。 複数のチャネルに対して受信/送
1 min read
【iOS】画像を指で回転する方法
iOS

【iOS】画像を指で回転する方法

こんにちは、タケシです。 この記事ではiOSアプリにて「画像を指で回転する方法」について解説します。 現実世界ではモノを回して何かを操作することはよくあります。 福引の抽選器、DJのターンテーブル、昔ながらの黒電話などなど。 現実世界で対象をまわすもの:福引抽選器、DJのターンテーブル、昔ながらの黒電話それらを模倣したUIの実装をする場合、この記事が役に立つでしょう。 途中で三角関数など数学的な知識が必要になる場面がありますが、なるべく分かりやすく解説します。 もちろん「やり方だけ知りたい!」という方もOKです。 では始めます。 目次 1. 開発環境 2. サンプルアプリ 3. 下準備 4. タップ座標から角度を調べる 5. 「解説」度数とラジアン 6. 「解説」三角関数 7. 移動角度を調べる 8. 角度からViewを回転させる 9. transformから角度を調べる 10. 終わりに 開発環境 解説は下記の環境で行います。 * Xcode10.1 * Swift4.2 サンプルアプリ
9 min read
書評:現場のためのSwift4
iOS

書評:現場のためのSwift4

こんにちは。たけしです。 今回澤田さん(@takashings [https://twitter.com/takashings] )さんより「現場のためのSwift4」を献本いただきました。 やっと読み終わったので書評していきたいと思います。 一言で感想述べると「サービスに関わる全てのiOS開発者全員におすすめしたい本」と思いました。 とてもためになるものでした。 この本の特徴 私、常々エンジニアも全体を見通すことが大事だと思っています。 機能を追加するにしても、その機能が「なぜ作り」「どういう問題を解決するのか」を考慮にいれて開発するべきだと思っています。 しかし、開発チームが部分最適化されすぎて、なんのために開発するのかが疎かになることもよくありがちです。 5年前受託会社に働いていたときは言われたことを作ることが優先されて「なぜ」の部分がないがしろにされていた現場でした。けっきょく合わないので辞めてしまいましたが。 「現場のためのSwift4」の主題は開発の工程全体を把握することです。 p2からの引用です。 > 本書では「プログラミング」以外の工程にも着目し「開発の全
3 min read
Bonfire iOS #4に行ってきた
イベントレポート

Bonfire iOS #4に行ってきた

本日はYahoo!Japan社が開催するiOS勉強会Bonfire iOSに行ってきました。 Bonfire iOS #4 [https://yj-meetup.connpass.com/event/86651/] 今回のテーマはUIです! > 第4回のテーマは「UI」です! UI、それはアプリ開発と切っても切り離せない関係…… どうやって保守しやすくUIを定義していくか どうやってユーザビリティの高いUIを作っていくか どうやって多人数で協力してUIを作っていくか どうやってツール(Auto Layout, Storyboard, …)と向き合っていくか どうやって非同期処理と連携していくか どうやって新しい分野(AR, VR, …)でのUIを作っていくか などなど、それらのどれもが昔から、そして現代においても重要なテーマです。 今回はUIという大きな課題に対して、各々どう向き合っているのかを話のネタに交流し、気づきを得られる夜にできればと思っています。 健康なStoryboardを考える 〜 Auto Layout、UIStackViewともっと仲良く! 最初はゆこ
8 min read
iOS

iOS11 Core NFCを使ってみた

iOS11になって、Core NFCというフレームワークが追加されました。 これはNFC(近距離無線通信)を利用したタグとの通信が出来るフレームワークです。 現状では読み取り専用で、しかも専用のアプリを起動しなければいけないそうです。 Androidアプリでは「NFCタグを端末に近づけるとアプリを起動する」といったことができますが、iPhoneではまだそのようなバックグラウンドからNFCの検知イベントでアプリを立ち上げるなどはできません。 ですが、長年さまざまな人が待望した機能ではあります。 実験する価値はあると思っています。 今回はCore NFCを使ったサンプルのアプリの紹介です。 コード量はすくないですが、ハマリポイントもあったので皆さんのお役に立てればと思います。 動作環境 * Xcode9.2 * iPhoneX iOS 11.1.2 NFCタグをゲットする Core NFCを利用したいなら兎にも角にも最初はNFCタグをどこからか入手しなければ行けません。 幸いAmazonで10枚入りのモノが売っていたのでそちらを購入します。 サンワサプライ NFCタグ(10
4 min read