古事連記帖

趣味のこと、技術的なこと、適当につらつら書きます。

.NET MAUI (Android) で電波強度の取得をしてみる

手元で試せるのがAndroidしかないので、Androidのみとなりますが、.NET MAUIで携帯ネットワーク通信やWiFi接続の電波強度を取得して表示するということをやってみます。MAUIとしては現在のネットワーク接続が何かはわかりますが、電波強度などまではわかりません。そこでプラットフォーム固有のAPIを使用して取得することを試みます。

プラットフォーム固有のAPIを使用するので、作成するcsファイルはすべて「Platform/Android」配下に置きます。また、余計な考慮をしたくないので、この説明中の「最小ターゲットAndroidフレームワーク」は「Android 10.0 (APIレベル29)」にしてあります。

携帯ネットワーク通信の電波強度を取得する

Android API Level 31 以降とそれより前で必要な物が変わります。最低サポートバージョンを Android 12にする場合は気にしなくていいですが、それより前をサポートする場合はそれぞれに考慮する必要があります。
つまり、Android 12より前のバージョンでは、「Android.Telephony」名前空間の「TelephonyManager」クラス(Android)「Listen()」メソッド(Android) を使用しますが、12以降のバージョンでは非推奨となり、「Android.Telephony.TelephonyManager.RegisterTelephonyCallback()」メソッド(Android) を使います。
そして、前者「Listen()」メソッドで必要なコールバックを受けるクラスは「Android.Telephony.PhoneStateListener」クラス(Android) を継承し、後者「RegisterTelephonyCallback()」は「Android.Telephony.TelephonyCallback」クラス(Android) の継承、および「Android.Telephony.TelephonyCallback.ISignalStrengthsListener」インターフェース(Android) の実装をしたものを用意します。ここで、両方が必要になる場合、特に後者で必要なクラスとインターフェースはAPI Level 31から追加になったもので、30以前のOS、Android 11以前では存在しないため変数として宣言できませんので、両方に対応できるよう、別でインターフェースなどを用意しそれを型として変数宣言する方法を採るといいかもしれません。

ちなみに、この情報を取得するのに必要な権限はありません。適当に権限をなくしてエミュレーターや実機に流して実行してみましたが、特に怒られることはなかったです。

using Android.Content;
using Android.Telephony;

public class NetworkStrengthWatcher
{
    /// <summary>
    /// 携帯ネットワーク通信に関するコールバックをまるめるインターフェース
    /// </summary>
    private interface ITelephonyState
    {
        /// <summary>
        /// 電波強度
        /// </summary>
        int Level { get; }
    }

    /// <summary>
    /// Android API Level 31 以降用
    /// </summary>
    private class TelephonyState : 
        TelephonyCallback, 
        TelephonyCallback.ISignalStrengthsListener, 
        ITelephonyState
    {
        public int Level { get; private set; }

        public void OnSignalStrengthsChanged(SignalStrength signalStrength)
        {
            // 電波強度を見やすいように 0 から 4 にしてくれているプロパティを使う
            this.Level = signalStrength.Level;
        }
    }

    /// <summary>
    /// Android API Level 30 以前用
    /// </summary>
    private class TelephonyStateOlder : PhoneStateListener, ITelephonyState
    {
        public int Level { get; private set; }

        public override void OnSignalStrengthsChanged(SignalStrength? signalStrength)
        {
            if (OperatingSystem.IsAndroidVersionAtLeast(31))
            {
                return;
            }

            base.OnSignalStrengthsChanged(signalStrength);

            if (signalStrength is null)
            {
                return;
            }

            // 電波強度を見やすいように 0 から 4 にしてくれているプロパティを使う
            this.Level = signalStrength.Level;
        }
    }
}

あとは、変数宣言の型はインターフェースで、実際の代入にはAPI Levelに応じたものを入れ込めばOKです。

private ITelephonyState telephonyState;

public NetworkStrengthWatcher()
{
    if (OperatingSystem.IsAndroidVersionAtLeast(31))
    {
        this.telephonyState = new TelephonyState();
    }
    else
    {
        this.telephonyState = new TelephonyStateOlder();
    }
}

つづいて、状態のコールバックを受け取るための購読処理をおこないます。携帯ネットワーク通信にかかわる情報は「Android.Telephony.TelephonyManager」クラスを使用します。これは「MainActivity」のインスタンスから取得できるので、今回作成したクラスにそのインスタンスを渡してもらい、呼び出します。

private MainActivity activity;
private TelephonyManager? telephonyManager;
private ITelephonyState telephonyState;

public NetworkStrengthWatcher(MainActivity mainActivity)
{
    this.activity = mainActivity;

    // これで取れるはず。GetSystemService の返り値が nullable なので as を使い、
    // 受け取りも nullable にしておきます
    this.telephonyManager = mainActivity.GetSystemService(Context.TelephonyService) as TelephonyManager;

    if (OperatingSystem.IsAndroidVersionAtLeast(31))
    {
        this.telephonyState = new TelephonyState();
    }
    else
    {
        this.telephonyState = new TelephonyStateOlder();
    }
}

次に購読開始のメソッドを用意します。前述の通り、API Versionによって呼び出すメソッドは変わり、また必要なコールバッククラスも変わりますので、バージョンで分岐させつつ呼び出します。コールバッククラスはインターフェースでどちらが入ってもいいようにしてありましたので、ここで本来必要になる実装型に変換してあげればOKです。

public void Listen()
{
    if (OperatingSystem.IsAndroidVersionAtLeast(31))
    {
        // 本当は MainExecutor プロパティは nullable なので見た方がいいかも。ここでは知ったこっちゃない扱いにしておきます。
        this.telephonyManager?.RegisterTelephonyCallback(this.activity.MainExecutor!, (TelephonyState)this.telephonyState);
    }
    else
    {
        this.telephonyManager?.Listen((TelephonyStateOlder)this.telephonyState, PhoneStateListenerFlags.SignalStrengths);
    }
}

念のため購読解除も用意しておきましょう。こちらもAPI Versionによって呼び出すメソッドが変わります。31以降の場合は「UnregisterTelephonyCallback()」メソッドを呼び出すと止まりますが、それより前の場合は明確な停止メソッドがありませんので、「Listen()」メソッドのフラグに「PhoneStateListenerFlags.None」を渡すことになります。

public void Stop()
{
    if (OperatingSystem.IsAndroidVersionAtLeast(31))
    {
        // 素直なメソッドがあるのでそれを使えば止まる
        this.telephonyManager?.UnregisterTelephonyCallback((TelephonyState)this.telephonyState);
    }
    else
    {
        // None を入れてリッスンすると止まる
        this.telephonyManager?.Listen((TelephonyStateOlder)this.telephonyState, PhoneStateListenerFlags.None);
    }
}

これで準備はOKです。あとは実際に使うところですが、いったんここではMainActivityクラス内で宣言し、リッスン開始をするようにします。

// プロジェクトを作った際のいろいろ書いてあるところは省略してあります。
public class MainActivity : MauiAppCompatActivity
{
    private NetworkStrengthWatcher? networkStrengthWatcher;

    protected override void OnStart()
    {
        base.OnStart();

        this.networkStrengthWatcher ??= new NetworkStrengthWatcher(this);
        // サクッとスタート
        this.networkStrengthWatcher.Listen();
    }

    protected override void OnDestroy()
    {
        // ここで止める
        this.networkStrengthWatcher?.Stop();

        base.OnDestroy();
    }
}

もうあとは実行すれば情報がおりてきます。ログもなんも出してないので、コールバッククラスの「OnSignalStrengthsChanged()」メソッド内でなんとなくログを出すようにしておけばよいと思います。
エミュレーターでネットワークの状態をポチポチといじってあげれば、ログにもその情報が逐一入ってきているのがわかります。

ログの出力例

いったんここまでまとめ

長くなったので、携帯ネットワーク通信の分で一旦締めます。ここまでで書いたコードは以下のgistに適当に貼っておきました。
次はWiFiの情報について書きます。
gist.github.com

コミックマーケット104に参加します

C104に参加します。AncientChronicleとしてはサークルスペースはありませんが、ご縁あって5r4ce2さまと共同でグッズを製作しましたので、そちらで頒布するという形で参加することとなりました。

「高速道路ナンバリングチャーム」というものを作りました。高速道路ナンバリングってなんぞやという方もいるかと思いますが、全国の高速道路には番号が振られています。
www.mlit.go.jp
例えば、「東名高速道路」なら「E1」が、「中央自動車道」なら「E20」「E19」「E68」などです。
また、一部路線には特定の区間に2つ番号が振られているケースもあります。この2つ並ぶ様子を形にできたら面白いな…と思ったのがきっかけです。また、近くを走っている高速道路や、よく通る高速道路、好きな高速道路の番号を並べてみたりするのも面白そうです。

予定頒価は、お好きなのを2つ選んで500円です。また、5r4ce2側でも首都高のナンバリングチャームを作成しており、こちらとも一緒に選べるようにする予定です。
今回第一弾でお試しということで、AC側では関東地方一円の高速道路について作成しました。以下を持っていく予定ですので、もしお時間ありましたらぜひ 8月12日(日) 東地区 "へ" ブロック 01ab へお立ち寄りください。

番号 路線名
E1 東名高速道路名神高速道路
E1A 東名高速道路伊勢湾岸自動車道新名神高速道路
E4 東北自動車道
E6 常磐自動車道 (仙台東部道路三陸沿岸道路、仙台北部道路)
E14 京葉道路館山自動車道富津館山道路
E16 横浜新道、横浜横須賀道路
E17 関越自動車道
E19 中央自動車道*1、長野自動車道
E20 中央自動車道
E50 北関東自動車道、東水戸道路、常陸那珂有料道路
E51 関東自動車
E52 東名高速道路(清水連絡路)、中部横断自動車道中央自動車道*2
E65 新空港自動車道
E68 中央自動車道*3東富士五湖道路
E70 伊豆縦貫自動車道
E82 千葉東金道路
E83 第三京浜道路、横浜新道
E84 新湘南バイパス西湘バイパス
E85 小田原厚木道路
C3 東京外環自動車道東海環状自動車道
C4 首都圏中央連絡自動車道(圏央道)
CA 東京湾アクアライン
D8 東京高速道路
D18a 箱根ターンパイク*4
D18b 箱根ターンパイク*5

試作した感じではこうなりました。サイズ感の統一のために、本来のナンバリング標識とは違う形になっています。

チャームのサンプル

*1:岡谷JCTより西

*2:中部横断道と重複するほんの一部だけ

*3:大月JCTから南に行く、例えば富士急ハイランドに向かうときに使う路線です

*4:箱根小田原本線という、箱根の横を通るターンパイクのメインとなる道路です

*5:箱根伊豆連絡線という、箱根より西側にある少し短い道路です

ドコモ光をやめ、enひかりに引っ越しをした話

いつだったか、ドコモショップの人に「ドコモ光おすすめですよ」って言われて、「ISP好きに選びたいから…」って渋ったら「単独プランっていうISP無しのがあるんです」と返されて逃げられなくなってから、しばらくは土管としてのドコモ光を使い続けてきました。
ayano.hateblo.jp

その間、ISPIIJmio FiberAccess/NFを使っていたり、固定IPv4IPv4 over IPv6 (IPIP)がしたくてインターリンクのZOOT NATIVEに引っ越したりとうわべを変えたりしていました。

先日ふと、そういえばドコモ光って実はそんなにフレッツ光単独で契約するのとコスト変わらないのでは?と思って調べてみたところ、ドコモ光のマンションプランよりも、フレッツ光単独の方がわずかに安い*1のに気付き、ドコモ光を辞めてもいいのでは…?と思っていたところ、enひかりが今のネット環境をある程度維持しつつコストを下げられると気付いたのでした。
enhikari.jp

これまでは、ドコモ光の単独タイプが4,180円、ZOOT NATIVEの固定IPv4オプション付きが2,200円で毎月6,380円です。これが4,488円になるので結構大きな削減になります。ドコモ光のISPセットであるうちのタイプAの値段に88円を足せば、固定IPv4アドレスがもらえる上、IPIP接続が手元でできるためDS-LiteやMAP-Eなどの「誰と同じIPアドレスを共有してるかわからない」であるとか「ポート数が足りなくて」とかを気にしなくて良いと思うと、結構安いのではないでしょうか。


ドコモ光はペア回線としているドコモ回線に対して割引をおこなう「ドコモ光セット割」があります。自分も現在irumo契約してペア回線にしているためその恩恵を受けています。ドコモ光から抜けたらその分割引が利かなくなるのでは?と思うところですが、実家とファミリー割引グループになっていて、そのグループ内にドコモ光があるので、セット割対象になって割引が継続されます。
www.docomo.ne.jp

ということは、自分がドコモ光を辞めても、実家がドコモ光を継続し続けていてくれる限り安泰となるはず。と思って抜けることを決意しました。


光コラボレーション同士の変更は「事業者変更」と言います。ドコモ光の場合は、メールフォームへ必要事項を記載した上で事業者変更承諾番号がメールで送られてくるのを待ちます。
www.docomo.ne.jp
自分の場合、2022年7月以前の契約かつプラン変更をおこなわなかったため、切り替えが終わった後は事務手数料3,300円がかかる予定です。

事業者変更承諾番号が届いたら、enひかりの申込みフォームに記載し、手続きをします。
IPv4 over IPv6がしたい条件を満たすには、ここで「固定IP」と、「enひかりv6プラス」あるいは「enひかりXpass」のオプションを追加しておきます。「enひかりtransix」はIPIP非対応みたいです。v6かXpassかは、IPIPする分には何を選んでもあまり変わりがないので*2好きなのを選べばよいかと思います。
自分は「enひかりXpass」を選びました。v6プラスと違い結構なマイナー(失礼)であること、集合住宅でガッチガチに全戸インターネットを組まれたところでないとお目にかかれないアルテリア*3に乗り込めるとかちょっとワクワクしませんか。という適当な理由です。


申し込んだ後、最短翌日くらいに電話がきます。自分の場合は事業者変更で、かつ品目変更もなかったので無派遣工事でした。一方でIPoEの接続先が変更になるため一時的に通信ができない期間ができてしまうのを防ぐために、安いPPPoEを提供するbb.excite*4を契約して繋ぎにしておこうと思い、コールセンターのお姉さんにその辺問題ないか確認したところ、ノータイムで問題ない旨の回答がきました。コールセンターのお姉さんがその辺をすぐ回答できる知識を持ってるとは思ってもおらず*5「この会社…すげえ…」と感じた瞬間でした。また、enひかりは契約者向けに電気の小売もやっていて、その案内もありましたが、積極的な勧誘ではなく「興味あれば」程度だったあたりも好印象でした。
事業者変更の手数料は2,200円、また固定IPv4アドレスの払い出しに手数料が2,200円なので、ここで4,400円がかかります。


工事日も決まり、インターリンク側への解約の申し出はオンラインのみでできました。ZOOT NATIVEの場合、解約が実際におこなわれるのは解約日翌日の午前なので、別のIPoE接続へ切り替える日と同日にしておくと新しい方は開通できず、前日だと午後以降の開通になるため、つなぎISPを契約してることを利用して開通日前々日の解約にしました。
そのおかげか、開通日当日は午前中に切り替えがおこなわれたようで、午前中には新しい固定IPアドレスが払い出された旨のメールが届いていました。ちなみにその間、PPPoEセッションは維持されたまま(何度か再接続を試したので、いいタイミングで切り替わったかもしれません?)だったので、全然切り替わったことに気付きませんでした。

あとは、ZOOT NATIVEで使っていた古いtransixの設定を削除し、新しくXpass用の設定に書き換えてあげるだけです。
家にはRTX1210があり、ひかり電話は未契約なためRAプロキシでの接続です。なのでconfigのうち、Luaスクリプトの部分と、トンネル接続先アドレス、NATディスクリプターアドレス(払い出された固定IPv4アドレス)あたりを書き換えればOKです。
www.rtpro.yamaha.co.jp
新規で接続する場合は、Web GUIではIPIP接続までうまくできないかもしれないので、途中までWeb GUIで、あとはconfigを直接いじった方が楽かも。
YAMAHAルーターでなくても、エレコムルーターが固定IPv4によるIPIP接続に対応しているものがあるので、こだわりがなければそれを選ぶというのも手かもしれません。)


configをルーターに流し込み、再起動をおこなったところで接続が確立。ルーティングもbb.exciteからXpassに切り替えて、無事完了です。IPoE接続のない期間を1日弱作るのが功を奏したような気がします。
PPPoEとIPoEを両方提供するようなISPでなければPPPoEセッションに余裕があると思うので、もしIPoE同士の切り替えをおこなう場合は参考にしてみてください。


回線切り替えが済んだ直後の儀式的なSpeedtest。回線名が「Arteria」なのがイカしてるゥ


お気づきかもしれませんが、enひかりは当月内の開通に対して日割り計算をしません。ではなぜ月末に開通させたかというと、ドコモ光の定期更新が11月で終わるため、12月以降の解約だと違約金8,800円が掛かるからです…。
というわけで、変更にかかった費用をまとめると

項目 費用
事業者変更事務手数料(ドコモ光) 3,300
転用事務手数料(enひかり) 2,200
固定IP払い出し手数料(enひかり) 2,200
11月分利用料(enひかり) 4,488
合計 12,188

となりそうです。光コラボレーションの切り替えってまあまあお金掛かりますね…。
とはいえ、半年以上維持していればペイできるって考えると変えてよかったかもしれません。


将来的には10Gへの切り替えも検討しようと思っています。それまではXpassの回線品質について見極めていきたいと思います。

*1:マンションプランの場合、見込み世帯数によって金額が変わります。今住んでいる建物的には安くなる方でした

*2:v6プラスだとHGWが対応しているとか細かい部分はあります

*3:グループのつなぐネットコミュニケーションズ、UCOM光とか

*4:bb.exciteコネクトが550円/月

*5:ちょっと失礼な言い回しに感じるかもしれませんが、こういう手の話はだいたいコールセンター側は持ち寄っておらず、技術者側に問い合わせあるいはつなぐという時間が発生することが多いです

AncientChronicleのサイトを新しくしました

細々と活動してたりしなかったりする同人サークル「AncientChronicle」のウェブサイトを新しくしました。

ac.udonge.net

大きなデザイン変更はしていませんが、時代にあわせてアクセスカウンターを消したり、Silverlightで動いていた試聴モジュールを削除したり(代替品は用意できてないですが)しました。
本来ならモバイル端末に最適化できるともっとよさそうなんですが、ウェブページつくるの久しぶりすぎるのでいったん保留です。近いうちに簡易的に対応すると思います。

裏側事情(?)

新しくする前のウェブサイトは、もともと Microsoft Expression Web にあわせて作っていたものでしたが、Expression Web が終わってからは大きくページの更新することがしんどくなってきて、
作品紹介の更新もおろそかになれば、トップページにとりあえず書いて終わりみたいなことをしていたらひどい有様になってしまいまして。

いつかは新しくして管理しやすくしないとなあと思っていたところでしたが、AncientChronicle のサイトをはじめ自分が持っているウェブサイトをホストしている CORESERVER の値上げが発表されたのを機に、
持っているウェブサイトのホスト先の移動、管理の効率化を進めることにしました。

一枚ペラなウェブサイトである「うどんげ.ねっと」と、先日作成した「aynv.jp」については、既に対応が完了していて、ホスト先は Cloudflare Pages で、ウェブサイトは静的サイトジェネレーター「Statiq」を使っています。
www.cloudflare.com
www.statiq.dev

複数ページがいくつもある構成で Statiq を使うのは初めてで、作品紹介画面とお知らせ画面、2種類の構成をうまく1つのテンプレートに混ぜるかとかは結構苦労しました。
作品紹介画面は収録曲リストだけ Markdown に記載して、あとの情報は Statiq でいう Front Matter に全部寄せて、ページ内ヘッダー・フッターの cshtml を分割して作ってそこから参照するようにしています。
例えばこんな感じで↓

このページ全体を cshtml にしてもよかったんですが、それぞれで構成を組めるので楽っちゃ楽になる反面、数が増えてきたときの管理が面倒になってくるので、この構成にしました*1

ホスト先を Cloudflare Pages にしたことでまた利点ができて、GitHub に push してしまえばあとは勝手に展開される上、git 管理になるので更新履歴がコミット単位で管理できるのが非常に楽になりました。
Cloudflare Pages では Statiq の実行がそのままではできないので、手元では GitHub Actions で Statiq の実行を任せて、結果を特定のブランチに出力して Cloudflare Pages にフックしてコピーしてもらう手段をとりました。

これで管理が楽になった…はずです。
CMSだと管理がおろそかになった瞬間乗っ取られる可能性が高まるので、静的ページとしてアップロードするだけでいい静的サイトジェネレーターが、年に数回更新するかどうかのサイトにはちょうど良いのかもしれません。

*1:Markdown だけしかいけないと思ってて、あとから cshtml もいけるのを知ったのは内緒

Blueskyに登録したらドメインがほしくなって手に入れた話

2023年、しばらくTwitter一強*1だったミニブログ界隈が突然、Twitterの混乱などにより空前のミニブログ戦国時代がおおよそ15年ぶりくらいに再勃発したような気がします。
戦国時代が始まる前あたりに登場したBlueskyに、先日知り合いから招待コードをいただいて登録することができました。

bsky.app
リンクは公式のWebクライアント


Blueskyは、自分を示すアカウント名として、「@username.bsky.social」の他、独自ドメインをあてることができるようになっているようです。
自身でもドメインの販売取り次ぎをおこなうようになったと報道されるくらいには割と推し気味な感じ。
ascii.jp

そういえば自分はいくつか独自ドメインを持ってはいますが、これまで「自分を示している」ドメインを持ったことがありませんでした。Blueskyで独自ドメインをアカウント名として使えるということで、せっかくなら…?と思い、これを機に自分を示す独自ドメインを取得しました。
せっかく自分の名前を独自ドメインにするなら「jp」にしようということで、レジストラを探しまわった感じでは総合的によさそうなConoHa Wingにしました*2
www.conoha.jp
アイデンティティとしての独自ドメインなら年間3000円程度は安い方です。


せっかくドメイン取ったんだからということで、さらにプロフィールページも作りました。
aynv.jp

aynv.jp です。ハンドルネーム「綾野ちい」の略称として「アヤノフ」を多用していますが、そのときの「フ」はロシア人名風に「v」を採用しているのでドメイン名はこんな感じになりました。
ドメイン名が4文字で取れたのは割とうれしいです。トップレベルドメイン含めても、持っているドメインの中で一番短いものになりました。

このブログもこのドメインを使いたいところですが、はてなブログProの契約をどうするか含めて現在検討中…。

*1:独自の見解です

*2:同じGMOでも、お名前.comやValueDomainそれぞれで値段が違うのが謎

Value DomainからCloudflareへドメインを移管する(大雑把に)

メモ程度ですが…

昨年の末あたり、Value Domainから「サービス維持調整費」なるものを取りますよっていうお達しがきていました。
www.value-domain.com
長年Value Domainにはお世話になってきましたが、そろそろ別のところに移管するときかな…と思いつつ、どこにしようかなとうだうだしていたまま、このときまで放置していましたが、
ようやく重い腰を上げて、とりあえず今はほとんど使っていない休眠ドメインでお試ししようと思って、 id:tmyt から教えてもらった Cloudflare へ移管することに決めました。

Cloudflareへの登録とか、下準備とかは他の記事に任せます
ダッシュボードの右上に「サイトの追加」があるので、そこをクリックして、

移管したいドメイン名を入れます。まだ移管手続きはここではしません。

DNS情報を勝手に読み取ってくれますが、まあまあいい加減というか、抜けてるものがちょいちょいあるので、もとのDNS設定と見比べながら設定をあわせるといいと思います。

終わったら、ネームサーバーを変えてくださいと案内が出るので、Value Domain側でネームサーバーを置き換えます。

変更したら、Cloudflare側に確認をしてもらいます。いろいろオプションが出てきますが、僕は適当にやりました。Freeプランにするのを忘れずに。

Cloudflare側でネームサーバーの変更が確認されると、以下の感じでいいニュースを伝えてくれます。

そしたらいよいよ移管です。上記画面の右側の「Cloudflare に移管」を押すか、

ダッシュボードに戻って「ドメイン登録」から「ドメインの移管」を押すかしてください。

先ほど登録したサイトに関連づいたドメインの移管手続きができるようになります。今回は「.faith」ドメインを移管するので、ICANN料金含めると2023年3月11日時点では5.16ドル(おおよそ700円弱くらい)です。

ちなみに、Value Domainでの更新価格は、2023年3月11日現在で3,868円なので、5倍ほどの価格差です。よくわからなん…
www.value-domain.com

これ見たらなんで今まで…って思ってしまいましたが、仕方ないのでこのまま進めます。「ドメインを確認する」をクリックして次にいきます。
「承認コードをリクエストする」については、Value Domain側で「WHOIS」設定から拾うことができます。このとき、WHOIS代行が有効な場合失敗するようなので、忘れずに解除をしておきます。ただし、変更後60日以上経たないと移管はできなくなります。
下の方に「認証鍵情報」があるので、「パスワードを表示する」のチェックを入れて出てきたコードを、

Cloudflare側のテキストボックスに書き写します。

次に連絡先を入れます。ここで入れた情報はWHOISには出ないらしいです。

入力できたら「移管を確認して確定する」をクリックします。

うまくいけば、裏で決済がおこなわれ、移管手続きが完了します。

あとはレジストラー側での移管処理が終わり、GMOレジストラーの場合、承認依頼メールに応対すれば移管完了になるようです。eNomやKeySystemsの場合は何もしなくてよいとあるので、この移管がうまくいったら、eNomのドメインがあるのでそれでも試してみようと思います。
www.value-domain.com


移管完了まで、ドメイン一覧で「期限切れ」とでてくるのでちょっとビビりますが、たぶん大丈夫。

ドメインの管理画面に行けば移管の進捗状況が出てくるのでたぶん大丈夫。

というわけで、移管手続きしながらの記事書きでした。

レンズを借りてたら買った話

先日レンズをレンタルした話を書きました。
ayano.hateblo.jp

この記事を書いた後、立て続けにあと2本ほど借りていろいろと写真を撮ってまわっていました。
借りたレンズは以下。


www.sony.jp
同じ焦点距離同士でツァイスと G Master との比較をしたくて借りたもの


www.sony.jp
だんだんと買いたい気持ちが高まってきて、24mm (換算 36mm) に近いけどちょっと違う 20mm (換算 30mm) のをと思って選んだもの


G Master や G レンズにあって、最初に借りたツァイスのにはないもので、絞りリングの存在がありました。レンズを持つ手で絞り値を自在に操れるのは結構便利で、絞りリングがない場合本体をしっかり持っている手を少し持ち替えるような動作が若干しんどくなるなあと思ったりはしましたが、
とはいえ、あとから借りたレンズはちょっと重かったこと*1と、フルサイズ対応が故か結構大きめだったこともあって、おでかけのカバンに入れるにはちょっとかさばるなあという感じでした。

やはりこういうときはソニーストア ということで、予約を入れてソニーストア銀座へ行き、事情を説明しながらこれまで借りたレンズをもう一度手に取って試したり、35mm (換算 52.5mm) のレンズもいくつか試してみたりして、結局ファーストインプレッションとしてもよかった SEL24F18Z がベストチョイスという結論に至り、その場で購入を決意。

やっちまったなぁ
外箱

他にもソニーストアでは APS-C 用の 15mm (換算 22.5mm) G レンズも試させていただきましたが、思った以上に広角だったので、僕の撮りたい写真からすると扱いが限定されそうだなあと感じたりはしました。
www.sony.jp

35mm のレンズは次のステップとして楽しみに取っておこうと思っています(?


改めて、自分が所有するものとしての装着した姿を。ちゃんとレンズプロテクターも購入して装着済みです

マウントからまっすぐ伸びたフォルムがスッキリした印象でいい感じ
キットレンズとの比較


買って初めて撮った写真は、インドカレー屋のカレーでした

ターリー屋の


で、今回買ったレンズと、キットレンズでは写りはどうなるかなーと思って、同じ位置から撮影を試みてみましたが…

まずは SEL24F18Z F 値 1.8 で撮影しています
キットレンズの SEL18135 で 24mm になるように撮影。F 値は 4

そうでした。同じ撮影位置からだとキットレンズの方は最短撮影距離が 45cm なので近すぎて焦点が合わないのでした。

同じように寄れるレンズは既にマクロレンズを持っていますが、こちらは 30mm (換算 45mm) だったり、開放 F 値が 3.5 だったりなど性質が違うので、次の 35mm へのステップとしてうまいこと使い分けながら遊んでいこうと思っています。


今回買ったレンズは結構良いお値段したものの、撮ってて楽しいレンズ*2だったので、ドライボックスで眠ったままにならないようにこれからもいろいろ歩きまわって、このレンズの楽しさをもっと見つけていきたいところです。

      • -

いつもの Amazon アフィ置かせてください

以前キットレンズのために買ったこの CPL フィルターは、定期的にタイムセールにあわせて安くなるので、それを狙って改めて買おうと考えているところ

*1:SEL24F14GM は 445g で、SEL20F18G は 373g です。一方で SEL24F18Z は 225g と割と軽量

*2:とはいえ内浦を撮りまわっただけでしたが