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
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
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
310
関西に縁あるMicrosoft MVPsが語るCopilotの未来
kasada
0
1.2k
AIプラットフォームを運用し続けるための可観測性
tanimuyk
4
1.2k
PHP と TypeScript の型システム比較:AI 時代の「型」は誰のためにあるのか? #frontend_phpcon_do / frontend_phpcon_do_2026
shogogg
1
270
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
120
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
4
1.2k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
2
210
Reliability in the Age of AI: Engineering for AI Velocity
rrreeeyyy
0
110
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
500
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
180
Agentic Defenseとともにセキュリティエンジニアが輝き続けるには / How Security Engineers Can Keep Excelling with Agentic Defense
yuj1osm
0
140
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
310
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Done Done
chrislema
186
16k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
A Tale of Four Properties
chriscoyier
163
24k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Site-Speed That Sticks
csswizardry
13
1.2k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
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