@kyanny's blog

My thoughts, my life. Views/opinions are my own.

目黒最終出社日

貸与されていたラップトップと社員証の返却、および私物の引取のために目黒オフィスに赴いた。二ヶ月ぶり?もっとかも。

元々あまり多くの私物を持ち込んでいなかったので旅行カバン一個に全部入った。 HHKB Pro 2 墨 (US) だけは安全に回収しなくてはならなったし、人に頼むのも悪いし、まぁ最後にもう一回くらい行ってもいいだろうと。意外に重くなり、小雨も降っていたので目黒の街並みを懐かしんで散策とは行かなかった。時間はあったのだからゆうパックで自宅に送りつけて HUB TOKYO の方まで歩いたりすればよかったかもしれない。

笹塚時代からお世話になっている方が出勤している日だったので、最後に挨拶できてよかった(出勤日であることを調べて、その日に合わせて出向いた)。最後はわざわざビルの正面玄関まで見送っていただいた。コロナが落ち着いた頃に、昔を知る人たちにまた近況報告できたらいいな。

コロナの影響で全社的に原則自宅勤務・出社日は事前に申請して許可を得る、みたいな運用になってるようで、それにしてもオフィス内の人数は休日かと思うくらいに少なかった。二桁いってなかったと思う。これで業務に支障が出てないのならマジでオフィスは不要だなと思った。自宅勤務が苦手な身としては複雑だが。

人に働きかけるときは真摯であるべきだ。しかし他人はコントロールできない。つまり、真摯に働きかけるが結果には期待しない、という分離が必要になる。訓練してこれを実践していくと、真摯に他人と相対する自分の裏側に空洞があって、空洞の外側の世界を冷めた目でじっと見つめている自分、のようなイメージが浮かんでくる。そのように分離しなければ心が持たないのだ。

マネジメントのスキルは潰しが効き、賞味期限も長い。だからこそ、未知の部分が少なくて退屈に感じてしまった。それもマネジメントの仕事を続ける気にならなかった一因だ。

マネジメントは結局「人をどう扱うか」に帰着する。モノ言う経営資源はヒトだけだ。組織運営は人の集団を統率することだ。人材の育成と評価はもちろん人の処遇のことだ。

人間という生き物の本質は数十年程度では変わらない。文化や価値観は時代とともに少しずつ、ときにはあるとき一気に変わる。組織のあり方も徐々に変わる。そういう変化に適応する必要はあるし、「人をどう扱うか」の具体的で細かいテクニックは移ろっていくが、本質的な部分は変わらない。

人を扱う上で最も大事なことは、相手を一人の人間として扱うことだ。人の扱いで問題が生ずるのは感情的な対立が発生するときである。感情的な問題を抱えた人に対して理性的なことを説いても通用しない。まず感情に配慮し、理性を取り戻させてから、理屈を述べる。対人コミュニケーションの様々な方法論は、相手の性格・話題の内容・話すタイミングのバリエーションであり、どれも「まず感情に配慮し、それから理屈をいう」というパターンにおさまる。

マネジメントスキルの行使先である人間が変わらないのだから、スキルの賞味期限は長くなる。ドラッカーやカーネギーなどマネジメントの名著が今も読み継がれるのは、当時のセオリーがまだ通用することの証左だ。

マネジメントスキルはポータブルでもある。営業職のマネージャーなら、似たような製品を似たように売るのであれば別の組織の営業マンに対してもマネジメント手法が通用する可能性は高い。

つまり、マネジメントスキルは一度身につけると長く使えるので、費用対効果が高い。世の中の変化に合わせてアップデートしていく努力は必要だが、ソフトウェア開発のスキルと比べれば、単位時間あたりに新しく学習・習得しなければならない知識や技術は少なくて済む。おまけにマネージャーは一般的に給料も高い。お得なスキルだといえる。

しかし、変化に乏しい領域は時間とともに(蓄積とともに)新たに知る内容が減っていく。学習欲の強い人にとっては退屈だ。新しい方法論を学ぶ機会が無いわけではないが(ティール組織・OKRなど)、結局は「人をどう扱うか」という本質は変わらない。新しいテクニックもアレンジが違うだけで本質は同じだから、未知の部分はもはや無い。性格・話題・タイミング他、状況に作用する変数の組み合わせパターンを多く蓄積し、状況に適用させるだけのゲームと化す。ただの暗記と反射であり、知的好奇心は満たされない。

人間相手のことなので、奥は深い。状況変数も数え切れないほどのバリエーションがあるだろう。中には思ってもみなかったような状況に出くわすこともあるかもしれない。それでも、「あぁ、要するに同じルールでパターンが増えるんだよね?」という点は変わらず、それを見切ってしまった時点で先が見えてしまった。反射で対応できるパターンを増やすだけの単純作業を何年も続ける退屈に、自分の知的好奇心は耐えられないと思った。

ソフトウェア開発の知識と技術も長い時間軸で見ればパターンの繰り返しはあるのだろうし、ストックを増やすゲームの側面は強い。しかし今までのところ十年に一度くらいのペースで非連続的な変化が起きているし、ストックすべき知識と技術の量は比較にならないほど多い。新たな知識が生み出されるスピードはとても早く、常人には吸収し切れない。それならば死ぬまで飽きずに済む。

(もちろん、他人の感情に配慮するという感情労働に疲弊したこと、感情的な振る舞いと理性的な振る舞いを同時に行うことの精神的な負担の強さに疲弊したこと、のほうが、マネジメントをこの先二十五年の仕事とする気にはなれなかった理由としては遥かに大きい)

AWS を速習している。ネットワーク周りの弱さが祟って VPC 周りの把握に苦労している。それ以外でも AWS のイロハ的なところがわかっていない気がする。これまで年単位でさぼってきたツケだ。いつかは払うべきだった。一番早いタイミングが今だというだけの話だ。

IPv4 CIDR が 192.168.0.0/28 のサブネット内に 11 個以上の EC2 インスタンスを起動しようとすると以下のエラーが発生する

Amazon VPC やサブネットへの理解を深めるための実験。

  • IPv4 CIDR が 192.168.0.0/28 の VPC を作る
    • AWS VPC では /16 から /28 まで指定できる
  • その VPC 内に IPv4 CIDR が 192.168.0.0/28 のサブネットを作る
    • /28 はネットワーク部が 28 ビットでホスト部が 4 ビットなので、 IP アドレスの個数は最大で 24 = 16 個
    • このサブネット一つで VPC 内の CIDR アドレスを使い切る
    • 実験用に t2.micro インスタンスを立ち上げたいので、アベイラビリティゾーンに ap-northeast-1a 以外を指定する
  • terraform で EC2 インスタンスをたくさん立ち上げてみる
  • 以下のエラーが発生した
    • インスタンスは 11 個起動した
Error: Error launching source instance: InsufficientFreeAddressesInSubnet: There are not enough free addresses in subnet 'subnet-0dc95f1172768f21a' to satisfy the requested number of instances.
        status code: 400, request id: 6724ec1b-59c2-4e6e-bb6a-4529fbe51e8f
各サブネット CIDR ブロックの最初の 4 つの IP アドレスと最後の IP アドレスは使用できず、インスタンスに割り当てることができません。たとえば、CIDR ブロック 10.0.0.0/24 を持つサブネットの場合、次の 5 つの IP アドレスが予約されます。

- 10.0.0.0: ネットワークアドレスです。
- 10.0.0.1: VPC ルーター用に AWS で予約されています。
- 10.0.0.2: AWS で予約されています。DNS サーバーの IP アドレスは、VPC ネットワーク範囲のベースにプラス 2 したものです。複数の CIDR ブロックを持つ VPC の場合、DNS サーバーの IP アドレスはプライマリ CIDR にあります。また、VPC 内のすべての CIDR ブロックに対して、各サブネットの範囲 + 2 のベースを予約します。詳細については、「Amazon DNS サーバー」を参照してください。
- 10.0.0.3: 将来の利用のために AWS で予約されています。
- 10.0.0.255: ネットワークブロードキャストアドレスです。VPC ではブロードキャストがサポートされないため、このアドレスを予約します。
  • 立ち上がった EC2 インスタンスに割り当てられたプライベート IP アドレスを調べると、上記と合致した
     1      private_ip                   = "192.168.0.10"
     2      private_ip                   = "192.168.0.11"
     3      private_ip                   = "192.168.0.12"
     4      private_ip                   = "192.168.0.13"
     5      private_ip                   = "192.168.0.14"
     6      private_ip                   = "192.168.0.4"
     7      private_ip                   = "192.168.0.5"
     8      private_ip                   = "192.168.0.6"
     9      private_ip                   = "192.168.0.7"
    10      private_ip                   = "192.168.0.8"
    11      private_ip                   = "192.168.0.9"