-- Views
August 22, 26
スライド概要
8月22日の「オホーツク最高!CYBER TEAM IN ODEWC@網走」で発表したスライドです。iOS アプリ作りをしていないとなかなか触れない気がする Swift 言語の特色を、駆け足でざっくり紹介してみました。
正統派趣味人プログラマー。プログラミングとは幼馴染です。
Swift の特色 Lightning Talk 熊谷友宏 @es̲kumagai 2026/08/22 オホーツク最高!CYBER TEAM IN ODEWC@網走
▶︎ ▶︎ ▶︎ 熊谷 友宏 Tomohiro Kumagai Swift 言語が好み みんなで楽しむ勉強会が好み 次は何をしようか ̶ 道迷い傾向
近況
▶︎ ▶︎ ▶︎ Okhotsk DEW Community 勉強会 @ 北見 2026/05/23 北見 @ 西地区公民館 発表してきた。 『ほんのちょっとだけ Ruby on Rails してみた』 前々回の初網走に続き、前回、はじめての北見 戦利品 きーたん
技術同人誌 制作 2016/12/29 〜 @ 同人誌即売会 各種
▶︎ ▶︎ 第二種電気工事士 学科試験 2026/05/24 北見 @ 日本赤十字 北海道看護大学 Okhotsk DEW Community 勉強会から 帰るついでに受験してきた 眺めの良い街を歩くのが心地良かった
2026/06/28 大阪 @ うめだMホール 頒布してきた。 新刊 → 千歳アウトレットモール・レラ特集+ おもバザ初の大阪開催は大盛況 次回開催は 2027年6月27日 個人的には 7年ぶりの大阪訪問 ⋯ ▶︎ ▶︎ ▶︎ ▶︎ おもしろ同人誌バザール 大阪 遠い
▶︎ ▶︎ ▶︎ 北海道漁業就業支援フェア 観覧 2026/07/11 札幌 @ アスティホール 北海道の漁業に関心が湧いて どんな世界なんだろう 北海道各地から 24 団体ほどが出展 オホーツクでの漁業の話も、少しばかり 聞けたりしたり
▶︎ ▶︎ ▶︎ 囲碁×将棋トークイベント 盤上の勝負師たち 観覧 2026/07/19 東京 @ 白瀧呉服店 囲碁と将棋の対談イベント 囲碁界 → 芝野虎丸 棋聖、木部夏生 三段 将棋界 → 佐藤天彦 九段、野原未蘭 女流二段 和やかに進むトークが心地良かった 囲碁に興味を持ってもらうにはどうしたら良いか ̶ そんな話も興味深くて
2026/08/01 東京 @ 囲碁将棋喫茶 樹林 2度目の囲碁シルオフ会に参加 ゲームの外で囲碁を打つのも楽しい心地 思っていたよりか、 自分も勝てたりするみたい ⋯ ▶︎ ▶︎ ▶︎ 囲碁シル交流会 参加 と知る
▶︎ ▶︎ やさしい Swift 勉強会 SEASON 2 2025/12/03 〜 YouTube Live 株式会社ゆめみさんで開催していた勉強会が 楽しかったので、終わったあともそのまま継続 YouTube ライブで 13:00 から、 基本「月・水・金」で配信中
▶︎ ▶︎ ▶︎ とりあえず読書会 & 読書実況 2025/07/09 〜 YouTube Live やさしい Swift 勉強会が「自分の」タメになっている実感なので、 同じような方式で気になる技術文書を眺めてみたり YouTube ライブで、だいたい毎日 21:00 から配信中 これまでに読み進めたもの • The Rust Programming Language • SwiftUI Tutorials • Ruby ‒ Documentation • The Python Tutorial • Codex | OpenAI Achademy
▶︎ ▶︎ ▶︎ 囲碁シルしながら雑談配信 2026/04/18 〜 YouTube Live 何をするにも、 自分だけでやっても意味ないような 心地のこの頃 囲碁シルもそんな気持ちで配信してみる 自分初のゲーム配信?
今後の予定
同人誌即売会 評論情報ザフェスタ 2026/09/21 神奈川 @ 川崎市産業振興会館 旅チケット 13 2026/10/10 東京 @ 大田区産業プラザ PiO おもしろ同人誌バザール 2026/11/01 東京 @ ベルサール神保町 技術書典 21(未確定) 2026/11/23 東京 @ 池袋サンシャインシティ
Swift の特色 L i g h t n i n g Ta l k
Swift の特色 コンセプト • Fast プログラムの高速動作 Expressive • 初心者でもわかりやすい簡潔なコード • Safe メモリー安全性とデータ競合安全 Interoperable • C/C++ コードとの相互運用 • Adaptable 組込用途からサーバー用途まで、幅広い適応性
Swift の特色 マルチプラットフォーム • iPhone アプリ開発 その他の Apple プラットフォーム • - iPad Mac Apple Watch Apple TV Apple Vision • Windows Linux •
Swift の特色 実行方式 • コンパイル方式 逐次実行方式 • シェルスクリプトのようにも使用可能 #!/usr/bin/swift print("Hello, Shell Script in Swift!")
Swift の特色 公式ガイドライン • Swift API デザインガイドライン 要領をコンパクトにまとめた指針 • 好きな記述 • - 関数は、流暢な英語表現になるように定義 - 専門用語は、それを使わなければ意味を正確に 伝えられないときに限って使う(略語も同様)
Swift の特色 公式ガイドライン 関数は、流暢な英語表現になるように定義 関数定義 struct Collection { func insert(_ element: Element, at position: Int) } 関数の使用 values.insert(value, at: 4)
Swift の特色 公式ガイドライン 専門用語 間違い・誤解を招く例 enum Event { case seismicEvent case explosion } 精密に意味を伝えたいとき func record(_ event: some SeismicEvent)
Swiftの言語機能 L i g h t n i n g Ta l k
Swift の言語機能 安全性チェック • コードの安全性を Swift 言語自身が検査 - NULL 安全 構造体における可変性/不変性の制御 列挙型の網羅性 並行安全性
Swift の言語機能 安全性チェック NULL 安全 struct Ticket { var departure, arrival: String var reservedSeat: Int? } if let seat = ticket.reservedSeat { print("Reserved: ", seat) } else { print("Unreserved") }
Swift の言語機能 安全性チェック 構造体における可変性/不変性の制御 struct Counter { var count: Int = 0 mutating func increment() func times(_ predicate: (_ n: Int) -> Void) } var counter = Counter() let counter = Counter(count: 6) counter.count = 5 counter.increment() counter.times { n in print(n) } counter.times { n in print(n) }
Swift の言語機能 安全性チェック 列挙型の網羅性 enum Weather { case sunny, cloudy, rainy, snowy } switch weather { case .sunny: print("晴") case .cloudy: print("曇") case .rainy: print("雨") }
Swift の言語機能 安全性チェック 並行安全性 struct Item: Sendable { var name: String } func storeItem(_ item: Item) async let item = Item() await storeItem(item)
Swift の言語機能 メモリー管理 • 参照型は、自動参照カウント管理 共有数を常時把握し、使われなくなったら直ちに解放する • 値型は、自動複製 共有しないことで、扱いを簡単にする
Swift の言語機能 プロトコル • 他の言語では「インターフェイス」とも呼ばれる - 型がどんな特色を持つかを表現する - 型に縛られないプログラミング • プロトコル指向 プロトコルを主軸に組み立てるのが Swift の流儀
Swift の言語機能 プロトコル 型の特色を表現 struct Array: Collection, Equatable, Hashable, Sendable, ExpressibleByArrayLiteral, Encodable, Decodable 型に縛られないプログラミング func count(of values: some Collection) extension BinaryInteger { init(fromBase64 value: String) }
Swift の言語機能 型拡張 • 型に機能を後付けできる コードの記述に統一感 • - 型変換 - 機能の呼び出し • 既存の型にプロトコルを適合可能 → プロトコル指向を支える重要な機能
Swift の言語機能 型拡張 型への機能後付け extension String { func store(to store: some Store) { } ⋯ }
Swift の言語機能 型拡張 型変換の統一感 struct ID extension String { init(_ id: ID) } let id = ID() view.text = String(id)
Swift の言語機能 型拡張 機能使用時の統一感 extension Collection where Element: AdditiveArithmetic { var sum(): Element } let values = [1, 2, 3, 4, 5] print("Count:", values.count) print("Total:", values.sum)
Swift の言語機能 型拡張 既存の型へのプロトコル適合 protocol Storeable { func store(to store: some Store) } extension String: Storeable { func store(to store: some Store) } let value: any Storeable = "ABC"
▶︎ ▶︎ Enjoy! Swift Thank you Swift の特色 熊谷友宏 @es̲kumagai • コンセプト • マルチプラットフォーム • 実行方式 • 公式ガイドライン Swiftの言語機能 • 安全性チェック • メモリー管理 • プロトコル • 型拡張