「嫌われる勇気」の個人的要点まとめ

📘 嫌われる勇気

Amazon.co.jp: 嫌われる勇気 eBook : 岸見 一郎, 古賀 史健: 本

アドラー心理学 is 何

🧍‍♂️すべての悩みは「対人関係」

すべての悩みは対人関係。逆にいうと幸福の源泉もまた対人関係。

アドラー心理学では対人関係を「人生のタスク」と呼ぶ。「人生のタスク」は以下の3つに分類される。

  • 💼仕事のタスク: 共通の目標である「成果」があるので、協力しやすい
  • 👨交友のタスク: 踏み出すのも深めるのも難しい
  • ❤️愛のタスク: 最も難しい

🚀対人関係のゴールは「共同体感覚」

幸福なる対人関係のあり方を考える上で、最も重要なのが「共同体感覚」。

共同体感覚とは、他者を仲間だと見なし、そこに「自分の居場所がある」と感じられること。

📡 共同体感覚を持てるようになるために必要なこと

共同体感覚を持てるようになるために必要なことは何か?

それは「自己受容」と「他者信頼」、そして「他者貢献」の3つ。

  • 自己受容: 与えられたものをどう使うか
    • 📌ポイント: 変えられるものと変えられないものを見定める「肯定的なあきらめ」
  • 他者信頼: 無条件に信じること
    • 📌ポイント: 裏切られるかどうかは、相手の課題
  • 他者貢献: 仲間である他者に対して働きかけること
    • 📌ポイント: 「わたし」の価値を実感するためにこそ、なされるもの

🌻アドラー心理学の掲げる目標について

アドラー心理学では人間の行動面と心理面のあり方の目標を以下のように定めている。

  • 👟行動面の目標:
    • 自立すること
    • 社会と調和して暮らせること
  • 🧠この行動を支える心理面の目標:
    • わたしには能力がある、という意識
    • 人々は私の仲間である、という意識

「自立すること」と「わたしには能力がある、という意識」は前述の 自己受容 に繋がる。

「社会と調和して暮らせること」と「人々は私の仲間である、という意識」は前述の 他者信頼 および 他者貢献 に繋がる。

🛠️ 共同体感覚へと進むための「課題の分離」と「横の関係」

共同体感覚へ進むためには、「課題の分離」と「横の関係」を理解して実践する必要がある。

「課題の分離」では「これは誰の課題なのか?」という視点で考えを進めます。自分の課題と他者の課題を分離する。そして 他者の課題には踏み込まない ことが大事。

「横の関係」では褒めてはいけない。意識の上で対等である必要がある。そして主張すべきは堂々と主張することが大切。

💡 勇気づけ

横の関係の先にあるアプローチとして「勇気づけ」がある。 勇気づけで大切なのは他者を評価しないこと。働きかけてくれた/手伝ってくれた相手に対して素直に感謝の言葉を伝えること。 人は感謝の言葉を聞いたときに、他者貢献できたことを知る。

「何もしていない」のに疲労を感じる

仕事で「何もしていない」のに疲労を感じるときがある。 正しい言い方をすると、「進捗が無いのに疲れてる」。 複数プロジェクトが並行して動いているときに、よく起きる。

原因はシンプルで、 「プロジェクトを進めないと〜」と考えている "だけ" の状態を続けているから。

対策としては、より具体的なタスクを考えること。 「プロジェクトを進める」といった漠然としたことは考えすぎないこと。

  • OK: 「プロジェクトのタスクXを進めないと」
  • NG: 「プロジェクトを進めないと」

もし、タスクXが分からないときはどうするか。 そのときのタスクXは、「タスクを考える」こと。 それ以上のことを求めないし、考えても仕方がない。

漠然とした「プロジェクトを進めないと」は 特に生産性も無く疲れるだけなので、考えないように意識したい。 今やるべきタスクを考えることに脳のリソースを使っていきたい。

仕事・業務周りで意識したいこと

自分用。思いついたら追記

前提

  • リモートワーク主体
  • 個人の思っていること
  • 働き方は人それぞれ

仕事で意識していること

非同期コミュニケーションの扱い

  • チャットツール(Slack等)は基本閉じておく
  • チャットツールを開く時間を決めておく
  • 業務時間外にチャットツールを開かない
  • 見た瞬間にリアクション or 返信する

タスク集中

  • 個人スマホを触らない
  • SNS(Twitter等)、ニュースサイト(はてブ等)を見ない
  • 業務時間中にだけ流す音楽を決めておく
  • その音楽は業務時間外には流さない
  • タイマー(カウントダウン式)を活用する
  • 割り込みタスクはキューに入れる
  • 5分で終わるタスクは見た瞬間にやる
  • 1つのタスクに集中する
  • ミーティング中はミーティングに集中する
  • ミーティング中に他のタスクをしない

タスク整理

  • タスクの二重管理を避ける
  • 進捗・成果を細かく分けて共有する

プロジェクト

  • メンバーを頼る
  • メンバーに感謝する
  • 関係者(メンバーや顧客)に興味を持つ

ドキュメント

  • ドキュメントの目的を意識する
  • ドキュメントのターゲットを意識する
  • 分かりやすい文章を書く
  • 1文を短く書く

健康

  • 残業しない
  • 自分の健康が第一
  • 良い姿勢で仕事する
  • 朝日を浴びる
  • 散歩する

ほか

  • 会社の方針に共感する

Emacs org-mode を使った仕事の進め方例(2021年)

はじめに

以前 ↑ の org-mode ブログを書きました。 そこから転職して 2年ほど経った今でも org-mode を仕事で活用しています。

org-agenda他 の今の使い方をまとめてみます。

(前提) 今の仕事

  • 主にAWSを触ったりしている クラウドエンジニア
  • 3~4 個ほどプロジェクトを掛け持ち、ほか 社内活動

プロジェクト/活動 単位で orgファイル作成

orgファイルはプロジェクト(ほか社内活動)単位で作成します。 命名規則は特にありません。 switch-to-buffer で移動(検索)しやすいバッファ名であれば良いです。

※ バッファ移動時の検索含め、 補完と検索は Counsel を入れています。便利です。 (参考: Emacsの補完と検索を超強化する - Qiita)

orgファイルは 全て ~/org 配下へ

プロジェクトごとにフォルダは基本作りません。 全ての orgファイルは ↓のように雑に置きます。

f:id:maskaw:20210507123119p:plain

雑に置いても org-agenda という TODOタスクを集約してくれる機能が あるので問題有りません。

ヘッドラインにTODOステータスを付与してタスク管理

おおよそ全てのプロジェクトバッファは 以下のような構成です。TODOキーワードをカスタマイズしています。

f:id:maskaw:20210507123152p:plain

トップレベルは PROJECT ステータスに設定。 その配下のタスクに TODODONE などのステータスを付与して タスク管理していきます。

ときには、いくつかの子タスクに分ける必要がある 大きなタスク(サブプロジェクト)が出てきます。 その場合は --SUBPJ キーワードを付与、その配下にTODOタスクを配置・管理します。

カスタマイズしている TODO/DONEステータスは以下の通り。

キーワード org-agenda 表示 備考
PROJECT yes プロジェクト
–SUBPJ yes サブプロジェクト
TODO yes タスクステータス: TODO
DOING yes タスクステータス: 集中して作業している
WAIT yes タスクステータス: 相手のレスポンス待ち
TREATED yes タスクステータス: 作業完了。相手の確認待ち
ROUTINE yes タスクステータス: 定期的に行わないといけない作業
REMIND yes リマインド: org-capture用
DONE no タスクステータス: 完了
SOMEDAY no タスクステータス: いつかやる

▼ 色分け

f:id:maskaw:20210507123218p:plain

※ TODOステータス/色のカスタマイズ方法は以下参照

org-agenda で各タスクを俯瞰

org-agenda は TODOタスクの集約表示を実現します。 タスク管理 効率化を実現できる org-mode の主要機能です。

f:id:maskaw:20210507123242p:plainf:id:maskaw:20210507123829p:plain

仕事始めや、作業の区切りに org-agenda を開きます。 タスクを把握したり、ステータスをアップデートしたりします。

ほか細かい話

お世話になっている org-mode の機能を紹介します。 とくにカスタマイズしているわけではないので簡潔に説明します。

おわりに

引き続き org-mode を愛用していきます。

My Ciscoルータのインターネット(PPPoE)接続設定 【レオネット編、フレッツ光編】

Table of Contents

  1. 概要
  2. 共通設定
    1. VLAN1 設定
    2. PortFast 設定
    3. DHCP 設定
  3. 設定 (レオネット編)
    1. ルーテッドポート(GE5) 設定
    2. ルーティング 設定
    3. NAPT 設定
  4. 設定 (フレッツ光編)
    1. ルーテッドポート(GE5) 設定
    2. PPPoE 設定
    3. ルーティング 設定
    4. NAPT 設定
    5. セキュリティ 設定
  5. まとめ

概要

去年に Cisco C841Mルータ (Amazonリンク) を購入して インターネット接続用ルータとして使用しています。

img

もともとレオ○レス回線(レオネット) 環境で利用していましたが、 引っ越しがあり現在はフレッツ光環境です。

その2環境でのCiscoルータのConfigを以降セクションで書き記します。

共通設定

C891M は下記の通り WAN側インターフェイスとして GigabitEthernet × 2、 LAN側インターフェイスとして GigabitEthernet × 4の構成です。

今回は

  • GE0 … 無線AP接続用
  • GE1 … デスクトップPC接続用
  • GE2 … Nintendo Switch 接続用
  • GE3 … 未使用 (ハブ導入予定)
  • GE4 … 未使用
  • GE5 … インターネット接続用

として各ポートを設定します。


論理構成図は下記のとおりです。

  • ローカル側IPアドレスは 192.168.10.0/24 とします
  • 管理用のルータIPアドレスは 192.168.10.254 とします
  • PCなど各種デバイスには DHCPIPアドレス (.1~.99)を割り当てます
  • NAPT(Network Address and Port Translation) を使って PCやその他デバイスがインターネット接続できるようにします

VLAN1 設定

interface Vlan1
 ip address 192.168.10.254 255.255.255.0

PortFast 設定

interface range GigabitEthernet0/0-3
 spanning-tree portfast

GE0,1,2,3 に対して PortFast を有効にします。

PortFast が無効になっている状態だと、PCを起動した際に DHCPによるIPアドレス取得、 通信可能まで時間がかかります。

PC、サーバ、ルータ等が接続するアクセスポートにこのPortFastの設定をするのが一般的です。 (引用: https://www.infraexpert.com/study/stpz7.html)

DHCP 設定

ip dhcp excluded-address 192.168.10.100 192.168.10.254
!
ip dhcp pool local
 network 192.168.10.0 255.255.255.0
 default-router 192.168.10.254
 dns-server 8.8.8.8
 lease 0 12
!

設定 (レオネット編)

レオネット はレオ○レス入居者が使えるインターネットサービスです。 このように壁にLANケーブルがにゅっと出ています。

本来はこれにレオ○レス備え付けの Life Stick を接続して テレビ画面上でYoutube を見たり Wi-Fi機能を利用したりできます。

Life Stickは使わず、このLANケーブルを C841Mのルーテッドポート(GE5) に接続します。

ルーテッドポート(GE5) 設定

interface GigabitEthernet0/5
 ip address dhcp

※レオネット・壁から伸びているLANケーブルについて

  • 少なくとも自分の環境では DHCPによるIPアドレス取得は 1つまでみたいです
  • 入手したIPアドレスはあくまで "レオネットのローカルエリア内IPアドレス" であり、グローバルIPアドレスではありません
  • 接続後 レオネット専用ベージにて入居者情報を入力することで インターネット接続が可能となります

ルーティング 設定

ip route 0.0.0.0 0.0.0.0 dhcp

NAPT 設定

access-list 1 permit 192.168.10.0 0.0.0.255
ip nat inside source list 1 interface GigabitEthernet0/5 overload
!
interface GigabitEthernet0/5
 ip nat outside
!
interface Vlan1
 ip nat inside
!
  • NAT変換対象となるアドレス範囲(192.168.10.0/24) を ACL1 に記述します
  • NAPT設定。ACL1 と GE5インターフェイスを関連付けます
  • GE5 を外部ネットワークに指定します
  • Vlan1 を内部ネットワークに指定します

設定 (フレッツ光編)

まともな回線になった現在の物理構成図を載せます。

レオネット環境との違い、考慮する点は下記のとおりです。

  • レオネット環境はWAN側ポート (GE5) はDHCPクライアントの設定でしたが、 フレッツ光環境は PPPoE(Point-to-Point Protocol over Etherne) 設定を入れます
  • レオネット環境と違い、WAN側ポートにはグローバルIPアドレスが割り当てられるため、 セキュリティ設定が必要です

ルーテッドポート(GE5) 設定

interface GigabitEthernet0/5
 pppoe enable group global
 pppoe-client dial-pool-number 1
  • GE5 にて PPPoE 設定を有効化します
  • GE5 と dial-pool-number が1の論理インターフェイス(=Dialer 1) を関連付けます

PPPoE 設定

interface Vlan1
 mtu 1454
!
dialer-list 1 protocol ip permit
!
interface Dialer1
 ip address negotiated
 mtu 1454
 encapsulation ppp
 dialer pool 1
 dialer-group 1
 ppp authentication chap callin
 ppp chap hostname xxxxxxxx@xxx.net
 ppp chap password 0 yyyyyyyy
  • MTU を 1414バイトとします
  • IPトラフィックを対象とする dialer-list 1 を設定します
  • Dialer 1にて下記設定を行います
    • PPPoE セッション確立時にIPアドレスを要求します
    • MTU(Maximum Transmission Unit) を 1454バイトとします
    • PPPでカプセル化を行います
    • Dialer 1の dial-pool-numberを 1に指定します
    • Dialer 1から出ていくトラフィックとして dialer-list 1 を設定します
    • ISP(Internet Service Provider) と行う認証として CHAP (Challenge-Handshake Authentication Protocol) を使用します
    • CHAP認証のホスト名を記載します
    • CHAP認証のパスワードを記載します

ルーティング 設定

ip route 0.0.0.0 0.0.0.0 Dialer1

NAPT 設定

access-list 1 permit 192.168.10.0 0.0.0.255
!
ip nat inside source list 1 interface Dialer1 overload
!
interface Dialer1
 ip nat outside
!
interface Vlan1
 ip nat inside
  • NAT変換対象となるアドレス範囲(192.168.10.0/24) を ACL1 に記述します
  • NAPT設定。ACL1 と Dialer 1を関連付けます
  • Dialer 1 を外部ネットワークに指定します
  • Vlan1 を内部ネットワークに指定します

セキュリティ 設定

前述の通り WAN側ポートにはグローバルIPアドレスが割り当てられるため、 セキュリティ設定が必要となってきます。

今回は Ciscoの CBAC(Context-Based Access Control) という機能を使います。 CBAC を使うことで、

  • LANから WANに向かう通信、およびその戻りの通信 を許可する
  • 外部から開始された通信は一部を除いて拒否する

といったFirewall 同等のステートフルな制御が可能となります。 (参考: https://www.infraexpert.com/study/aclz15.html)


Config は下記の通りです。

ip access-list extended EX
 permit icmp any any echo
!
ip inspect name CBAC tcp
ip inspect name CBAC udp
ip inspect name CBAC ftp
ip inspect name CBAC icmp
!
interface Dialer1
 ip access-group EX in
 ip inspect CBAC out
!
  • echo要求のみを許可する ACL(EX) を作成します
  • 検査対象のプロトコルとして TCP,UDP,FTP,ICMP を指定するルール "CBAC" を作成します
  • Dialer 1 に入ってくる通信に対して ACL(EX) を適用します
  • Dialer 1 から出ていく通信に対して CBAC を適用します

これで下図のように、LANからWANに向かう通信①、およびその戻りの通信②は CBACによって許可され、外部から開始された通信③は ACL(EX)によって (echo要求以外は) 拒否されます。

まとめ

最後にレオネット環境とフレッツ光環境の Config 差異を載せます (左:レオネット、右:フレッツ光)。

https://i.imgur.com/O147sMq.png

Config 量にもでていますが、フレッツ光環境の構築は割と大変でした。 久しぶりにPPPoEの設定をしたり、初めて CBAC を利用したりと苦戦しましたが勉強になりました。

その分 回線速度アップやグローバルIPアドレスゲットなど、 レオネット環境と比べてリターンが大きいです。

今後はせっかくグローバルIPを取得できたので、何かしらWebサーバを公開できたらなと思っているところです。

AWS CLIでVPCなどを作成する (+ チートシート)

Table of Contents

  1. 実行手順
    1. 1. VPC作成
    2. 2. サブネット作成
    3. 3. IGW作成
    4. 4. ルートテーブル
  2. チートシート (PowerShell)

AWS CLIVPC 他ネットワーク基本要素を作成する。

CLI でどんどん要素を作成していくと、何を作成したか分からなくなることが多い。
そのため、作成した要素を確認・整理できるスクリプトなどを作成しながら作業した。

▼環境


参考: https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-subnets-commands-example.html

実行手順

1. VPC作成

  • VPC 作成: aws ec2 create-vpc --cidr-block 10.0.0.0/16

2. サブネット作成

  • サブネット 作成: aws ec2 create-subnet --vpc-id vpc-xxxxx --cidr-block 10.0.1.0/24

3. IGW作成

  • IGW 作成: aws ec2 create-internet-gateway
  • IGW アタッチ: aws ec2 attach-internet-gateway --vpc-id vpc-xxxxx --internet-gateway-id igw-xxxxx

4. ルートテーブル

  • ルートテーブル 作成: aws ec2 create-route-table --vpc-id vpc-xxxxx
  • ルート 作成: aws ec2 create-route --route-table-id rtb-xxxxx --destination-cidr-block 0.0.0.0/0 --gateway-id igw-xxxxx
  • ルートテーブル 割当: aws ec2 associate-route-table --subnet-id subnet-xxxxx --route-table-id rtb-xxxxx
  • 最後に > サブネットに自動パブリック割当設定: aws ec2 modify-subnet-attribute --subnet-id subnet-xxxxx --map-public-ip-on-launch

チートシート (PowerShell)

確認用スクリプトは使い慣れてる PowerShell (AWS Tools for PowerShell) で作成。

VPC情報取得

  • 作成しているVPCすべてのCIDR、ID をリスト
Get-EC2Vpc | %{$_.CidrBlock + "`t" +  $_.VpcId}

▼ サブネット情報取得

  • 作成しているサブネットすべてのCIDR、AZ、ID をリスト
Get-EC2Subnet | %{$_.CidrBlock + "`t" + $_.AvailabilityZone + "`t" +  $_.SubnetId}

▼ IGW 情報取得

  • 作成しているIGWすべてのID、アタッチ先をリスト
Get-EC2InternetGateway | %{$_.InternetGatewayId + "`t" + $_.Attachments.VpcId}

▼ ルートテーブル 情報取得

  • 作成しているルートテーブルすべての ID、作成先VPC、サブネット関連付け、ルート情報をリスト
foreach($table in Get-EC2RouteTable){
  echo "`n### $($table.RouteTableId)"
  echo "  - VpcId: $($table.VpcId)"
  echo "  - Subnet Associations:"
  foreach($as in $table.Associations){
    echo "    + $($as.SubnetId) (VpcMain: $($as.Main))"
  }
  echo "  - Routes:"
  foreach($rt in $table.Routes){
    echo "    + $($rt.DestinationCidrBlock) --> $($rt.GatewayId)"
  }
}

↓以下のような出力になる

### rtb-aaaaa
  - VpcId: vpc-aaaaa
  - Subnet Associations:
    +  (VpcMain: True)
  - Routes:
    + 172.31.0.0/16 --> local
    + 0.0.0.0/0 --> igw-aaaaa

### rtb-bbbbb
  - VpcId: vpc-bbbbb
  - Subnet Associations:
    +  (VpcMain: True)
  - Routes:
    + 10.0.0.0/16 --> local

### rtb-ccccc
  - VpcId: vpc-ccccc
  - Subnet Associations:
    + subnet-ccccc (VpcMain: False)
  - Routes:
    + 10.0.0.0/16 --> local
    + 0.0.0.0/0 --> igw-ccccc

▼他: Nameタグを付ける関数

# -id   ... Nameタグを付けるリソースID
# -name ... Name Key のValue
function Aws-SetNameTag($id, $name){
  $tag = New-Object Amazon.EC2.Model.Tag
  $tag.Key = "Name"
  $tag.Value = $name
  New-EC2Tag -Resource $id -Tag $tag
}

Ansible 紹介

  • 社内でプレゼンしたAnsible紹介の Markdown 出力版
  • Ansible とは?メリットは? といった人向け
  • ※プレゼン対象の業務内容上、システム運用面のメリットを特に説明している

Ansible とは

Ansible はRedHat社が開発する オープンソースの構成管理ツール

  • 多数のサーバやネットワーク機器、クラウドインフラを統一的に制御ができる
  • Ansible Engine: Ansible の有償版 (サポート付)

主要な構成要素

  • Inventory: 管理対象ノードの一覧を記述したもの
  • Playbook: 一連の処理の流れを記述したもの
  • Module: 機器設定、制御のためのコマンド

Ansible の特徴

▼エージェントレス

  • 管理対象のサーバにエージェントを入れる必要が無い
  • 基本的にSSH接続ができれば良い

YAML

  • Playbook はYAML形式で記述 (≠プログラミング言語)
  • テキストベースであるため、更新時の差分比較が容易
  • 厳密なインデントルールに注意

▼冪(べき)等性

  • Playbook を何回実行しても結果(サーバの状態) は変わらない性質
    • → Playbook = サーバのあるべき状態
  • 「バッチファイルを誤って2回実行してしまい、予期せぬ不具合が起きた」といったことが Ansible では起きない

Ansible Tower とは

URL: https://www.ansible.com/products/tower

Ansible Towerは Ansible の機能拡張製品

  • WebGUI 上で操作
  • プロジェクトを作成して各ジョブ(Playbook) を管理
  • 数クリックでジョブを実行可能
  • ジョブのスケジューリング機能
  • アカウント毎にジョブ実行権限の設定

Ansible のメリット

Ansible によって、「自動化手法の標準化」ができる

  1. 自動化の作り方
  2. 自動化の実行方法

1. 自動化の作り方

▼今まで

  • 人・機種によってツールや書き方が異なる (bat, ps1, sh, …)
  • サイロ化、属人化が起きやすい

▼Ansible Engine によって

  • 全員が同じ方法で自動化ドキュメントを作成できる
    → 共通のコマンドリファレンス (Ansible Document)
    → 共通の文法 (YAML)

2. 自動化の実行方法

▼今まで

  • 機器によってログイン方法が異なる (SSH, RDP, Web, …)
  • 機器ごとの操作手順書、オペレータの負担

▼Ansible Tower によって

  • 全員が同じ方法で自動化を実行できる

まとめ

▼Ansible のメリット

  • 導入が容易: エージェントレス
  • 属人化を回避: 共通の書式, 共通のリファレンス
  • ジョブ実行ミスを回避: 冪等性

▼Ansible Tower のメリット

  • オペレータ負担の軽減: 様々な機器に対して、共通のジョブ実行方法
  • 適切な権限設定: アカウント毎のジョブ実行権限