前回は、Pythonで3つのニュース サイト(Web)に対して新着情報を取得後、音声ファイルに
変換して、読み上げ処理を行う記事を紹介しました。
今回より、Pythonから少し離れて、Swiftの紹介と開発を行う記事を紹介して行きます。
Mac環境での開発
前回まで、PythonやDBについて記事を紹介して来ましたが、多くの人が仕事やプライベートで
Windowsパソコンを利用していますで、Windows環境で動作するソフトウェアや開発方法・
サンプルについて紹介して来ました。
最近では、仕事やプライベートでMacパソコンを利用する人も増えて来ましたし、
日本では、スマホ(スマートフォン)については圧倒的にiPhoneを利用している人が多く、
iPhone上で動作するアプリ(アプリケーション)も普及していますね。
既にMacパソコンを保有の方や、これから購入を検討している方で、インターネットやSNS、
メール、ドキュメント作成の利用だけでは、宝の持ち腐れです!!
是非、Apple社製品で動作するソフトウェア開発や動画制作等にも、Macパソコンを
御利用下さい。
iOS開発:3種の神器
Apple社製品で動作するソフトウェア開発(iOS開発)を行うには、最低限、
次の3つを準備する必要が有ります。
- Mac環境:専用パソコン
- Apple ID:アカウント
- Xcode(IDE):統合開発環境
Mac環境:専用パソコン
Mac環境には、様々の機種のパソコンやスマホが有りますので、紹介しておきます。
- デスクトップ:iMac/Mac mini/Mac Pro
- ノートパソコン:MacBook/MacBook Pro/MacBook Air/Power Book/iBook
- スマートフォン:iPhone
- タブレット:iPad
- ポータブルメディアプレイヤー:iPod/iPod touch
上記の中から、ソフトウェアやアプリケーションの開発には、デスクトップまたは
ノートパソコンで実装する事になります。
がっちり開発する方や熟練のiOS開発のエンジニアでしたら、iMac等のデスクトップを
利用していると思いますが、これからiOS開発を始めようとする方や興味のある方は、
軽くて持ち運びが簡単な MacBook/MacBook Pro/MacBook Air のノートパソコン
の御利用をお勧めします。
Apple ID:アカウント
Apple ID は、Apple社が提供している機器やオンラインサービスを利用する為に
必要なアカウントです。
既にiPhoneやiPadをお持ちの方は、Apple ID を取得していますので、そのまま、
Apple ID を御利用下さい。
別のスマホ(スマートフォン)を利用されている方で、これから、iOS開発を行いたいと
思っている方は、下記のApple社の公式サイトから、Apple ID を取得してみて下さい。
Xcode(IDE):統合開発環境
Mac環境での開発言語ですが、前回まで紹介したPythonやPHP、Java、JavaScript、
Ruby等の開発言語も、もちろん開発する事が出来ます。
VB.net、C#等のMicrosoft製の開発言語をMac環境で動作させるには、ちょっと工夫が
必要ですが、可能なものの詳細は割愛します。
これから紹介する開発言語は、iOSアプリを開発する言語で、Apple社製品の
Xcode(IDE:Integrated Development Environment)
という統合開発環境を利用して開発を行います。
- Objective-C
- Swift:UIKit(Storyboard)フレームワーク
- Swift:SwiftUIフレームワーク
Xcode(IDE)は、App Storeから無料でダウンロードしてインストールが出来ますので、
まだお持ちのMacパソコンにインストールされていない方は、是非、インストール
してみて下さい。
Objective-C
Objective-Cは、プログラミング言語の一種で、C言語をベースにSmalltalk型のオブジェクト
指向機能を持たせた上位互換言語です。
Objective-Cの始まり
Objective-Cは、1983年にBrad Cox氏とTom Love氏よって設計されたプログラミング
言語で、コンパイラやライブラリを支援するために、Stepstone社を創立しました。
1985年、Apple社を去ったスティーブ・ジョブズは、NeXT Computer社を創立し、
NeXT ComputerとNeXTSTEP OSの開発を行いました。
そのマシンのユーザインタフェースは、Display PostScriptとObjective-Cで書かれた
Application Kitにより提供され、Objective-CはNeXT Computerの主力言語となりました。
1995年には、NeXT Computer社がStepstone社からObjective-C言語と、
その商標に関する全ての権利を買い取りました。
1997年初頭、Apple社がNeXT Computer社を買収し、2001年に登場した
Mac OS XのCocoaフレームワークのコア言語として採用されました。
Mac OS X v10.5からは、一部言語仕様の変更が行われObjective-C 2.0と呼ばれます。
Objective-Cのウィークポイント
Objective-Cは、Swiftに比べ、開発ノウハウは充実していますが、現在の主流はSwiftです。
Swiftに比べ、最大2.6倍のスピードで処理が遅く、変数の空白(nil)に対してチェックが
甘いところも、レガシーな開発言語の理由となっています。
Objective-Cの詳細
Objective-Cの詳細は、下記の wikipedia のサイトを御参照下さい。
Swift:UIKit(Storyboard)フレームワーク
Swiftは、iOSやMac OS Xでソフトウェアやアプリケーションを開発するための
オープンソースです。
Swiftの始まり
Swiftは、2010年にLLVMとClangの始祖であるChris Lattner氏によって開発が開始されて、
その後、Apple社内での4年間の開発期間を経て、2014年にApple社が開催した
WWDC(Apple Worldwide Developers Conference)で一般に発表されました。
同時にAppleに開発者登録している開発者に対して、ベータ版の提供も開始されました。
Swiftの意味と特徴
Swiftの意味は「迅速」や「敏捷な」ですが、生き物では「アマツバメ」を指す英単語になり、
Swiftの「ロゴマーク」となっています。
Apple社が公式に発表しているSwiftの特徴は、下記の4つになります。
- モダン:クロージャやタプル、ジェネリックプログラミング、Optional型の採用、型推論など可読性が高く、記述しやすい機能
- 安全:バグが発生しにくい言語仕様、静的な型チェック、変数の初期化の強制、数値型のオーバーフローの検査、自動参照カウントによるメモリ管理
- 高速:Object-Cよりも最大2.6倍、Pythonよりも最大8.4倍もの高速処理、他の言語に比べて検索アルゴリズムが高速
- インタラクティブ(対話形式):コンパイラ言語でありながら、インタプリタとしてスクリプトを実行することが可能、またXcodeでは、コードの実行結果をグラフィカルに確認しながら開発できるPlaygroundsが実装されています
Swiftの特徴は、下記の wikipedia のサイトを御参照下さい。
UIKit(Storyboard)
ここでは、Xcode(IDE)でUIKitの開発スタイルを紹介します。
iOS13より前をサポートする場合は、UIKitでの実装が必要です。(※SwiftUIが使えない)
開発スタイルは、基本的にStoryboardと呼ばれる画面(View)イメージに、ボタンやラベル、
テキスト等のUIパーツ(部品)をペタペタ配置して、画面遷移や入出力制御、デバイスとの
通信制御等のコード(ViewController、他)を記述して行きます。
下記が、Storyboardの画面(View)イメージになります。
VB.netやC#で、UI(画面)開発をされた事が有る方なら、イメージが沸くと思います。
但し、Storyboardは、Xcode上で画面イメージと同じように見えますが、
実態は、XML形式ファイルのため、XMLの知識と解読が必要になります。
UIKitは、公式ドキュメントだけでなく、コミュニティのサポートが手厚いのも心強いです。
後に出て来る SwiftUI との統合も、簡単に出来るのも特徴です。
Swift:SwiftUIフレームワーク
SwiftUIは、Appleプラットフォーム向けの新しいフレームワークとして、WWDC 2019にて、
公開されました。
SwiftUI
ここでは、SwiftUIの開発スタイルを、紹介します。
iOS13より後をサポートする場合は、UIKitとは別に、SwiftUIで実装が必要です。
ここでは、Xcode(IDE)でSwiftUIの開発スタイルを紹介します。
UIKitと異なり、SwiftUIでは、画面レイアウトも含めて、全てコードで実装する
というのが特徴で、StoryboardやViewControllerは使用しません。
下記が、SwiftUIのコード実装(ContentView)イメージです。
Xcode(IDE)の右側には、画面プレビューを表示していますので、コード実装しながら、
直感的に画面イメージが分かるので、とても便利です。
SwiftUIは、下記の wikipedia のサイトを御参照下さい。
SwiftUI と UIKit の比較:一覧表
SwiftUIとUIKitの比較を、一覧にしてみました。
| 項目 | SwiftUI(2019年:iOS13~) | UIKit(2008年~iOS13~) | |||||
| これから | 流行る | オワコン | |||||
| 案件 | 少ないが増えてきている | 多いが減っている | |||||
| 参考文献 | 少ないが増えている | 多い | |||||
| 細かいレイアウト | △ | ◯ | |||||
| ライブラリ | 少ないが増えている | 多いが減っている | |||||
| 開発の柔軟さ | △ | ◯ | |||||
| Swiftのコード | Viewの中にSwiftのコードは書けない。 | Viewの中に記述可能 | |||||
| View | View:構造体(Struct) | UIView:クラス(class) | |||||
| 型 | 宣言型で記述する | 手続き型で記述する | |||||
| Declarative Programming | Imperative Programming | ||||||
| 何を(What)処理するかを記述 | どのように(How)処理するか記述 | ||||||
| 状態の変更 | 自動的にViewが更新 | 手動で更新する必要がある | |||||
| Delegate(移譲) | 概念が無い | 概念がある | |||||
| 自身のプロパティ | デフォルトで変更不可(@state) | デフォルトで変更可能 | |||||
| 画面レイアウト | コードで実装 | ViewControllerやStoryboard | |||||
| コンポーネントと関連 | コードで実装 | @IBOutlet, @IBAction | |||||
| 変数渡し | 値型(値をコピー) | 参照型(値を参照) | |||||
| データバインディング | SwiftUI.View自体がMVVMの特性 | UIKit.View + MVVM | |||||
| 両フレームワーク間 | UIViewRepresentableプロトコル | UIHostingControllerクラス | |||||
| info.plist | project名のinfoタブ | info.plist | |||||
| Controller | 外部のコントローラーは不要 | macOSのCocoaビューの改良版 | |||||
| プラットフォーム | iOS、macOS、watchOS、tvOSアプリ | iOS専用のフレームワーク | |||||
| Interface 名称 | Swift User Interface | User Interface Kit | |||||
上記の比較表からも確認出来ますが、Appleプラットフォーム向けのフレームワークを
利用した開発スタイルとして、今後は更にUIKitからSwiftUIに移行して行きますので、
SwiftUIを中心に開発方法・サンプルの記事を紹介しようと思います。
まとめ
今回は、Mac環境で動作するソフトウェアやアプリケーションの開発スタイルについて
紹介しました。
Apple社製品で動作するソフトウェア開発(iOS開発)を行うには、最低限、
次の3種の神器を準備する必要が有ります。
- Mac環境:専用パソコン
- Apple ID:アカウント
- Xcode(IDE):統合開発環境
また、Xcode(IDE)で(iOS開発)を行う開発言語は、次の3つを紹介しました。
- Objective-C
- Swift:UIKit(Storyboard)フレームワーク
- Swift:SwiftUIフレームワーク
Appleプラットフォーム向けのフレームワークを利用した開発スタイルとして、今後は
SwiftUIが普及して行きますので、SwiftUIを中心に開発方法・サンプルの記事を
紹介しようと思います。
次回は、SwiftUIでQRコードを生成するアプリケーションを開発する記事を
紹介しようと思います。
- イラスト:いらすとや より引用







コメント