iPhone(シミュレータ)でweb表示してみる
アプリケーションでウェブ表示をしてみます。
web表示では以下の3つの手段があるみたいです。
- UIWebView
- WKWebView
- SFSafariViewController
UIWebViewは現状、完全な非推奨ではないみたいですがWKWebViewのドキュメントにも"使わないで"と書いており、WKWebVIew は iOS8.0から使用できるので、こちらで実装してみます。
WKWebView - WebKit | Apple Developer Documentation
storyboardにWebKit Viewを設置
せっかくなので3つ設置してみました。
そしてテスト用にiOS 8.0 and Laterに変更
するとエラーが!
Safe Area Layout Guide before iOS 9.0
こちらの方は原因が簡単でした。
single viewで新規作成したstoryboardは下記の設定が入っているので、このチェックを外せばエラーは消えます。
Use Safe Area Layout Guides って?
本題から外れますが気になったので調べました。
iPhoneXには画面の作りが独特で上の方に凹んだ部分がありますね。
この部分はセーフエリアと呼ばれていて、自動的に調節してくれるのが Use Safe Area Layout Guidesです。
ただしこの設定はiOS9.0以上でないと利用できない設定なので、ビルド設定をiOS8.0に変更したのでエラーになりました。
class unavailable
利用できない・・・?
調べてみると WKWebView を Interface Builder で使用するには iOS11.0以降ではないと現状エラーになるとのこと。
WKWebView: build fail for iOS 10.2. XCode9 beta 6 | Apple Developer Forums
WKWebKitさえいればそれでいい。 // Speaker Deck
なので Interface Builder を利用せずにソースコードで書いてみます。
まずは Apple DeveloperDocument にあるサンプルソースを参考に書いてみます。
WKWebView - WebKit | Apple Developer Documentation
シミュレータで動いた!
簡単に動かせるサンプルがあるっていいですね!
TomcatとApacheの連携?
前ブログの再掲
TomcatとApacheの連携させることがあります。
「TomcatにもWebサーバ機能があるのになぜApacheと連携させるのか? 」が不明だったので調べました。
- Tomcatはサーブレットコンテナがメインであり、Webサーバの機能は開発などのデバッグなどで使用されることを想定に作られたので、WebサーバとしてはApacheには劣る。
- Webサーバは静的なコンテンツ(画像など)を大量に処理をするのに向いており、そういった処理が多いページではApacheの方が便利。
次の疑問
「 では静的コンテンツが少ないページならTomcatだけで良い?」
- 1台のApacheサーバから複数のTomcatへ処理の分散が可能で処理効率を良くすることができ、1つのTomcatが落ちても別のTomcatで処理を続行可能なのでクライアント側での操作に問題が起きにくい。
- Apacheならアクセス制御などセキュリティという点で優れている。 というかTomcat単体で動作させる場合は管理画面を誰からでも表示できる(パスワードのセキュリティはあるが管理画面の表示自体がセキュリティ上問題)
- ApacheはTomcatより豊富な機能追加のモジュールが用意されている。
さらに疑問
「ではTomcat単体よりApacheを連携させる方が良いのか?」
以上を踏まえてまとめると
TomcatとApache
前ブログの再掲
”Apache Tomcat”
最初Tomcatをダウンロードできるページが”Apache Tomcat”ってなっててTomcat内にApacheが入っているのかと思いました。
Apacheソフトウェア財団っていう非営利団体が作っているからこういう名前なんですね。
ApacheとTomcatは別物でそれぞれの正式名称は以下の通りでした。
- Apache HTTP Server
TomcatとApacheの違い
サーブレットコンテナ
webサーバソフト
- クライアント側からの要求されたページの表示などを行う。
- 画像表示などの処理は得意だが、複雑な処理を行う場合は処理効率が悪い。
サーブレットとは
- Webサーバ用のJavaプログラム
「優秀なプログラマー」でググった
結構記事が出てきたので、リンク貼っておきます。
あとちょっと違うけど
ざっとまとめると、良い開発者になるには以下の三つ
- 開発を続けること
- 続ける内容自体を見直し、改善していくこと
- 体と心も大切に
xibファイルとnibファイルは同じもの?
iphone、ipadアプリの画面作成について調べていて分かり難かったので、記事にします。
結論から書くと…
基本的に"nib"と"xib"は同じ。
で良いと思います。
なぜ言い方が別れているの?
ここからもう少し詳細に書いていきます。
xibファイルって?
XcodeでiPhone、iPadのアプリ開発する時の画面作成使われるファイルです。
xibファイル、もしくはstoryboardファイルを使って画面を作成することが多いのではないかと思います。
nibファイルって?
画面作成についてxibファイルで検索していると
xibファイルとnibファイルが同じか類似したファイルとして読める記事が見つかりました。
じゃあnibファイルはxibファイルなの?
ですが別物として発言している人もいらっしゃったので、気になって調べてみました。
そもそもnibファイルとは。
NeXT Step(OS)に付属するInterface Builderというアプリケーションで作成されたファイルがnibファイル(NeXTStep Interface Builderの略)です。
元々はProject Builderという開発環境でソースコードを書いて、UIをInterface Builderで書いていていました。
nibファイルからxibファイルに。
Project Builder と Interface Builder を兼ねた開発環境が Xcodeです。
ファイル名もnibファイルからxibファイル(Xcode Interface Builder)に変わりました。
なぜ同じものとして扱うのか。
なぜでしょうね。
nibファイルはバイナリファイルでxibファイルはXMLファイルなので、別物だと思うのですが、これという結論は出ませんでした。
予測すると…
- 元がnibファイルだった名残でxibファイルと呼んでいる
- appleのDocument読んでいたらxibファイルを指す文がnibファイルと書かれていることもあるから 例:UINib - UIKit | Apple Developer Documentation
- nibファイルとxibファイルには別の意味があり、私が勘違いをしている
のいずれかかと思います。
余談
「storyboardはxibの画面遷移を分かりやすくしたもの」という考えで間違っていないはずなので、storyboardをnibと呼ぶ人もいると思います。
Xcodeで新規プロジェクト作成時に自動生成されるファイルって?
初期に作成した時に作成されるファイルって何なの?
って事が気になってざっくりと調べたのでメモ
"Single View App" で作成
"NewPJ1"という名前で作成しました
"Single View App"で作成すると以下のファイルが自動的に作成されます。
各処理について
[NewPJ1]
AppDelegate.swift
アプリの起動時やアプリ終了時の処理などをここに書く
ViewController.swift
Main.storyboardを表示したらあるViewController(画面)。
1画面につき、ViewControllerファイルを一つが主流?
Main.stroyboard
アプリケーションの画面。
storyboardが用意されているが .xib などでも画面を作成できる。
Assets.xcassets
アセットカタログ。
アイコンや画面に表示する画像を管理できる。
LaunchScreen.storyboard
スプラッシュ画面(起動時の画面)
Main.storyboardで良い場合、GeneralのLaunch Screnn Fileからスプラッシュ画面をMain.storyboardに変更できる。
Info.plist
アプリの共通の設定ファイル。
バージョン情報やステータスバーなど設定できる。
NewPJ1.xcdatamodeld
CoreData(モデルオブジェクトを扱うためのフレームワーク)らしいです。
[NewPJ1Tests]
NewPJ1Test.swift
ユニットテストのファイルかな
Info.plist
ユニットテストの設定ファイルのはず
[NewPJ1UItests]
NewPJ1UITests.swift
UI関連のユニットテスト用だと思う
Info.plist
UIテストの設定ファイルかな
[Products]
NewPJ1.app
NewPJ1Tests.xctest
NewPJ1UITests.xctest
上記ファイルは”プロジェクトをビルドした時の最終的な成果物”らしい
以下のリンク先を参考
framework - swift SwiftChartsのframeworkが赤字だけどimportできる? - スタック・オーバーフロー
だとすれば"NewPJ1.app"がアプリケーション本体で、"~.xctest"がそれぞれユニットテストのファイルのはず。