源泉徴収税額の納付届出書をe-Taxで提出する

源泉徴収税額の納付届出書をWindows用のe-Taxソフト(国税電子申告・納税システム利用者ソフトウェア)で提出する場合の操作が分かりにくかったので書いておく。
  1. 追加インストールで、「申請」の「納税関係」をインストールする。「源泉所得税」ではないので注意が必要。
  2. 「作成」メニューから「申告・申請等」を選択し「新規作成」を選択する。表示されたポップアップウィンドウで「申請・届出」を選択し、税目として「納税関係」を選択し、「次へ」ボタンをクリックし、「還付金関係手続」より「源泉徴収税額の納付の届出」を選択し、さらに「源泉徴収税額の納付届出書」にチェックを入れて「次へ」ボタンをクリックする。
  3. あとは、通常の申告や申請と同様に作成し、電子署名し、送信すれば良い。

源泉徴収税額の納付届出書は、「未納付の源泉徴収税額の納付されたとき」に提出することになっているので、源泉徴収された金額が支払われたらすぐに申請するものなのだろう。

楽天モバイル版のOPPO A5 2020で電子コンパスが真逆を指す問題が修正された

2020年5月25日に配信されて来た楽天モバイル版OPPO A5 2020のColorOS 6 (Android 9)CPH1943EX-11_A.51のファームウェアで、 電子コンパスが南北逆を指し示す問題は解消されていた。」だが、ディスプレイに表示されるアップデートの要旨にはこのことは書かれていなかった。

Fusion SMARTalk 2回線とひかり電話をpkgsrc/comms/asterisk16で収容してみる

はじめに

楽天モバイル(Fusion) SMARTalkの電話番号が2つあって、これを固定電話で利用したいと考えていた。 もちろん、SIPに対応した固定電話機を購入すれば、2回線を収容するものはそこまで 高くはない。 だが、使わなくなったYamaha RT58iというRJ11で電話機を接続できるルーターを 持っているので、これのSIPクライアント機能を使いたいと思っていた。

また、フレッツ光ネクストのひかり電話を使っているが、微妙に使い勝手の悪い位置に 固定電話機を設置しなくてはいけないのも気に入らなかった。

使わなくなったAndroidのスマートフォンでこれらをまとめて使うことができれば 便利になると考えた。 Androidには標準のSIPクライアント機能は存在しているし、サードパーティーの ソフトフォンのアプリも数多くあるので、それを組み合わせれば 良いと考えて試してみた。 しかし、これはそれぞれ以下のような理由でうまく行かなかった。

  1. ひかり電話については、我が家のホームゲートウェイであるPR-500MI (ファームウェアバージョン07.00.0010)では、 Androidスマートフォンの標準電話アプリのSIPクライアント機能でもZoiPerでも、 flets.comで推奨されているAGEphoneでも、着信が安定してできなかった。
  2. SMARTalkの公式クライアントは、1回線しか収容できない。
  3. SMARTalkは固定電話機にもAndroidスマートフォンと同時に着信して欲しかった。

と言うことで、NetBSDサーバーにAsterisk 16.10.0を導入して、そこに対して Yamaha RT58iとAndroidスマートフォンのZoiPerを接続することで解決させた。 しかし、PR-500MIでの内線通話は安定して実現はできなかった。 これはソフトフォンの種類やAsteriskの導入の有無によらないので、 PR-500MIに問題があるのかもしれない。あまり使う機能ではないので気にしないことにする。

ウェブを検索してみると、Asteriskの標準であるchan_sipドライバー では、ひかり電話のホームゲートウェイには接続できないらしい。 Asterisk 13以降で標準で提供されるpjsipドライバーであれば 問題なく接続できるらしい。 SMARTalkの方は、chan_sipで接続できるようだ。

そこで、以下のような方針で構築することにした。

  • ひかり電話のためのホームゲートウェイとの接続はpjsipを利用する
  • SMARTalkとの接続はchan_sipを利用する
  • Yamaha RT58iとZoiPerとの接続はchan_sipを利用する
それぞれ、なるべく最小限の設定ファイルにすることを目指したが、 冗長になった部分もあるかもしれない。

Asterisk 16.10.0は、以下のようにインストールした。

# cd /usr/pkgsrc/comms/asterisk16
# make install

ひかり電話接続用の設定

pjsipの設定ファイルは、/usr/pkg/etc/asterisk/pjsip.conf であるので、既存のファイルをバックアップして以下のように作成した。 ここで、10.XX.0.1はホームゲートウェイのLAN側のIPアドレスであり、 ホームゲートウェイの内線3番を事前に有効化してある。その内線3番への接続パスワードが PASSWORDである。

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0:5070 ; 5060 portはchan_sipと競合する。

[hikari-denwa]
type = registration
transport = transport-udp
outbound_auth = hikari-trunk
server_uri = sip:10.XX.0.1
client_uri = sip:3@10.XX.0.1 ; 内線3番
retry_interval = 60

[hikari-trunk]
type = auth
auth_type = userpass
username = 0003 ; 内線3番
password = PASSWORD

[hikari-trunk]
type = aor
contact = sip:10.XX.0.1

[hikari-trunk]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
outbound_auth = hikari-trunk
aors = hikari-trunk
direct_media = no
from_user = 3 ; 内線3番
from_domain = 10.XX.0.1
dtmf_mode = inband

[hikari-trunk]
type = identify
endpoint = hikari-trunk
match = 10.XX.0.1

SMARTalk 2回線接続用の設定

chan_sipの設定ファイルは、 /usr/pkg/etc/asterisk/sip.confである。 既存のファイルはバックアップして、以下のように作成した。 ここで、5XXXXXXX5YYYYYYYが 2回線分のユーザーIDであり、電話番号の050を除いた部分と一致する。 それぞれのパスワードがpassword1password2である。

[general]
match_auth_username=yes ; 同じsmart.0038.netに複数のアカウントを持っているので。
; 着信のため
register => 5XXXXXXX:password1@fusion1/5XXXXXXX
register => 5YYYYYYY:password2@fusion2/5YYYYYYY

; 外線
[fusion1]
type=friend
username=5XXXXXXX
fromuser=5XXXXXXX
secret=password1
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=port,invite
canreinvite=no
dtmfmode=inband
qualify=yes
allow=!all,ilbc,g729,gsm,g723,ulaw,alaw
allowguest=no
host=dynamic

[fusion2]
type=friend
username=5YYYYYYY
fromuser=5YYYYYYY
secret=password2
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=port,invite
canreinvite=no
dtmfmode=inband
qualify=yes
allow=!all,ilbc,g729,gsm,g723,ulaw,alaw
allowguest=no
host=dynamic
これにはYamaha RT58iとZoiPer用の設定も追加していく。

内線電話機接続用の設定

内線電話機であるYamaha RT58iとZoiPerから接続を受けるために、 /usr/pkg/etc/asterisk/sip.confに以下のように追加した。 それぞれ、ユーザーIDはandroidrt58iであり、 パスワードはそれぞれpassword3password4である。

; 電話機との接続
[android] ; Androidスマートフォン
type=friend
username=android
secret=password3
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833
qualify=no

[rt58i] ; Yamaha RT58i
type=friend
username=rt58i
secret=password4
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833
qualify=no ; Yamaha RT58iから接続するのに必須。

発着信の設定

発着信の設定は、/usr/pkg/etc/asterisk/extensions.confに設定する。 既存ファイルはバックアップして、新規に以下の内容で作成した。
[default]

; 着信
;; 内線
exten => 1290,1,Playback(demo-congrats) ; 動作チェック用の自動音声。内線で1290へ掛けるとお祝いのメッセージを聞ける。動作確認済み。
exten => 101,1,Dial(SIP/android,20,rt) ; 内線番号は設定しただけで動作確認していない。
exten => 102,1,Dial(SIP/rt58i,20,rt) ; 内線番号は設定しただけで動作確認していない。

;; 外線
exten => 5XXXXXXX,1,Dial(SIP/android&SIP/rt58i,20,rt) ; SMARTalkの2回線はYamaha RT58iとZoiPerに着信する、
exten => 5YYYYYYY,1,Dial(SIP/android&SIP/rt58i,20,rt)
exten => s,1,Dial(SIP/android) ; ひかり電話はZoiPerにのみ着信する (実際にはホームゲートウェイに直結された固定電話機にも着信する)。


; 発信
;; SMARTalk1の場合には9で発信する。
exten => _9.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _9.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _9.,n,Dial(SIP/${EXTEN:1}@fusion1,120,T) ; 最初に9をダイアルした場合に9を取って外線へ回す。

;; SMARTalk2の場合には8で発信する。
exten => _8.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _8.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _8.,n,Dial(SIP/${EXTEN:1}@fusion2,120,T) ; 最初に7をダイアルした場合に8を取って外線へ回す。

;; ひかり電話の場合には7で発信する。
exten => _7.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _7.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _7.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk) ; 最初に7をダイアルした場合に7を取って外線へ回す。

起動させ使用開始する

これで、Asteriskを以下のように起動すれば、それぞれ使えるようになる。

# cp /usr/pkg/share/examples/rc.d/asterisk /etc/rc.d
# echo asterisk=YES >> /etc/rc.conf
# /etc/rc.d/asterisk start
問題はめったにこれら3回線を利用する機会がないということだ。

楽天モバイルのRakuten UN-LIMITのネットワークを確認する

修理に出していたOPPO A5 2020 (CPH1943) は、そのまま返却されて来た。 電子コンパスが真逆になる不具合は、ハードウェアではなく搭載している ColorOS (Android)の不具合であるようで、次回のファームウェア更新時に 修正されるらしい。

とりあえず端末が手元に戻って来たので、楽天モバイルRakuten UN-LIMITの 提供するネットワークについて書いておく。

まず、モバイルネットワークが楽天モバイルの回線であるか、パートナー回線である auの回線であるかだが、モバイルネットワークコード44011が存在する場所なので、 楽天モバイルの自社ネットワークが使えていると考えて良さそうだ。

OPPO A5 2020に標準で設定されているアクセスポイント(SPN名: rakuten.jp)は、 APNプロトコル、APNローミングプロトコルともにIPv4/IPv6に設定されているので、 IPv4とIPv6の両方を利用することができる。 IPv4のIPアドレスは、10.xxx.yyy.zzzが割り当てられている。 xxxの値は、同じ物理的な場所にあっても変化するようだ。 IPv6は240bで始まるIPアドレスが割り当てられる。 Androidでは標準機能ではサブネットマスクを把握する方法はなさそうなので、 サブネットマスクは分からない。 また、USBテザリングでもパーソナルホットスポットでもIPv4に加えIPv6を利用できる。 USBテザリングを有効にしたままで、パーソナルホットスポットに接続をすると、 パーソナルホットスポット接続側ではIPv6のアドレスは割り振られなかった。 端末の仕様なのか、Androidの仕様なのか分からないが。

また、IPv4の場合には、楽天モバイル所有の133.106.148.27が表に出るIPv4アドレスになった。 これは、今回試した範囲では変化しなかったが、さすがに1つと言うことは ないだろうから、大きく場所や時間が変われば変化するのかもしれない。 ちなみに、133.106.148.27はホスト名を逆引きできなかった。

利用できる帯域幅については、Windows 10 64-bitのマシンに接続し、fast.comで計測すると 早朝の時間帯で、 USBテザリングの場合でダウンロード48 Mbps、 アップロード10 Mbps パーソナルホットスポットへ接続の場合でダウンロード37 Mbps、 アップロード11 Mbpsとなった。

あと調べておきたいとするとRCSでの通話音質だが、調べる知識も機材もないので止めておく。

楽天モバイルのRakuten UN-LIMITを申し込んでみる

楽天モバイルのUN-LIMITは一年間月額費用が無料で、 その月額費用の中に国内通話無料のプランが含まれている。 VoIPの設定をするのに通話料金を払うのももったいないと思って、VoIP環境を 適当にして来ていたので、VoIPの設定を進めるためにも申し込んでみた。 注意する項目もあったので、経過を書いておきたい。

2020年5月1日 06:10ころにSIMカードとOPPO A5 2020を申し込みした。 2020年5月2日に機材が配達されてくる予定になっていた。 この時点では、PCから申し込んだので、本人確認書類の運転免許証は スキャナーで取り込んだ画像を利用していた。 また、3つの電話番号から利用するものを選択できた。

このタイミングで、正式契約をするボタンを押していたらしい。 契約した意識はあったが、ボタンの存在は覚えていなかった。 後に正式契約処理をするように促す電子メールが来たので、 ここで正式契約をしていなかったのかと思っていたのだが、 正式契約をしていてもこの督促電子メールは送られて来るようだ。

2020年5月1日12:17にスキャンされた本人確認書類は使えない旨の連絡が電子メールで来た。 写真撮影が求められていることが分かったので、Androidで撮影して申し込みを再度完了させた。 そもそもPCから申し込みするワークフローは考慮されていないのかもしれない。 この時点で、2020年5月3日に機材が配達されている予定になっていた。

2020年5月2日12:30に、最初に記載した正式契約手続きをして欲しい言う旨の電子メールが来た。 だが、含まれていたURIを開いても正式契約の画面には行けないし、 再度注文をする画面しか表示されない。 しばらく正式契約ボタンを探したが、あきらめて放置して様子を見ることにした。

2020年5月2日23:10に、発送完了した旨の連絡が来た。 つまり、正式契約は事前にしてあったと言うことであろう。

2020年5月3日に機材は到着した。

開封してOPPO A5 2020を利用開始するのは簡単だった。 SIMカードを挿して、Rakuten Linkとmy楽天モバイルの2つのアプリケーションを インストールして楽天IDでログインするだけで良い。 Rakuten Linkアプリから通話、SMSの送信をするのだが、規定の電話アプリケーションにも 規定のメッセージングアプリケーションにも設定できないので面倒だ。

同時に購入したOPPO A5 2020は、楽天モバイルブランドなのでOPPOのロゴの 次に楽天モバイルのスプラッシュスクリーンが表示される。 初期設定の段階で気付いた事項として、 Android 9のはずなのだが言語設定が複数設定できなかったり、指紋が1種類しか登録 できなかったり、製品情報の中にスクリーンの解像度が表示されなかったり、 ステップモニターが確認しにくかったりということがあったが、 まあどうにか我慢できるレベルであるとは思う。 顔認識は目を閉じていると認証されないように設定できるし、ちゃんと機能するのが 良い点であると思う。

だが、電子コンパスの南北が逆に認識されるという致命的な不具合があった。 初期不良としてOPPOのサポート窓口に連絡して発送してしまったので、 ネットワークの情報等は返送されて来てから確認したい。

VLC for Fireでステレオ音声の片側のチャンネルだけ再生する方法がない

Amazon Fire 7で、VLC for Fireを使っていて、ステレオ音声の片側のチャンネルだけ再生する方法を探していたのだが、少なくともVLC 3.2.12にはそういう機能はないようだ。 二カ国語を収録する場合にもステレオ音声の左右のチャンネルにそれぞれ主音声と副音声を収録することはあるはずなので、こういう機能にはニーズはあるはずと思うのだが…。 どこに機能リクエストを出せば良いのか調べて出しておきたい。

Android: add option to change audio channel / stereo settingと言うのが feature requestのチケットのようだが、5年以上前から変わっていないようだ。

plgarc/wip/llama.cppでpkgsrcのBLASサポートを探る

この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...