ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
Swift(スウィフト) は、2014 年 6 月の Apple Worldwide Developers Conference(WWDC)で発表された汎用プログラミング言語です。設計を主導した Chris Lattner は LLVM コンパイラ基盤の作者として知られ、Objective-C の代替として「安全・高速・表現豊か」をスローガンに開発されました。それまで Apple プラットフォームの主要開発言語だった Objective-C は Smalltalk 由来の特殊な構文を持ち、学習コストが高かったため、より現代的な構文と強力な型システムを備えた Swift への移行が進みました。
Swift は 2015 年 12 月に Apache License 2.0 で オープンソース化 され、現在は Apple とコミュニティが共同で開発を進める Swift.org プロジェクトとして運営されています。Linux・Windows サポートも公式に提供され、サーバサイド Swift(Vapor、Hummingbird 等)の選択肢にもなりつつあります。
型システムは 静的・強型付け+強力な型推論。最大の特徴は Optional 型 で、String? という型は「文字列があるか、ないか(nil)」を 型レベルで表現 します。Optional を扱うには if let、guard let、??、?.、!(強制アンラップ)などを使い、nil をうっかりアクセスしてクラッシュする旧来の問題を構造的に防ぎます。さらに Protocol-Oriented Programming(POP) という思想を中心に据え、クラス継承よりも プロトコル+プロトコル拡張 で振る舞いを合成することを推奨します。
ファイル種類とビルド成果物
| 拡張子 / 形式 | 役割 | 備考 |
|---|---|---|
.swift | Swift ソースコード | UTF-8。main.swift はトップレベルにコードを書ける唯一の特別な名前 |
Package.swift | SwiftPM プロジェクト定義 | Swift DSL で依存・ターゲット・プラットフォームを宣言 |
.swiftmodule | コンパイル済みモジュール | 型情報と AST を含むバイナリ |
.swiftinterface | モジュールインターフェース | ABI 安定のため公開シグネチャを書き出した中間表現 |
.xcodeproj / .xcworkspace | Xcode プロジェクト | iOS / macOS アプリのビルド設定一式 |
.app | macOS / iOS アプリバンドル | 実体はディレクトリ。Info.plist + 実行バイナリ + リソース |
.ipa | iOS 配布アーカイブ | App Store 提出やアドホック配信に使用 |
.framework / .xcframework | 動的フレームワーク | 複数アーキテクチャ/プラットフォームを 1 パッケージに |
「Hello, World」
// hello.swift — Swift の最小プログラム
import Foundation
func greet(_ name: String) -> String {
return "Hello, \(name)!"
}
// Optional とジェネリクス
func firstNonNil<T>(_ values: [T?]) -> T? {
for v in values {
if let unwrapped = v {
return unwrapped
}
}
return nil
}
print(greet("World"))
let xs: [String?] = [nil, nil, "Swift", "Apple"]
if let first = firstNonNil(xs) {
print("first non-nil: \(first)")
}
\(...) は文字列補間、String? は Optional、if let は安全なアンラップです。SwiftPM 環境なら swift package init --type executable → swift run でビルド+実行できます。
パッケージ管理・ビルドツール
- Swift Package Manager(SwiftPM):Apple 公式。
Package.swift1 本で依存・ターゲット・プラットフォーム条件を宣言。Xcode に統合済み - Xcode:iOS / macOS / watchOS / tvOS / visionOS の公式 IDE。Storyboard、SwiftUI Preview、Instruments プロファイラを内蔵
- CocoaPods:Ruby 製の伝統的依存管理。
Podfile+pod install。SwiftPM への移行が進む - Carthage:分散型依存管理。プロジェクト統合を最小限に
- swift build / swift run / swift test:CLI でのビルド・実行・テスト
- swift-format / swiftlint:フォーマッタとリンタ
- fastlane:App Store 配信自動化(Ruby 製)
関連言語との比較
| 項目 | Swift | Objective-C | Kotlin | Rust |
|---|---|---|---|---|
| 登場年 | 2014 | 1984 | 2011 | 2010 |
| 型システム | 静的・強・型推論 | 動的メッセージング | 静的・強 | 静的・強・所有権 |
| 主用途 | iOS/macOS/サーバ | 旧 Apple 開発 | Android/JVM | システム/CLI |
| nil 安全 | Optional 型 | nil 許容(緩い) | Nullable 型(?) | Option/Result |
| メモリ管理 | ARC(自動参照カウント) | ARC | JVM GC | 所有権+ライフタイム |
| UI フレームワーク | SwiftUI / UIKit | UIKit / AppKit | Jetpack Compose | 各種(Tauri等) |
注意点・落とし穴
- 強制アンラップ
!:let s = optional!は nil なら即クラッシュ。本番では避け、guard let/if let/??を使う - 値型 vs 参照型:
structは値型でコピー、classは参照型。Swift 標準ライブラリはString、Array、Dictionaryも値型(CoW で効率化) - ARC と循環参照:クロージャや親子参照で
selfを強参照すると解放されない。[weak self]/[unowned self]で切る - Xcode 必須の壁:iOS アプリ開発は実質 Mac + Xcode が必要。CI も macOS ランナーを要する
- Swift バージョン互換:5 で ABI 安定したが、source-stability は別物。
// swift-tools-version:を明示する - コンパイル速度:型推論が強力すぎてビルド時間が長くなりがち。
let x: [String: [Int: AnyObject]] = ...のような複雑な式は型を明示する - 並行性モデルの世代交代:旧来の GCD(Grand Central Dispatch)から Swift 5.5 以降の
async/await・Actor へ移行中。混在する大規模コードベースに注意
関連リンク
- 親カテゴリ:プログラミング・スクリプト
- 概論:ファイル拡張子とは
- IT サイト共通カテゴリ:プログラミング言語(カテゴリ)
- 外部:swift.org / Apple Developer: Swift
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?