RTX1300入荷

RTX1300が入荷したので電源を入れてみました。

10GのサポートはSFP+ポートのみで、10GBase-Tのポートは1つもありませんでした。実売が14~15万円ぐらいということで、思ったよりも安い理由はこのあたりにあるんでしょうか。

LAN1の8ポートはすべて1000Base-Tのポートです。2つのSFP+ポートはLAN2とLAN3の排他利用ということを考慮すると、やはりLAN1に10GBase-Tを1つぐらいは欲しかったですね~。このあたりは残念。次のモデルでは2.5Gbps, 5Gbpsにも対応したマルチギガ対応10GBase-TポートをLAN1に1ポートぐらいは作って欲しいです。

SFP+は手持ちでFS.COMのモジュールがあったので挿してみました。NETGEARのAXM765互換品モジュール(30m用) です。ネット直販で1万5千円ぐらいだったかな。

LAN2に挿してみた。

そんでもって、早速、TELNETで確認。リビジョンは以下の通り。

LAN2のステータス確認してみたら、10GBASE-Rとの表示。見た目は問題はなさそうです。ポート番号はPORT9の表示ですね。

10GBase-Tのインターフェイスを持つファイルサーバーと10Gbpsで問題なく通信できました。今回はSFP+モジュールがNETGEARの互換品しか手持ちになかったのですが、汎用タイプのものを使った方が安心かも。

このRTX1300はマルチギガに対応しているらしいですが、マルチ(10Gbps, 5Gbps, 2.5Gbps, 1Gbps)に対応するSFP+モジュールって非常に少ないです。テストで使った10GBase-TのSFP+モジュールもCat5eケーブルで接続すると5Gbpsではなく1GBpsで接続されてしまいます。

マルチギガに対応するSFP+モジュールをヤマハさんはリリースする気はないんですかねぇ? SFP+モジュールがオプションで発売されていないようですし、SFP+モジュールのコンパチリストが欲しいですね。

マルチギガ対応ルーターといいつつも実質は10Gインターフェイスを持つスイッチと10Gbpsで通信させ、スイッチ側でマルチギガに対応するモデルを選択することになるのでしょう。

あと、光回線も10Gタイプに契約を切り替えないとこのルーターを買う意味はあまりないのですが、弊社はまだNTTもAuも10G回線のエリア対象外なんですよね・・・。

C#でIEYASU APIを使う

クラウド勤怠管理のHARMOS勤怠(旧称:IEYASU)にはRESTのAPIが用意されています。

今回、顧客案件でこの IEYASU API をC#から扱う機会があったので、そのメモです。

HttpClientを使ってもできると思いますが、今回はRestSharpを使いました。

開発環境は Visual Studio 2019です。

準備

まずは、API KEYを管理用WEB画面で取得しておきます。

尚、API KEYの有効期限は3か月です。更新忘れがないように注意が必要です。

次にVisual Studioに移動し、NuGetを使ってRestSharpをインストールします。

あと、Jsonを扱うのでシリアライズを使うとスマートです。以下のようにコード内でusingディレクティブを追加しておきます。

using RestSharp;
using System.Text.Json;

GET

ユーザー一覧や打刻データの POST や GETにはTokenが必要になりますので、ここでは認証用Tokenの取得をやってみます。AddHeaderメソッドを使い、さきほど発行しておいた API KEY をHeaderに埋め込めばOKです。

string url = "https://ieyasu.co/api/<company_code>/v1";            
RestClient client = new RestClient(url);

string api = "/authentication/token";            
RestRequest request = new RestRequest(api);            
request.AddHeader("Authorization", "Basic <api key>");  //APIキーでBasic認証
request.Method = Method.Get;
RestResponse response = await client.GetAsync(request);
MessageBox.Show(response.Content);

これでTokenが含まれたJsonを取得できます。

尚、<company_code>の部分はハーモス勤怠の契約時にもらった会社コードに置き換えます。

POST

ここではPOSTの簡単な例として打刻登録を扱います。

打刻の仕様は https://ieyasu.co/docs/api.html#/paths/~1stamp_logs/post に記載されていますが、

user_id と stamp_type が必須項目です。 stamp_type は 出勤の場合が1で、退勤が2です。

ここではuserをつかさどるUserDataクラスを作ります。

    class UserData
    {
        [JsonPropertyName("user_id")] public int UserID { get; set; }
        [JsonPropertyName("stamp_type")] public int StampType { get; set; }
    }

user_id も stamp_type も ingeger型です。

UserDataのインスタンスを作成するときは以下のようになります。

このコードで jsonStr には {“user_id”:5,”stamp_type”:1} が入ります。

UserData user = new UserData();
user.UserID = 5;  //user_id
user.StampType = 1;  //出勤
string jsonStr = JsonSerializer.Serialize(user);

あとはRestSharpを使ってPOSTを実行します。TokenはAddHeaderメソッドを使い、Headerとして追加しておきます。

string url = "https://ieyasu.co/api/<company_code>/v1";            
RestClient client = new RestClient(url);

string api = "/stamp_logs";
RestRequest req = new RestRequest(api);
req.AddHeader("Authorization", "Token <token>");   //<token>はBasic認証で取得しておく
req.AddJsonBody(jsonStr);    //Jsonの文字列はAddJsonBodyに放り込む
req.Method = Method.Post;
RestResponse response = await client.PostAsync(req);

これでスマホで出勤ボタンをタッチしたのと同じ効果が得られます。

以上です。

10G対応VPNルーター RTX1300

2022年の秋にYAMAHAから10GbE対応のVPNルーターが発売されるらしい。

10G対応のVPNルーターの選択肢が増えることはいいことですね。YAMAHAでは初の10G対応VPNルーターです。詳細は不明ですが、LAN3の1個だけ10Gというのはやめてほしいですね。できればLAN1も4ポートぐらいを、しかもマルチギガ対応で作ってほしい。マルチじゃないと2.5Gのポートと接続すると2.5Gではなく1Gでリンクされてしまうので。欲を言えばPoE給電ポートも1、2個ぐらいは欲しい。

しかし、Auひかり10Gとかコミュファ10GのようにWAN環境も10Gのサービスが出てきているので、中小企業向けのVPNルーターとしては大きな選択肢になるのではないでしょうか。

あと、型番の名前が少し気になります。

大昔(2004年)にRTX1500という機種が初代のRTX1000の次ぐらいにリリースされています。このままRTX1300、RTX1400と型番が上がっていったら、そのあとの型番はどうなるのでしょう? RTX1600になるのかな? 余計なお世話か。

RTX1500はショートパケットの処理が当時としては秀逸でした。FTP転送などで威力を発揮して、重宝したものです。Dynamic Traffic Controlが登場したのもこの機種ぐらいからだったでしょうか。実売価格も15万円前後だったと記憶しています。企業の支店用としてはちょっと高価なルーターでしたね。

RTX1500の定価が198,000円だったのですが、RTX1300は価格はいくらで発売されるのでしょうか? 構成次第でしょうけど、20万円を切ってくれると支店用としても提案しやすいですね。

SMARTalkサービスの新規受付終了

自社オフィスではPanasonicのおたっくす(KX-PZ910DL)を使っているのですが、この機種には「外で通話」というIP電話へ転送する機能があります。楽天モバイルのSMARTalkサービスというIP電話サービスと連携し、スマホのIP電話アプリで受信する分にはIP電話機同士と同じ扱いになって転送料金が無料になるというものです。

このSMARTalkですが、新規受付はすでに2年前から停止していました。しかし、おたっくす向けにPanasonic経由であればまだ新規受付が可能でしたが、このPanasonic経由もいつの間にか新規受付が終了していました。(2021/12/15終了)

楽天モバイルはSIMの0円プランもなくなりましたし、SMARTalkもサービスそのものがなくなるのは時間の問題かもしれません。050で始まるIP電話番号が無料でもらえて便利だったのですが・・・。

海外ロケーションと日付フォーマット dd/MM/yyyy

先日、ヨーロッパからの案件でXamarin Androidの開発をしていたときのこと。SQLServerへの日付型のデータで更新エラーが発生するという連絡をクライアントから受けたのですが、こちらでは何度やっても正常に動く。開発環境はすべてEnglish(UK)のOSでそろえているので言語環境も違いはないはず。違うのはロケーション、つまりタイムゾーンだけ。

詳細に調査したところ、System.Data.SqlClientを使ってSQLServerから日付データを取得するとき、AndroidOSが自動判別したタイムゾーンに応じて日付フォーマットが変化することが分かりました。どおりで日本だとエラーにならないわけです。

SQLServerで日付型のデータを保存するとき、既定では、

English(UK) : dd/MM/yyyy  -- 保存NG
English(US) : MM/dd/yyyy  -- 保存OK
Japanese    : yyyy/MM/dd  -- 保存OK

となっています。なので、以下のようなDateTime型カラムを更新するSQLはエラーになります。

--エラーになる
INSERT INTO T_TEST (InputDate) VALUES ('30/06/2022') 

「out-of-range value」というエラーを吐き出して、30月6日なんて日付はだめだよと怒られます。グローバルなアプリを開発する際は文化の違いを意識して作らなければいけませんね。対策は、DMYオプションを宣言して、

--エラーにならない
SET DATEFORMAT DMY
INSERT INTO T_TEST (InputDate) VALUES ('30/06/2022')

としてSQLServer側に欧州フォーマットでの処理をお願いするか、プログラム側で常にyyyy/MM/ddにフォーマット変換してからSQLServerに渡すことを習慣づけるかのどちらかですね。

面倒でも後者の方がバグは発生しにくいかもしれません。

Action PackのAzure特典

弊社はソフトウェア開発会社なのでMicrosoft Partner NetworkのAction Packに加入してお得にMSDNとOffice365を利用しています。その他の特典にAzureの特典があり、月間11,500円分が無料で使えることは知っていましたが手をつけていませんでした。

今回はAzure特典をアクティベートしてみます。

(1) パートナーセンターのポータルで特典の中からMicrosoft Azureを選択し、Office365の管理者ユーザーを割り当てます。

このあと、支払に使うクレジットの入力を済ませるとすぐに利用できます。手続き自体は割と簡単です。

(2) Azureのポータルに誘導され、しばらくするとサブスクリプションに「Microsoft Partner Network」が追加されており、「クレジットが¥11,500 残っています」という表示が出ました。これがAction Packの特典として毎月適用されます。

期限のある無料試用版と比べると大きな特典です。

無線LANアクセスポイントが品薄

小規模店舗向けの無線LANアクセスポイントの注文があったのですが、なんか法人用アクセスポイントが品薄の状態が続いているみたいですね。高値で仕入れてしまいました。

Meraki GoもAruba Instant onも在庫が少ないみたい。

コロナと半導体不足の影響なのかな?

Google Playも

続々とローバル企業がロシアでの経済活動を停止していますが、GoogleはロシアでのGoogle Playの課金ができなくなったとのことです。

大手クレジットカードやGooglePay などがロシアで使えないようになったという報道がありましたが、Google Playも使えなくなったということですね。決済手段の穴がどんどん塞がれていきますね。

Windows11 リリース

本日(2021-10-05)、Windows11がリリースされました。早速、MSDNからWindows11のISOファイルをダウンロードして、Windows Server 2019のHyper-Vにクリーンインストールしてみました。

しかし、仮想マシンを作成してインストーラを起動すると早速、「インストール要件を満たしていません」というエラーが発生しました。調べてみると、Windows11からTPMというセキュリティモジュールを有効にすることが必須になったようです。

これで普通にインストールできます。インストール手順はWindows10とほとんど変わりません。

デザインはというと、スタートボタンは伝統的に左下の位置だったものが真ん中に移動しました。タスクバーやスタートメニューも真ん中で固定ですね。

このWindows11ですが、パッとみた感じでは「Macっぽい」というのが感想です。設定のナビゲーションの動きや構成はiOSのようなデザインです。

チェックボックスもスイッチにデザイン変更され、スマホみたいなデザインに。

また、OneDriveとの親和性が高まり、「フォト」はOneDriveと連動してアルバムを作れるようになっていたりして、Googleフォトみたいに動画や写真が「フォト」を介して他のデバイスと共有できるようになっています。

スマホをデスクトップOSにしたような感じですが、ちょっと触った感じでは分かりやすくて個人的には好印象です。他のOSのいいところを取り入れていくことは、いいことなのではないでしょうか。

あと、Windowsガシェットという名前でかつて存在し、いつの間にか廃止されていたウィジット機能が復活していました。

ウィジット専用のメニューで独立しているので、他のアプリや機能の邪魔にならないのでいいのではないでしょうか。

さらにTeamsのアイコンがタスクバーに最初から入っていたり、時代を反映していますね。

以上、ぱっと見は使いやすそうで好印象でした。

HPノートのバッテリ膨張

仕事で使っているHPのノートパソコンの内蔵バッテリが急激に膨張しました。使っていたPCはEliteBook 1030 G2というビジネスモデルです。底蓋を開けたらこんな風になってしまいました。

厚みが倍以上になっていましたが、裏蓋のバッテリ手前部分だけはねじ止めではなく、爪ひっかけで閉まっていました。バッテリが膨張した後は爪は外れて蓋が開いた状態になったのですが、ねじ止めなら底蓋は割れていたかもしれません。このあたりはバッテリ膨張を想定した設計なのかもしれません。(まあ、その前に2年程度でこの膨張は少し納得できませんが・・・)

常にACアダプタにつなげていたのが悪かったのかもしれませんが、これだけ膨れ上がったのは初めての経験。HPのサポートに交換バッテリ送付の見積もりを取ったら、送料込みで25,000円とのこと。ちょっと高すぎですね。

Amazonで「NOTEPARTS」というブランドの互換バッテリーを税込み7,980円で購入。ついでにM.2のSSDも128GBから256GBに交換。問題なく動作しました。入荷に2週間ぐらいかかるバッテリは粗悪な中華バッテリの可能性があるので安くても選択肢からは外しました。「NOTEPARTS」の品質は良くわからないですが、大阪の会社が運営しているみたいで、どこから出荷しているのかわからない中華バッテリよりかはリスクがだいぶ低そうです。

その後、バッテリーを長持ちさせるために80%に達したら自動的に充電がストップする設定がBIOSにあるとの記事をみつけました。(ビジネスモデルだけかな?)

https://jp.ext.hp.com/v-ivr/note-pc/performance/faq/03/

デフォルトではこの機能はOFFですが、80%充電でも運用上で問題なければONにするとよいでしょう。試しに有効にしてみたら、確かにWindowsの設定なしで80%で充電がストップしました。非純正バッテリでの火災事故が増えているそうなので、火災事故防止のためにフル充電しない設定は有効かもしれないですね。