every Tech Blog

株式会社エブリーのTech Blogです。

日本CTO協会の合同新卒研修に参加しました

はじめに

こんにちは、株式会社 エブリー の24新卒の蜜澤、きょー、新谷です。
今回は、2024年5月から7月にかけて開催された日本CTO協会主催の合同新卒研修に参加した際の内容と学びについてご紹介します。

合同新卒研修とは

本研修は、日本CTO協会が主催する新卒エンジニア向けの合同研修です。新卒エンジニアが業界全体・企業横断で育てられる試みとして、今年から開催されました。

日本CTO協会が新卒エンジニアを業界全体・企業横断で育てる試み「新卒エンジニア向けの合同研修」を5月29日から実施

上記記事にも書いてありますが、開催に至る背景として

  • 現状企業が経営・事業を大きくする、新たなチャレンジをする上でもエンジニアが常に足りない状況にある
  • スタートアップや中小企業が新卒エンジニアを採用するには、採用コストだけではなく育成のコストも大きくかかる

といった課題があることから、本研修が開催されています。

また講義は毎回オフラインで行われ、その後開催される懇親会では、他社の新卒エンジニア同士で交流を深めることができました。(懇親会では毎回お酒と軽食が用意されているので、和気あいあいとした雰囲気で交流ができました!)

研修内容

研修回 講義内容 講師
第1回 キャリア戦略・フォロワーシップとマネジメント 日本CTO協会 / 株式会社LayerX
第2回 Git基礎ハンズオン 株式会社Progate
第3回 BtoB SaaS開発基礎 株式会社アンチパターン
第4回 インテリアコーディネートで学ぶアジャイル開発 株式会社メンバーズ
第5回 BigQueryで始めるデータ分析入門 & 生成AIを活用した分析効率化 グーグル・クラウド・ジャパン合同会社
第6回 AWS研修 アマゾンウェブサービスジャパン合同会社
第7回 サーバ解体研修 GMOペパボ株式会社
第8回 生成AIに関する講義 日本マイクロソフト株式会社
第9回 日本CTO協会ISUCON新卒研修 + 解説 株式会社PR TIMES

24卒の新卒エンジニア3人でこの研修に参加させていただいので、1人1つずつ講義の内容をピックアップし、それぞれの講義内容と学びについて紹介します。

キャリア戦略・フォロワーシップとマネジメント

開発本部のデータ&AIチームの蜜澤です。

私からは「第1回:キャリア戦略・フォロワーシップとマネジメント」の紹介です。
講義を担当してくださったのは、日本CTO協会 理事 / 株式会社LayerXの松本CTO(@y_matsuwitter)です。

この講義は

  • 前編:投資的に考えるキャリアのあり方
  • 後編:フォロワーシップとマネジメント

の2つのパートに分かれていたので、それぞれのパートについての学びを紹介します。

前編:投資的に考えるキャリアのあり方

信頼や信用、知識や経験、時間といった自分が持っている「人生の資産」を、自分の仮説や学びたい方向性に向けて効率よく投資し、資産を拡大させていくという「投資家的に考えるキャリアのあり方」について学びました。

今自身に必要な資産を考え、自分の手元の投資可能な資産(お金、時間、信用など)をどのように配分し、どのようなリターンを期待するのか、抱えるリスクはなにかというポートフォリオを作成し、資産を拡大していくことが重要とのことでした。

何を投資するのか?

新卒の私には、たいした資産(特に知識や信用)はありません。
いったい何を投資すれば、、、

「時間」です!
家庭がなく(現在独身・一人暮らし)、健康上の問題も特にない20代の今が人生で最も可処分時間が多いです。
この20代の時間を最大限未来に投資していくことの重要性を松本さんは強調されていました。

「ドキッ!」
とした人も多いのではないでしょうか。
私もその一人です。

可処分時間を未来に投資していくことの重要性を理解しても、私のような遅延評価(必要になったらやる)型の人間は、今必要でないことはサボってしまうことがあると思います、、、

そんな時に努力を習慣化し、投資を続ける助けとなるのが「コミュニティ」のようです!

コミュニティの力

「コミュニティの平均値が自分」や「周りの5人の平均が自分」などの言葉はよく耳にします。
松本さんが所属していたコミュニティから次々とCTOが誕生したという話を伺い、より自分が所属するコミュニティの重要性を感じました。

そして、コミュニティにおいて特に重要だと思ったのが「健全な嫉妬」です。
仲間の昇進や技術的な成長を目の当たりにすると、私たちは「あいつには負けられない」という健全な嫉妬を感じます。
「健全な嫉妬心を努力の習慣化に繋げることで成長する」というのがコミュニティの力だと思いました。

幸いにも私の周りには同期や、CTO研修で出会った同世代のエンジニアといった切磋琢磨できる仲間がいます!
この中で一番になるという気持ちで、努力(投資)を続けていかなければと考えさせられる前編でした。

後編:フォロワーシップとマネジメント

マネージャーの仕事は、単に管理するだけではなく、チームの成果を最大限高めることだと学びました。

チームで大きな成果を出すために

チームの成果は、一人一人のモチベーションと能力の掛け算の総和であり、全員がモチベーション高く、かつ専門性を発揮できると大きな成果が出ると松本さんは考えているようです。

そのモチベーションのために、一人一人が納得感と自信を持てるように、意思決定をし、内容を言語化して伝え、メンバーを導くのがマネージャーの重要な役割のようです。

役割は分かりましたが、実際にやるのとても難しそうだなと感じました。
メンバーのモチベーションの源泉を考え、納得感を持ってもらうためにメンバーのことをよく理解するとういう難しい役割を日々担っていただいているマネージャーには頭が上がりません。

マネージャーを支えるために私たちにできることも教えていただきました!

こまめな自己開示

マネージャーとうまく連携するには、自己開示が重要だそうです。

自己開示のコツは、何が楽しいか、何を目指したいか、何がわからないか、何が目標でどのような状況かをこまめに伝えることだとわかりました。

わからないことは頻繁に聞きますが、「何が楽しいか」や「目標と今の状況」などはこまめに伝えられていないなと反省しました。
「私自身が自己開示したつもりになっていても、マネージャーには伝わっていなかった」ということはよくありそうだなと思い、自分のことをどれだけ理解してもらえているのか確認しつつ、こまめにコミュニケーションをとっていくことが大切だなと思いました。

マネージャーを理解する

自己開示だけではなく、マネージャーを理解することも大切だと教えていただきました。
「あなたのマネージャーの目標はなんですか?」と聞かれましたが、この時の私はわかりませんでした。

マネージャーを理解することで自分が何をすべきかわかると思ったので、1on1やチームでのランチ会の時に「マネージャーの目標」や「休みの日に何をしているのか」などを聞いてみました!

ということで、少しだけ私のマネージャーについて紹介します!!

私のマネージャー

  • 短期目標:マネジメントしながら手を動かすプレイングマネージャー的に技術を高めていきたい
  • 長期目標:全体的に組織を見て、率いていきたい
  • チーム目標:各自の専門性を深めつつ、専門性+αのことをできる組織にする
  • 休日の過ごし方:お子さんと遊ぶことが多いが、最近は暑いので大変

まだまだ理解不足ですが、実際に聞いてみたことで、私はこれから専門性(データ系)に加えて、+α(バックエンドやインフラ等)の知識も身につけていく必要があるということを認識できました。

私のチームにはマネージャー以外にも上司が4人おり、マネージャー以外の方々のことも理解する必要があると思うので、コミュ二ケーションを頻繁に取っていこうと思います!

フォロワーシップはマネジメントのスタートライン

マネージャーを支えるとは、マネージャーを理解しようとすることで、その視点を手に入れるということは、自身がマネジメントへ進む準備運動であると学びました。
将来的にはマネジメントにも関わりたいと思っているので、フォロワーシップを磨き、準備運動を完了させようと思います!

今後に向けて

この研修を5月末に受けたので、この研修から約3ヶ月が経ちました。

しかし、この研修で学んだ、可処分時間を有効活用し、最大限に未来に投資するというのができているかと聞かれると、まだまだできていないと思います。

この記事の執筆にあたり研修の内容を振り返る良い機会になったので、健全な嫉妬心を燃やし頑張ります!

サーバー解体

こんにちは、開発本部 DELISH KITCHEN 開発部のきょーです! 僕の方からは GMO ペパボ株式会社様に講義をしていただいた「サーバ解体研修」について紹介していこうと思います。

講義の名前からわかるかもしれませんが、実際にサーバを解体していく内容です!とてもワクワクしますね!僕自身家にサーバもなければ自作 PC を組み立てたこともなかったので、この機会に物理サーバを解体しまくって理解を深めるぞ!と息巻いて講義に臨みました。

解体するぞ!!

参加者は何班かに別れた後、GMO ペパボの社員の方にサポートしていただきながら既に組み立てられているサーバを解体していきます。

最初は ↓ のような状態です。

天板を外すと ↓ のような感じに。ここにびっしり詰まっているそれぞれの部品を解体していいんだ、、、と思うと早く手を動かしたくなりました。 この時点でファンが 4 つ、CPU、メモリ、電源ユニットが 2 つあることがわかるかと思います。電源ユニットが 2 つある理由としては電源の供給元を分散させることによって 1 つの供給元が落ちたとしても稼働し続けられるように、とのことでした!いろんなことが考えられて設計されていることを学びました。(教えてくれたメンバーの方ありがとう!)

ここからは班のメンバーで手分けしていきながら解体作業に移っていきます。最初はおっかなびっくり解体していたメンバーも ↓ のようにサーバが解体され尽くされる頃には「これって取れるかな?」と手を動かしていてとても面白かったのを覚えています笑

解体していく!!

解体しました。正直ここまで解体できるとは思っていなかった、、、達成感えぐい、、、(メモリの部分を外した時の写真取り忘れた)

また解体しやすいように部品が配置されている設計にとても驚きました。外したいものだけを外せるし、戻したいときもすぐ戻せる、そのような部品の配置、ケーブルの配線になっていて感動しました。(ソフトウェアも交換したい部分だけを交換できるように設計することは大切ですよね。) 一つ一つの部品が組み合わさり PC が完成されていることを学べたとても貴重な機会だったと思います。

元に戻すまでが研修ということで、これから組み立て直していきます。 難しいかと思いましたが、解体しやすかった分元に戻すのも手順さえ覚えておけば簡単でした!

無事に元に戻せました!!おめでたい!!

サーバー解体を終えて

解体から元に戻すところまで無事にできました。さてそれでは物理サーバはクラウド技術が発展してきた現代でどのように使われているのでしょうか? 全てクラウドを使ってサービスを運用することは可能です。しかし適切に物理サーバを用いることで運用コストを下げたり、パフォーマンスをあげたり、セキュリティ面を強固にすることができるとのことでした。例えば、クラウドのストレージは格納するデータ量によってコストがかかりますが、物理サーバにそれらを配置することでコストが抑えられるかもしれません。また、機密データ等は物理サーバに配置することでセキュリティの強化を見込めます。

適切にクラウドなのか物理サーバを使うのかを判断できるようになることで考えられる選択肢に幅を持たせられ、エンジニアとして成長できると講師の方が言っていました。クラウドしか触ったことがない自分にとっては実際に分解することで物理サーバの知識や興味を深められ、エンジニアとして成長できる一歩を踏めたと感じています!

P.S

自分たちのサービスである DELISH KITCHEN であれば高解像度の動画や画像を取り扱っているので、それらを物理サーバに配置することで運用コストが下がるのではないか、、?と妄想したりしました。もし物理サーバを導入するとした場合、サーバの購入費や、どこにサーバを配置するのか、既存から乗り換えるのにどれくらいコストがかかるのか、など考えなければいけないことがたくさんありそうです。

また、懇親会の時に HDD も解体してきました!!元には戻せませんでした!!!!

ISUCON 研修

DELISH KITCHEN 開発部でソフトウェアエンジニアをしている新谷です。私からは第9回のISUCON研修について紹介します。

ISUCON研修では、本番のISUCONのようにチームで与えられた問題に取り組む形式で行われました。

そもそもISUCONとは、「いい感じに スピードアップ コンテスト」の略称で、お題となるWebサービスを決められたレギュレーションの中でどれだけ高速化できるかを競う大会のことです。

事前準備

私はISUCONには参加したことはないのですが、事前にISUCON研修に参加する人たちで有志の勉強会が開かれたのでそれに参加していました。そこでは、ISCUONでよく使われるツールやテクニックについて知ることができ、研修当日に備えることができました。

ツールとしては以下のようなものがあり、研修当日に活用しました。

  • pt-query-digest
    • slowqueryの解析に使うツール
    • mysqlのログを解析してsqlが遅い順に表示される
  • alp
    • NGINXのアクセスログの解析に使うツール
    • 遅いエンドポイント順に表示される

研修当日

研修当日は、計測ツールの導入、ボトルネックの特定、修正を高速に行いました。計測から修正までの一例としてDBへのインデックス追加を行った際の流れを紹介します。

まずpt-query-digestでslowqueryを解析します。以下は解析結果の一部です。上位に書いているクエリほど遅いクエリです。

# Profile
# Rank Query ID                      Response time  Calls R/Call V/M   Ite
# ==== ============================= ============== ===== ====== ===== ===
#    1 0x624863D30DAC59FA16849282... 497.2385 69.5%  1885 0.2638  0.02 SELECT comments
#    2 0x422390B42D4DD86C7539A5F4... 165.4411 23.1%  2016 0.0821  0.01 SELECT comments
#    3 0x100EC8B5C400F34381F9D7F7...  37.9935  5.3%   131 0.2900  0.00 SELECT comments

上記から、SELECT commentsが遅いことがわかりました。そのため、commentsテーブルにインデックスを追加しました。その後再度pt-query-digestでslowqueryを解析します。

# Profile
# Rank Query ID                     Response time Calls  R/Call V/M   Item
# ==== ============================ ============= ====== ====== ===== ====
#    1 0x4858CF4D8CAA743E839C127... 48.3164 44.0%    933 0.0518  0.00 SELECT posts
#    2 0x7A12D0C8F433684C3027353... 10.2537  9.3%    160 0.0641  0.00 SELECT posts
#    3 0xDA556F9115773A1A99AA016... 10.1553  9.3% 126417 0.0001  0.00 ADMIN PREPARE
#    4 0x396201721CD58410E070DA9...  8.3778  7.6%  58802 0.0001  0.00 SELECT users
#    5 0xCDEB1AFF2AE2BE51B2ED5CF...  8.3270  7.6%    191 0.0436  0.00 SELECT comments
#    6 0x19759A5557089FD5B718D44...  7.2387  6.6%  15215 0.0005  0.00 SELECT posts
#    7 0x624863D30DAC59FA1684928...  4.1172  3.8%  23976 0.0002  0.00 SELECT comments
#    8 0x422390B42D4DD86C7539A5F...  3.9942  3.6%  25103 0.0002  0.00 SELECT comments

インデックスを追加したことで、SELECT commentsのクエリが大幅に高速化されました。このように、計測してボトルネックを特定し、ピンポイントで修正を行っていきました。上記の流れで、他にもNginxへのキャッシュやクエリのチューニング、N+1問題の解消などを行い、大方目立ったボトルネックを全て解消することができました。

個人的にN+1を時間内に全て解消することができたのは、自分にとって大きな成長だと感じています。今回のISUCONはGo言語を選択したのですが、普段業務でGo言語を書いていることもあり、比較的スムーズにN+1問題を解消することができました。

結果

最終的に、私たちのチーム「唐揚げ丼」は31チーム中2位という結果を残すことができました。

前半にツール導入に手間取ったりして反省点などありますが、ISUCON本番のような空気感を味わうことができ、とても有意義な研修だったと感じています。

ちなみに、1位の黒酢サンドさんのスコアは2,3位のチームのスコアの2倍以上差があり圧倒的でした。後日記事が公開されていましたが、学ぶべき点が多くありました。

【CTO協会研修記録】 未経験エンジニアがISUCONで圧倒優勝するまでの話

特にhtmlファイルのExecuteが遅かったため、htmlを全てバイト列で持ってレスポンスに書き込むといった点にはかなり驚きました。

研修全体を通して

この研修を通して私たちが得たものは大きく分けて 2 つあると思っています。

1 つ目はエンジニアとして成長するためのきっかけです。 社内で利用しているような技術から触ったことがない技術まで本当に幅広く体験することができました。また、成長するためのキャリアについての考え方も学ぶことができました。ただ学んで終わりにするのではなく、学んだ技術を自分のものにし、どう会社に還元していくかを考え行動することが次のアクションとしてあると思います。そして研修を通していただいた分を何らかの形でこの業界に還元していきたいです!

2 つ目は研修を一緒に駆け抜けてくれた仲間です。 同じ年代の方達と会社の枠を超えて巡り会えたのは一番の財産だと思っています。ここで知り合った仲間とのコミュニティを大事にし、健全な嫉妬を与えたり、受けたりしてこれからも切磋琢磨していきたいです!最初はよそよそしかったですが、研修を通して仲を深め、今では輪読会を行うようにまでなりました!

この研修を開いてくださった日本 CTO 協会の方々と、講義をしてくださった企業様、スポンサーをしていただいた企業様には本当に感謝しています。ありがとうございました!!