Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOS勉強会資料
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kaito Kudo
December 11, 2021
Technology
120
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
120
未来大LT_2025.pdf
kaitokudou
0
89
Universal Linksの実装方法と陥りがちな罠
kaitokudou
1
480
iOSDC Japan 2022 スポンサーセッション
kaitokudou
0
2.1k
App Storeにアプリをリリースした話
kaitokudou
0
50
Other Decks in Technology
See All in Technology
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
When Platform Engineering Meets GenAI
sucitw
0
110
Android の公式 Skill / Android skills
yanzm
0
160
AIはどのように 組織のアジリティを変えるのか?
junki
4
1k
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
130
自宅LLMの話
jacopen
1
610
Lightning近況報告
kozy4324
0
150
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
4
1.2k
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
0
110
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
160
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
310
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
The Cult of Friendly URLs
andyhume
79
6.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Side Projects
sachag
455
43k
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