Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
iOS勉強会資料
Search
Kaito Kudo
December 11, 2021
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOS勉強会資料
学内で開催したiOS勉強会の資料
Kaito Kudo
December 11, 2021
More Decks by Kaito Kudo
See All by Kaito Kudo
5分でわかる! VaporでAPI+DB構築
kaitokudou
0
150
未来大LT_2025.pdf
kaitokudou
0
100
Universal Linksの実装方法と陥りがちな罠
kaitokudou
1
550
iOSDC Japan 2022 スポンサーセッション
kaitokudou
0
2.2k
App Storeにアプリをリリースした話
kaitokudou
0
58
Other Decks in Technology
See All in Technology
Running Kotlin + Quarkus with Lambda
nealle
1
4k
Rust で関数型ドメインモデリング
takonda
0
170
Optunaの最新リリースv5.0について
pfn
PRO
0
120
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
970
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
120
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
450
今さら理解するウェブフォントver.2026
takanorip
3
930
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
160
Getting Started with Google Antigravity
glaforge
0
330
Browser Spec: Testing Hotwire with Ruby
takahashim
1
140
hackers_champloo_2026_tidb
makocchi
0
170
WasmをRustにする
sansantech
PRO
0
300
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Marketing to machines
jonoalderson
1
5.9k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Code Review Best Practice
trishagee
74
20k
BBQ
matthewcrist
90
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Claude Code のすすめ
schroneko
67
230k
Transcript
iOS勉強会 2021/12/6
目次 ・自己紹介 ・Swiftについて ・アプリを作ってみよう ・今後の勉強方法について ・補足資料 2
Swiftについて
Swiftとは • iOS、Mac、Apple TV、Apple Watch向けのアプリを開発するためのプログ ラミング言語 • オープンソース Swift -
Apple(日本),https://www.apple.com/jp/swift/(最終アクセス:2021/11/20) 4
iOSアプリ開発における主なフレームワーク • UIKit コンテンツをスクリーンに表示し、そのコンテンツを操作して、 システムと のインタラクションを管理 • SwiftUI 宣言型シンタックスを使用 ドラッグ&ドロップで行える直感的なデザインツールも含む iOS13~対応
5
今回作るアプリについて(完成イメージ) じゃんけんアプリ ボタン押下でじゃんけん開始 ↓ グー・チョキ・パーをランダムで排出 6
じゃんけんアプリ画面遷移 初期画面 じゃんけん画面 「じゃんけんをする」 ボタンを押下 7
じゃんけんアプリ画面構成 Button (じゃんけん開始ボタン) Text (手の種類を文字で表示) Image (じゃんけん画像) 8
アプリを作ってみよう
プロジェクト生成 最近のプロジェクト 新規プロジェクト生成 10
プロジェクト生成 プラットフォームの選択 クリック 11
プロジェクト生成 12 アプリ名 識別子の設定 インターフェイス選択 インターフェイスに伴 う言語選択
Xcode画面構成 13 キャンバス エディタ ナビゲータ シミュレーター選択
シミュレーター選択 14 好きなデバイスを選びます
キャンバス 15 選んだデバイスが表示されます
16
フォルダ構成 MyJankenApp • メインで呼ばれるところ! • processingの void draw() みたいなところ! ここの
“>” を 押すと 中が見れる! ContentView • (実質)メインで呼ばれるところ! • MyJankenAppでContentViewが呼ばれてるよ! JankenImageView • ジャンケン画像が表示されるところ (グーorチョキorパー画像) JankenResultLabel • ジャンケン開始前の「これからジャンケンをします」テキスト • ジャンケン結果のテキスト表示 (グーorチョキorパー) 17 PlayJankenButton • ジャンケンをするためのボタンを作るところ! • このボタンが押されたら,ランダムでグー or チョキ or パーを返 すように! (実際はランダムで 1 or 2 or 3)
アセット準備 グー・チョキ・パーの画像をXcodeにアップロード 18 画像を以下からダウンロード ↓↓↓ https://drive.google.com/drive/folders/1iXjlbuLI9IAJRLh95tLKZ48Py4qIDp2b?usp=sharing
アセット準備 グー・チョキ・パーの画像をXcodeにアップロード 19 Assetsを選択 じゃんけんの画像をド ラッグ&ドロップ
アセット準備 アプリの背景色を設定 20 右クリックして「New Color Set」を選択
アセット準備 アプリの背景色を設定 21 クリックしてインスペクタを開く Any Appearanceを選択 Input Methodで「8-bit(0-255)」を選択 Red: 90
Greed: 242 Blue: 198で設定 Nameを「background」に設定
コーディング アプリに背景色を反映 22 先ほど設定した背景色を反映できるようにColorを拡張 StaticをつけることでColorインスタンスを作成することなく、 backgroundプロパティにアクセス可能
コーディング アプリに背景色を反映 23 ZStackを使い、背景色を設定したViewを上に重ねる SafeAreaにも背景色を反映するために.ignoresSafeArea()をつける
コーディング アプリに背景色を反映 24
コーディング Button (じゃんけん開始ボタン) Text (手の種類を文字で表示) Image (じゃんけん画像) 25
コーディング じゃんけん画像を表示するViewの作成 26 じゃんけんの手を決める考え方 1. ランダムで手を決める 2. 初期状態、グー、チョキ、パーそれぞれに0~3の数字を割り当てる a. 初期状態は0
b. グーは1 c. チョキは2 d. パーは3 3. 1~3の数字をランダムに出し続けてじゃんけん画像を表示
コーディング じゃんけん画像を表示するViewの作成 27 @Bindingでプロパティを宣言することでView間でデータのやりと りが可能 answerNumberで、どのじゃんけん画像を表示するか制御
コーディング じゃんけん画像を表示するViewの作成 28 Image("imageName")で画像を表示 縦横比を保ったまま表示するため に.aspectRatio(contentMode: .fit)を記述 画像をリサイズするため に.resizable()を記述 これだけだと縦横比が
保たれない🥺
コーディング じゃんけん画像を表示するViewの作成 29 @Bindingで宣言したプロパティの初期値をJankenImageView(answerNumber: .constant(0))で設定 →初期状態では画像を設定していないのでPreviewでは何も表示されない Previewの表示
コーディング じゃんけん画像を表示するViewの作成 30 .constant()の引数と背景を設定するとPreviewにじゃんけん画像が表示される .constant(1)でグーの画像、.constant(2)でチョキの画像、.constant(3)でパーの画像 Previewの表示
コーディング じゃんけん画像を表示するViewの作成 31 Previewの表示 .constant(3)の時 .constant(2)の時 .constant(1)の時
コーディング Button (じゃんけん開始ボタン) Text (手の種類を文字で表示) Image (じゃんけん画像) 32
コーディング 手の種類を文字で表示するViewの作成 33 ファイル作成 File→New→Fileの順に選択(「command⌘」 +「 N」)
コーディング 手の種類を文字で表示するViewの作成 34 ファイル作成 選択
コーディング 手の種類を文字で表示するViewの作成 35 ファイル作成 「JankenResultLabel」と入力 クリック
コーディング 手の種類を文字で表示するViewの作成 36 @Bindingでプロパティを宣言することでView間でデータのやりと りが可能 answerNumberで、どの手の種類を文字で表示するか制御
コーディング 手の種類を文字で表示するViewの作成 37 Text("hoge")で文字を表示 .font(.system(size: 20))でサイズ20の標準 フォントを指定 .padding(.bottom)でTextの下辺に余白を追加 初期状態では「これからじゃんけんをしま すと表示」
コーディング 手の種類を文字で表示するViewの作成 38 Previewの表示 @Bindingで宣言したプロパティの初期値をJankenResultLabel(answerNumber: .constant(0))で設定
コーディング 手の種類を文字で表示するViewの作成 39 Previewの表示 .constant(3)の時 .constant(2)の時 .constant(0)の時 .constant(1)の時
コーディング Button (じゃんけん開始ボタン) Text (手の種類を文字で表示) Image (じゃんけん画像) 40
コーディング 手の種類を文字で表示するViewの作成 41 ファイル作成 File→New→Fileの順に選択(「command⌘」 +「 N」)
コーディング 手の種類を文字で表示するViewの作成 42 ファイル作成 選択
コーディング 手の種類を文字で表示するViewの作成 43 ファイル作成 「PlayJankenButton」と入力 クリック
コーディング じゃんけんをするためのボタンを表示するViewの作成 44 @Bindingでプロパティを宣言することでView間でデータのやりと りが可能 answerNumberで、どの手の種類を文字で表示するか制御
コーディング じゃんけんをするためのボタンを表示するViewの作成 45
コーディング じゃんけんをするためのボタンを表示するViewの作成 46 クリック ドラッグ&ドロップ
コーディング じゃんけんをするためのボタンを表示するViewの作成 47 表示文字: “じゃんけんをする” 大きさ: 画面横幅いっぱい、高さ80 フォント: サイズ30の標準フォント 背景色:
青色 文字の色: 白色
コーディング じゃんけんをするためのボタンを表示するViewの作成 48 ボタンを押すとどんな処理をするか? 1. 乱数を格納するプロパティを初期化 2. グー、チョキ、パーそれぞれに1~3の数字を割り当て、ランダムに排出 a. グーは1
b. チョキは2 c. パーは3 3. 前回の手と同じ場合は1、2を繰り返す 4. 前回の手と異なる場合は結果を格納
コーディング じゃんけんをするためのボタンを表示するViewの作成 49 Int.random(in: 1...3)で1~3の乱数を生成 repeat-whileで後判定のループ処理 →前回と同じ乱数だった場合は条件式が成立し、repeatに戻る
コーディング じゃんけんをするためのボタンを表示するViewの作成 50 Previewの表示 @Bindingで宣言したプロパティの初期値をPlayJankenButton(answerNumber: .constant(0))で設定
コーディング じゃんけんをするためのボタンを表示するViewの作成 51 Previewの表示 じゃんけんの手の違いでボタンの見 た目は変化しない constant()の引数がどんな値でも Previewに変化はない
コーディング ContentViewにそれぞれのViewを載せる 52
コーディング ContentViewにそれぞれのViewを載せる 53
コーディング ContentViewにそれぞれのViewを載せる 54 @Stateでプロパティを宣言することで、プロパティが監視され、 変更時にViewが更新される structはプロパティを更新することができない @Stateをつけて宣言することで、プロパティの更新が可能
コーディング ContentViewにそれぞれのViewを載せる 55 ↑ Image、Text、Buttonの表示部分
コーディング ContentViewにそれぞれのViewを載せる 56 Vstackを使うことで垂直方向に表示可能 →Image、Text、Buttonは垂直方向に表示
コーディング ContentViewにそれぞれのViewを載せる 57 じゃんけん画像の上下左右に余白を設けて表示(Spacer()で余白を表示) 左右に余白を表示する場合は水平方向であるため、HStackを使う JankenImageView(answerNumber: $answerNumber)でImageを表示 →引数を渡す際に$をつけると別のViewに渡すことができる
コーディング ContentViewにそれぞれのViewを載せる 58 JankenResultLabel(answerNumber: $answerNumber)、PlayJankenButton(answerNumber: $answerNumber)で LabelとButtonを表示 →引数を渡す際に$をつけると別のViewに渡すことができる
コーディング ContentViewにそれぞれのViewを載せる 59 Previewの表示 Buttonを押すと、 じゃんけん画像がImageに、 じゃんけんの手がTextに表示さ れる
シミュレータの起動 60 クリック
シミュレータの起動 61 クリックして実行 起動したい シミュレータを選択
62 じゃんけんアプリ完成!!🎉🎉 お疲れ様でした!!
今後の勉強方法について
参考になるWebサイト ・Apple Swift Documentation(公式ドキュメント) ・Qiita(技術記事) ・Zenn(技術記事) ・Stack Overflow(技術版Yahoo!知恵袋) 64 日本語でヒットしない場合は英語で調べてみることもアリ
ライブラリとは? 開発を効率化するため、作成した機能を外部でも使用可能にしたプログラム ライブラリの追加にはcocoa podsを使用 主なライブラリはawesome-iosで探そう! アニメーション系 lottie-iosなど ネットワーク通信系 Alamofireなど 機能追加系
ARkitなど 65
参考文献 Swift - Apple(日本),https://www.apple.com/jp/swift/ UIKitによるApp開発の概要 ,https://developer.apple.com/jp/documentation/uikit/about_app_development_with _uikit/ SwiftUIの概要,https://developer.apple.com/jp/xcode/swiftui/ たった2日でマスターするiPhoneアプリ開発集中講座 Xcode
11 Swift 5対応,藤治仁, 小林加奈子,小林由憲 66
参考文献 Swift Documentation- Apple,https://developer.apple.com/documentation/swift Qiita,https://qiita.com/ Stack Overflow,https://ja.stackoverflow.com/ Zenn,https://zenn.dev/ 67