ID:23510さん

あなたを気にしている企業

キャリアビジョン


領域を選ばない課題解決力×技術経験で、突き抜けた成果と実績を生み出す。

エンジニアという枠にとらわれず、エンプラ向けの営業、開発責任者、EMなど幅広く行ってきた。 業界をゲームから製造業や建築業に変えたり、エンジニアからPdMやPMや営業に急に環境を変えても成果を出してこれている実感はある。 5年後振り返った時に、自分が作り上げたと思える最高のプロダクトがあり、大きな報酬を組織・自分が手にしている状態でありたい。

プロジェクト経験

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

2016年/2年以上

[バックエンドエンジニア/エンジニアリーダー/開発ディレクター]GvGゲーム レイテンシ60%改善/エンジニアリーダー、開発ディレクター

※エンジニアリーダー、開発ディレクターは別セクションに譲り、ここでは技術的挑戦で一番大きかったものを紹介 これ以外にも大型開発を多数実施。 【プロジェクト概要(目的・人数・体制など)】 最大25 vs 25の計50人で戦うとGvGがメインのカードゲーム。 ヘビーユーザー同士(参加人数、行動回数が多いチーム同士)の対決では、レイテンシがかなり高くプレイ体感が悪いことが発覚し、調査及びレイテンシ改善を行った。 その結果、最大約60%のレイテンシ削減に至った。 【プロジェクトにおける自身の役割】 原因の調査、分析 チューニングのための実装 評価 【解決までの流れ】 ■調査 ○New Relicでボトルネックの調査 本番のAPIサーバーに仕込んでいるNew Relicをもとに、レイテンシが高い時の各処理の所要時間を計測。 レイテンシが高い時の所要時間99%はロック待ちだった。 ロック待ち時間が肥大化したことによって、行動数の多いGvGではレスポンス速度が悪化していたことが推測された。 ○待ち時間行列モデル(M/M/1)による検証 上記ロック待ちの仕組みの置いて、ロック中の処理時間と平均レイテンシの関係は待ち時間行列のM/M/1モデルを適用して検証した。 待ち時間行列のM/M/1モデルとは、1つしかない窓口にお客がランダムに到着した場合の、 ・お客の到着する頻度 ・窓口での処理時間 を元に、平均の待ち時間を算出するモデル。 M/M/1モデルをGvGのロック待ちの仕組みに適用すると 単位時間当たりに到着するgvgのリクエスト数:λ 単位時間当たりにサーバーが処理するリクエスト数:μ として、平均のレイテンシ(W)は W = 1/ (μ - λ) で計算できる。 これをグラフ化し数値検証したところ、 ロック中の処理時間を20%改善すればレイテンシは最大70%改善することが分かった。 そのため ・ロック中に行う処理を減らす ・ロック中の処理を高速化する を行うことにした。 ■取り組んだチューニング ○ロック中に行う処理を減らす 必ずしもロックが必要ない処理(排他制御をしなかったとしてもデータの整合性が崩れない)のみで構成されるAPIを洗い出し、ロック処理を削減した。 インゲームにおけるリクエスト数の25%を占めるAPIのロック処理を削除することができた。 ○ロック待ちの間に、ロックが不要な計算を始める ロックを取得した後に各種データを取得・計算をすると、どうしてもロック中の処理は長くなる。 ロックを取得した前後で計算結果に差がない処理を抽出し、ロック取得前に処理を行うようリファクタした。 ○アベイラビリティゾーンの統一(インフラ) もともとAPIサーバー、Redis、MySQL全てアベイラティビティゾーンを半分つずつに分けて2つのアベイラビリティゾーンに配置していた。 APIサーバーごとのレイテンシを確認すると、存在するアベイラビリティゾーンによってレイテンシにばらつきが確認された。 それぞれのアベイラビリティゾーンに存在するAPIサーバーにNew Relicを入れて検証したところ、逆ゾーンに存在するRedis、MySQLへアクセスする際レイテンシが高いことが分かった。 これを受けて、API、Redis、MySQLのアベイラティビティゾーンを全て片側に寄せた。 各MySQLのレプリカを全て逆のアベイラティビティゾーンにおくことで、データの信頼性は担保した。 この対応でGvGのletencyが改善しただけではなく、ゲーム全体のレイテンシが平均10%程度改善したり、一部バッチの処理時間が1/3になったりなど、ゲーム全体として大幅な改善が見られた。 ○テーブルのindexの見直し、不要レコードの削除 不要に貼られたindexが多かったため、精査の上削除した。 更新処理におけるindexの更新時間を少しでも短くするために行った。 ○Auroraの導入、統合(インフラ) 過去の負荷対策によって、4台に水平分割していたGvGのDBを1台のAuroraに集約した。 書き込み処理が多かったためAuroraと相性が良く、同じ費用で更に処理性能の高いものに変更できた。 同じクエリのレイテンシを比較しても、Aurora導入前より改善されていた。 ○遅い処理の探し出し、チューニング 上記のような抜本的な改修と合わせて地道なリファクタリングも行った。 長年の運用開発が積み重なった結果、効率の悪い検索ロジックやや不要なDB参照をしている箇所がいくつか見受けられたため、 計測→リファクタリング→計測を繰り返し、を改善を行った。

2019年/1年以内

[バックエンドエンジニア/エンジニアリーダー]リリース直前の負荷試験〜運用中ゲームにおけるエンジニアリーダー

# ①リリース直前で負荷試験 リリース直前で負荷試験の進行に問題があることが発覚し、状況を改善すべく役員に呼ばれ参画。 今までのプロジェクトの負荷試験経験をもとに、 - リリースまでに担保すべき負荷試験のパターン(スパイク試験、長時間試験etc)の整理 - サービスが担保すべき負荷試験の数値の策定 - 負荷試験実施スケジュールの策定 - 有識者を呼んでの進捗/試験結果の精査 を推進し、リリースまでに負荷試験を間に合わせた。 # リリース後の不具合/障害対応 サービス運用経験のあるメンバーが少なかったため、障害対応や不具合の調査の取りまとめ及び実行の推進を行なった。 # リリース後の大型機能開発のリード 開発期間2ヶ月、バックエンド3人体制の大型新機能追加においてテックリードを担当。 技術的設計要素: - 多人数系による厳密な排他制御(メイン実装担当) - テーブル数:20 リリースが間に合わない状況から、不具合の出にくい設計と工数が膨らむ要件のプランナーとの調整を行い、無事リリースに間に合わせ、不具合がほぼ起きなかった。 # エンジニアリングマネージャー就任 それまでのエンジニアリングマネージャーが異動になったため、エンジニアリングマネージャーに就任。 それまで弱かったプランナー/事業責任者との連携を強め、よりエンジニアチームが事業にコミット出来る状態にしていった。

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

2020年/半年以内

[バックエンドエンジニア]新規ゲームにおけるカスタマーサポート向けログ基盤開発/ リリース後機能開発、本番対応etc

※リリース後に行っている業務は上2プロジェクトと似ているのでここでは割愛。 下記はリリース前に行なった一番大きな対応の紹介 リリース後にカスタマーサポートのお問い合わせ調査で - ユーザー行動ログの調査 - ユーザー状態確認 が必須となる。 それまでリリースされたタイトルではバックエンドエンジニアが調査を担当することも多かったが、リリース後のユーザー規模的にバックエンドエンジニアでは対応不可能であることが見越されていた。 非エンジニアでの調査が出来る環境と継続な調査環境改善を実現すべく、 - 調査ツールに必要な内容の要件定義 - バックエンドの実装とログ基盤を鑑みたカスタマーサポート用ログの設計/実装 - redashを用いた調査環境の整備 - 調査用クエリの実装 - CSエンジニア(クエリ調査)の採用と育成 を一貫して行なった。 結果リリース後カスタマーサポートチームだけでお問い合わせ調査をほぼ裁くことができ、その後追加が必要になったクエリはCSエンジニアで完結出来るようになった。 バックエンドエンジニアは開発に集中できる環境になり、チーム全体の生産性向上につながった。

2015年/1年以内

[バックエンドエンジニア]大規模イベント新規開発 サーバーサイドエンジニア

【プロジェクト概要(目的・人数・体制など)】 大規模イベント新規開発 サーバーサイドエンジニア ◾️サービス ブラウザゲームの名残を残すゲームで、インゲーム/アウトゲームの多くの処理はサーバーにもたせている。 それゆえ更新系のAPIが叩かれる数が非常に多い。 DBの負荷が高くなりがちであるため負荷対策が重要であり、また同一レコードへの更新が同時に走ることから排他制御を厳密に実装する必要がある。 ◾️人員 プロジェクト全体:50人 このイベントの開発体制 プランナー:1人 ネイティブエンジニア:2人 サーバーサイドエンジニア:2人 フロントエンジニア:1人 デザイナー:1人 ◾️イベント概要 チーム対抗で得点を競うイベント ミニゲームが3種類ほどあり、 ・ミニゲームを通してビンゴを開ける ・ドロップしたアイテムを組み合わせて使用する ことによってポイントを獲得。 ◾️開発規模 期間:3ヶ月 テーブル数:約40テーブル サーバーコード量:約2万行(自動生成を除く) 【プロジェクトにおける自身の役割】 サーバーサイドのリードエンジニア 一部バッチの実装を除き、 テーブル設計、実装、単体テスト を全て担当 【当時の背景/抱えていた課題等】 同一のレコードを多数のユーザーが同時に更新する処理が頻繁に行われることにより ・負荷軽減 ・排他制御 が重要であり課題が多く発生した。 負荷軽減のためにユーザーデータはmemcachedを使っていたが、排他制御の処理のタイミングによりmemcachedとDBのデータ不整合が発生するケースが多発した。 また、ほぼ同時にAPIが叩かれた際に後に叩かれた方のAPIの処理において、先に叩かれたAPIの更新結果ではなく更新前の値を参照して処理をしてしまう不具合が発生した。 【課題に対して自身が発揮したバリュー及び成果】 ・多数のユーザーが同時更新するテーブルはmemcachedを使わず直接DBを参照するように変更 memcachedを使うと参照/更新タイミングを厳密に管理する必要が発生するため、実装が複雑になってしまった。 他のエンジニアが今後触る際不具合になりうる可能性も考えて、実装をシンプルにするために直接DBを参照する設計に変更した。 その代わりユーザー自身しか更新しないテーブルはmemcachedを使用して負荷の軽減をはかった。 ・処理冒頭でselect for updateで更新で値を取得することで、タイミングによって参照データが変わる問題を潰した 処理の中で取得したタイミングを考慮しなくて済むよう、冒頭でselect for updateでの取得することにした。 これにより同時に処理が走った場合でも、先に処理された方が更新した値を確実に取得できるため、排他制御によるデータ不整合は起きない。 その分ロック待ちの時間が長くなりユーザー体感が悪くなる可能性があるため、更新処理は出来る限りチューニングして短くなるよう実装した。

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

マネージメント能力

EMや開発責任者を歴任した後、立ち上げたDX事業部の開発組織20人のマネジメントを担当 # 時系列 - EM - 5人、2年 - スマホゲーム開発ディレクター -10人、1年 - EM - 5人、1年 - スマホゲームQA責任者 - 社内4人、外部20人、半年 - DX事業部開発責任者 - メンバー20人、4年
DX事業部は子会社の片隅で立ち上げた小さなプロジェクトだったが、大手製造業会社とのアライアンスが決まり、急遽大規模に開発体制が必要になった。 # ==過去分 # EM ## 役割 - エンジニアリングチームのマネジメント - コード/サービスの品質担保(テックリード) # 開発ディレクター ## 役割 - 各リリースタイミングごとの開発物の決定(事業責任者とのすり合わせ) - ガントチャートを利用した進行管理、遅れた場合の調整と意思決定 - リリース作業の統括(クライアント、サーバー、QA) エンジニアリングマネージャー①と兼任 # QA責任者 ## 役割 - エンジニア/QA間での認識合わせ/情報共有フローの構築 - QA計画の立案 - QA計画の実施
その後も活躍できる強いエンジニア組織を作るために下記を行なった # 組織人数、体制の構築 ## 新卒向けブランディングを徹底強化。結果その代で一番人気の配属部署に - 近年新規事業に若手から関われる部署がかなり少ないことに目をつけ、紹介資料を作り徹底訴求 - その代で鼻息荒いエンジニアにリファラルでこえをかけ徹底クロージング - その代の優秀層、インフルエンサーであったこともあり、口コミで行きたい人が増えていった ## 社内の徹底リファラルによる異動獲得 一緒に働いたことがある優秀な人リストをはじから出してもらい、端からクロージング ## 週1程度稼働の超優秀層のエンジニアを顧問で獲得 過去関わりがあった2名にフロントエンド、バックエンドそれぞれ入ってもらい、技術意思決定の後ろ盾を作った。 若手比率が高くなると想像される中で経験で裏打ちしてプロジェクトが進行できるようにした ## 業務委託採用においては、エンジニア人材エージェントを本社エージェントとは別に個別開拓 - 大手人材エージェント経由からは供給は多いが仕事力、技術力が安定せずプロジェクトリスクが大きかった - 社長や経営にエンジニアがいる小規模目な会社にアプローチをかけ開拓 - 1社はその後の急な大規模開発立上げの時に大きく寄与 # エンジニア組織の構築、運営 ## 1on1の徹底実施。人数増加に伴い育てたメンバーに対応を委譲 過去のマネージャー経験から1on1や対話力には自信があったため、それを活かす形で初期は全メンバーと1on1を継続的に実施 https://note.com/growsic/n/n94095fd0cfb4 ## メンバー向けの発信の強化、記事化 1on1や対話力には自信があったが、組織のスケールを踏まえ、3回以上アドバイスしたことはnoteにして適宜timesで発信、相談されたらurlを送る https://note.com/growsic/n/ne209c1e75593 https://note.com/growsic/n/n2a5c62a554a0 https://note.com/growsic/n/n68e0f22dada1 # ステイクホルダーとの毅然とした交渉。社外役員であっても交渉を挑む 組織が壊れる大きな要因の1つとして、QCDのいずれかが破綻しているのに、事業の意思決定に対して交渉できず、組織で歪みを無理やり飲まないといけない時である。 先方が要求する開発スコープが肥大化、スケジュール圧との板挟みになった時に、毅然と交渉を行い調整するなどした。 https://note.com/growsic/n/n2a5c62a554a0 # =====過去分 # エンジニアリングマネージャー① ## 直面の課題: ①エンジニアリングマネージャーとしての信頼確立 ②サービスの品質担保 ## 考えと対策: ### ①エンジニアリングマネージャーとしての信頼確立 #### 課題: 自分より全員10歳以上年上のエンジニアのチームでエンジニアリングマネージャーに就任。 経験の浅い若手がリーダーになったと見えていたようで、あまり信頼されている状態ではなかった。 自分がチームとして正しい意思決定を行い、遂行出来る状態を目指した。 #### 対策: ##### ・メンバーと普段から徹底的に話す マネジメント以前に、人間同士としてある程度信頼関係がある状態が必要と考えた。 ランチにたくさん行く、毎日雑談を話しかける、相手がやっているスマートフォンゲームを自分もやって話しかけに行くなど、地道に話す接点を増やし続けた。 ##### ・根拠のある意思決定の提示、間違っていなければ絶対にぶらさない 意思決定をメンバーに伝える場合は、その意思決定がなぜ妥当なのかを必ず説明するようにした。 なりでやってこなかったこと(レガシーな実装の仕方やテストを書かないなど)は、雰囲気に押されそうな曲面でも必ず断り、決めたことをやってもらうようにした。 ### ②サービスの品質担保 #### 直面の課題: ・コードの品質が低く、レビューで良くなる環境になっていない ・単体テストがほとんどない(ゆえに肥大化したメソッドが乱立している) ・本番環境で不具合/障害が頻発する コードの品質担保とサービスの品質改善を目指した。 #### 対策: ##### ・徹底的にコードレビュー デザインパターンやリーダブルコードで基本とされている内容を徹底的にコードレビューで書いた。 必要あれば席まで行って説明しにいった。 ##### ・単体テストの推進 仕組みだけは存在していたので、リファクタ時にメソッドの切り分け、テストを書くことを推進した。 「こういう風にやるのが良い」を伝えるためにも、参考になるようなプルリクを出すようにした。 ##### ・インフラ構成/実装設計の見直し 事業責任者やインフラチームを巻き込んで障害に強い設計に変えるための手順立て、工数の確保を行った。 機能開発だけで工数が一杯になていたところから、保守性の向上のための工数を取れるようにした。 # 開発ディレクター ## 直面の課題 開発ディレクターが突然不在になった後の、開発チームの再構築 ## 考えと対策 開発ディレクターはビジネス職のメンバーが担っていたが、急遽移動になり不在になった。 残ったメンバーから開発ディレクターを出す必要があり、バックエンドチームのエンジニアリングマネージャーと兼任する形で立つことになった。 兼任である以上以前のようなマイクロマネジメントを開発ディレクターとして担保することは困難。 - 自分が一番コミットするのは最上流の意思決定と全体の進行/品質担保 - 各セクションの業務は各セクションのリーダーにより移譲する 方針で進めることとした。 その分全体の進行と品質担保には強くコミットするようにした。 結果エンジニアが開発ディレクターをやっている利点も作用し、以前よりプロダクト改善開発のリリース物量が2倍以上に増え、機能開発に止まらない開発チームになっていった。 # QA責任者 ## 直面した課題 - プランナー/エンジニアとQAが連携できていない - 情報共有すらままならず、お互いに不信感がある状態 - 開発ワークフローが構築/定着されていない - QA状況がチームから見て見えてこない 状況を改善するべく、QAの責任者として入ることになった。 ## 対策 ### 徹底的に情報を集約 / 開示 - 開発物の共有 - QA必要項目/観点のすり合わせ - その後開発からQAスケジュールの確認 を行うmtgを全開発機能に対してやり直し、QA/他セクションが認識あっている状態を作った。 ### QA状況の開示 他セクションから見て欲しい情報を洗い出し、デイリーで開示できるスプレッドシートを構築。 毎朝の共有ができる状態にした ### 開発環境のフロー整理 QAを行うにあたり - 開発物の開発状況 - クライアントのビルド - サーバーの環境 - 各種データ/アセット状況 がちぐはぐなまま進行していた。 QAを開始できる状態定義を行い、全て満たしている場合QA着手を行うフローを整理した。

アピール項目


アウトプット

GitHub アカウント
未入力です
Qiita アカウント
あり
Zenn アカウント
未入力です
Speaker Deck アカウント
未入力です
SlideShare アカウント
未入力です
特にアピールしたいアウトプット
未入力です

今後、身につけなければいけないと思っている技術は何ですか?

# 生成AI時代に適した、開発フローと開発体制のあり方を作る "詳細に定義された"要件があれば、"ほどほどの労力でエンジニアが対応するなら"プロダクトを短期で開発、リリースできる時代になった。 しかし組織全体で素早く高度な成果を少人数で生み出そうとすると、技術だけではなく組織やワークフローのあり方など総合的に取り組む必要がある。 これの最適解をいち早く実現し、大きな競争力を持つプロダクト開発組織の型を作る

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

バックエンドエンジニアとしての経験ももちろんですが、 ・社外役員との交渉も含む提案、方針決定 ・課題のヒアリング、整理を含む解くべき課題の策定 ・予算、納期、開発体制を踏まえた現実的な打ち手への落とし込み ・テックリードとの技術的、エンジニア組織的な方向性の議論 まで一括でやってきています。

生成AIの活用状況

日常的な情報収集・業務活用
ChatGPTやGeminiなどのチャットツールを、情報収集、ドキュメント作成、翻訳に日常的に活用
業務でコード補完系の生成AIを活用
GitHub Copilot等のコーディング支援ツール
業務でコード生成、コーディングエージェント系の生成AIを利用
コードレビュー、テストコード生成、デバッグに生成AIを活用
サービス・プロダクトへの応用
既存のサービスやプロダクトに生成AI(API利用など)を組み込み、LangChainやLlamaIndexなどのフレームワークを使った開発経験
生成AIをコアとした開発
生成AIを主要技術としたサービス・プロダクト・機能の企画や、RAGなどの高度な手法を用いた開発経験

キャラクター

直近で一番やりたいこと
サービスを作りたい
好きなスタイル
一人で黙々
どちらかといえば一人で黙々
どちらともいえない
どちらかといえばみんなでワイワイ
みんなでワイワイ
好きな規模
小さい会社
どちらかといえば小さい会社
どちらともいえない
どちらかといえば大きい会社
大きい会社
水とプログラミングどっちが大事?
自信を持って人より秀でていると言える点
問題解決力 / 責任感 / 経営判断力
スキルのタイプ
ゼネラリスト
どちらかといえばゼネラリスト
どちらともいえない
どちらかといえばスペシャリスト
スペシャリスト
得意なフェーズ
0 → 1
どちらかといえば0 → 1
どちらともいえない
どちらかといえば10 → 100
10 → 100
会社を選ぶ一番の基準
風通しの良さや意思決定ライン
やりたくない分野
未入力です
その他の特徴
使用言語にはこだわらない / レガシーな環境を改善できる / 勉強会でLTをよくする / 趣味は仕事 / 多職種のバックグラウンドがある
その他のやりたいこと・やりたくないこと

高い成果・価値を生み出すために必要であれば、ロールや専門性問わずやります。
エンプラ向け営業から開発責任者、エンジニアまで。

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で30代中盤
好きなテキストエディタ
Visual Studio Code
希望勤務地
東京都
希望年収
1400万円
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?