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
140
未来大LT_2025.pdf
kaitokudou
0
99
Universal Linksの実装方法と陥りがちな罠
kaitokudou
1
540
iOSDC Japan 2022 スポンサーセッション
kaitokudou
0
2.2k
App Storeにアプリをリリースした話
kaitokudou
0
58
Other Decks in Technology
See All in Technology
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
230
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
640
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
270
20260930_Gemma4_Hands-on
tsho
0
160
Incremental HTTP
kazuho
3
790
AIに会社の文脈を理解させる技術~上流工程・非エンジニアにも広げるハーネスエンジニアリング実践~
ochtum
0
190
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
300
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
200
プラットフォームを「作る」、 チームに「入り込む」
sansantech
PRO
0
380
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
5
610
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
320
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
200
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
Skip the Path - Find Your Career Trail
mkilby
1
240
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
290
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
BBQ
matthewcrist
89
10k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
750
Building a Scalable Design System with Sketch
lauravandoore
464
34k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
960
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