AWS CLIとaws mfaとswitch role

default roleはあんまりつけたくないので
aws configure listでなにもでてこないのがよい

browserからswitch roleできることは確認しておく

switch roleにVPNが必要で、VPN接続忘れてエラーが出た(1敗)
switch roleにmfaが必要で、mfa設定してなくてエラーが出た(1敗)
mfa設定後に再ログインしていなかったのでエラーが出た(1敗)

access key, secret access keyはiamの画面から取る
https://us-east-1.console.aws.amazon.com/iamv2/home?region=ap-northeast-1#/security_credentials?section=IAM_credentials

create access key

$ aws configure --profile sanemat@example-bastion

この時点の~/.aws/config

[profile sanemat@example-bastion]
region = ap-northeast-1

~/.aws/credentials

[sanemat@example-bastion]
aws_access_key_id     = _AWS_ACCESS_KEY_ID_
aws_secret_access_key = _AWS_SECRET_ACCESS_KEY_

次が awsmfa
https://github.com/future-architect/awsmfa

$ awsmfa --serial-number arn:aws:iam::YOUR_BASTION_AWS_ID:mfa/sanemat --profile sanemat@example-bastion --mfa-profile-name sanemat@mfa-example-bastion 000000

serial-numberにmfaのresource

最後に ~/.aws/config 手書き

[profile other-role@example-dev]
role_arn = arn:aws:iam::YOUR_DEV_ENV_AWS_ID:role/other-role
source_profile = sanemat@mfa-example-bastion

$ aws sts get-caller-identity --profile other-role@example-dev

これでとれるにゃんね

$ aws sts get-caller-identity --profile other-role@example-dev
{
  "UserId": "AWS_ID:example-00000",
  "Account": "_AWS_ID_",
  "Arn": "_ARN_"
}

vscode-go + asdf をgo root で小手先回避

asdfで設定したgo をvscode pluginが見てくれない

ctrl+shift+p での Go: install/Update Toolsが動かない
command ‘go.tools.install’ not foundになってしまう

ctrl+shift+p での Preferences: Open User Settings (JSON)に
/home/matt/.config/Code/User/settings.json
“go.goroot”: “/home/matt/.asdf/installs/golang/1.20.2/go”,

することで直接見るようにする
値は go env のGOROOT
asdfで切り替えても切り替えた先を見てくれないけど、ひとまず小手先回避

problems with asdf #2051 https://github.com/golang/vscode-go/issues/2051

got ISTQB Certified Tester Foundation Level (CTFL)

ISTQB Certified Tester Foundation Level (CTFL)取得しました。
テスト周り基本知識はあるぞ!ってね。
https://atsqa.org/certified-testers/profile/993b58dc95e449da90115476602d9003

品質の話をするならまず基本を網羅するためにCTFLとるといいよと以前から周りには取得を勧めていたものの、自分が取るには至らず。
情けないけど出題の英語がわたしの英語力を超えてるんですよね。でもやる。

この辺の知識わたし基本的なことは知ってるんですよ、って説明するより資格取ったほうが早いよな、ってことで youtubeのいい教材を教えてもらったこともあり取り組みました。日本だとわたしがテストや品質周りも気にしてること知られてたり知られてなかったりすると思うのですが、日本を離れているので、ね。

最終スコアは75%、合格しましたが結構ギリギリでした。あぶねー


体験記

youtubeのリストを一周。
sample cを解くと20/40。不合格。間違えたところをSyllabusを確認して進む。
次にsample bを解くと36/40。前進。
一週間開いてsample aを解くと 30/40。75%は合格してるけど厳しいな??

我慢しきれなくなったので受験する。

ISTQBをオンラインで受けられる一番メジャーなのがUSのASTQBで atsqa.org から受験する。ややこしいな。
テストセンターか自宅等なので自宅で。
いつでも受けられるのかと思ってたら、特定のスロットに申し込む必要がある。当日なんてなくて、最短で翌日2:30am or 8am。
8amを逃すとわたしのスケジュール的に来週以降になるのでここでいくしかない。英語母語でない場合試験時間が15分延長されて75分なのだけど、このスロットが少ないみたい。60分だともっと選べる。

そして、kryterion webassessor というやつなので、windowsかmacで、専用ソフトをインストールする必要がある。ひえ。windows デュアルブートで良かったですね。

テスト開始前に、web cameraでぐるっと周囲を撮影しなさい、机を撮影しなさい、でchatで staff がokというと先に進める。

そんな感じでした。

ASTQBのCTFLは229USDでした。

refs:
https://www.youtube.com/playlist?list=PLj5VKaW115t1o1hk5ZbNWFr4sW5mBpvmv
Certified Tester Foundation Level https://www.istqb.org/certifications/certified-tester-foundation-level
勉強一ヶ月で ISTQB Foundation Levelを通った話 – Qiita https://qiita.com/rueyjye/items/51e51cd4cd412b59df65
ソフトウェアテスト資格「JSTQB認定テスト技術者資格」とは|Foundation Levelを中心に概要からメリット、勉強方法をご紹介 | SHIFT ASIA -ソフトウェア品質保証のプロフェッショナル- https://shiftasia.com/ja/column/jstqb%E8%AA%8D%E5%AE%9A%E3%83%86%E3%82%B9%E3%83%88%E6%8A%80%E8%A1%93%E8%80%85%E8%B3%87%E6%A0%BC%E3%81%A8%E3%81%AF/

ベトナムオフショアをおすすめするか

短い回答

おすすめするがやり切る力が要ります。

対象

すでに日本に開発チームがいて、日本で採用を進めているが国内エンジニア採用厳しすぎる、となっている方。

立ち位置

ハノイのフランジア(現サンアスタリスク)でラボ型開発。その後、ホーチミンシティで現地法人立ち上げ。

アサイン

これが肝です。オフショア会社にリソースをあてがってもらうわけですが、レベル差が結構あるため、ちゃんとしたものが出来上がってくるかはまあまあ博打要素があります。
ちゃんとしていない=セキュリティ的に大穴がある、新規で作ったそばからメンテナンス不可能になっている、など。
博打要素を消すためには、少なくともまともなエンジニアで2,3年は経験があってチームリーダーになれるぐらいの人を専任でアサインする必要があります。
コードレビュー、設計レビュー、あとは最悪だめな人にチェンジを言えること。

課題

“少なくともまともなエンジニアで2,3年は経験があってチームリーダーになれるぐらいの人” がこれをやりたいか? キャリアにとって得になるか? は結構かなり難しいですね。消耗しているのを見ました。うまくやらないと詰みかねないけど、ちゃんと練ることができればもちろんチャンスです。
“一旦落ち着いたらまたきちんとエンジニア力伸ばすほうが良いよ、このままだと中途半端になるよ。”って感想伝えたこともあります。

制約

  • 完全新規開発
  • 仕様を探して日本語の社内wikiなどを掘り起こす必要がない
  • webアプリなら、Laravel, Ruby on Rails, Next.js あたりの利用

たとえば自社フレームワークならわたしは国内ニアショアを選びそうです。

その後

行ける自信がついてきた、ところでベトナムオフショアの天井にも気づくはずです。そして現地法人立ち上げへ。

ベトナム法人CTOとしてうまくいったこと

2018年9月から2021年7月までの2年2ヶ月、ベトナム法人のCTOとしてほぼ立ち上げから関わりました。
法人設立前の準備期間も合わせると、2018年6月からの3年です。

もっとこうすればよかった、という反省や後悔であったり、反対に美化した思い出であったり、そんなのばかりできちんと振り返ることができていません。いい機会なので振り返ります。

達成したこと

ベトナムでサービス開発を出来ている

CTOになって5年経った感想、振り返りなど

マネーフォワードCTOの中出さんが、5年経った感想の大項目に載せてくれているこの一文。これが全てです。

拠点人数はIRなどで出していないようなのですが、わたしがはじめに思った以上の成果を出せました。

掘り下げる

Decided, led, and managed an engineering team, a SRE site reliability team, a corporate operation team, an information security team, a product management section team and a management team as a leader, a manager, and CTO Chief Technology Officer.

意思決定する。自ら率いる。サポートする。焚きつける。しりぬぐいをする。
これをいろんな状況で繰り返しました。

はじめのエンジニア採用

自分ならできるんじゃないかという根拠なしの自信はあったものの、正直一番きつかったのがここでした。

時期的にはこの記事のあと。

マネーフォワード初の海外法人、ベトナム法人立ち上げ奮闘記 | 社内の様子

ベトナム法人立ち上げサポートチームが東京からホーチミンシティに集合。
ベトナム現地法人チームがハノイからホーチミンシティに集合。
ホーチミンシティにいたメンバーが待ち受ける。
3拠点からの集合。ホーチミンシティの一週間で最初のエンジニアを採用します。事前に準備はしたものの、最後はわたしにかかっていました。
もちろん事前に意識合わせはしました。”変な人微妙な人を採用するぐらいなら、採用しない意思決定をする。” とはいえ、掛けたコストを考えると、とはいえ。

採用はこちらが候補者を採用すると同時に、候補者がこちらを見定める場でもあります。エンジニアが見るのは最後はCTOです。英語でまともに面接hostするのは初めてでした。でもやるしかないのだ。前日は過緊張でまともに寝られず、えづくのを隠して平静を装っていました。

採用面接、どういうひとがほしいのか、カルチャーフィットをどう見るのか、参加者で議論しながら、自分たちの社員像を作り上げていったのもここでした。現地法人チーム4人には良い試練でした。

リファラル有りの候補者はいたため完全0からではないです。それでもとにかく1週間で3エンジニアの採用を自信を持って決めることが出来ました。

最初の社員のエンゲージメント

CTOといっても、Tが得意なCメンバーってだけなので、全部やる必要があって全部やりました。
日本語社内規定の英語への翻訳、オフィスの掃除、開閉錠、備品の購入、macbookの購入、採用とメンタリング。組織づくり。

ベトナムでは最初の2ヶ月が試用期間。日本の”試用期間”にくらべて、雇用者側も一方的に解雇でき、また被雇用者側も軽く働いて見定めて、結構な割合で見限っていく。そう聞いていました。最初に採用したバックオフィスのプレイングマネージャーに辞められないように、人生相談からここで働くことのメリットからベトナム女性の日のプレゼントから、ドライウェットなりふり構わず一緒に働きたいと思わせる。
こんなことやったことないですね。初めてですね。
仕事?やることやればいいんでしょ派だったので。

彼女は、3年以上会社の中核を担ってくれました。ありがとう。

エンジニアチーム

日本から来たCメンバー3人がエンジニア出身で、それぞれなかなか日本チームから信頼貯金がある状態でした。その信頼貯金を取り崩しながら、ベトナムチームの信頼を高めていきました。それぞれがコードレビューをし、QAをし、障害対応をしながら、ベトナムチームの経験値を高め、ベトナムチームがひとまず安心しても良さそうだ、という状況を作っていきました。

ほかエンジニアメンバーに対しては、メンタリングとともにメッセージを伝え続けました。
メンバーみんなの市場価値を上げる、これが会社の最大のサポートだ、って言い続けました。

また、社内にライトニングトーク文化を作りたくて、まず自分が発表を何度もやりました。社内ライトニングトーク会は一年半ぐらいやり続けました。

しばらくのあいだ、試用期間退職以外の退職者が1人だけ、という期間が続きました。新しい会社だというボーナスは大きいものの、結構効いたようです。

続エンジニア採用

最後のHire or Not 以外の全権限と責任を持ちました。最後も合議。
コード書けない人、git使えない人、を弾きたかったので、GitHub private repositoryでcoding challenge を実施する、これをSRE teamにもmanager候補にも例外なく求めました。
それから書類不備以外のスクリーニングは全部やりました。どうしてもスキルとサラリーのバランスを見て判断したい以上、しばらく他のメンバーに渡すことが出来ませんでした。そして、チェックした履歴書の数が1000枚超えたときには謎の達成感がありました。Job Description もだいたいわたしが書きました。JDをもとに、このポジションを採用するんだ、とアピールしてapprovalを取る。そういう流れでした。

当時、リファラル採用に並んで、圧倒的に量と質が良かったのが ITViec というサイト経由でした。しかも、他の人材紹介会社が、電話を掛けまくったり、SNSにspam postしたりして乱獲する前時代的な環境の中、ある程度ターゲティングでき、しかも成約フィーがなく広告費だけで採用できて、勝手に「慈善事業をやっている人たち」って呼んでいました。

多様性と女性エンジニア

女性エンジニアが働きやすい環境にするためには女性エンジニアが必要です。なので、ごく初期から女性エンジニアの採用について意識しました。

国際女性の日に出ている記事。いい記事ですね。
MFV Respect Day – Những điều từ Dev nữ, đã ai biết? – CÔNG TY TNHH MONEY FORWARD VIỆT NAM

女性に限らず多様性を取り込みたかったです。なお、ベトナム人と日本人以外を採用したい、老人を採用したい、と言っていたのはわたしの居る間には実現しませんでした。

management membersを焚きつけ続ける

はじめの4人がboard memberの時代が長かったです。彼らに、自分に、プレッシャーを掛け続けました。今あなたがしなくてはいけないことはなんですか、それでいいと本当に思っていますか、どういう理由でその優先順位にしてますか、などなど。いやー、よくついてきてくれましたね。結構むき出しできつくて怖かったかと思います。わたしもかなり余裕がありませんでした。

わたしはもともとこぼれ球を拾いに行くタイプなのです。よく言えば周りを見ている、普通に言うと常に気が散っている。やれやれ系。

それが、まずわたしが課題を全部斬り伏せるMatt無双からの、他のメンバーが拾い、そのさらにこぼれたところをわたしが拾う、という謎のスタイルにたどり着きました。しばらくはこれがワークしました。

It’s Accelerator, neither Communicator or Bridge Engineer

これは、あまりわたしの成果ではないかな。彼らをCertified Scrum Masterにする、と強く主張したぐらいでした。

Accelerator – Người gắn kết team Nhật Bản và Việt Nam – CÔNG TY TNHH MONEY FORWARD VIỆT NAM

彼らの成果です。

SREチームの構築

ベトナムにSREチームを作って本番運用する。これがベトナム拠点にとって一つの大きなマイルストーンでした。
いくつか新プロダクトが立ち上がるタイミングで、ここでSREが必要だって言い張り、Job Descriptionを書いてDepOps経験者を採用しました。
東京HQのインフラチームの若者を焚き付けて、ベトナムに1ヶ月出張で来てもらう。
railsエンジニアを焚き付けて、SREにキャリアチェンジしたくなるように仕向ける。

うまく行ったのは結果論ですが、これはタイミングとかいろいろきれいにハマってくれました。

このあたりから、適切なポジションを作り、やってくれそうな人をそこに据え、いなければやりそうな人を作り、チームという箱を作ってあとは任せる、というやり方に自然と行き着きました。それがワークしたのとワークしなかったの、半分ずつぐらいかな。
ワークしなかったものは、自分たちが失敗して学んでほしい、というのがうまく伝わらなかった場合が多いのかな。あとは、頑張りすぎて燃え尽きたケースもありました。そういう燃え尽きたケースは完全にマネジメント側が失敗。ごめんね。

ruby on rails以外も推進する

拠点立ち上げ時、言語はどれでもいいよと言われていたけど、ハノイのオフショアrailsプロジェクトを持ってきた以上railsで始めるしかない。
社内でgolangだったチームからの依頼を必死で引き留め、golangの火を絶やさないようにしました。あと、Ruby on Rails, Golang, JavaScript, Kotlin/Java, Swift/Objective-C 以外に増やさないようにしてました。
Golangも推進していくことになるHQの同じ方針に合わせて、それが後に花開きました。

本番運用できるようになる

前半最後の山場はここでした。本番運用できるように、Information Security teamの立ち上げ。

ITILや内部監査、内部統制の本を付け焼き刃で読むしかなくて読んでいたみたい。泣けますね。

まとまらないまとめ

わたしだったらこうするのにな、って妄想していたのを全部具体化する機会がありました。
やってみて色々学びました。親会社ありきなので、大分差し引きして考える必要は有ります。
それでもトータルで思った以上の成果でした。ですけど、はじめに思ったところには全然届かないところも多かったです。20-30%かなあ。
うまく行かなくて学んだこと、をこれからいくつか書いていきます。
もともと、うまく行かなかったことを書きたかったのでした。そのために、まずうまく行ったことを書かないと始まらなくて書きました。

1st semester 2021 (Fall 2021) at the University of London

I’ve finished 1st semester 2021 (Fall 2021) at the University of London, BSc Computer Science.

I finished my final exam for Discrete Mathematics (DM), and I submitted my final work for Introduction to Programming I (ITP1).

Background:

My conclusion:

  • I expected the uni too much.
  • I will continue for several semesters here in UoL.
  • I need to improve my English, mathematics, data structure, and algorithm.
  • Then if I keep my motivation, I will jump to MS in Computer Science without completing UoL.

Pros:

  • It’s my first time finishing my semester. I failed it a lot of times on edx, coursera, etc.
  • I had a negative feeling about my mathematics, but I can finish DM.
  • I learned about an online university.
  • Some of the students discussed advanced degrees on slack. It’s very helpful.
  • Some students (or TA?) gave me a good suggestion when I got struggling.

Cons:

  • Too slow response for the messages. I didn’t have that yet, but many students complained about it on slack.
  • PBA students need to get 80% or above on DM and ITP1 on a mid-term exam for continuing courses. I had a mid-term exam in mid-Jan. Unfortunately, I haven’t received the result yet on Mar 13. The deadline for application for the spring semester will be on Mar 20. Hahahaha. They will extend the deadline.
  • Too slow response for transcripts. I knew it on slack.
    They don’t want to give online students a letter of recommendation. (So, how do we join MS?)
  • The quality of materials depends on the lecturer.
  • There were a lot of typos on the final exam, and they didn’t have any response.
  • They don’t have enough motivation for online students.

OKRs 2022 Q1

Objective

  • 面白いことをやっている人に混ざって、自分も周りに面白いと思ってもらえる人でいる

Key Results

  • 5posts / week, dev.to にoutput する
  • おもしろそうなrepositoriesに3commits いれている

Health

  • literary, health, 毎日ring fit adventure する
  • 毎週新しい人に会う or 昔の知り合いに声をかける