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
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOS勉強会資料
学内で開催したiOS勉強会の資料
Kaito Kudo
December 11, 2021
Transcript
67 slides
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
More Decks by Kaito Kudo
See All by Kaito Kudo
5分でわかる! VaporでAPI+DB構築
kaitokudou
0
160
未来大LT_2025.pdf
kaitokudou
0
110
Universal Linksの実装方法と陥りがちな罠
kaitokudou
1
560
iOSDC Japan 2022 スポンサーセッション
kaitokudou
0
2.2k
App Storeにアプリをリリースした話
kaitokudou
0
61
Other Decks in Technology
See All in Technology
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
530
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
330
Gemma4 Hands-on at Nagoya
tsho
0
110
The Author Pays
hiccupps
0
220
JAWSコミュニティに 参加して1年経った結果
ssakita
0
150
Shared Signals Framework 仕様解説
oidfj
0
430
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
430
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
4
2.6k
_マネジメントする人される人ナイト_2026__良いチームを作っていきたい_お気持ち_.pdf
xkxaxkx
0
430
マネジメントされる側の仕事は「文句」を言うこと
riyaamemiya
6
4.3k
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
140
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
Featured
See All Featured
Visualization
eitanlees
153
17k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Evolving SEO for Evolving Search Engines
ryanjones
0
360
Why Our Code Smells
bkeepers
PRO
340
58k
The Cost Of JavaScript in 2023
addyosmani
56
10k
BBQ
matthewcrist
90
10k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
From π to Pie charts
rasagy
1
450
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
370