読者です 読者をやめる 読者になる 読者になる

目黒川の桜

仕事終わりに中目黒へ夜桜を観に行った。

駅改札からもうかなりの人混み。配備された警備員が声を張り上げていた。

目黒川両脇には、屋台が並んでいて、ちょうちんの灯と合わせてまるで祭りのような雰囲気。 屋台ではワインを売ってる店が多くて、中目黒だなあという感じ。

とにかく混んでいて、終始身動きが取りにくかった。でもこの桜の景色はここでしか観れないんだろうな。

f:id:tic40:20170407204909j:plain

第218回TOEIC結果

結果

score: 785

  • listening: 440
  • reading: 345

過去最高点を20点だけ更新した(765 -> 785)。

readingは前回の320 -> 345 と25点アップしたが、実感はない。 最後の5問はほぼ読む時間がなく勘で答えたぐらいだから、運が良かっただけかもしれない。

readingがずっと300半ばで伸び悩んでて、どうすればいいのやら。 今日前回の結果が出たばかりだが、早速次の試験は今週だ。

前回試験からあまり勉強はできていないが、残りの時間はTOEIC公式問題集のreading partを繰り返しやろうと思う。

次回は4/9。

デジタル一眼の基礎知識まとめ

一昨年ミラーレス一眼を買った。Nikon J5 ダブルレンズキット。

購入して1年以上経っているが、未だにプログラムオート撮影しか使ったことがない。 もうちょっとこだわった写真を撮りたいと思うようになったので、勉強することにした。 Nikonのオフィシャルにデジタル一眼レフカメラの基礎知識という素晴らしいページがあったので参考にする。

www.nikon-image.com

以下は上記サイトのまとめ。

露出ってなに?

シャッタースピードってなに?

  • シャッターが開いている時間のこと
  • 1sec, 1/2sec, 1/4sec…のように表される
  • シャッタースピードが早いと、光は少なく、一瞬の動きを捉えられる(ブレが減る)
  • シャッタースピードが遅いと、光は多く、ブレは増える

絞り値(F値)ってなに?

  • レンズを通って撮像素子に写る像の明るさのこと
  • F1.4, F2, F2.8…のように表される
  • 絞り値を大きくすると、絞られレンズを通る光は少なくなる。反対に絞り値を小さくすると、絞りが開かれ光は多くなる。
  • 絞り値を大きくするほど、ピントの合う範囲が広がる
  • 絞り値を小さくするほど、ピントの合う範囲は狭くなる

被写界深度ってなに?

ピントをあわせた位置に対して、その前後のピントが合って見える範囲を、「被写界深度」と言う。

絞り値とシャッタースピードってどう組み合わせばいいの?

絞りとシャッタースピードの組み合わせで明るさは、同じ明るさでの撮影でも2通りの調整が可能。 実際にNikon J5 のマニュアル撮影で同程度の露出での違いを比較してみる。

シャッタースピード: 1/15 | F値:16 f:id:tic40:20170330212515j:plain

シャッタースピード: 1/1000 | F値:2 f:id:tic40:20170330213027j:plain

上記2枚の明るさはほぼ同じだが、被写界深度(ピントの合う範囲)が違っている。 F値が大きい上の写真は、ピントが広範囲に合っているが、下の写真はF値が小さいため、ピントが合っているのはカップのみで背景がボケていることがわかる。

ISO感度ってなに?

  • カメラが光を捉える能力のこと。
  • 国際標準機構(ISO)で策定された規格なのでISO感度と呼ばれる
  • ISO感度を2倍(例えばISO100 -> ISO200) に上げると、同じ絞り値であれば2倍早いシャッタースピードで撮影できる。
  • 暗い場所での撮影時に、ISO感度を上げれば、シャッタースピードを速くしてブレを抑えることができます。

シャッタースピード: 1/15 | F値: 1,8 | ISO感度: 400 f:id:tic40:20170331084226j:plain

シャッタースピード: 1/60 | F値: 1,8 | ISO感度: 1600 f:id:tic40:20170331084408j:plain

上記2枚の写真を比較すると、あまり違いがない。 つまり上の設定であればほぼ同じ写真を撮ることができる。

ではISO感度を上げるメリットはなにか。

  • ISO感度を上げるとシャッタースピードが速くできるため、手ブレや被写体ブレを防ぐことができる。
  • ISO感度を上げるとざらつきが発生することがある。ISO感度を上げることは、電気信号を増幅すること。信号が増幅されるときにノイズも増幅されるため、ISO感度を上げるほどノイズが増える。
  • ブレなどを防ぐために必要であればISO感度を上げる。必要がなければISO感度は上げすぎない

オートフォーカスってなに?

  • オートフォーカス(AF)とはカメラがピントを自動的に合わせる機能のこと。
  • シャッターボタンを半押しするとAFでピントが合う。

ホワイトバランスってなに?

  • ホワイトバランスとは、被写体に当たる光の種類に応じて変わる色味を調整して、白いものを白に近い色に仕上げる機能のこと。

レンズの性能はどこを見ればいいの?

焦点距離と画角

  • レンズの焦点距離とは、ピントを合わせたときの、レンズから撮像素子までの距離。
  • XXmmという数値で表される。ズームレンズの場合は、XX-YYmmというように焦点距離の両端の数字で表される。
  • 撮影画角とは、撮像素子に写る範囲を角度で表したもので、画角が広いと写る範囲が広くなり、画角が狭いと写る範囲が狭くなる。
  • 焦点距離の短いレンズほど画角が広くなり、写る範囲が広がる。
  • 焦点距離の長いレンズほど画角が狭くなり、被写体が大きくなる。

f:id:tic40:20170401095731j:plain

これはダブルレンズキットについている単焦点レンズ。このレンズの焦点距離は18.5mm。

レンズのフォーマット

レンズにはフォーマットがあり、どのレンズでも使えるというわけではない。 nikon J5 は CXフォーマットを採用しているため、DXやFXフォーマットは標準では使用することはできない。

遠近感: 広角レンズと望遠レンズの違い

  • 広角レンズは画角が広いため「近くのものはより大きく、遠くのものはより小さく」写る。
  • 望遠レンズは画角が狭いため、広角レンズほど近くのものと遠くのものの差が現れにくくなる。

開放絞り値(開放F値

  • レンズの絞りをもっとも開いた状態のことを「開放絞り」という。
  • 開放絞り値がそのレンズで設定できるもっとも小さい絞り値になる。レンズに表記されており、nikon J5 のダブルレンズキットの単焦点レンズだと'1:1.8'と書かれている部分、1.8が開放絞り値である。
  • 絞り値は、レンズを通って撮像素子上に写る像の明るさを表し、開放絞り値が小さいレンズは、開放絞り値が大きいレンズよりも、撮像素子上に写る像を明るくできる。そのため開放絞り値の小さいレンズを「明るい」レンズと言う。
  • 絞り値が小さいほど、被写界深度が浅くなり、背景などのボケを大きくできますので、開放絞り値の小さいレンズほど大きなボケを作り出せる。

最短撮影距離

  • レンズの最短撮影距離とは、被写体にピントを合わせることができる最短の撮影距離のこと。
  • 最短撮影距離よりも近い場所の被写体にはピントを合わせることができない。
  • レンズ自体には記載がない場合はレンズの仕様から確認できる。

http://www.nikon-image.com/products/lens/1nikkor/1_nikkor_185mm_f18/spec.html

画質モードと画像サイズ

  • RAW、JPEGTIFFなどのファイル形式が存在する。
  • 画像編集に向いているのはRAW形式。JPEGは圧縮されるため画像編集には向いていないが、ファイルサイズはRAWに比べて小さくなる。

まとめ

nikon J5 好きです。

多摩動物公園へ行く

多摩動物公園に行ってきた。

多摩動物公園駅を降りたら目の前がもう多摩動物公園入り口になっている。

入り口には「アリからゾウまで」の文字。A to Zってことかな?と思ったけど、それだとant to elephant だから違うよなあ。とかどうでも良いことを考えながらチケット購入窓口へ。

開園時間9:30の5分前に到着。既に結構入場行列ができていた。 入場料金は600円。動物園ってこんなに安いのか。600円なんて表参道ならコーヒー一杯しか飲めないっていうのに。

逆時計周りに周る。アフリカ園-オーストラリア園-アジア園を見て回った。 多分ゆっくり周ったら一日は楽しめる。割りと坂道が多く、一通り見て回るだけで4-5kmは歩くのでスニーカーに軽装が良い。

ショウジョウトキはとても美しかった。トラは生で見ると本当に迫力がある。フクロウはかわいすぎた。サーバルちゃんは人気。

昔子供の頃、動物園に連れて行って貰ったときはちっとも楽しくなかった。大人になってわかることもあるし、その逆もまたあるんだろうな。

f:id:tic40:20170320093029j:plain

f:id:tic40:20170320093308j:plain

f:id:tic40:20170320163846j:plain

f:id:tic40:20170320115603j:plain

f:id:tic40:20170320094727j:plain

f:id:tic40:20170320101022j:plain

f:id:tic40:20170320103659j:plain

ミュシャ展へ行く

国立新美術館ミュシャ展へ行ってきた。

www.mucha2017.jp

f:id:tic40:20170312173713j:plain

アルフォンス・ミュシャ - Wikipedia

メイン展示は、スラヴ民族の神話、歴史を描いたスラヴ叙事詩。チョコ以外での公開は初とのこと。

入場して、いきなり6m x 8m という超巨大な絵画がでてきた驚いた。

ミュシャは花をモチーフにした割りとグラフィックデザイナーというイメージを持っていたので、こんな壮大な歴史画を残していたことは知らなかった。

スラヴ叙事詩は、壮大な歴史画といっても、どこかファンタジーっぽい感じがミュシャらしい。血や虐殺など、歴史画にとっては重要な画をあえて描かないのはデザイナーだなあ。

スラヴ叙事詩がメインではあるが、その他にもポスター作品や商業的な作品展示もある。 ポスターのデザインは100年以上昔の作品なのに今風というか、全く古臭さを感じないのがすごい。

残念ながらメイン展示の写真を撮ることはできないが、いくつか写真撮影可能なスペースもあったので撮影してきた。

f:id:tic40:20170312165043j:plain

f:id:tic40:20170312165030j:plain

同時に開催されている草間彌生展が超行列だったのに驚いた。 あのドットがそんなに観る価値あるんだろうか、自分はよくわからない。

ともかく草間彌生を観に行く人は、ミュシャ展にも行くべき。

phpdocumenterでpackages下にdefault.html, Default.htmlが出力される問題

phpdocumenterでソースコードからドキュメント自動生成をしたときに起きた問題。

https://github.com/phpDocumentor/phpDocumentor2

# ドキュメント生成コマンド
$ phpdoc run -d <SOURCE_DIRECTORY> -t <TARGET_DIRECTORY> --template=responsive-twig

すると、TARGET_DIRECTORY/packages配下にdefault.html と Default.htmlが出力される。

$ ls TARGET_DIRECTORY/packages
default.html  Default.html

これをwindows環境で展開すると問題となる。 windows環境だと、どうやら大文字・小文字をファイル名としては区別しないようだ。なんてポンコツなんだ…

helpを読む。

$ phpdoc run -h
...
  --defaultpackagename[=DEFAULTPACKAGENAME] Name to use for the default package. [default: "Default"]
...

–defaultpackagename=XX オプションを指定するとDefault.htmlのファイル名を変更できる様子。

$ phpdoc run -d <SOURCE_DIRECTORY> -t <TARGET_DIRECTORY> --template=responsive-twig --defaultpackagename=foo
$ ls TARGET_DIRECTORY/packages
default.html  foo.html

うむ。

MySQLでタグ機能を実装しAND検索する

商品(item)にN個のタグを設定し、tag名(tag id)で商品をAND検索できる機能を実装したい。

table design

以下の3つのテーブルを用意する

  • item: 商品テーブル。タグの設定対象
  • item_to_tag: itemとtagの中間テーブル
  • tag: タグテーブル

f:id:tic40:20170225133709p:plain

item table

mysql> select * from item;
+----+-------+
| id | name  |
+----+-------+
|  1 | item1 |
|  2 | item2 |
|  3 | item3 |
+----+-------+

item_to_tag table(中間テーブル)

mysql> select * from item_to_tag;
+----+---------+--------+
| id | item_id | tag_id |
+----+---------+--------+
|  1 |       1 |      1 |
|  2 |       1 |      2 |
|  3 |       1 |      3 |
|  4 |       1 |      4 |
|  5 |       2 |      4 |
|  6 |       2 |      5 |
|  7 |       3 |      1 |
|  8 |       3 |      6 |
+----+---------+--------+

tag table

mysql> select * from tag;
+----+------+
| id | name |
+----+------+
|  1 | tag1 |
|  2 | tag2 |
|  3 | tag3 |
|  4 | tag4 |
|  5 | tag5 |
|  6 | tag6 |
+----+------+

AND検索

‘tag4'かつ'tag5'が紐付けられているitemを検索する(item.nameはitem.idに置き換えてもよい)

mysql> SELECT item.*
    -> FROM item
    -> JOIN item_to_tag AS itt ON item.id = itt.item_id
    -> JOIN tag ON itt.tag_id = tag.id
    -> WHERE tag.name IN ('tag4','tag5')
    -> GROUP BY item.id
    -> HAVING COUNT(item.id) = 2;
+----+-------+
| id | name  |
+----+-------+
|  2 | item2 |
+----+-------+

AND検索(group_concat と FIND_IN_SET を使う)

mysql> SELECT * FROM item
    -> WHERE EXISTS (
    -> SELECT group_concat(tag_tmp.name) AS tags
    -> FROM tag AS tag_tmp
    -> JOIN item_to_tag AS itt ON tag_tmp.id = itt.tag_id
    -> WHERE item.id = itt.item_id
    -> HAVING FIND_IN_SET('tag4', tags) AND FIND_IN_SET('tag5', tags)
    -> );
+----+-------+
| id | name  |
+----+-------+
|  2 | item2 |
+----+-------+

まとめ

  • 案外素直にAND検索のsqlが書けなかった。もっと良い方法があるかもしれない。

SQLアンチパターン

SQLアンチパターン

実践ハイパフォーマンスMySQL 第3版

実践ハイパフォーマンスMySQL 第3版