Skip to main content

マイナンバーカード (マイナカード) 何に使った?

· 6 min read
ひかり
Main bloger

平成 30 年に取得したマイナカード、 何に使ってどう便利だったかをまとめる。 不便なところもまとめる。

利用したこと

  1. コンビニで証明書印刷
    • 住民票の写し
    • 所得証明書

わざわざ、市役所 (出張所) に出向き、並ぶ必要がないので便利。

  1. 本人確認
    • スマホの通信契約
    • 証券会社の口座開設
    • 銀行の口座開設
    • なんとか Pay の本人確認
    • コロナワクチンの受付時の本人確認

今後はマイナンバーカードがないと本人確認は厳しいかも。 社会も性善説では通用しなくなってきてるし、仕方ないかも。 運転することはないのに、身分証明のために運転免許証を取るといったことはしなくていいのでそこは良い。多分、2割くらいはいそう。

  1. 確定申告

フォームに数値を打ち込んで送信するだけだった。医療費控除の計算もできるし、便利。

  1. 保険証利用

保険証を持ち歩かなくて済むのはいいが、 資格確認システムのバグで利用できなくて困ることが何回かあったので、念のため保険証を持ち歩くのがよさそう。 薬局で処方された医薬品情報がマイナポータルで確認できるのが便利。(薬のアレルギー持ちの人は特に) マイナカードを利用せず、保険証で利用したところは、 医療費の計算をしてくれるのかな?そこはちょっとわからない。

  1. 転出届

3月末の混む時期に市役所 (出張所) に行って、転出届を出すのは気が滅入るが、マイナポータルを利用し転出届がオンラインで出せる。 注意しなければならないことは、転入届を忘れないこと。 (ちなみに、市役所・区役所行くより、出張所のほうが混んでないのでおすすめ。) 転入時にマイナンバーの暗証番号も再設定しなければいけないのが面倒だった。

  1. スマホ電子証明書

スマホにマイナンバーの電子証明書を搭載できる。 マイナポータルにカードレスでログインできるので便利かも。

不満なところ

  1. スマホアプリの NFC スマホに電子証明書を搭載しているのに、毎回 NFC を要求される。NFC を有効にしておかなければアプリが開かないのは不便なので、改善を期待したい。

  2. マイナンバーが記載されている マイナンバーカードにマイナンバーを記載することで、 紛失したときのリスクがある。とはいっても悪用は考えづらいが。クレジットカードのようにナンバーレスにしてほしい。

  3. 写真がモノクロ マイナンバーカードに内蔵されている写真はモノクロ。 なぜカラーにしなかった。

  4. 更新が面倒 電子証明書のセキュリティの関係で更新が 5 年だとか。 しかし、有効期間は 10 年間。 おいおい。 改善されるとかされないとからしいが。

  5. カードが使えない病院 国から補助金がいくらか出ているそうなので、対応してほしい。

  6. 暗証番号の種類が多い 暗証番号の種類が 4 種類もある。1 種類にしてほしいが、 セキュリティ的に難しいのだろうか。わからん。

  7. 券面がダサい 無線従事者の免状を見習ってほしい。

多分、勘違いされていること

マイナカードの的外れな批判が多いのでまとめていく。 批判する前に、仕組みを理解してほしい。

  1. マイナカードから紐づけされた個人情報が抜かれる これは、一部正しい。 マイナカードそのものには住所、氏名、性別、生年月日などの基本的な個人情報しか存在しない。運転免許証よりも情報は少ないだろう。 マイナカードと紐づけされた情報を見るには、その紐づけされたサイトを開き、マイナカードから認証する必要がある。 紐づけされた情報はマイナカードと暗証番号がないとみられないわけだ。もちろん、カードに暗証番号を書いて、そのカードをなくしたりしたら、様々な個人情報が抜かれる可能性はある。この点はキャッシュカードと似てる。

  2. 暗証番号が 4 桁しかなく、セキュリティが甘い セキュリティが甘いのは誤り。 パソコンで SNS へのログインを考えてみると、ID とパスワードでログインできる。 SNS では ID は簡単にわかるので、パスワードがあればログインができる。いくらパスワードが複雑だろうと、一要素認証なわけだ。 一方マイナンバーカードは、カードの所持+暗証番号の知識という二要素認証となっている。 Windows などで、PIN コードでログインできるようになっているのも、複雑なパスワードを用いた一要素認証よりも、所持+記憶の二要素認証のほうがセキュリティが高いと言われているからだ。

  3. 保険証の紐づけの誤り これは、保険組合の紐づけミス、ヒューマンエラーである。 マイナカードはあくまでも個人認証する仕組みしかなく、マイナカードの問題ではない。 しかし、保険組合で紐づけるミスをどうにかしろというのはある。 保険証情報はマイナポータルで確認できるので、一度確認したほうが望ましい。

  4. マイナカードなしで窓口 10 割負担なんてとんでもない 従来と同様、保険組合で手続きすることで返金を受けられる。 とはいっても資格証明書という本末転倒な仕組みを導入するそうだが。

Python のパッケージ管理ツールである Poetry を使ってみよう

· 2 min read
ひかり
Main bloger

Poetry のインストール

Poetry のインストールは pip で行う。 (pip のアップグレードもついでに行う。)

python -m pip install --upgrade pip
pip install poetry

Poetry で Python プロジェクトの作成

1. 新規で Python プロジェクトを作成する場合

新規に Python プロジェクトを作成する場合は、 poetry new を実行する。 Python プロジェクトのひな形が生成される。

poetry new xxxxxxxx

2. 既に Python プロジェクトがある場合

既に Python プロジェクトがある場合は、poetry init で Poetry の実行に必要な設定ファイルを追加する。

poetry init

Poetry の仮想環境に入る

poetry shell を実行で、 Poetry の仮想環境でシェルが起動する。 Poetry を利用して追加したパッケージが使用できる。

poetry shell

Poetry にパッケージを追加

poetry add で依存パッケージを追加できる。

poetry add xxxxxxxx

その他のよく使うコマンド

  • poetry list コマンド一覧を表示
  • poetry build パッケージの作成 (.tar.gz, .whl)
  • poetry install 依存パッケージのインストール
  • poetry publish pypi などに作成物を公開
  • poetry search パッケージの検索
  • poetry run Poetry 環境でコマンドを実行
  • poetry show 利用可能なパッケージを表示
  • poetry update 依存パッケージのアップデートを実行

個人サイトについて語る

· 3 min read
ひかり
Main bloger

情報発信では、Twitter、Instagram がメジャーであるが、規約や仕様によって制限され自由度が小さい。 個人サイトというものに回帰してみるのもアリである。 このサイトは、W○X 等を利用していないので、宣伝や広告がなくユーザーフレンドリーである。

デザイン的なこと

このサイトは、Jekyll というフレームワーク的なもので作られており、 テーマはすべて自作している。 ここでいうテーマは、フォントの大きさ、サイズやサイトの構造、余白等だ。 また、レスポンシブデザイン (スマホ、パソコンなどの様々なデバイスに対応するデザイン) やダークモードにも対応している。 一見シンプルに見えるが、CSS だけで、13.5 KiB もある。 これには、理由がある。 デザインを理解していない人が作るプレゼンテーション資料によくみられるが、 強調色を多用したり、虹色のグラデーションや小さい余白などの使用でダサいデザインができる。 このように、下手にデザインをするとかえってダサくなるのだ。 つまり、強調色を多用せず余白を適切に設定するなどすれば良いのだ。 それらを細かく行った結果が、膨大な量の CSS である。 このホームページがダサいという人がいれば意見してほしい。 個人的にはシンプルでムダな動作がないウェブサイトがベストだと考えている。

ホームページの設計

このホームページは Jekyll で作られている。 Jekyll は HTML のテンプレートを書いておき、 マークダウンの内容をテンプレートと組み合わせることでウェブページの作成が楽になっている。 具体的には、通常なら HTML をページひとつひとつに書く必要があり、 変更したい場合はひとつひとつのページを変更するといった面倒なことをしなければならないが、 Jekyll を使用することで、変更が容易になっている。

GitHub Pages への配置

このサイトは GitHub Pages を利用している。 GitHub Pages は無料でもウェブページが公開でき、さらに独自ドメインを設定することができる。 ただし、無料の場合はパブリックリポジトリのみ Pages が利用可能といった制限がある。 Jekyll の配置だが GitHub Actions を使用することで、プッシュしたときにウェブページが生成されるようになっている。 Jekyll はプッシュしただけでもページが生成されるようにできるが、workflows を使用することでプラグインの利用を可能としている。

必要な技術

このような個人サイトの作成に必要な技術は、

  • Jekyll
  • HTML
  • CSS / SASS
  • GitHub
  • JavaScript / TypeScript (必須ではない)

である。 個人サイトを作成するだけで、これだけの技術力が身につくことを考えれば、 プログラミング初心者にはまず、個人サイトを作成することを勧めたい。

string (文字列) から MD5 (文字列) を返す関数 (C#)

· One min read
ひかり
Main bloger

使用する関数

  • byte[] Encoding.UTF8.GetBytes(string)
    string から byte[] に変換
  • MD5 MD5.create()
    MD5 インスタンスを生成
  • byte[] md5.ComputeHash(byte[])
    byte[] から MD5 ハッシュを生成

string str2MD5(string src)
{
byte[] srcBytes = Encoding.UTF8.GetBytes(src);
string MD5src;
using (MD5 md5 = MD5.Create())
{
byte[] MD5srcBytes = md5.ComputeHash(srcBytes);
StringBuilder sb = new();
for (int i = 0; i < MD5srcBytes.Length; i++)
sb.Append(MD5srcBytes[i].ToString("x2"));
MD5src = sb.ToString();
}
return MD5src;
}

CUDA のグリッド数やブロック数やスレッド数の決め方とメモ

· 2 min read
ひかり
Main bloger
  • スレッド: 一つの処理
  • ブロック: スレッドの集まり (スレッドを 3 次元に配置)
  • グリッド: ブロックの集まり (ブロックを 3 次元に配置)

スレッド数、ブロック数、グリッド数には上限があり、 deviceQuery コマンドで取得可能。

RTX3080、CUDA 11.8 では、以下の通りだった。

Maximum number of threads per block:           1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)

この場合、

  • 1 つのブロックの最大スレッド数は 1024
  • ブロックの形状が (1024, 1024, 64) 内に収まる
    つまり、1 つのブロックの形状が (a, b, c) とすると、 $abc \leq 1024$ かつ $a \leq 1024$ かつ $b \leq 1024$ かつ $c \leq 64$ を満たすことである。
  • グリッドの形状が (2147483647, 65535, 65535) 内に収まる
    つまり、1 つのグリッドの形状が (d, e, f) とすると、 $def \leq 2147483647 \times 65535 \times 65535$ かつ $d \leq 2147483647$ かつ $e \leq 65535$ かつ $f \leq 65535$ を満たすことである。

グリッドとブロックの形状を定義する型は dim3 である。

使用例

#include <stdio.h>

__global__ void func1(){
printf("%d, %d, %d\n", threadIdx.x, threadIdx.y, threadIdx.z);
}

__global__ void func2(){
int i = threadIdx.x + blockDim.x * threadIdx.y + blockDim.x * blockDim.y * threadIdx.z;
printf("%d\n", i);
}

int main(){
dim3 grid(1, 1, 1);
dim3 block(4, 8, 32);

func1<<<grid, block>>>();
func2<<<grid, block>>>();
cudaDeviceSynchronize();
}

Rust で乱数の生成

· One min read
ひかり
Main bloger

注意: クレートのバージョンが違うと、関数も異なります。

依存するクレートを追加

rand に依存するので追加します。

cargo add rand

一様乱数を生成するプログラムの例

use rand::Rng;

fn main(){
let mut rng = rand::thread_rng();

// 浮動小数点数
let r: f64 = rng.gen_range(0.0..10000.0);
println!("{}", r);

// 整数
let r: i32 = rng.gen_range(0..10000);
println!("{}", r);
}
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/test`
9464.07133934519
9606

正規乱数を生成するプログラムの例

use rand::Rng;

fn main(){
let mut rng = rand::thread_rng();

let r: f64 = rng.gen();
println!("{}", r);
}
$ cargo run
Compiling alg2opt v0.1.0 (/home/hikari/2-opt/alg2opt)
Finished dev [unoptimized + debuginfo] target(s) in 0.26s
Running `target/debug/test`
0.34703657185118175

指定した分布に従う乱数

use rand::Rng;
use rand::distributions::Uniform;

fn main(){
let mut rng = rand::thread_rng();

let r: f64 = rng.sample(Uniform::new(10.0, 15.0));
println!("{}", r);
}
$ cargo run
Compiling alg2opt v0.1.0 (/home/hikari/2-opt/alg2opt)
Finished dev [unoptimized + debuginfo] target(s) in 0.26s
Running `target/debug/test`
12.13344856630783

参考

https://docs.rs/rand/0.8.5/rand/trait.Rng.html

現在のパソコン周りの環境まとめ

· 2 min read
ひかり
Main bloger

パソコン周りに結構お金をかけている気がするが、いったいどのくらいなのか把握していないのでまとめる。

PC 本体

パーツメーカー型番購入時の価格備考
マザーボードASUSB450M-K\7,291MicroATX
CPUAMDRyzen 3 3900X\53,28012 コア 24 スレッド、基本クロック 3.8GHz、最大 4.6GHz、TDP 105W、Passmark 32784
メモリーPanramW4U3200PS-16G\16,478DDR4-3200 16GiB x 2
SSDCFDCSSD-M2B1TPG3VNF\12,9801TB NVMe
GPUPalit MicrosystemsNED3080019IA-132AA\120,500RTX 3080
電源ユニットCorsairRM850\12,291850W 80PLUS Gold
PC ケースDEEPCOOLMACUBE 110 PK R-MACUBE110-PRNGM1N-A-1\6,000MicroATX 対応

合計: 228,820 円

ひとこと: 意外と高くない (?)。MicroATX なので拡張性がほぼない。ケチらずに ATX 買ったほうがよかったかもしれない。特にメモリーを増やせないのが。メモリーは普段から 20 GiB 以上消費しているので、もっと欲しいかも。

周辺機器

周辺機器メーカー型番購入時の価格備考
ディスプレイアイ・オー・データLD4K271DB\33,8004K。27 インチ。Vesa 対応
液晶タブレットXP-PenArtist 22 セカンド\47,680FHD。21.5 インチ
マウスロジクールERGO M575\5,500トラックボール。Bluetooth、Unifying
キーボード東プレREALFORCE R2-JP4-BK\15,470USB。静電容量無接点方式
WEB カメラエレコムUCAM-C820ABBK\3,809FHD
スピーカーパイオニア-\1,000中古。ハードオフ
アンプELEGIANT-\3,488中華デジタルアンプ。Bluetooth 対応とあったが使えなかった。付属の AUX ケーブルが安っぽいので買い換え推奨。
マイクUHURUUM900\6,499中華 USB マイク。
ヘッドホンaudio-technicaATH-M50x\16,000

合計: 133,246 円

その他

周辺機器メーカー型番購入時の価格備考
IC カードリーダーライターNTT コミュニケーションズACR39-NTTCom\2,320マイナンバーの読み書き可能
電源タップエレコムT-DK2320CBS\1,264デスク固定。3 個口

IT パスポートのアルファベットまとめ

· 4 min read
ひかり
Main bloger
略称名称意味
CSRCorporate Social Responsibility企業の社会的責任
SDGsSustainable Development Goals持続可能な開発目標
OJTOn the Job Training実務による職業教育
Off-JTOff the Job Training職場を離れて行う職業訓練
HRTechHuman Resource Technology人事における IT の活用
CEOChief Executive Officer最高経営責任者
CIOChief Information Officer最高情報責任者
COOChief Operating Officer最高執行責任者
CFOChief Financial Officer最高財務責任者
ABC 分析データをパレート図で表し、重要度に応じて 3 つにグループ分けしたもの
B/SBalance Sheet貸借対照表
ROEReturn On Equity自己資本利益率 ROE = 当期純利益 / 自己資本
JAN コードJapanese Article Numberバーコードの規格
QR コードQuick Responseマトリックス型 2 次元コード
ISOInternational Organization for Standardization国際標準化機構
SWOT 分析Strengths・Weaknesses・Opportunities・Threats企業がおかれている状況を強み、弱み、機会、脅威に分類
PPMProduct Portfolio Management花形、問題児、金のなる木、負け犬に分類
M&AMergers and Acquisitions会社の買収・合併
VCVenture Capitalハイリターンを狙ってベンチャー企業に投資する投資会社
IPOInitial Public Offering未公開株の公開
TOBTake Over Bid株式公開買い付け。不特定多数の株主から株式市場外で株式を買い集める制度。
MBOManagement Buyout会社の経営陣が自社株買いを行い買収し独立。
4PProduct・Price・Place・Promotionマーケティングミックスにおいて会社がコントロール可能な 4 つの手段
4CCustomer Value・Cost・Convenience・Communication売り手視点でのマーケティングミックス。
RFM 分析Recency・Frequency・Monetary「最終購入日」、「購入頻度」、「購入金額」で購買行動を分析し顧客をグループ分け。
UXUser Experienceユーザーエクスペリエンス。ユーザー製品、サービスから得る体験。
BSCBalance Scorecard「財務」、「顧客」、「業務プロセス」、「学習と成長」から業績評価を行う
CSFCritical Success Factors重要成功要因。モチベーションなど。
KPIKey Performance Indicator重要業績評価指標。目標の達成状況を示す定性的な指標。
ERPEnterprise Resource Planning企業資源計画。経営資源 (人・モノ・カネ・チエ) を統合的に管理する手法
CRMCustomer Relationship Management顧客関係管理。顧客と良好な関係を気付くことで長期的な利益を得る手法
SFASales Force Automation営業支援システム。営業ノウハウを一元管理し効率的に営業を行うシステム
SCMSupply Chain Management供給連鎖管理。調達・生産・販売の最適化を行う。
RFIDRadio Frequency Identification電波により情報のやり取りを行う技術。
NFCNear Field Communication至近距離での無線通信の国際標準規格。
AIArtifical Intelligence人工知能
POS システムPoint of Sale販売情報を管理するシステム。
CADComputer Aided Designコンピューター支援設計。製品をコンピューターで設計。
CAMComputer Aided Manifacturingコンピュータ支援製造。工場などの機械をコンピューターを用いて制御するシステム。
JITJust In Time必要なものを必要な時に必要なだけ生産。
ECElectronic Commerce電子商取引。インターネット上における商品の取引。
IoTInternet of Things「モノ」をインターネットに接続
Society 5.0仮想と現実を連携し、経済発展と社会課題の解決を両立する社会。
EAEnterprise Architecture大きな組織の最適化をする手法
SoESystem of Engagement顧客とのつながりを強化するシステム。
DFDData Flow Designデータフロー図。4 種類の記号を用いてデータの流れを表す。

git のメモ

· One min read
ひかり
Main bloger

ブランチ (git branch / git checkout)

ブランチの切り替え

git checkout <ブランチ名>

ブランチの削除

git branch -d <ブランチ名>

空のブランチ作成

git checkout --orphan=<ブランチ名>
git reset --hard

ログ

ログを表示

git log --decorate=full --graph --all
note

vscode を使えるのならば、拡張機能 Git Graph をインストールするとよい。

過去に戻る

# コミット ID を調べる
git log

git checkout <コミット ID>
note

コミット ID は 4 文字で省略可

過去から戻る

git checkout <ブランチ名>

コミットを取り消す (git reset)

git reset --soft @^
note

@ は HEAD と同じ。直前のものは ^ で表す。

JavaScript のメモ

· 2 min read
ひかり
Main bloger

配列

例: [1, 2, 3]

配列のコピー

// 参照渡し
let a = [1, 2, 3]
let b = a
b[0] = -1
a // [-1, 2, 3]

// コピー
a = [1, 2, 3]
b = a.slice()
b[0] = -1
a // [1, 2, 3]
b // [-1, 2, 3]

末尾の値

let a = [1, 2, 3]
a.at(-1)

配列を取り出す

let a = [1, 2, 3, 4, 5]
a.slice(2) // [3, 4, 5]
// 注意
a.slice(2, -1) // [3, 4]

数列の作成 (いわゆる range)

const range = (start, stop, step) =>
Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));

range(0, 10, 1) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for-of

for(let c of ['a', 'b', 'c']){
console.log(c)
}
結果
a
b
c

map

let a = [1, 2, 3].map(x => x ** 2)
// [2, 4, 6]

すべて零の配列 (zeros)

Array.zeros = (n) => Array.from({ length: n}, () => 0);

Array.zeros(5) // [0, 0, 0, 0, 0]

合計 (sum)

Array.prototype.sum = function(){ return this.reduce((prev, curr) => prev + curr, 0) }

[1, 2, 3, 4].sum() // 10

平均 (mean)

Array.prototype.mean = function(){ return this.reduce((prev, curr) => prev + curr, 0) / this.length }

[1, 2, 3, 4].mean() // 2.5

文字列

例: "text"

テンプレートリテラル

let a = 100
`${a / 10}` // "10"

数値

例: 1

文字列を数値に変換

parseInt('100') // 100 
parseFloat('100.1') // 100.1

フォーマット

// 小数点以下 3 桁
(1.2).toFixed(3) // "1.200"

日付

let today = new Date

today.toDateString() // "Sat Jan 01 2022"
today.toISOString() // "2021-12-31T15:00:00.000Z"
today.toLocaleDateString() // "2022/1/1"
today.toLocaleString() // "2022/1/1 0:00:00"
today.toLocaleTimeString() // "0:00:00"
today.toString() // "Sat Jan 01 2022 00:00:00 GMT+0900 (日本標準時)"
today.toTimeString() // "00:00:00 GMT+0900 (日本標準時)"
today.toUTCString() // "Fri, 31 Dec 2021 15:00:00 GMT"