BOMってなんだっけ?

こんばんは、有村です。
春が近づいてくる予感。ちなみに私は春が一番苦手です。

さて今日のなんだっけ?はBOM
私もこの業界に入るまでは爆弾のことだけだと思ってました!でもそれだけじゃない!

ある日、こんな相談を受けました。ページの上部に謎の隙間ができてるんだけど…と。
実際の画面を見ると、確かに微妙に隙間が空いています。そういう時って大抵、HTML側にスペースが忍び込んでいたとか、妙なスタイルが設定されていたとか、原因そういうのだったりしますよね。
と思って調査したのですが、そのどちらでもない。
結論を言うと、それはBOMのせいでした。

それから、BOMってのがつくとなんか空白できたり悪さするらしいということは覚えましたが、そういえばBOMがどんなものなのかを知らないことに気付きました。
もしかしたら、ただの悪人じゃないのかも?………というわけで調べました。

Q. BOMってなんの略?
A. byte order mark
ばいとおーだーまーく。…なんのオーダー?

Q. byte order markってなにしてるの?
A. テキストデータがUnicodeであること、またその種類を示す
まずUnicode。これは文字コードの業界規格。ちゃんとまとめるとボリュームが出そうなので割愛。
そして種類ってなんぞ、というと、これは文字データをメモリに配置する方式の種類を指します。

UTF-16で「1」を表現しようとすると、実は2通りの方法があります。
1つは「00 31」もう1つは「31 00」。それぞれの方法にはビッグエンディアン、リトルエンディアンという名前がついており、人間に理解しやすいか、コンピュータが処理しやすいかの違いがあるらしいです。
で、BOMはそのどちらのエンディアンを使っているかを示しています。

Q. てことは、BOMってつけたほうがよくない?
A. PHPやHTMLにおいてはBOM無くていいよ
W3Cでも「ファイルはUTF-8で作成することを推奨」とされている通り、WEB業界でファイルを保存する際はUTF-8がスタンダードです。(なぜか?ってところまでは今回調べられてないですが)
で、UTF-8にはBOMをつける必要がないのです。なぜなら、エンディアンが関係ないから。
じゃあUnicodeであることを明示しなくていいの?という疑問もありましたが、これはmeta情報で

と指定すればOKですね。
逆にBOMをつけてしまうと、その分が空白行として出力されてしまい、冒頭で挙げたような「ページ上部に隙間が!?」のような望まない挙動をしてしまいます。

BOMはいらない子…とだけ思っていましたが、ちゃんと役割があったのですね!
それでは、きょうはこのへんで。

VPNってなんだっけ?

こんばんは、有村です。
突然ですがVPNってなんですか?

IT業界に居れば、必ず耳にはしますよね。たぶん。
今日、こんなやりとりがありました。

有村「社外で社用PC使いたいやで」
先輩「じゃあVPNの設定してもらったほうがいいね」
有村「VPN設定したら何ができるんや」
先輩「社内の共有フォルダや、社内の開発用環境にアクセスできるやで」
有村「^^^^^^?????」

今まで見て見ぬ振りをしてきたVPNとやら…なんだか知っておかないとやばそうな気配です。
というわけで調べました。

Q. VPNって何の略?
A. Virtual Private Network
バーチャルなプライベートネットワークのことなんですね!なるほど!
…ん?じゃあプライベートなネットワークって具体的にどういうことなんでしょう?
会社に当てはめてみると…
・社員用の共有フォルダ
・社内のプリンタ
なるほど、掴みとしては「外部に公開されていないネットワーク」「限られた場所でしか繋げないネットワーク」といったところでしょうか?

Q. VPNって何してくれるの?
A. プライベートネットワークに外から繋げるようにするよ!
インターネットを海だとするならば、プライベートネットワークは、言わば外界とは断絶した島でしょうか?
VPNは、その遠く離れた閉鎖島と自分の島とを繋ぐため、海上に専用の道路を通して、互いが行き来ができるようにしてくれるヤツのようです。
専用の道路なので、外界からは自分しか行き来はできないし、そこを通るときは都度暗号化が行われるので、セキュリティも担保できるよ!という仕組み。

なるほど!VPNは専用道路!ということで本日の結びとします。
それでは、きょうはこのへんで。

Apacheってなんだっけ?

こんばんは、有村です。
空調ってなんでこう暑かったり寒かったり気まぐれなんですかね?自分専用エアコンが欲しいですね。

さて、今日も分かったつもりのおまじないを潰していく記録を残します。
テーマはApacheってなんだっけ?です。

かつて業務でローカル環境を作ったとき(ちなみにWindowsだった)、Apache入れたりしましたねぇ…。でも、それは手順としてそうなっていたからで、「あぁ、これを入れないとサイトって動かないんだな」くらいにしか思っていませんでした。
でも改めて考えると、Apacheって何をしてくれてるんでしょう?こいつがいないと何ができないのでしょうか?
というわけで、調べました。

Q. Apacheちゃんは何してるの?
A. A◯azonの中の人のような働き。
例えば。

リクエスト送る人 … 私たち。お客さん。
リクエスト … 商品の注文。
レスポンス … 商品。
Apache … A◯azonの中の人。
サーバ … A◯azonの倉庫。
レンダリング … 開封。(ちょっと違うけどニュアンスとして)

お客さんが「これが欲しい!」ってネットで注文をする。
A◯azonの中の人は、A◯azonの倉庫から注文された品を引っ張ってくる。
A◯azonの中の人は、注文された品を発送する。
お客さんは注文した品を受け取り、開封する。

なんかこんな感じ。
Apacheがいなかったらサーバはただの倉庫なだけで、ユーザがリクエストをしてもそれを処理してくれる人がいない…ってなるわけですね。

Q. なるほど、じゃあサイト作りたかったらApacheを入れればいいんですね!
A. Apacheだけじゃないよ!
なんと、その仕組みを提供できるのは、IISとか、Nginxとか、他にも存在するのです!
有償、無償も含めてそれぞれ特徴があるようなので、サイトの性質に応じて都度選択すればよいのでしょうか。
それぞれの差異を調べるのは踏み込んだ領域になりそうなので、今回は「他にもあるんだ〜」程度でとどめました。

とりあえず、ApacheはA◯azonの中の人。おぼえた。
それでは、きょうはこのへんで。

エンジニア女子

「エンジニア女子」

たまに聞きますよね、このワード。
エンジニアには男性が多く、私の会社もエンジニアの女性は3割?ほどでしょうか?

女子って、いつまでが女子なのかという問題はさておき、
一応、「エンジニア女子」。

でも、私の場合、元々は文系だし、
習慣や思考を変えなきゃなーと思うのですが、まだまだ難しい。
とりあえず、学ぶ癖と習慣を身につけなきゃですね。

いつか、エンジニア女子会とかもできたらいいな。