2020年4月10日金曜日

クローズアップレンズの焦点距離について調べました

撮りたいものが小さいと近づいて撮ろうにもピントが合わないことってよくありますよね。。。
今回、対策としてクローズアップレンズを購入しました。

クローズアップレンズはフィルター感覚で取り付けられる虫眼鏡レンズ。
通常のレンズと違て安価なので購入しました。

ただ、レンズにはACとMCという種類と、No.1~No.10までの番号がありドレを選ぶべきか悩ましいかと思います。

まず、ACとMCについてはACは色収差を抑える機能があるもの。
値段が気にならなければACのほうが良いってことかな。なのでそれ以上の説明は本記事ではしません。


今回調べたのは、No.1~No.10のどの番号を買うべきか?ってところです。



まず、公式ページに載っている基本の情報として番号が大きいほど大きく写る(近づける)
ってこと。
ってことは、一番大きな番号を買えばいいの?
と思ったんだけど、そう簡単ではないみたい。

焦点距離が大きい(近づけない)レンズは、No.1~No.2
普通の?レンズはNo.3~No.5
焦点距離が小さい(近づける)レンズは、あまり効果がない

という記載が。。。この辺を検証しました。

1.使用機材について

今回使用するレンズは愛用の単焦点
CANON EF50mm F1.8 STM です。
最短撮影距離は35cmです。



で、クローズアップレンズはNo.4とNo.10を購入しました。
No.4はAC。No.10はMCですが、ACとMCの違いについては本記事では気にしていません。



2.検証方法

今回の被写体のブースカさん。
 ブースカさんがピント合う位置をメジャーで測って測定しています。


メジャーの「0cm」の位置は、ファインダーの覗き穴を基準としています。
これで、使用レンズの最短撮影距離(今回は35cm)とだいたい一致するはずです。


3.通常の状態の撮影

先程の写真をマンマ使いまわしです。
最も手前でピントが合うのは35cmとなっています。
使用レンズの最短撮影距離とぴったりですね。



4.ACクローズアップレンズNo.4の焦点距離


No.4のクローズアップレンズを使用しまま、同じ位置、同じピントのままで撮影するとこんな感じ。

ブースカを手前に移動します。ピントが合う場所で撮影
だいたい25cmのところでピントが合いました。


今度はピントを無限遠側に設定して、一番遠くでピントが合う場所を調べました。
37cmくらいのところでピントが合いました。




つまり、クローズアップレンズを付けたことで被写体に近づけるようになったけど、離れたときにピントが合わなくなったことがわかりました。


5.MCクローズアップレンズNo.10の焦点距離



さらに倍率の高い、No.10も検証します。
先程と同様に、最短でピントの合う位置まで近づけました。
ファインダーから、だいたい20cmまで近づけられました


かなり大きく写りました。

逆に、無限遠側でピントが合う位置はここ。
ピントが合うのは21.5cmくらいの距離でした。
上の写真との違いがほぼないですね。


No4のクローズアップレンズよりも、さらに近づくことができるようになりましたが、ピントの合う位置が20cm~21.5cmの幅だけとなり、かなりシビアになりました。


6.まとめ

それぞれの状態でピントが合うのは以下のようになりました。

CANON EF50mm F1.8 STM
無限遠(∞)~35cm

No.4のクローズアップレンズ
37cm~25cm
→ 手持ちで植物などのアップ写真が撮れそう

No.10のクローズアップレンズ
21.5cm~20cm
→ 手持ちじゃピント合わない。三脚固定でモノを大きく撮りたいときに使う



撮影可能な範囲の記載については「レンズ先端から」の距離となっていますが、今回の計測は「ファインダーから」の距離となっています。

今回は最短撮影距離が35cmのCANON EF50mm F1.8 STMですが、ほかのレンズでも考え方は同じかなと思います。


2020年4月6日月曜日

CAKEPHP3.XでDB接続先を動的に変更する

CAKEPHPはバージョンによって、設定方法が違うので見つけるのが大変。。。
ユーザごとに接続先を変更するための方法について覚書

1.接続先の追加

接続先はconfig/app.phpに複数設定が可能です。

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'username' => 'my_app',
        'password' => 'secret',
        'database' => 'my_app',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
    ],
    'anothreConnection' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'username' => 'my_app',
        'password' => 'secret',
        'database' => 'my_app',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
    ]
],

2.テーブル単位での指定

テーブルに、defaultConnectionNameメソッドを追加し、接続先名を指定するとテーブル単位での指定が可能です。

class MyTable extends Table
{
    public static function defaultConnectionName()    {
        return 'anothreConnection';
    }
}

このメソッドは静的メソッドなので、ユーザごとに接続先を変えるのには向きません
(CAKEPHPでは$_SESSIONではなくsessionクラスを推奨しているため)

3.コントロール単位での指定

クエリ毎に設定を変える必要があるなら
ConnectionManagerで接続情報を取得し、$this->connectionで設定します。

use Cake\Datasource\ConnectionManager;

$conn = ConnectionManager::get('anothreConnection');
$this->connection($conn);
こちらであれは、セッションにユーザごとの接続先情報を格納できます。

Razorページのソースが文字化けする

正確には文字化けではなくHTMLエンティティ化された状態です。
日本語などが、ソース内で「&#XXXX;」のような形式で表示されます。

例)
ViewModelでプロパティを用意します。

public string TestMessageA { get; set; } = "abcde";
public string TestMessageB { get; set; } = "あいうえお";

RazorPageで表示させます。

TestMessageA=[@Model.TestMessageA]<br/>
TestMessageB=[@Model.TestMessageB]<br/>


画面上は正しく表示されます。

しかし、ソースを確認するとこんな感じで、日本語がHTMLエンティティ化されています。


javascriptなどに値を渡す場合に、問題となることもあるかと思います。
そんな時は以下のように設定します。

Startup.cs

using System.Text.Encodings.Web
using System.Text.Unicode
using Microsoft.Extensions.WebEncoders

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<WebEncoderOptions>(options =>
    {
 options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
    });

    // または、

    services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All));
}





2020年4月5日日曜日

富山城址公園 松川辺り

2020年4月2日(木)
平日の日中、コロナの影響もあり人影は少な目。
それでも近所の会社のサラリーマンなどは出歩いているようでした。

場所:富山城址公園 松川辺り
機材:CANON EOS 6D EF50mm F1.8 STM