さわらブログ

さわら(@xhiroga)の技術ブログ

AWS SSOでは Customize AWS Console Header Setting は使えない

TL;DR

  • Customize AWS Console Header Setting は アカウント名を後方一致で判定している
  • AWS SSOでのログイン時にアカウントメニューボタンに表示される文言は Permission / ユーザー名

したがって、アカウント名では判定できない。

凡例

アカウント名にユーザー名を hiroga を指定すると、実際にヘッダーの色がカスタマイズされる

f:id:hiroga_cc:20211012100930p:plain
Color changed by AWS SSO

書評: デジタルアイデンティティー 経営者が知らないサイバービジネスの核心

崎村さんのデジタルアイデンティティーを読みました。

OAuthとOIDCを触っている程度のエンジニアとしては、知らない用語が多くあって勉強になった... というか、勉強すべきことがたくさんあると思わされました。

(勉強になった、は用語をググったりこの本を3周くらいして初めて言えることですね)

まだ1周目を通しただけで書評とはおこがましいですが、感想を書き留めます。

アイデンティティーのライフサイクル管理にISO標準がある

アイデンティティーの状態遷移を表すISO標準があることを知りませんでした。

NRIの方が解説しているQiitaの記事があるので、仕様そのものに関してはそちらを参照ください(公式のリンクもそちらに)

qiita.com

いちエンジニアとしては、(変数の命名が楽になって良いな、なんたってISOからパクればいいもんな)と思うばかりです。

ところで、ユーザーのアイデンティティに関するライフサイクルといえば、私が知っているのはCognito UserPoolのライフサイクルでした。 docs.aws.amazon.com

見比べて思うのは、Cognitoのライフサイクル...ドキュメントの用語を借りれば「アカウントの確認プロセス」は、以下の点が異なるように見えました。

  1. ISOにおける「確立済み」に当たる状態が、「Registered」「Reset Required」「Force Change Password」で3種類ある
  2. 停止と保管が「Disabled」でまとめられている

1番目についてはCognitoに再考の余地があると思う一方(だってパスワード以外のログイン手段をサポートしづらくないか)、2番目については逆にCognitoがスッキリ・ISOが冗長に思われます。
有識者の方の意見も聞いてみたいところです。

幸福追求権から導かれるプライバシー

後半の章で気になった箇所です。いちエンジニアとしては、後半の章は経営者を諌める時に持ち出す文章だなと思って読みました。

プライバシーの解釈が面白くて、私の言葉で要約すると「相手によって違う自分を見せられる」権利なのだそうです。
何かを隠すのではなく、見せたいものを見せる、という肯定形の文章で表現されるのが、なんか良いなと思いました。

一昔前のYahoo知恵袋では、いちアカウントに対して複数のニックネームを持てたと記憶しているのですが、まさに「見せたい自分を見せる」機能だなと思います。
廃止されちゃいましたけど。笑

chiebukuro.yahoo.co.jp

あとはTwitterで投稿ごとに鍵かけらないかな、と思うことがありますが、それもプライバシーの権利に立脚してると思うと正当性がある感じがして強い気持ちで主張できますね。

その他

OIDC, OAuth, FAPIについても要件定義フェーズに相当するような用語が並べられており、学習に良いなと思っています。

まとめ

いちエンジニアとしてアイデンティティー...つまり認証とプライバシー・セキュリティに関する機能を考える上で、根拠を教えてくれる本でした。
それらについて考える必要があるとき、また読み返そうと思います。

1PasswordのChrome拡張は新しい方を使おう

TL;DR

1Passwordには2種類のChrome拡張があります。

新しい方

chrome.google.com

古い方

chrome.google.com

新しい方がChromeとの統合が優れていて、サクサク動くし、Desktop版がなくても動きます。しかも古い方は1Password 8 からは非対応になります。まだ古い方を使っている人は更新しましょう。

詳細

サポートコミュニティでも質問がある通り、2つのChrome拡張が存在します。

1password.community

新しい方はかつて 1Password X と呼ばれており、デスクトップ版との連携がないバージョンです。

webrandum.net

上記のブログでは 1Password (つまり古い方)を推奨しています。Dropboxで同期をしていたり、指紋認証でロック解除したい場合は必須ですね。
にもかかわらず、私が 1Password X (新しい方)を推奨するのは以下の理由からです。

Chromeとの統合が優れている

1Password XChromeのパスワード保存機能を上書きできます。

f:id:hiroga_cc:20210816094128p:plain
Save passwordの管理

特に会社でVaultを管理している時に便利で、保存先をChromeにしないことでパスワードが勝手に1Passwordに保存されるようになります。
この機能は、2021-08-16時点では Bitwardenにもありませんでした。便利。

サクサク動く

ロック解除までのスピードが、指紋認証がないことを計算に入れても段違いに早いです。
デスクトップ連携版では、そもそも拡張が機動しないことも多々ありました。

Desktop版がなくても動く

1Passwordのデスクトップ版がなくても動きます。業務で使っている場合、チームメンバーがインストールするアプリが減って楽ですね。

まとめ

新しい方の 1Password拡張アプリ(旧称 1Password X)への入れ替えがオススメです。

chrome.google.com

VSCodeでクリップボードの画像をMarkdownに貼れる拡張 "Paste Image"を設定する

Paste Imageが便利です。

marketplace.visualstudio.com

macOSの場合、 Cmd + Alt + Vクリップボードの画像の保存 + マークダウンへの埋め込みをしてくれます。

デフォルトだとマークダウンと同じフォルダに画像をアップしてくれるのですが、私の場合はフォルダ内の見通しが悪くなってしまうので設定を修正します。

setting.json の pasteImage を修正

私の環境では、Markdownファイルと同じ階層に assets フォルダを作って保存することにしました。

  "pasteImage": {
    "path": "${currentFileDir}/assets",
  },

以上で完了です。ちなみに、PasteImageは当該フォルダがない場合は再帰的に作ってくれます(ルートなど、権限がない場所を除く)

path と basePath

PasteImageの設定を見ると、似たプロパティがあります。

pasteImage.path

The destination to save image file.

...

pasteImage.basePath

The base path of image url.

basePathはMarkdownから見た画像の参照先で、例えばMarkdown内では絶対パスで指定したい!みたいな場合に便利です。

絶対パスで指定したい場合は

  "pasteImage": {
    "basePath": "/",
  },

でいけました。

(なお、私は頻繁にフォルダの構成を変えるので相対パスで指定しています)

~/.gitignore_global not works? → STOP using tilde(~)

TL;DR

Good 🎉

git config --global core.excludesFile "${HOME}/.gitignore_global"

OR

# .gitconfig
[core]
  excludesfile = /Users/hiroga/.gitignore_global_global

Bad 👎

git config --global core.excludesFile "~/.gitignore_global"

OR

# .gitconfig
[core]
  excludesfile = ~/.gitignore_global
  # OR
  excludesfile = ${HOME}/.gitignore_global

Environment

$ git --version
git version 2.32.0

書評 - 知らないと損するCSS

TL;DR

  • フロントエンドの専門家ではないが、コーディングを担当することになった人間に有効
  • 知らないプロパティの紹介、標準のCSSでこんなことができるのか、という驚きがある
  • CSS Custom Propertiesのそこそこ詳しめの紹介
  • CSS Grid Layout に関する参考サイトがとても分かりやすい。

はじめに

知らないと損するCSS をBOOTHで購入して読みました。

booth.pm

業務の関係でReactを触ることになったものの、フロントエンドのCSSの知識が欠けていたのでキャッチアップを目的としていました。
特に CSS Custom Properties と Grid Layoutについての触りの解説を求めており、この本はその要求を満たしてくれました。

※ React Nativeの経験があったので、 FlexBoxについてはなんとなく理解していた。

内容紹介

CSS Custom Properties

CSS Custom Properties について学べたのが良かったです。
RFCを読むとShadow DOMが関係するらしいですが、WebComponentの世界のことが分からないので意味がわからず...
立地なアプリケーションを組み立てるための文脈から要求された機能だと思っておけば良さそうです。

変数のScopeについて知れたのが特に嬉しく、職場のソースコードで見た root: の意味がようやく分かりました(それまでCSS in JSの独自記法だと思っていた)

CSS Grid Layout

株式会社ICSさんのオウンドメディアを紹介してくださっており、これが超知りたかったです。

これからのレイアウトはGrid Layoutで決まり?特徴で使い分けたいCSSレイアウト手法 - ICS MEDIA

Float、Flexbox、Grid Layoutの使い分けを述べており、結論、横にn個のアイテムを並べるならFlexbox、テキストの回り込みはFloat、それ以外は全部Grid LayoutでOK、ということ。
分かりやすい!

Flexboxばっかり使っていたのですが、「あ、そういえばあの <div> たしかにセマンティックには意味が薄いのかも...と思わされました。

まとめ

CSSについて2000年代の知識しかないに等しかったところ、適度にアップデートができました。
日本語の参考サイトかなり助かったので、今後はCSSに関する日本語の優良情報が集まっているところを探していきたい。

書評 - LEARN LIKE A PRO 学び方の学び方

アチーブメント出版は、見たところ実用本に自己啓発のエッセンスを垂らした本を作っているようだ。
LEARN LIKE A PROはその印象と裏腹に軽くない。Coursera の人気講義 "Learning how to learn" の講師コンビが執筆した、いわば同講義の書籍版だからだ。

私は2017年くらいに Coursera で同講義を受けたことがあるのだけど、この度日本語で書籍が出たということで復習のために読んでみました。

学び方の学び方

学び方の学び方

私なりのまとめ

  • 人間にとって「学習された」とは、物事を観察あるいは実演するときに、作業記憶だけでなく長期記憶から習得済みの概念を引っ張ってこれること
  • 「学習」とは、1. 作業記憶の上に新しい概念を並べること 2. 並べた概念を(短期記憶・)長期記憶に移すこと 3. 長期記憶からより思い出しやすくすること の3ステップ
  • 学習に向かわせるには、「タスクをやり遂げたら、これだけの報酬が得られる」という脳の働きと、「失敗するのではないか?」という脳の働きをうまく操作すること

学習について

作業記憶から短期記憶、長期記憶に記憶を移すことは、実際に物理的な移動を伴います。具体的には、おでこの裏側にある前頭前皮質(作業記憶)*1から脳の中心にある海馬(短期記憶)・こめかみの奥にある側頭葉(長期記憶)*2に移動されているようです。

難しい概念を噛み砕く場合、おでこの裏側をいかに空けておくかが大事です。言い換えると、作業中に余計なことを考えないこと。
ポモドーロ・テクニックを使ったり、なにか関係ないことを思いついたら「後でやる」リストに書き込んだりすること。
また、作業と作業の間に5分、または作業が連続していたら10分か20分の休みを設けること。要するに、前にやっていたことが長期記憶に移って、次の作業を綺麗な作業記憶で始められるようにすること。

それから、概念を分けることも効果的です。鍵盤ハーモニカの曲をフレーズごとに覚えて最後には一つの曲にするように、いくつかのステップに分けてしまう。

作業記憶から(短期記憶・)長期記憶に移すには、思い出すことが重要です。具体的なテクニックとしては、

  • 前回学んだことよりもより難易度の高いことを学ぶこと
  • 本の目次だけを見て中身を思い出すこと
  • 同様に、ノートの右側だけを見て左側を思い出すこと
  • プログラミングなら、ディレクトリの構成だけを見て実装を思い出すこと

思い出す頻度に関しては書籍中に言及がないものの、カナダのウォータールー大学のブログ*3から引用すると翌日、1週間後、1ヶ月後に復習すれば良いよう。
そう考えると学校の時間割が週単位なのは理に適っていますね。

モチベーションについて

タスクに着手しようとするとき、脳は損得勘定をする。
そもそも勉強より魅力的なこと(ポケモンとかAmong Usとか...)は部屋の中に多いけど、前頭前皮質腹内側部(たぶん眉間の2,3cm奥)を働かせることでそれらを先送りにできる。具体的には、「これが理解できたら、もっと色んなことが自由にできるようになる」みたいに考えることで。
逆にネガティブな面に思い当たると活発になるのが島皮質(こめかみの奥)で、「どうせ分からんしな」みたいな苦い思い出と一緒に活発になり、痛みを感じるようになり、勉強にブレーキをかける。

勉強する前に、どうしてそれを勉強しようとしているのか思い出すといいね。ノートの冒頭に書いたっていいかもしれない。
それから、実際に勉強を始めると数分で痛みが引くらしい。とりあえず手を動かすのも時には大事。

終わりに

範馬刃牙によれば、男の子は誰でも一度は最強を目指し、それを最後まで諦めなかった傲慢さ...自己肯定感の塊が範馬勇次郎らしい。
思うに、同じことが知的欲求にも言えるのでは。人間誰でも好奇心と一緒に生まれて、それを諦めなかった人も同様に圧倒的な自己肯定感を持っていると思う。
知ること、学ぶことを諦めないための奥義として、この本は私のバイブルになるでしょう。