【Swift】iOSアプリにWebView(WKWebView)を実装してWebページを表示する方法
iOSアプリ開発をしていると、アプリ内でWebページやWebコンテンツを表示したい場面に何度も出会います。そんなときに活躍するのがWebViewです。
Appleの公式ドキュメントによると、WebViewは「インタラクティブなWebコンテンツを表示するオブジェクト」であり、いわゆる「アプリ内ブラウザ」として利用できます。
この記事では、SwiftとWebKitフレームワークを使ってWebView(WKWebView)を作成し、実際にWebページを読み込んで表示するまでの手順を、ステップごとにわかりやすく解説します。
WebView(WKWebView)とは?
iOSでWebコンテンツを表示するためのクラスは、かつてのUIWebViewから、現在はWKWebViewが標準となっています。WKWebViewはWebKitフレームワークに含まれており、高速なレンダリングやJavaScriptとの連携など、UIWebViewより優れたパフォーマンスと機能を提供します。新規開発ではWKWebViewを使用するのが推奨されています。
WebViewを実装する手順
ステップ1:Xcodeでプロジェクトを作成する
Xcodeを開き、「Single View Application」(新しいXcodeではAppテンプレート)を選択して新規プロジェクトを作成します。ここではプロジェクト名を「WebViewSample」とします。
ステップ2:WebKitモジュールをインポートする
ViewController.swiftファイルを開き、先頭でWebKitモジュールをインポートします。
import WebKit
ステップ3:WKWebViewのプロパティを追加する
ViewController.swift内に、WKWebView型のプロパティを宣言します。
var webView: WKWebView!
ステップ4:WKUIDelegateを採用する
ViewControllerクラスにWKUIDelegateデリゲートを追加します。これにより、アラート表示などのUIに関するイベントをハンドリングできるようになります。
ステップ5:loadView()メソッドをオーバーライドする
ViewController.swiftに以下のloadView()メソッドを追加します。ここでWKWebViewのインスタンスを生成し、ビューとしてセットしています。
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
ステップ6:viewDidLoadでURLリクエストを作成して読み込む
viewDidLoad内で表示したいURLのリクエストを生成し、webView.load()で読み込みます。ここでは例としてAppleの公式サイトを読み込んでいます。
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
ステップ7:アプリを実行する
シミュレーターまたは実機でアプリをビルドして実行すると、画面全体に指定したWebページが表示されます。
完成コード(ViewController.swift全文)
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
}

補足:さらに実用的にするポイント
- ナビゲーションイベントを制御したい場合: WKNavigationDelegateを採用すると、ページの読み込み開始・完了・失敗などのタイミングで処理を追加できます。
- HTTP(非SSL)サイトを表示したい場合: App Transport Security(ATS)により、デフォルトではHTTPS接続のみ許可されています。HTTPサイトを表示するにはInfo.plistに例外設定(NSAllowsArbitraryLoadsなど)が必要です。
- 戻る・進むボタンを実装したい場合: webView.goBack()やwebView.goForward()、canGoBack / canGoForwardプロパティを組み合わせることで、簡単なブラウザUIを構築できます。
以上が、SwiftでiOSアプリにWebViewを実装する基本の手順です。まずはシンプルなURL読み込みから始めて、必要に応じてデリゲートやカスタムUIを追加していくと良いでしょう。
-
【Android】XMLファイルを使ってアニメーションを作成する方法をわかりやすく解説
この記事では、AndroidアプリにおいてXMLファイルを使用してアニメーションを作成する方法を、実際のコード例とともに段階的に解説します。View Animation(Tween Animation)は、res/animディレクトリに配置したリソースファイルとして定義できるため、フェードインやズーム、点滅といった演出をJava側のコードをほとんど書かずに実現できるのが特徴です。 ステップ1:新規プロジェクトの作成 Android Studioを起動し、メニューから「File」⇒「New Project」を選択して新しいプロジェクトを作成します。ウィザードに従って必要な情報を入力し、プロジェク
-
SwiftでRealmデータベースをiOSアプリに導入する方法|CRUD操作を学べるToDoアプリ開発ガイド
こんにちは!この記事では、RealmデータベースをiOSアプリに追加する方法を解説します。シンプルなToDoアプリを作りながら、RealmデータベースにおけるCRUD(Create=作成、Read=読み取り、Update=更新、Delete=削除)操作の実装方法を学んでいきましょう。Realmとは?Realmは、開発者にとって扱いやすく使い勝手の良いオープンソースのモバイル向けデータベースです。iOSアプリではCore Dataの代替として利用することもできます。Realmはクロスプラットフォーム対応のモバイルデータベースです。そのため、ネイティブのAndroid・iOSアプリはもちろん、Re