SSブログ

WKWebViewをSwiftUIで使ったソースコード。 [プログラミング]

以前にSwiftUIでWKWebViewを使いたいと思って、いろいろなページを巡ってきたんだけど、ソースがあっても動かなかったり、ソースが一部なのでどこに使っていいかわからなかったりして、実際に動くところが見れなかった。

結局、AppleのSwiftUIのサンプルコードを元に、いろいろなページを漁っておんなじことをやっているところを一番少ないコードで動くかどうかやってみた。そうしたら案外動いてくれた。部分的なサンプルは間違っていなかったということだ。

・Appleのサンプルコード
https://developer.apple.com/tutorials/swiftui/creating-and-combining-views#Use-UIKit-and-SwiftUI-Views-Together

ミニマムかどうかわからないけど、かなり少ないコードでサンプルを作った。GitHubに上げたのでリンクを張っておく。Xcode Version 12.0 (12A7209)で動いている。ビルドしてgoogleの検索ページが表示されれば御の字だ。というか今までビルドが通っていたプロジェクトがXcodeのバージョンが変わるとコンパイルさえできなくなるとか、Appleはそういうのが多すぎる。下位互換性がクソ。


・Appleのソースコードを小改造したもの

https://github.com/miffy/webview-min/archive/main.zip
https://github.com/miffy/webview-min

元々のサンプルがわかるようにコメントアウトで残した。元々のコードで必要だったファイルも使わなくても残してあるので、比較するときには容易いだろう。本当はいちからミニマムなコードを書くべきだったと思ったのだが、そもそものSwiftUIのイロハすらもわからなかったので、きちんと動くAppleのコードを使うべきだと思ったのだった。

だけど、そこには罠があった。主にGit系の問題だったのだけれど、Xcodeで普通のユーザー名とパスワードでは入れないことと、Gitを素で使ったときにGitHub特有(?)の躓きポイントがいくつかあったことだ。

細かいことは忘れちゃったけど、参考にしたページを残しておく。
https://qiita.com/ynack/items/7c9aa83790ba03c34598
https://qiita.com/Akitoshi_M/items/f71a935612a55d6e674e
https://qiita.com/hosikiti/items/03bba19abec4b789d7a5
https://qiita.com/tetsu-upstr/items/e72147250701cf30ee72
https://oliversi.com/2019/04/11/github/
https://qiita.com/folivora/items/763d06b26bafd573a456

まず最初にXcodeではユーザー名・パスワードではなくて、新しくトークンを発行しないといけないところだった。これはGitを素で使った後にわかったことだが、GitHub独自のことをやられてもねぇというところ。

GitHubにXcodeではなくGitコマンドでつないだ時の問題だけど、まず最初にGitHubのページで上げる用のリポジトリを作ってあげないとアクセスが拒否られることがあった。設定をGitHubに向けてユーザーを名乗って、Gitでいきなりpushしてもダメなんですね。というか、コマンドで完結してほしいんですが、リモートリポジトリはみんなこんなもんなのかな? Gitのリモート側のホストを立てたことや設定したことがないのでよくわからない。

その時の設定やらは上のリンクを見れば大体けりが付く。いろいろ試行錯誤していて、パーミッションとかいろいろなことを考えたけれども、向け先がhttpsにしないこととか、ログインのユーザー名とGitで使うユーザー名とは違うとか、そういうgitとかGitHubの基本的なことだったりした。仕事じゃすでにほとんど設定された状態で使っていたので、そういうところでは躓かなかったりしたんですね。



そして、そもそものSwiftUIのサンプルコードなのだが、XcodeでGitを使おうとするとプロジェクトの外側にファイルが配置されており、GitHubに上げてそれをダウンロードして開くとプロジェクト内のファイルのリンクが切れる。たぶん、そのままではビルドできなかったと思う。できたとしてもファイルが見つからないとファイル名の表示が赤くなって、リンクが切れていてあんまり気分がよくない。

それを見るとAppleの技術者はGitを使っていないんじゃないかと思える。別に使っていなくてもいいけど、今時バージョン管理をしないでソースを扱うとか考えられない。そもそもプロジェクトの起動するファイルの外のディレクトリに外部ライブラリや別のプロジェクト以外のものを設定するとか意味が分からない。

あとXcodeで一回Gitの配下にしてしまうとXcodeから解除する方法がないっぽくて、rm -rf .git するしかないみたいだ。もちろん消した後はXcodeで開き直さないといけない。First commitが強制的に行われてしまうので、最初で見せたくないファイルとかを登録してしまうと最初から作り直さないといけないようだ。IDEは面倒がないようで、コマンドラインでできることが普通にできなかったりする。


コードの中身のうんぬんは他のところからパクって来たものだから、ググって出てきたものを参考にした方がいい。私はただ動く最小限のものを提供したかっただけなので。とはいえ参考にしたサイトも大した説明はなかった。

タグ:SWIFT
コメント(0) 

コメント 0