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
初心者向けSwift勉強会#1 ~Swift文法編~
Search
吉川楓馬
December 23, 2023
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初心者向けSwift勉強会#1 ~Swift文法編~
12月23日に開催されたSwift勉強会#1の資料です。
吉川楓馬
December 23, 2023
More Decks by 吉川楓馬
See All by 吉川楓馬
Githubのプロフィールページをおしゃれにしよう
yoshikawa0918
2
1.1k
初心者向けSwift勉強会#3
yoshikawa0918
0
150
初心者向けSwift勉強会#2
yoshikawa0918
0
150
九州アプリチャレンジ・キャラバンに参加してきた話
yoshikawa0918
0
210
東京Flutterハッカソン行ってきたよ!!
yoshikawa0918
0
540
AkarengaLT_16_スライド.pdf
yoshikawa0918
0
110
ProcessingでAndroidアプリを作ろうの会
yoshikawa0918
0
300
サンプルを使って学ぶFlutter
yoshikawa0918
1
410
Other Decks in Programming
See All in Programming
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.5k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
910
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
320
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
1
280
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
980
アクセシビリティから考える情報設計
high_g_engineer
0
420
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3.3k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
280
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
150
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
270
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
390
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
250
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Transcript
初⼼者向けSwift勉強会#1 ~Swift文法編~
エンジニアカフェについて
エンジニアカフェについて エンジニアが集まる、活躍する、成長する街、福岡。 https://efc.isit.or.jp
エンジニアカフェへのアクセス 営業時間 9:00 - 22:00 / 相談受付時間 13:00 - 21:00 / 休館日毎月最終月曜日 https://engineercafe.jp/
⾃⼰紹介
⾃⼰紹介 • 名前 吉川楓⾺ • 所属 九州産業⼤学 理⼯学部 情報科学科 3年 • 出⾝地 ⼤分県
• 趣味 カードゲーム(遊戯王)/モバイルアプリ開発(Flutter) • 実はSwift勉強したてです。間違えてしまうところもあるかと思いま すが、皆さんと⼀緒に勉強していけたらいいなと思ってます〜。
本⽇のメニュー • Swift/Swift Playgroundとは • メッセージを表⽰してみる(print関数) • 定数と変数 • if⽂/for-in⽂
• 配列 • 関数 • 構造体とクラス
Swift/Swift Playgroundとは
Swift/Swift Playgroundとは Swift…2014年にApple社が開発したiOS,Mac,Apple TV,Apple Watchアプリ開発向けのオープンソースのプログラミング⾔語。 Swiftという名前の通り処理速度が⾼速なのが特徴である。 Swift Playground…Swiftを学ぶことができるアプリケーション。 プログラミングを学ぶだけでなくアプリ開発をすることもでき る。
Swiftコーディングを始める それではSwiftコーディングを始めましょう。 Swift Playgroundを開き、メニューバーの[ファイル]>[新しいブッ ク]でプレイグラウンドブックを開きましょう。
Swiftコーディングを始める プレイグラウンドブックの 説明 ①エディター ②コンソール ③候補 ④コードを実⾏ ⑤コンソールの開閉
メッセージを表⽰してみる(print関数) まずは⽂字列を表⽰してみましょう。 以下を記⼊してください。 print("Hello world") 記⼊が終わったら、コードを実⾏して みましょう。 括弧内に好きな⽂字列を⼊⼒して実⾏ して遊んでみましょう。
メッセージを表⽰してみる(print関数) 次に数値計算をしてみましょう。 以下を記⼊してください。 print(120 + 80 - 50) コードを実⾏してみましょう。 四則演算の演算⼦
+(加算) ー(減算) *(乗算) ∕(割算)
メッセージを表⽰してみる(print関数) 数値を⽂字列と連結させて表⽰してみ ましょう。 print(String(100) + "円") Stringメソッドで100を⽂字列化した 後に、"円"と連結させる。 また、⽂字列同⼠の連結には+が使え る。
メッセージを表⽰してみる(print関数) そのほかの演算⼦と計算の優先順位について 剰余演算⼦ % 割ったあまりを求める (例) 10 % 5 = 0
9 % 2 = 1 8 % 3 = 2 計算の優先順位 計算の優先順位は現実の算数と同じ優 先順位で計算される。 例1:2 + 5 * 2 この場合は12 例2:5 * (3 + 4) この場合は35
定数と変数 定数‧変数とは 定数‧変数…データを⼊れる箱のようなもの。データは何度でも使うこと ができる。 違い 定数:⼀度だけデータを⼊れられる 変数:何度でもデータを⼊れられる 補⾜:定数‧変数にデータを⼊れる処理を「代⼊」という。 number 10
定数と変数 定数‧変数の命名規則 定数‧変数は任意の名前をつけることができますが、慣習として以下の ルールがあります。 ルール1:⽇本語は使わない ×namae(名前) ×nennrei(年齢) ルール2:名前の先頭を⼩⽂字のアルファベットにする ×Name ×1name ◦name ルール3:複数の単語を組み合わせる場合、2単語⽬以降の先頭を⼤⽂字にする
(ローワーキャメルケース) ◦myName ◦hogeData
定数と変数 定数を宣⾔してみましょう let greeting : String = "Hello akarenga" print(greeting)
letは定数であることを⽰し、その後定 数の名前、型、=、データの順に記述 していきます。
定数と変数 再度定数にデータを代⼊するとどうな るでしょうか。以下のコードを追記し てください。 greeting = "Hello Swift" print(greeting) このようにletは⼀度しか代⼊できませ
ん。
定数と変数 ではletをvarに書き換えて定数から変 数にしてみるとどうでしょう。 let greeting … ↓ var greeting …
変数は何度もデータを⼊れられるので エラーになりません。
定数と変数 次に定数に整数を代⼊して、⽂字列と 連結して表⽰してみましょう。 let number : Int = 100 print(greeting
+ " " + String(number + 30)) Intは整数を表す英単語(Integer)の略で す。
定数と変数 【おまけ】型推論 Swiftには代⼊したデータの型によってその変数の型を決定する機能があります。 例1 型推論を使ったInt型の定数の宣⾔ :let number = 10 例2
型推論を使ったString型の変数の宣⾔ :var name = "⾚煉⽡太郎" 注意する点として、型推論は最初に代⼊したデータとは異なる型のデータを代⼊す るとエラーになります。 例:var age = 20 (この時点では変数ageはInt型) → age = "⾚煉⽡太郎" (String型の データを代⼊するとエラー)
if⽂/for-in⽂ if⽂ if⽂を使うことで条件に合わせて処理を変えることができます。 if 条件式 { //ここに条件式が成⽴した場合の処理を書く }
if⽂/for-in⽂ 変数nameに⽂字列を代⼊してその⽂字列 が"Swift"であれば"Hello Swift"を表⽰してみ ましょう var name : String =
"Swift" if name == "Swift" { print("Hello Swift") } 変数nameにSwift以外の⽂字列を代⼊した ら"Hello Swift"と表⽰されないと思います。
if⽂/for-in⽂ 条件に合わせて処理が変わったでしょうか? では次に⻘字の部分を追記してください。 var name : String = "Swift" if
name == "Swift" { print("Hello Swift") }else if name == "Python"{ print("Hello Python") }else { print("Hello World") } if⽂の後にelse ifで条件の追加、elseでそれ以 外の条件だった場合の処理を追加できます。
if⽂/for-in⽂ if⽂の条件式では2つの値の⼤⼩ を⽐較するときに右表のような⽐ 較演算⼦が利⽤できます。 例 let a : Int =
5 let b : Int = 10 if a < b { print("bはaより⼤きい") } //"bはaより⼤きい" 演算⼦ 数学での 記号 式の例 式の例の 意味 == = a==b aはbと等 しい != ≠ a!=b aはbと等 しくない > > a>b aはbより 大きい >= ≧ a>=b aはb以上 < < a<b aはbより 小さい <= ≦ a<=b aはb以下
if⽂/for-in⽂ for-in⽂ for-in⽂は同じ処理を繰り返すときに使われます。同じ⽂字列を100回表 ⽰するとか...。 for ループ変数 in 繰り返す範囲 { //ここに繰り返す処理を書く
} ループ変数とはこのfor-in⽂の中だけで使える変数であり、慣習的にiやj などが使われます。ループ変数が必要ない場合は_を使います。
if⽂/for-in⽂ for-in⽂を書いていきます。if⽂を削除して以 下を記述してください。 for _ in 0 ..< 5 {
print("Hello Swift") } 繰り返し範囲は0..<5になります。これは「0 から5の1つ前まで」を表しています。つまり 実際の繰り返し範囲は0から4までとなり5回 繰り返していることになります。0..<5の5を 10に変えてみると⽂字列は何回表⽰されるで しょうか。
if⽂/for-in⽂ 次にfor-in⽂がどのように繰り返しているの か確認してみましょう。⻘⾊の部分を書き換 え、追記してください。 for i in 0 ..< 5
{ print("Hello Swift" + String(i)) } for-in⽂の開始時にiには繰り返しの開始値(こ こだと0)が代⼊され、処理が終わるとiは繰り 返し範囲の次の値に更新(この場合はi+1)さ れ、for⽂内の処理が再び実⾏されます。
配列 配列とは1つの変数に複数の値が格納されたデータ形式となりま す。 let 配列名 : [型] = [値1,値2,値3, ………]
var 配列名 : [型] = [値1,値2,値3, ………] 定数‧変数と同様にletの場合は要素(配列に格納されたデータ)の 変更ができず、varの場合は要素の変更が可能です。
配列 配列の宣⾔、初期化、要素へアクセスしてみ ましょう。以下を記述してください。 let array : [Int] = [1,3,5,7,9] print(array[0])
print(array[4]) 配列の要素は0,1,2,3…のように0から数え始 めます。そのためprint(array[0])は配列array の0番⽬を表⽰しています。
配列 for-in⽂と組み合わせて配列の中⾝を全て表 ⽰してみましょう。print⽂を削除して以下を 追記してください。 for i in array { print(i)
} 繰り返す範囲に配列を渡すことで、その配列 の要素数だけループを繰り返します。今回の 場合、配列arrayの要素数は5なので5回ルー プを繰り返しています。
関数 関数とは特定の処理を実⾏するためのコードの集まりです。 関数は引数の型、戻り値の型で構成されています。引数は複数指定する ことができます。 func 関数名(引数名 : 型) -> 戻り値の型
{ //実⾏する処理の記述 } 関数によっては引数が無い関数や戻り値のない関数があります。
関数 まずは引数と返り値のない⽂字列を表⽰する だけの関数を宣⾔してみましょう。 func dispMessage(){ print("Hello Swift") print("Hello akarenga") }
dispMessage() 関数を使⽤する時は 関数名(引数) と書きま す。
関数 次に引数に整数型のデータを渡して、2乗を返 す関数を宣⾔します。以下を追記してくださ い。 func calcSquared(number: Int) -> Int {
return number * number } print(calcSquared(number:3)) calcSquared(number:3)はInt型の引数number に3を代⼊しています。return で計算結果を返 します。その後返ってきた値を表⽰します。
構造体とクラス 構造体とは 変数や定数、関数を⼀つのグループにした物です。この構造体の中で宣 ⾔した変数や定数はプロパティと呼ばれ、定義した関数はメソッドと呼 ばれます。 struct 構造体名 { プロパティの宣⾔ メソッドの定義
}
構造体とクラス 構造体を使う時 構造体を使う時は構造体のインスタンスを⽣成します。構造体を宣⾔し たままでは、いわゆる設計図のような状態です。インスタンスを⽣成す ることでPCのメモリ上にデータとして構造体を実体化します。 var 変数名 = 構造体名()
構造体とクラス では、⼈の名前と年齢を扱う構造体を作ってみ ましょう。 struct Person{ var name : String =
"福岡太郎" var age : Int = 20 } var p1 = Person() print(p1.name) インスタンスp1がもつnameプロパティを出⼒ しています。プロパティへのアクセスはインス タンス.プロパティ名と記述します。
構造体とクラス 名前を表⽰するメソッドを追加して呼び出して みましょう。 struct Person{ … func dispName(){ print(name) }
} var p1 = Person() p1.dispName()
構造体とクラス クラスとは クラスは構造体と同様にプロパティやメソッドをまとめた設計図のよう なものです。違いとしてクラスは参照型であることと継承することがで きることです。 参照型 … 複数の変数で⼀つのインスタンスの値を共有できる。構造体 は値型といって複数の変数で⼀つのインスタンスの値を共有できない。 継承
…クラスは他のクラスからメソッドやプロパティを継承して呼び出 すことができます。継承するクラスのことをサブクラス、継承されるク ラスのことをスーパークラスといいます。 継承を解説するのは時間的に 厳しそう...。インスタンスの値の 共有だけやってみます。
構造体とクラス インスタンスの値の共有をしてみましょう。⻘ 字の部分を書き換え、追記してください。 class Person{ … } var p1 =
Person() var p2 = p1 p1.name = "⾚煉⽡太郎" p2.dispName() p1のnameを書き換えたのに、p2も書き変わっ てます。
構造体とクラス 構造体の場合、nameプロパティを 書き換えたらどうなるのか調査して みました。 p2のnameプロパティを表⽰してみ たら書き換えられていませんでし た。 このことから、値型である構造型は 複数の変数で⼀つのインスタンスは 共有できないことがわかりました。
第1回は以上です!お疲れ様でした! 次回は1⽉23⽇を予定しています。