洋書多読を再開する
洋書の多読を再開する
2020年に英語力アップのために洋書を多読していたことがある。
本を読むのは好きなので、英語の勉強というよりは単なる趣味として続けていたが、転職活動や本業のスキルアップなどを優先していつの間にか止まっていた。
育休中でも子供が腕の中で寝ている時に本を読むことはできる。リフレッシュも兼ねて洋書多読を再開してみようと思う。
洋書多読を続けるコツ
- ある程度スラスラ読めて、面白いものを選ぶこと
- 自分にとってはネイティブの小学生が読むような児童書がちょうど良いと思っている。その程度のレベルなら、負担なく無理なく続けられる。
これまでに読んだ本
- Who was Wolfgang Amadeus Mozart?7472
- Wonder 73053
- The Boy in the Striped Pajamas 46778
- Who Is Barack Obama?7160
- Auggie & Me:Three Wonder Stories 69,291
- Frog and Toad are Friends 2275
- HARRY The Dirty Dog 463
- Frog and Toad Together 1942
- Days with Frog and Toad 2075
- Who was Jesus? 7,270
- Who was Abraham Lincoln?8531
- Who was Nelson Mandela?7751
- Who was Che Guevara?
- Who was J.K.Rolling?6953
- Who was Helen Keller?8562
- Who was J.F.Kenedy?9197
- I SURVIVED the Nazi Invasion ,1944 11607
- I SURVIVED THE JAPANESE TSUNAMI ,2011 11000
- Who was Martin Luther King Jr.?
- Who is Derek Jeter?
- I SURVIVED the attack of September 911 9500
- Dinosaurs Before Dark (Magic Tree House Book 1) 4750
- The Knight at Dawn (Magic Tree House Book 2) 5218
- Two Lives Level 3 (Cambridge English Readers) 14,404
- Mummies in the Morning (Magic Tree House Book 3)
- Pirates Past Noon (Magic Tree House Book 4)
- Night of the Ninjas (Magic Tree House Book 5)
- Afternoon on the Amazon (Magic Tree House Book 6)
- The Boxcar Children (The Boxcar Children Mysteries Book 1) 16803
- Sunset of the Sabertooth (Magic Tree House Book 7)
- Midnight on the Moon (Magic Tree House Book 8)
- What Was the Berlin Wall? (What Was?)
- Dolphins at Daybreak (Magic Tree House, No. 9) 4663
- What Was the Holocaust? 8,000
- Ghost Town at Sundown (Magic Tree House, No. 10) 6367
- Where Is the Bermuda Triangle? (Where Is?)
- There's a Boy in the Girls’ Bathroom 35,483
- Marvin Redpost #1: Kidnapped at Birth? 5,209
- Different Worlds Level 2 (Cambridge English Readers) 8,650
- Nate the Great (English Edition) 1,585
- Someday Angeline (Avon/Camelot Book) 27,555
- How I Met Myself Level 3 (Cambridge English Readers) 12,597
- What a Lottery! Starter (Cambridge English Readers) 2,000
- A Picture to Remember Level 2 (Cambridge English Readers) 9,749
- The Boy Who Lost His Face 39,273
- I Survived the Sinking of the Titanic, 1912 10374
- A Matter of Chance Level 4 (Cambridge English Readers) 17,830
- All I Want Level 5 (Cambridge English Readers) 17,184
- The Man from Nowhere Level 2 (Cambridge English Readers) 8,410
- East 43rd Street Level 5 (Cambridge English Readers) 22,502
- Kira-Kira (English Edition) 44,326
- The Amsterdam Connection Level 4 (Cambridge English Readers) 18,691
- Not Above the Law Level 3 Lower Intermediate 15,184
洋書を選択する上で参考にするサイト
子育てがきっかけで早寝になり生活が改善
去年、第一子が産まれて子育てがスタートした。
子供最優先での生活は色々と制約があるものの、その制約にはむしろメリットも多いと感じている。
子育てが始まって、
・22時〜23時頃の就寝 ・寝る2時間前から照明を落とす
という生活スタイルを徹底している(いうほど徹底はできてないかも)
22時〜23時頃に妻とバトンタッチ(夜は妻の担当)して、自分は就寝。朝には妻と交代して、妻を寝かせてあげないといけないので、夜更かしなどしている場合ではない。照明を落とすのは、子供のため。灯りを落としてあげたほうが眠るモードに入りやすいからだ。
この生活スタイルだと、早寝が強制される。強制的に就寝モードに入る。
自分自身、睡眠に関しては煩い方で、常にスマートウォッチをつけて睡眠スコアを計測している。よりより睡眠をとる方法については、これまで何冊も本を読んできたし、世の中に流布している睡眠Tipsについては大体把握しているつもりだ。
しかし、分かってはいてもできないことがあった。
それが
- 就寝時間を固定する
- 就寝時間を早める
- 寝る前にブルーライトや強い灯りを浴びない
だった。
これらは、いくら意識しても継続できなかった。やった方が良いと分かっていても、夜ふかしはしてしまうし、寝る前にスマホを見てしまっていた。
子育て中心の生活スタイルになったことで、上記の生活スタイルをいとも簡単に実現できた。
- 寝る2時間前には子供のために照明を落とす(自分のためではないから続く)。
- 暗い中でスマホをまじまじ眺めようとは思わないので、寝る前にブルーライトを浴びる回数も減る。
- 妻と二人三脚で子育てをする中、夜ふかしをするわけにもいかない。23時までには確実に寝る。
子育て中心の生活は、今のところ良い生活習慣を継続する強制ギプスのように働いている。
最近は子供が夜もだいぶ寝てくれるようになり、夜間の妻の睡眠時間も増えてきた。ゆくゆくは家族3人で早寝な生活スタイルを実現できたらと思う。
インプット過多なので、ブログに考えたことを書いてみる
子育てをしているとどうしても両手が空かない。
目や耳は暇なのでオーディオブックを聞いたり、 YouTube を聴いたりすることが増えた。
家事をしながら、寝ている子どもを抱えながら聴いている。
そのためか、最近はインプットばかりで頭がぐちゃぐちゃしている感じがある。なんだか消化不良だ。
日々考えていることなど頭の中のことを、このブログに書き出していこうと思う。
かつてブログは何度もやろうと試みたが、幾度となく挫折をした。
WordPress でやってみたり、はてなブログを立ち上げてみたり...。
潰したブログは数知れず。
ちゃんとした記事を書こうとすると、確実に挫折するだろう。
だから、極限までハードルを下げる。
頭の中のを書き出す作業は、一種の自己治癒だと聞いたことがあるが、このブログの目的はまさにそれだ。
誰かに読んでもらうというよりは公開ノートに自分の考えをまとめておく場所としてブログを使っていきたい。
140文字以上書けるツイッターというイメージで気楽にやる。
Azureのネットワークサービス
▼ 仮想ネットワーク
- 仮想ネットワークは独立している
- 同一のネットワークに接続しているマシンは、通信が可能
- 異なるネットワークに接続しているマシンとは通信が不可能
異なる仮想ネットワークでの通信
設定によって、異なる仮想ネットワークに属する仮想マシン間で通信することもできる(ピアリング)。
グローバルピアリング
異なるリージョンの仮想ネットワークに属する仮想マシンが通信する場合は、グローバルピアリングと呼ぶ。
ピアリングのポイント
- ピアリングをすることで、異なるリージョン間の仮想ネットワークでも接続ができる
- アドレス空間が重複している仮想ネットワーク同士は接続できない
- たとえば、
10.13.2.0/16
と10.13.2.0/17
の仮想ネットワークはピアリングができない
- たとえば、
▼ サブネット
仮想ネットワーク内を分割して管理するためのもの
特徴としては、
- Azureリソースは、このサブネット内に置く
- 仮想ネットワークを分割して管理する必要性がない場合は、サブネットを1つだけ作る
- サブネットを分離しても、中に配置されたアプリケーション同士は通信が可能(同じ仮想ネットワーク内なので通信できる)
- ネットワークセキュリティグループやAzure Firewallなどの機能を使うことで同じ仮想ネットワーク内のサブネット同士の通信を制限することもできる
▼ オンプレミスネットワークとの通信
サイト間接続
仮想ネットワークとオンプレミスネットワークを接続すること。例えば、仮想ネットワーク上のAzure仮想マシンと自社ネットワークの社内コンピュータが通信させられる。
VPNを使って、サイド間接続を実現する
仮想ネットワークとオンプレミスネットワークにそれぞれVPN装置を準備し、そのVPN同士を接続する。
手順
Azure側
- 仮想ネットワークに新しいサブネットを作成する
- VPNとして、仮想ネットワークゲートウェイ(VPNゲートウェイ)を作成する。これは、ゲートウェイサブネットに作成する。
- ローカルネットワークゲートウェイを作成する。オンプレミスのネットワークのアドレス範囲やVPNデバイスのIPアドレスを設定する
オンプレミス側
: 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 のユーザーとグループを作成する」というチュートリアルでやったこと、途中で調べたことなどを書いておく。
このチュートリアルでできるようになること
- Azure ADにユーザを追加する
- Azure ADグループを使用して、アプリとリソースへのアクセスを管理する
Azure AD B2Bでゲストユーザーアクセスを許可するという章もあったが、別記事とする。
Azure ADのユーザーアカウント
- すべてのユーザーアカウントに既定のアクセス許可セットが付与されている
- ユーザーアカウントにはアクセス権限の異なる様々な種類がある。たとえば、以下は上から順番にアクセス権限が強い。
- 管理者
- AzureAD組織のメンバー
- ゲストユーザー(外部組織の人が想定される)
アクセス許可とAzureADロール
Azure ADには、異なるアクセス許可を持つ多数のロールが存在する。
グローバル管理者
- フルアクセス権を持ち、すべての操作ができる
- Azure ADテナントを作成したユーザーは、自動的にグローバル管理者となる
ユーザー管理者
Azure ADテナントのユーザーとグループを管理できる
メンバーユーザー(組織内のユーザー)
新しいユーザーがAzure ADで管理している組織に参加したとき、デフォルトではこのメンバーユーザーになる。
ゲストユーザー
- 組織外のパートナーなどが想定される
- 登録すれば、メンバーユーザーと同様に管理できるので、外部の人と共同で作業するのに適している
- 任意のメールアドレス(初期ドメインやカスタムドメインを含まない)で、招待&登録できる
外部コラボレーションの設定
プロジェクトによっていは、外部のゲストユーザーを招待したくない場合もある。そういう場合は、Azure ADテナント単位で、ゲストユーザー招待を禁止することができる。
[Azure Active Directory] → [ユーザー設定] → [外部コラボレーションの設定を管理します]
の順に進むと、ゲスト招待に関する設定を変更できる。
Azure AD テナントを作成する
Azure ADを使うには、まずテナントが必要。
テナントとは?
そもそも、テナントとは何か?公式によると、下記のとおり。
Azure Active Directory (Azure AD) では、ユーザーやアプリなどのオブジェクトを "テナント" と呼ばれるグループにまとめます。 テナントを使用することで、管理者は組織内のユーザーと、組織が所有するアプリに対してポリシーを設定して、セキュリティおよび運用ポリシーを満たすことができます。
テナント作成の手順
- リソースの作成
- Marketplaceで「DNS ゾーン」と検索して、選択する
- すべてを表示をクリック
- 「Azure Active Directory」で検索して、選択する
- 作成する
- テナントの種類: Azure Active Directory
- 組織名と初期ドメイン名
初期ドメイン名
Azure ADテナントを作成する時にデフォルトで付いてくるドメインで、フォーマットは、 任意の文字列.onmicrosoft.com
となる。
なお、Azure ADで作成するユーザーのユーザー名は、ユーザー名@ドメイン名
となる。
カスタムドメイン
新しいユーザーを追加とユーザーの削除
ここは、ドキュメントに従って、ポチポチ作成&削除をするだけ。 なお、過去30日以内に削除したユーザは復元可能。
アクセス権を付与する方法
- メンバーに直接付与する
- アクセス権を付与したグループにメンバーを割り当てる
- 直接割り当て
- 動的割り当て
Azure ADグループとは?
Azure ADのユーザーを束ねる概念。 グループにアクセス権を付与すると、そのグループに属するユーザー全員に一括でアクセス権を与えることができる。
Azure ADグループにメンバーを割り当てる
グループにメンバーを割り当てる方法は、
- 直接割り当てる方法
- 動的メンバーシップルールを作成する方法
の2種類ある。
直接割り当て
その名の通り、あるグループにメンバーを手動で追加する。
動的割り当て
グループに対して、あるルールを設定しておく。 このルールに合致する場合、メンバーがグループに追加される。
https://docs.microsoft.com/ja-jp/azure/active-directory/enterprise-users/groups-dynamic-membership
- グループの[プロパティ]の[メンバーシップの種類]を動的ユーザーに変更
- [動的なユーザーメンバー]の下にある[動的クエリの追加]を選択
ここで、このグループに所属させるユーザーの条件を追加していく。 上記の例だと、国籍が日本で部署が開発部のユーザーは、Developer groupのメンバーとなる。
fnmを使ってNode.jsをインストールする(Windows)
WindowsでNode.jsの開発環境を構築したい。
dockerでも良いが、勉強や実験用にサクッとNode.jsの開発環境を立ち上げる程度の用途なので、
fnmというバージョン管理ツールを使って、直接インストールしてしまおうと思う。
Node.jsのバージョン管理ツールとして何を使うか
満たしておきたい条件としては、
- 更新が止まってない
- プロジェクトごとにバージョンを自動で切り替えられる
の2点。この辺りの検討については、下記サイトを参考にさせていただいた
結果としては、「fnmを使おう」という結論に落ち着いた。
fnmのインストール
chocolateyでfnmをインストールする
# chocolateyでfnmをインストール > choco install fnm -y # インストール済のパッケージ一覧を表示 > choco list -localonly fnm 1.28.2
PowerShellの設定ファイルに必要事項を追記
ドキュメントによると、fnmを使う前にいくつかの実行しないといけないコマンドがあり、Microsoft.PowerShell_profile.ps1にコマンドを追加する必要があるとのこと。
Microsoft.PowerShell_profile.ps1とは??
Windowsを使い始めたばかりで、そもそも「Microsoft.PowerShell_profile.ps1って何?」となった。
Microsoft.PowerShell_profile.ps1は、Powershellの設定ファイルであり、bashの".bash_profile"に相当するものと考えれば良さそう。
このファイルは、Powershellが立ち上がるたびに実行される。
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を立ち上げてもエラーが出なくなった。
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
.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