しみゆーメモ

仕事のこと、子育てのこと、家事のこと、ただの日記、何でもかんでも書いておく場所

洋書多読を再開する

洋書の多読を再開する

2020年に英語力アップのために洋書を多読していたことがある。

本を読むのは好きなので、英語の勉強というよりは単なる趣味として続けていたが、転職活動や本業のスキルアップなどを優先していつの間にか止まっていた。

育休中でも子供が腕の中で寝ている時に本を読むことはできる。リフレッシュも兼ねて洋書多読を再開してみようと思う。

洋書多読を続けるコツ

  • ある程度スラスラ読めて、面白いものを選ぶこと
    • 自分にとってはネイティブの小学生が読むような児童書がちょうど良いと思っている。その程度のレベルなら、負担なく無理なく続けられる。

これまでに読んだ本

  1. Who was Wolfgang Amadeus Mozart7472
  2. Wonder 73053
  3. The Boy in the Striped Pajamas 46778
  4. Who Is Barack Obama?7160
  5. Auggie & Me:Three Wonder Stories 69,291
  6. Frog and Toad are Friends 2275
  7. HARRY The Dirty Dog 463
  8. Frog and Toad Together 1942
  9. Days with Frog and Toad 2075
  10. Who was Jesus? 7,270
  11. Who was Abraham Lincoln8531
  12. Who was Nelson Mandela?7751
  13. Who was Che Guevara?
  14. Who was J.K.Rolling?6953
  15. Who was Helen Keller?8562
  16. Who was J.F.Kenedy?9197
  17. I SURVIVED the Nazi Invasion ,1944 11607
  18. I SURVIVED THE JAPANESE TSUNAMI ,2011 11000
  19. Who was Martin Luther King Jr.?
  20. Who is Derek Jeter?
  21. I SURVIVED the attack of September 911 9500
  22. Dinosaurs Before Dark (Magic Tree House Book 1) 4750
  23. The Knight at Dawn (Magic Tree House Book 2) 5218
  24. Two Lives Level 3 (Cambridge English Readers) 14,404
  25. Mummies in the Morning (Magic Tree House Book 3)
  26. Pirates Past Noon (Magic Tree House Book 4)
  27. Night of the Ninjas (Magic Tree House Book 5)
  28. Afternoon on the Amazon (Magic Tree House Book 6)
  29. The Boxcar Children (The Boxcar Children Mysteries Book 1) 16803
  30. Sunset of the Sabertooth (Magic Tree House Book 7)
  31. Midnight on the Moon (Magic Tree House Book 8)
  32. What Was the Berlin Wall? (What Was?)
  33. Dolphins at Daybreak (Magic Tree House, No. 9) 4663
  34. What Was the Holocaust? 8,000
  35. Ghost Town at Sundown (Magic Tree House, No. 10) 6367
  36. Where Is the Bermuda Triangle? (Where Is?)
  37. There's a Boy in the Girls’ Bathroom 35,483
  38. Marvin Redpost #1: Kidnapped at Birth? 5,209
  39. Different Worlds Level 2 (Cambridge English Readers) 8,650
  40. Nate the Great (English Edition) 1,585
  41. Someday Angeline (Avon/Camelot Book) 27,555
  42. How I Met Myself Level 3 (Cambridge English Readers) 12,597
  43. What a Lottery! Starter (Cambridge English Readers) 2,000
  44. A Picture to Remember Level 2 (Cambridge English Readers) 9,749
  45. The Boy Who Lost His Face 39,273
  46. I Survived the Sinking of the Titanic, 1912 10374
  47. A Matter of Chance Level 4 (Cambridge English Readers) 17,830
  48. All I Want Level 5 (Cambridge English Readers) 17,184
  49. The Man from Nowhere Level 2 (Cambridge English Readers) 8,410
  50. East 43rd Street Level 5 (Cambridge English Readers) 22,502
  51. Kira-Kira (English Edition) 44,326
  52. The Amsterdam Connection Level 4 (Cambridge English Readers) 18,691
  53. Not Above the Law Level 3 Lower Intermediate 15,184

洋書を選択する上で参考にするサイト

note.com

note.com

子育てがきっかけで早寝になり生活が改善

去年、第一子が産まれて子育てがスタートした。


子供最優先での生活は色々と制約があるものの、その制約にはむしろメリットも多いと感じている。


子育てが始まって、

・22時〜23時頃の就寝 ・寝る2時間前から照明を落とす

という生活スタイルを徹底している(いうほど徹底はできてないかも)


22時〜23時頃に妻とバトンタッチ(夜は妻の担当)して、自分は就寝。朝には妻と交代して、妻を寝かせてあげないといけないので、夜更かしなどしている場合ではない。照明を落とすのは、子供のため。灯りを落としてあげたほうが眠るモードに入りやすいからだ。


この生活スタイルだと、早寝が強制される。強制的に就寝モードに入る。


自分自身、睡眠に関しては煩い方で、常にスマートウォッチをつけて睡眠スコアを計測している。よりより睡眠をとる方法については、これまで何冊も本を読んできたし、世の中に流布している睡眠Tipsについては大体把握しているつもりだ。


しかし、分かってはいてもできないことがあった。


それが

  • 就寝時間を固定する
  • 就寝時間を早める
  • 寝る前にブルーライトや強い灯りを浴びない

だった。


これらは、いくら意識しても継続できなかった。やった方が良いと分かっていても、夜ふかしはしてしまうし、寝る前にスマホを見てしまっていた。


子育て中心の生活スタイルになったことで、上記の生活スタイルをいとも簡単に実現できた。


  • 寝る2時間前には子供のために照明を落とす(自分のためではないから続く)。
  • 暗い中でスマホをまじまじ眺めようとは思わないので、寝る前にブルーライトを浴びる回数も減る。
  • 妻と二人三脚で子育てをする中、夜ふかしをするわけにもいかない。23時までには確実に寝る。


子育て中心の生活は、今のところ良い生活習慣を継続する強制ギプスのように働いている。


最近は子供が夜もだいぶ寝てくれるようになり、夜間の妻の睡眠時間も増えてきた。ゆくゆくは家族3人で早寝な生活スタイルを実現できたらと思う。

インプット過多なので、ブログに考えたことを書いてみる

子育てをしているとどうしても両手が空かない。

目や耳は暇なのでオーディオブックを聞いたり、 YouTube を聴いたりすることが増えた。

家事をしながら、寝ている子どもを抱えながら聴いている。

そのためか、最近はインプットばかりで頭がぐちゃぐちゃしている感じがある。なんだか消化不良だ。


日々考えていることなど頭の中のことを、このブログに書き出していこうと思う。


かつてブログは何度もやろうと試みたが、幾度となく挫折をした。

WordPress でやってみたり、はてなブログを立ち上げてみたり...。

潰したブログは数知れず。


ちゃんとした記事を書こうとすると、確実に挫折するだろう。

だから、極限までハードルを下げる。


頭の中のを書き出す作業は、一種の自己治癒だと聞いたことがあるが、このブログの目的はまさにそれだ。

誰かに読んでもらうというよりは公開ノートに自分の考えをまとめておく場所としてブログを使っていきたい。

140文字以上書けるツイッターというイメージで気楽にやる。

Azureのネットワークサービス

▼ 仮想ネットワーク

  • 仮想ネットワークは独立している
    • 同一のネットワークに接続しているマシンは、通信が可能
    • 異なるネットワークに接続しているマシンとは通信が不可能

異なる仮想ネットワークでの通信

設定によって、異なる仮想ネットワークに属する仮想マシン間で通信することもできる(ピアリング)。

グローバルピアリング

異なるリージョンの仮想ネットワークに属する仮想マシンが通信する場合は、グローバルピアリングと呼ぶ。

ピアリングのポイント

  • ピアリングをすることで、異なるリージョン間の仮想ネットワークでも接続ができる
  • アドレス空間が重複している仮想ネットワーク同士は接続できない
    • たとえば、10.13.2.0/1610.13.2.0/17の仮想ネットワークはピアリングができない

▼ サブネット

仮想ネットワーク内を分割して管理するためのもの

特徴としては、

  • Azureリソースは、このサブネット内に置く
  • 仮想ネットワークを分割して管理する必要性がない場合は、サブネットを1つだけ作る
  • サブネットを分離しても、中に配置されたアプリケーション同士は通信が可能(同じ仮想ネットワーク内なので通信できる)
    • ネットワークセキュリティグループやAzure Firewallなどの機能を使うことで同じ仮想ネットワーク内のサブネット同士の通信を制限することもできる

▼ オンプレミスネットワークとの通信

サイト間接続

仮想ネットワークとオンプレミスネットワークを接続すること。例えば、仮想ネットワーク上のAzure仮想マシンと自社ネットワークの社内コンピュータが通信させられる。

VPNを使って、サイド間接続を実現する

仮想ネットワークとオンプレミスネットワークにそれぞれVPN装置を準備し、そのVPN同士を接続する。

手順

Azure側

オンプレミス側

  • VPNバイスの設置
    • ハードウェア、ソフトウェアのどちらか
    • Azureに対応したものを選ぶ

: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-rendersの原因と解消方法

Vue.jsを使っていて、

[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "count"

というエラーに遭遇した。

ChildComponent内でemitより、親コンポーネントにイベントが渡ってくる。

その値をpropsのcountに格納する流れ。

<template>
  <h2>タイトル</h2>
  <p>{{ count }}</p>
  <ChildComponent @count-up="count = $event">
</template>

<script>
export default {
  props: {
    count: {
      type: Number,
      default() {
        return 0
      },
    },
  }
}
</script>

この場合、子コンポーネントからpropの値を直接変更しないでと怒られる。

解消方法

emitで変更が加わるcountをpropsではなく、dataで定義するように変更。

<script>
export default {
  data() {
    return {
      count: 0
    }
  }
}
</script>

Microsoft Learnの「Azure Active Directory に Azure のユーザーとグループを作成する」をやってみる

Microsoft Learnに 「Azure Active Directory に Azure のユーザーとグループを作成する」というチュートリアルでやったこと、途中で調べたことなどを書いておく。

docs.microsoft.com

このチュートリアルでできるようになること

  • Azure ADにユーザを追加する
  • Azure ADグループを使用して、アプリとリソースへのアクセスを管理する

Azure AD B2Bでゲストユーザーアクセスを許可するという章もあったが、別記事とする。

Azure ADのユーザーアカウント

  • すべてのユーザーアカウントに既定のアクセス許可セットが付与されている
  • ユーザーアカウントにはアクセス権限の異なる様々な種類がある。たとえば、以下は上から順番にアクセス権限が強い。
    • 管理者
    • AzureAD組織のメンバー
    • ゲストユーザー(外部組織の人が想定される)

アクセス許可とAzureADロール

Azure ADには、異なるアクセス許可を持つ多数のロールが存在する。

グローバル管理者

  • フルアクセス権を持ち、すべての操作ができる
  • Azure ADテナントを作成したユーザーは、自動的にグローバル管理者となる

ユーザー管理者

Azure ADテナントのユーザーとグループを管理できる

メンバーユーザー(組織内のユーザー)

新しいユーザーがAzure ADで管理している組織に参加したとき、デフォルトではこのメンバーユーザーになる。

  • 自分のプロフィール情報を管理できる
  • ゲストユーザーを招待できる(設定で許可されている場合)
  • ユーザー名に初期ドメインかカスタムドメイン名を含む
  • 組織の内の他のユーザーを管理することはできない

ゲストユーザー

  • 組織外のパートナーなどが想定される
    • 登録すれば、メンバーユーザーと同様に管理できるので、外部の人と共同で作業するのに適している
  • 任意のメールアドレス(初期ドメインやカスタムドメインを含まない)で、招待&登録できる

外部コラボレーションの設定

プロジェクトによっていは、外部のゲストユーザーを招待したくない場合もある。そういう場合は、Azure ADテナント単位で、ゲストユーザー招待を禁止することができる。

[Azure Active Directory] → [ユーザー設定] → [外部コラボレーションの設定を管理します]

の順に進むと、ゲスト招待に関する設定を変更できる。

f:id:navyferret:20220122214501p:plain

Azure AD テナントを作成する

Azure ADを使うには、まずテナントが必要。

テナントとは?

そもそも、テナントとは何か?公式によると、下記のとおり。

Azure Active Directory (Azure AD) では、ユーザーやアプリなどのオブジェクトを "テナント" と呼ばれるグループにまとめます。 テナントを使用することで、管理者は組織内のユーザーと、組織が所有するアプリに対してポリシーを設定して、セキュリティおよび運用ポリシーを満たすことができます。

docs.microsoft.com

テナント作成の手順

  • リソースの作成
  • Marketplaceで「DNS ゾーン」と検索して、選択する
  • すべてを表示をクリック
  • 「Azure Active Directory」で検索して、選択する f:id:navyferret:20220122214343p:plain
  • 作成する

初期ドメイン

Azure ADテナントを作成する時にデフォルトで付いてくるドメインで、フォーマットは、 任意の文字列.onmicrosoft.comとなる。 なお、Azure ADで作成するユーザーのユーザー名は、ユーザー名@ドメイン名となる。

カスタムドメイン

docs.microsoft.com

新しいユーザーを追加とユーザーの削除

ここは、ドキュメントに従って、ポチポチ作成&削除をするだけ。 なお、過去30日以内に削除したユーザは復元可能。

アクセス権を付与する方法

  • メンバーに直接付与する
  • アクセス権を付与したグループにメンバーを割り当てる
    • 直接割り当て
    • 動的割り当て

Azure ADグループとは?

Azure ADのユーザーを束ねる概念。 グループにアクセス権を付与すると、そのグループに属するユーザー全員に一括でアクセス権を与えることができる。

Azure ADグループにメンバーを割り当てる

グループにメンバーを割り当てる方法は、

  • 直接割り当てる方法
  • 動的メンバーシップルールを作成する方法

の2種類ある。

直接割り当て

その名の通り、あるグループにメンバーを手動で追加する。

f:id:navyferret:20220122214533p:plain

動的割り当て

グループに対して、あるルールを設定しておく。 このルールに合致する場合、メンバーがグループに追加される。

https://docs.microsoft.com/ja-jp/azure/active-directory/enterprise-users/groups-dynamic-membership

  • グループの[プロパティ]の[メンバーシップの種類]を動的ユーザーに変更
  • [動的なユーザーメンバー]の下にある[動的クエリの追加]を選択

ここで、このグループに所属させるユーザーの条件を追加していく。

f:id:navyferret:20220122214213p:plain
上記の例だと、国籍が日本で部署が開発部のユーザーは、Developer groupのメンバーとなる。

fnmを使ってNode.jsをインストールする(Windows)

WindowsでNode.jsの開発環境を構築したい。

dockerでも良いが、勉強や実験用にサクッとNode.jsの開発環境を立ち上げる程度の用途なので、

fnmというバージョン管理ツールを使って、直接インストールしてしまおうと思う。

Node.jsのバージョン管理ツールとして何を使うか

満たしておきたい条件としては、

  • 更新が止まってない
  • プロジェクトごとにバージョンを自動で切り替えられる

の2点。この辺りの検討については、下記サイトを参考にさせていただいた

qiita.com

結果としては、「fnmを使おう」という結論に落ち着いた。

fnmのインストール

chocolateyでfnmをインストールする

# chocolateyでfnmをインストール
> choco install fnm -y
# インストール済のパッケージ一覧を表示
> choco list -localonly
fnm 1.28.2

PowerShellの設定ファイルに必要事項を追記

github.com

ドキュメントによると、fnmを使う前にいくつかの実行しないといけないコマンドがあり、Microsoft.PowerShell_profile.ps1にコマンドを追加する必要があるとのこと。

Microsoft.PowerShell_profile.ps1とは??

Windowsを使い始めたばかりで、そもそも「Microsoft.PowerShell_profile.ps1って何?」となった。

Microsoft.PowerShell_profile.ps1は、Powershellの設定ファイルであり、bashの".bash_profile"に相当するものと考えれば良さそう。

このファイルは、Powershellが立ち上がるたびに実行される。

docs.microsoft.com

Microsoft.PowerShell_profile.ps1の確認と作成

$PROFILEという変数に、現在のセッションで使用できる設定ファイルのパスが格納されているので、PowerShellを開いて$PROFILE(小文字でもok)と打つと確認できる。

> $profile
C:\Users\〇〇〇〇〇〇\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

パスは設定されているものの、初期状態だとMicrosoft.PowerShell_profile.ps1自体は存在しなかった。

なので、Microsoft.PowerShell_profile.ps1を作成し、$PROFILEで出てきたパスの通りに配置する。

さらに、fnmのドキュメントに従って、下記を追加。

fnm env --use-on-cd | Out-String | Invoke-Expression

Microsoft.PowerShell_profile.ps1 を読み込めません」と怒られる

上の設定を終えて、PowerShellを立ち上げると、

C:\Users\〇〇〇〇〇〇\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込めません。
ファイル C:\Users\〇〇〇〇〇〇\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 はデジタル署名されていません。
このスクリプトは現在のシステムでは実行できません。
スクリプトの実行および実行ポリシーの設定の詳細については、
「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。

となって、スクリプトが実行できない。

PowerShellのポリシー

PowerShellでは、

でポリシーが異なるらしい。

デフォルトでは、ローカルのスクリプトも外部ファイルのスクリプトも実行不可(デジタル証明書で署名されたファイルは実行できる)。

そこで、ローカルのスクリプトのポリシーをRemoteSignedに変更した。

RemoteSigned

  • インターネットからダウンロードしたスクリプトのみデジタル署名を必要とする
  • ローカルで記述されたスクリプトにはデジタル署名を必要としない

というもの。

これで、ローカルスクリプトを実行できるようになったので、Powershellを立ち上げてもエラーが出なくなった。

docs.microsoft.com

fnmの使い方

fnmで使うNode.jsのバージョンをインストール

# 使いたいNode.jsのバージョンを指定してインストール
> fnm install 16.13.1
# fnmでインストールしたNode.jsのバージョン一覧を確認
> fnm list
* v16.13.1 default
* system

実際に使用するNode.jsのバージョンを指定

fnm installでインストールするだけでは、まだNodeを使えない。

fnm useコマンドで使用するバージョンを指定する必要がある。

# useで使用するバージョンを指定
> fnm use 16.13.1
Using Node v16.13.1
# バージョン確認(これでようやく使えるようになる)
> node -v
v16.13.1

プロジェクトごとに.node-versionファイルを設置

プロジェクトごとにバージョンを切り替えるために、プロジェクトディレクトリに.node-versionというファイルを配置する。

このファイルには、下記のように使用したいNode.jsのバージョンを記載。

v17.3.0

github.com

.node-versionファイルが配置されたディレクトリでは、fnmが自動的にNode.jsのバージョンが切り替えてくれる。

# 新たにNodeのバージョンとして17.3.0をインストール
> fnm install 17.3.0
# 17.3.0を使いたいプロジェクトに移動し、バージョンを切り替え
> fnm use 17.3.0
# 現在のバージョンを.node-versionに書き込みつつ、ファイルを生成
# これで、次回以降このディレクトリに移動すると自動的にNodeのバージョンが切り替わる
> node -v > .node-version