A Day in the Life

7artisans 50mm F1.1 が届く / 2020年11月29日

ライカMマウント用のレンズ、7artisans 社製の 7artisans 50mm F1.1 が届く。TTartisan と社名が似ているのだけど、TTartisan は 7artisans の製品を作っているメーカーで、最近 TTartisan も自分たちで製品を作り出したらしい[要出典]。明るい大口径の F1.1 がどんなものか使ってみたかった、かつブラックフライデーで安かったのでつい買ってしまった。

というわけで今日は午後から山手、山下公園、レンガ倉庫、あたりをぐるっと散歩しながら写真を撮る。

最初の家系ラーメンは家で作って食べた銘店伝説 横浜ラーメン吉村家のラーメン。平野レミレシピの豚バラですぐに作れるチャーシューがおいしく嬉しい。銘店伝説は我家の定番になりつつある。

山手のバラは季節はもう終わってしまったけど、ちょっとだけ残っていた。


途中、好きな喫茶店、喫茶エレーナで休憩する。栗のパフェが美味しかった。


大口径だと人を撮りたくなるようで、公開していないが妻の写真多し。


夜の F1.1 の明るさにはびっくり。明るいぞ!


普段の散歩は大概日光が出ているときなので、横浜の観光地の夜景は久しぶり。夜は夜で楽しいので時たま散歩したい。


7artisans 50mm F1.1 は前評判通り、開放あたりだとピントが中心にあたっていてもソフトフィルターがかかった感じのモヤッと具合、パープルフリンジ、結構絞らないと周辺以外のレンズ収差がひどい、等々あれど、F1.1が400gで、お値段もセール時なら4万円以下で手に入り、面白い世界が撮れるので十分楽しめそう。

TTArtisan 50mm f/1.4 ASPH が届く / 2020年11月28日

朝ジョギング25分。気分を変え、普段とは逆方向のルートへ行く。時々散歩する道だけど、夜明け前はぜんぜん雰囲気が違っていて楽しい。昼は久しぶりに海沿いに座って、惣菜パンを食べる。ゆっくりとした良い時間だったので、定期的に海沿いで食べたい。


その後届いた深セン企業 TTArtisan のレンズ、TTArtisan 50mm f/1.4 ASPH を持って散歩。いや、ブラックフライデーで安くなっていたのでつい…。外観は SUMMILUX-M f 1.4/50mm に似ているこのレンズ、明るさと焦点距離も同じだけど、値段は新品 SUMMILUX の消費税より安いので、つまり実質無料のようなもの。

Summilux-M と比べるとどうよ、について

Leica Summilux-M 50mm 1.4 Asph: If you can easily afford the Leica lens I wonder why you are reading this.

--REVIEW: TTARTISAN 50MM 1.4

とレビューサイトに書いてあって面白かった。

2-3時間使ってみた感じ、フレアが逆光だと結構豪快に入るなー、F1.4はちょっと中央からずれるとレモンぼけになり、F2.0は角ボケに初見だとボケ味はそんなに好みじゃないかもなぁ。開放はピンと周辺でも甘めだけど、絞るとそれなりにパキっと映るなーという感想。もうちょっと重さが軽ければ(レンズで約400g、マウントアダプターと合わせて500gぐらい)よいのだけどね。


夜は最近毎週恒例の5分花火。時間が短いのでもう三脚は持っていかず手持ちで。5分でもやっぱり花火が見れると楽しいね。風もあったため結構寒く、冬が感じられた。

ヨコハマミライト2020 / 2020年11月27日

朝、4時過ぎに目覚め、今日は釣りに行きたい欲が出てきたので久しぶりに近所にサビキ釣りに行く。ジョギングでこの付近の釣果を日々見ていて、最近はぜんぜん、釣れても小アジちょっとぐらいというのがわかってはいたものの、やっぱり釣れず、風もあってだいぶ寒かったので日の出前に引き上げる。うーん、残念。

夜はヨコハマミライト2020のイルミネーションを見ながら散歩をする。1.5kmも続いてるのかー。

大口径の丸ボケが楽しくてそればかりになりがち。

謝甜記の粥・電子先幕シャッターでのケラレ・胃液の逆流 / 2020年11月26日

朝ジョギング25分。少しづつではあるが、徐々に長く走れるようになり嬉しい。海辺では GoPro で動画を撮っている人がいて、休憩がてら雑談すると、納品物で朝日を撮っているが、今日は曇っていてNGそう、またこなくては、という話でご苦労さまです。

そしてそのへんに濡れた靴下が落ちていたので訝しく思っていると、さっき若い二人が服のまま海に飛び込んで、寒い寒いとびしょ濡れで上がって脱いだ靴下らしい。砂浜でもなく柵を飛び越えないと海に入れないのに、そんな馬鹿なこと(若気の至り)をする人達もいるんだなぁ。

昼食は久しぶりに横浜中華街へ行き、謝甜記 貮号店で粥を食べる。粥の味も濃すぎず美味しく、また値段も人気店なのに700-800円の物が多く、人気が出るわけだ。店前のサンタはお店のトレードマークなのね。

その後山下公園からぐるっと散歩をして戻る。バラも終わりな感じだ。


昨日から使っている、Voigtlander NOKTON classic 35mm F1.4 II SC VMがやたらケラレるな、レンズフードをつけてないからかな、と思っていたのだけど、これが噂に聞く電子先幕シャッターとオールドレンズでケラレが出る現象なのか。

この写真なんかはわかりやすく四辺の隅にケラレが出ている。

1/2000~ぐらいのシャッタースピードで電子先幕シャッターだと発生しやすい現象で、日中太陽光の元でF1.4で撮るとほとんどそのシャッタースピードを超え、大概発生してしまう。電子チップがのってるレンズの場合はタイミングを同調させることで防いでいるらしいが、オールドレンズは無いので発生すると。そしてa7Cはメカシャッターがないのであった。

a7Cを買った当初はメカシャッターは使わないだろうから無くても良いと思っていたのだけど、まさか使いたいシーンが来るとは。こうやって、なぜこの機能が必要なのか、違いがなにか、を学んでいくのか。


昨晩、寝ている最中に胃液が逆流してきて、夜中起きる。最近まで発生したことがなかったのだけど、この1年では4回ほどあり、頻繁というわけではないが時たま発生する。この1年の変化といえば結婚して2人で1つのベットで寝ることになったことで、配置的に右向きで寝る、もしくは寝返りをあまりうてなくなったのだけど、右向きの寝方だと発生しやすくなるらしい。しょっちゅう起きるわけでもなく、とりわけ困ってるわけではないのだけど。

あとは肥満気味でも発生しやすくなるらしく、ここ1年体重が右肩上がりだったので、体重減量成功させたい。

あっちこっちふきんを買った

r7kamuraさんの記事、あっちこっちふきんを読んで、そういえばそんな便利なものがあった、昔に使っていたなぁと思いだして購入した。

マイクロファイバー繊維で食器がきれいにふけすぐ乾いて便利で、そのような用途に使おうと思っていたのだけど、パッケージを見ると家の掃除にも使えるよう。パッケージ名もあっちこっちふきんだしね。

というわけで、家のスピーカーの上部を拭いてみる。このスピーカーはいわゆるピアノ塗装仕上げなのだけど、徐々に汚れがおちなくなってきて、ピアノクロスのようなもので拭いても薄っすらと細かい汚れが落ちなくなってしまったのだ。

しかしあっちこっちふきんで拭くと驚きの汚れのとれよう!すごい!心地よくなる綺麗さ!!1。メラニンスポンジで落ちない汚れを初めてとったときのような感動があった。便利すぎるので食器用とは別にもう一枚買って、家の掃除でも活用しようと思う。

Voigtlander NOKTON classic 35mm F1.4 II SCが届いた・旅行で動画をもっと撮るべきだった / 2020年11月25日

新しいレンズのVoigtlander NOKTON classic 35mm F1.4 II SC VMが届き、さっそくレンズを付け近所を散歩する。オールドレンズの味わいの作りだけあって、2019年のレンズなのに開放からピントが合ってもボケていて味がある。また SC はよりコントラストが淡く、フレアやゴーストが出やすくて面白い。フルサイズでF1.4の明るさのレンズは持っていなかったので、こちらも新鮮。

ライカMマウント用のレンズで、ライカMがレンジファインダー機なため、作りとして最短撮影距離が長くなる(35mmだと70cm)のだけど、マウントアダプターのヘリコイドを伸縮させることでミラーレスではさらに接写ができる。同時に手に入れたVM-E Close Focus Adapterではイメージセンサーから最大4mm離せるようになる。この4mmで最短撮影距離を70cm→28.7cmと短くすることができ、めちゃくちゃ接写、とまではいかないまでも、まぁまぁ接写ができるようになる。

ソニーE用には、Voigtlander NOKTON classic 35mm F1.4 E-mountがあり、こちらは最初から最短撮影距離が30cmで、MFのフォーカシングが2段でない(アダプタをつけると二つのフォーカスリングが発生する)ことや、フォーカスリングを回した時にピント拡大できること、Exifデータへのレンズ情報の反映もでき、重さもアダプターを考慮するとソニーEのほうが若干軽いと良いことがいくつもあるのだけど、今後もライカMマウントのレンズを使いたくなったり(いつか Summilux 35mmが何故か手元にあったりするかもしれないし)、SCのよりオールド風に写る描画だったりを考えてVMマウントの方を選んだ。というか外観がVMのレンズのほうがかっこよい!!1

はー楽しい散歩だった。


Google Photos の整理をしていたら、世界旅行中の動画が数十個見つかる。大抵は誰かに送るためにスマフォで撮った短い動画なのだけど、写真とは違った見え方・情報量で、強く記憶が呼び覚まされる。

旅行中は写真の方に気を取られてしてしまっていたのだけど、もっと気軽にスマフォで動画を撮るべきだったなぁ。次に行くときはもっと動画を撮ろう。

五十嵐プライヤー IPS ソフトタッチコンビプライヤー PH-200 を買った

また三脚座に大ネジ(3/8インチネジ)がハマって取れなくなってしまい、前回は三脚の大ネジを輪ゴムを挟んで外すの方法で取ることができたのだけど、今回はぜんぜんだめ。輪ゴムを4つほど摩擦で切ってどうにもならないなーと思っていたところ、ペンチの先っぽが樹脂になった商品があることを知り、五十嵐プライヤー IPS ソフトタッチコンビプライヤー PH-200を買ってみた。

結果、ネジを簡単に取ることができて満足。金属だと滑ってつかみにくいものはもちろん、金属のペンチだと痛めてしまうようなものにも使えそうで良い。樹脂は使ってるうちにだんだんぼろぼろになっていくのだけど、スペアも安価で売っているのも良いね。

大きさ的には普通のペンチサイズなので、ラジオペンチサイズのラジぷらでも良かったかもしれない。

2020年11月24日

朝ジョギング25分。一時間遅く起きたので、ジョギング中はすでに明るくなった後だった。風もあり、結構寒い。雲が特徴的だった。

夕方、久しぶりにサウナへ。まだ冬至まで一ヶ月ほどあるというのに、17時にはだいぶ暗いね。


ちまちまと観ていた、アニメ鬼滅の刃26話を観終わる。26話はストーリーが気になる展開で終わっていて、これは続きが見たいぞ、という上手い終わり方。続きは映画で、は炎上しやすいのだけど、むしろ待望という感じで受け入れられたと思ってるので、当時から愛されアニメだったのだろうなぁ。そういえば、2クールのアニメを最後まで観終えたのはいつぶりだろう、だいたい途中で飽きてしまうのだよなぁ。

オリンパスのカメラ用APIライブラリを作った

オリンパスのカメラ用のWiFi経由で操作できるAPI ライブラリ(Ruby用)を作った。カメラごとのAPIを自動で作成し、カメラのシャッターが押せたり、画像ファイルをダウンロードしたり、電源が切れたりする。また、このライブラリを利用して画像をダウンロードする cli インターフェイスのolympus-camera-dlというものも作った(というかこれが作りたくて、APIライブラリは副産物)。

こんな感じで使える。

$ olympus-camera-dl --delete --power-off /home/pi/photos/E-M1MarkII/
Connected: E-M1MarkII
11 images found
[1/11] DOWNLOAD: /DCIM/101OLYMP/PB202134.JPG
[1/11] WRITE: /home/pi/photos/E-M1MarkII/PB202134.JPG (4,517,267 byte)
[1/11] DELETED: /DCIM/101OLYMP/PB202134.JPG on camera
[2/11] DOWNLOAD: /DCIM/101OLYMP/PB202135.JPG
[2/11] WRITE: /home/pi/photos/E-M1MarkII/PB202135.JPG (4,380,822 byte)
[2/11] DELETED: /DCIM/101OLYMP/PB202135.JPG on camera
...
[11/11] DOWNLOAD: /DCIM/101OLYMP/PB202144.JPG
[11/11] WRITE: /home/pi/photos/E-M1MarkII/PB202144.JPG (4,466,991 byte)
[11/11] DELETED: /DCIM/101OLYMP/PB202144.JPG on camera
Power off

オリンパスのカメラ用のAPI

USB経由で叩く場合、カメラAPI抽象化ライブラリであるlibgphoto2を使うと大抵の操作はできるのだけど、WiFi経由で利用がしたかった。オリンパスのカメラのWiFiアクセスポイントモードで起動し、そのアクセスポイントにアクセスすると、http://192.168.0.10/ という IP 決め打ちでカメラが建てている httpd にアクセスができ、そこのエンドポイントを叩くことで操作ができる。

以前のカメラでは http://192.168.0.10/DCIM という URL にアクセスすると、HTMLを返す簡易画像ビュワーを表示でき、この HTML をスクレイピングすることで画像の取得が可能だった。たとえば、olympus-photosync というツールでは、/DCIM を叩いて画像のダウンロードを行っている。

しかしながら、例えば E-M1 mark III などの最近のカメラでは /DCIM にアクセスしても画像ビュワーが表示されなくなった。これはスマートフォンのアプリ経由で使ってね、ということでレガシーなインターフェイスが無くなるのはしょうがない。

オープンプラットフォームカメラ通信仕様書

他に叩けそうなAPIは無いのかと調べてみると、どうやらオープンプラットフォームカメラ通信仕様書 [english]なるPDFがあった(オリンパスのサイトからはリンクが見つけられなかった…)。これはディスコンになってしまった、意欲的なカメラ OLYMPUS AIR A01が出た時に作られたようだ。そういえば2010年台は大手企業がこれからはオープンプラットフォーム・オープンイノベーションや!と言っていた時期があったね…。

ただこの通信仕様書は、ちゃんと実装されてるのは OLYMPUS AIR だけと思われ、ほかのカメラは API の形式が微妙に違ったり、APIが増えたり減ったりしている。

get_commandlist.cgi から API を作る

じゃあオリンパスが出している、カメラ操作ができるスマートフォンアプリは何を元に叩いているのかと調べると、そのカメラで叩ける API 一覧が出力されている http://192.168.0.10/get_commandlist.cgi を元にしているようだ(get_commandlist.cgi のレスポンス例)。ただもちろん、カメラごとにこの get_commandlist.cgi の出力は違う。例えば、ファイル削除API の exec_erase.cgi は PEN-F には無いが、E-M1-2/E-M1-3 には存在する。

そのため、get_commandlist.cgi の結果から ruby のメソッドを define_singleton_method で作るようにしている。また response も XML だったり text だったりするので、そのへんもよしなにしている(text/xml でレスポンスが返ってくるのに空BODYだったりするので、あんまり当てにならない)。

なおE-M1-2/3で利用できそうなget_camprop.cgi を叩くと500になってしまい、問題ないAPIの叩き方がいまだに解らない…。

よく使いそうな cgi の path

単に cgi を叩けば良いので、わざわざこのライブラリを使わなくても curl などでも簡単 API を叩くことができる。

  • /get_imglist.cgi?DIR={path}
    • いわゆる ls。ただ ?DIR=/ ではエラーになり、?DIR=/DCIM と画像格納 path /DCIM をまずは叩かないと何も表示されない。
  • path そのまんま
    • オリジナル画像をダウンロード
    • http://192.168.0.10/DCIM/101OLYMP/PB120009.JPG とかね。
  • /set_playtargetslot.cgi?targetslot={N}
    • ターゲットにするSDカードスロットを変更
  • /exec_erase.cgi?DIR={path}
    • いわゆる rm
  • /exec_pwoff.cgi
    • 電源を切る

その他:撮影して WiFi に繋いで即アップロードはとても便利

jpeg の撮って出しは自動で Google Photos にアップロードされるようにしているのだけど、とても便利。

家においてある Raspiberry PI は各種カメラのアクセスポイントにつながったらスクリプトを自動実行をするようにしているので、写真を撮ったら カメラの WiFi ボタンをタッチするだけでほおっておけばアップロードされるので便利に使ってる(参照: ftp・ftps でアップロードしたファイルを Google Photos にアップロードする)。

# !/bin/bash

/sbin/iwgetid > /dev/null || exit 1

DOWNLOAD_DIR="/home/pi/ftp_uploads/photos/"`ruby -r 'olympus-camera' -e 'print OlympusCamera.new.get_caminfo["model"][0]'`
/usr/local/bin/rlock /tmp/olympus-dl.lock -- /usr/local/bin/olympus-camera-dl -c 2 --delete --power-off $DOWNLOAD_DIR

Next.jsを10へ・markdown 処理をちょっと変えた / 2020年11月23日

今日から旅行の予定だったのだけど、昨日の午後から妻の体調が崩れ、夜には明日から旅行できる感じの体調ではなくなってしまったので、昨日の晩にキャンセルしたのであった。早く良くなるとよいな。

することも(看病以外は)特に無くなったので、午前中は仕事をして午後はこれまた安オールドレンズであるロシア製 Helios 44M を持って少し散歩をする。トップの写真、釣りおじいちゃんたちはカスタマイズした釣りチャリに乗って釣り場に現れるのだけど、その自転車。電動自電車も多く、お年寄りの負担も軽そうだ。


Next.js 10 が出ていたので、このウェブサイトの Next.js を 9 から 10 にする。とりわけ問題無く動いている、ように思える。このウェブサイトは国際化しないから関係ないけど、Internationalized Routingが標準機能に入ったのは嬉しいね。これで ja.example.com / zh-cn.example.com などのドメインや example.com/ja/xxx なんかのpathでの言語ごとの変更が簡単にできるように。

そろそろ実装されてもよいのでは、と思っている rss(xml) などの html ではないコンテンツの静的な出力は需要がないのか未だに Next.js ではできないのだけど…。


ついでにmarkdown周りの処理にも手を入れたくなってきた。いままで markdown から html への処理は、何も考えずにremark-htmlまかせにしていたのだけど、unifiedを使った処理へと変更。まずは remark-html と同じような出力にするために

remark().use(remarkHtml).processSync(markdown).toString()

unified()
  .use(remarkParse)
  .use(remarkRehype, { allowDangerousHtml: true })
  .use(rehypeStringify, { allowDangerousHtml: true })
  .processSync(markdown)
  .toString()

みたいな処理へと変更する。実際の処理工程は remark-html のときと変わっていないはず。実装やドキュメントをちょっと読むと、各種処理の内側では rehype のほうでは HTML に特化したASTの hastを、remark のほうでは markdown AST のmdastを、hast-util-*mdast-util-*、大本ツリー仕様であるのunistunist-util-*を使っていじる感じなのね。