外でのプログラミング

基本自宅での作業をやるのですが、カフェで作業をしている人がいたので、私もやってみました。

その場所と感想です。

 

スタバなどのチェーン店のカフェでプログラミング

メリット
  • 電源がある場所も多い
  • 自宅より集中しやすい
  • チェーン店だとwi-fiがある場所も多い
  • コーヒーが美味しい
デメリット
  • お金がかかる
  • チェーン店なら街の中心から離れてもだいたい混んでいる
  • 長時間居るには申し訳ない気持ちになる

ネットカフェ

メリット
  • 意外と静か
  • フリードリンク
  • PCも付いてくる
デメリット
  • お金は一番かかる
  • 本を読みたくなる
  • たまにうるさい人がいる

スーパー銭湯でプログラミング

メリット
  • 集中が切れたら風呂に入れる
  • wi-fiがある場所もある
  • コーヒーチェーン店より空いている事が多い
デメリット
  • 休日の夕方以降は子連れが多い
  • 机が無い場合もある
  • ゆっくりお風呂に入ると眠くなる

電車でプログラミング

メリット
  • 移動時間をプログラミングに使える
デメリット
  • 乗り過ごす場合がある
  • 酔う

公園のベンチなど

メリット
  • 特になかったかな・・・
デメリット
  • 昼だとPCの画面が反射して見辛い
  • 場所と季節によって寒い、もしくは暑い
  • 鳩がなぜか寄ってきた

感想

  • 外で作業をやる場合は、机と椅子があって空調が整っていると集中しやすい
  • 調子が良いなら自宅が良いかな
  • 気分が乗らない時には外での作業はあり
  • なぜか図書館は場違い?な気がして使わなかったな

swiftの基礎メモ(変数宣言)

変数宣言

基本的な文法

var 識別子 : 型 = 値

  • var:必ず必要です。
  • 識別子:他の言語とだいたい同じですが、日本語も可能です。
  • 型:指定しなくてもOK。その場合、推論型になります。
  • 値:無くても良い。その場合 nilを許容する設定(オプショナル型)が必要です。
変数の例

ビルド可

  • var hoge:String = "str"
  • var hoge = "str" //この場合は自動的に String 型になります
  • var hoge = "", hogehoge = ""; // このような宣言も可能です

ビルド不可

定数宣言

基本的な文法

let 識別子 : 型 = 値

  • var が let になりましたが、書き方は変数宣言と同じ
  • 初期値として nil を固定値で入れることはできない

 

nil 許容設定(オプショナル型)

型の後ろに ! か ? をつけます。

ビルド可

  • var hoge:String! // nilが代入されます

  • var hoge,hogehoge:String!

  • var hoge:String! = nil

ビルド不可

  • var hoge! = nil // 型の宣言が必要

iPhone(シミュレータ)でweb表示してみる

アプリケーションでウェブ表示をしてみます。

 

web表示では以下の3つの手段があるみたいです。

  • UIWebView
  • WKWebView
  • SFSafariViewController

 

UIWebViewは現状、完全な非推奨ではないみたいですがWKWebViewのドキュメントにも"使わないで"と書いており、WKWebVIew は iOS8.0から使用できるので、こちらで実装してみます。

WKWebView - WebKit | Apple Developer Documentation

 

storyboardにWebKit Viewを設置

f:id:mtntmyk:20171103200151p:plain

せっかくなので3つ設置してみました。

 

そしてテスト用にiOS 8.0 and Laterに変更

f:id:mtntmyk:20171103200519p:plain

 

するとエラーが!

f:id:mtntmyk:20171103200433p:plain

 

Safe Area Layout Guide before iOS 9.0

こちらの方は原因が簡単でした。

single viewで新規作成したstoryboardは下記の設定が入っているので、このチェックを外せばエラーは消えます。

f:id:mtntmyk:20171103200823p:plain

 

Use Safe Area Layout Guides って?

本題から外れますが気になったので調べました。

iPhoneXには画面の作りが独特で上の方に凹んだ部分がありますね。

f:id:mtntmyk:20171103201359p:plain

この部分はセーフエリアと呼ばれていて、自動的に調節してくれるのが 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 

 

シミュレータで動いた!

f:id:mtntmyk:20171104124745p:plain

 

簡単に動かせるサンプルがあるっていいですね!

TomcatとApacheの連携?

前ブログの再掲

TomcatApacheの連携させることがあります。

TomcatにもWebサーバ機能があるのになぜApacheと連携させるのか? 」が不明だったので調べました。

  • Tomcatサーブレットコンテナがメインであり、Webサーバの機能は開発などのデバッグなどで使用されることを想定に作られたので、WebサーバとしてはApacheには劣る。
  • Webサーバは静的なコンテンツ(画像など)を大量に処理をするのに向いており、そういった処理が多いページではApacheの方が便利。

 

次の疑問

「 では静的コンテンツが少ないページならTomcatだけで良い?」

  • 1台のApacheサーバから複数のTomcatへ処理の分散が可能で処理効率を良くすることができ、1つのTomcatが落ちても別のTomcatで処理を続行可能なのでクライアント側での操作に問題が起きにくい。
  • Apacheならアクセス制御などセキュリティという点で優れている。 というかTomcat単体で動作させる場合は管理画面を誰からでも表示できる(パスワードのセキュリティはあるが管理画面の表示自体がセキュリティ上問題)
  • ApacheTomcatより豊富な機能追加のモジュールが用意されている。

 

さらに疑問

「ではTomcat単体よりApacheを連携させる方が良いのか?」

  • Tomcat単体で動かすより動的コンテンツの処理が低速になる場合がある
  • TomcatApacheの2つを使うことでセキュリティホールが多くなる可能性がある
  • 構築が手間(らしい)

 

以上を踏まえてまとめると
  • Tomcat単体でサーバ構築する場合は社内サーバなどアクセスが限られて大規模では無い場合に向いている。
  • ユーザに向けて公開するサーバ構築にTomcatを使用するならApacheと連携させることはほぼ必須。

TomcatとApache

前ブログの再掲

Apache Tomcat

最初Tomcatをダウンロードできるページが”Apache Tomcat”ってなっててTomcat内にApacheが入っているのかと思いました。
Apacheソフトウェア財団っていう非営利団体が作っているからこういう名前なんですね。

 
ApacheTomcatは別物でそれぞれの正式名称は以下の通りでした。

TomcatApacheの違い

 

サーブレットコンテナ
  • クライアント側からの要求に対して効率良くサーブレットを動かすのに必要。
  • サーバではないが、Tomcatの場合はWebサーバの機能も持っているのでTomcatのみでWebサーバを構築出来る。

 

webサーバソフト
  • クライアント側からの要求されたページの表示などを行う。
  • 画像表示などの処理は得意だが、複雑な処理を行う場合は処理効率が悪い。

 

サーブレットとは
  • Webサーバ用のJavaプログラム

「優秀なプログラマー」でググった

結構記事が出てきたので、リンク貼っておきます。

 

 

あとちょっと違うけど

 

ざっとまとめると、良い開発者になるには以下の三つ

  • 開発を続けること
  • 続ける内容自体を見直し、改善していくこと
  • 体と心も大切に

xibファイルとnibファイルは同じもの?

iphoneipadアプリの画面作成について調べていて分かり難かったので、記事にします。

 

結論から書くと…

基本的に"nib"と"xib"は同じ。

で良いと思います。

 

なぜ言い方が別れているの?

ここからもう少し詳細に書いていきます。

 
xibファイルって?

XcodeiPhoneiPadアプリ開発する時の画面作成使われるファイルです。

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と呼ぶ人もいると思います。