CTO、テックリード、VPoE、EMなどの立場で社会・事業に貢献したい。
将来的には、CTO、テックリード、VPoEまたはEMとしての役割を目指しています。
役職自体は目的ではなく、これらのポジションを通じて、社会および事業へのより大きな貢献を実現したいと考えています。役職に就くことで、単に上から指示された機能を実装するのではなく、プロダクトの企画や要件定義段階から深く関与し、ビジネスサイドと密接に連携しながら社会的なインパクトを生む製品開発に取り組むことが可能になると考えているからです。
過去には、技術のみに固執したり、ビジネスの要求だけに応えることに偏重した結果、プロジェクトの成果が低下する苦い経験もしました。このような失敗から、技術とビジネスのバランスを取りながら、プロダクトが市場で成功するために必要な戦略を練る能力を磨いているつもりです。
複数のベンチャー企業での経験を通じて、技術力の高さだけではなく、製品が実際にユーザーに受け入れられるかが事業成功の鍵であることを学びました。技術を磨き続けると同時に、ビジネスセンスを持ち合わせ、ユーザーが直面する現実の問題を解決する製品を創出することが私の目標です。
採用CMSアプリ「トルー」の開発・運用をした。
一言で言うと、企業の採用活動を効率化するWebアプリケーション。
直接的な競合サービスは、採用係長やジョブカンATSなど。
具体的には、以下の機能が強み。
技術スタック | |
---|---|
フロントエンド | Slim, jQuery, Vue.js |
バックエンド | Rails, Python |
DB | MySQL, Redis |
インフラストラクチャ | AWS, Docker, CircleCI |
開発支援ツール | GitHub, Slack, Chatwork |
プレイングマネージャー(PjM
、およびフルスタックエンジニア
)として企画以外を全て担当していた。
プロダクトフェーズとしては1→10
を経験。
プロダクトロードマップや新規機能発案などの大きな"企画"と言われる部分はPdM
が担当し、それ以降の要件定義・設計・コーディング・テスト・運用保守・データ分析を全て担当した。
SQLインジェクション
やXSS
、CSRF
などの修正SQLインジェクション
の脆弱性があるコードが散見されていたが、誰も修正せずに放置されていた。brakeman
というGemを提案・導入して、脆弱性のあるコードを修正・再発防止に成功 した。DB
を直接参照していた。Trustred Advisor
を用いてセキュリティ強化Trusted Advisor
の提案・導入することで、セキュリティ堅牢度の向上に貢献した。WAF
の導入、S3
のバージョニング、ALB
のログ保存、CloudWatch
でCPU/Memory
の監視を設定した。WAF
を導入し、DDoS攻撃を防いだDDoS攻撃
が多発していた。WAF
を導入することで、DDoS攻撃
を防ぐことに成功した。ALB
と ACM
の使い方を見直して、年間50万円(層インフラ費用の5%)のコスト削減 に成功。
詳細は以下URLを参照。
https://qiita.com/Gatsby/items/933c5a93e5900865b7d2
未使用ドメインを解約して、年間20万前後のコスト削減 に成功。
Company
やRecruitment
などのMVC
全てがFat
だった。before_action
の多用でコントローラのブラックボックス化View
でしか利用しないロジックをViewModel
(RailsでいうDecorator
)に切り出しController
でしか利用しないロジックをService
クラスとForm Object
に切り出しModel
やView
, Controller
など広範囲に使うメソッドはUtility
モジュールに切り出しenum
を用いてハードコーディングの撲滅before_action
などのコールバック関数は使いすぎると処理がブラックボックス化するので、意図的に使わない様にした。Rubocop
を導入して、書き方を統一した。Trailblazer
のドキュメント化により、各メンバーのキャッチアップ時間を約2週間短縮Trailblazer
はカオスなRailsコードに秩序をもたらすので超優秀なGemだが、DDDの様に学習コストが高すぎる。にも関わらず導入した人が辞めてドキュメントもなくキャッチアップが大変で属人化していた。Trailblazer
がボトルネックで開発スピードが遅かった。Trailblazer
の使い方をドキュメント化して、全メンバーが使い方を把握できる様にした。schema
情報を記載Schema
情報がモデルファイルに記載されていない。「モデルにどんなカラムあったっけ?」となった際はDBかSchema
ファイルを確認するしかなく少し面倒な状態だった。annotate
というGemを提案・導入することで、漏れなく全てのモデルファイルにSchema
情報を記述した。 -->DB
のCPU使用率
を90%から60%に改善N+1問題
が散見されていたが誰も修正せずに放置されていた。DB
のCPU使用率
が90%に達してパフォーマンスが著しく低下していた。bullet
というgemを提案・導入して、N+1問題を解決・再発防止に成功した。lol_dba
というgemを提案・導入して、DB全体のインデックス貼り忘れを修正・再発防止に成功した。find_each
, in_batches
メソッドを用いてループ処理・SQLを小分けにするだけでなく、ファイル書き込み処理も小分けにすることでメモリパンクを半永久的に再発防止した。CloudWatch
を用いてCPU・メモリ使用率の監視・通知を実装することで早期発見・再発防止に貢献した。pluck
を用いて、無駄なデータを取得しないようにデータ取得サイズを軽減させた。BULK INSERT
を実装して、処理時間を20分から7分に改善した。activerecord-import
を用いてBULK INSERT
を実装することで、処理速度を半分以下に改善した。BULK INSERT
の際はActiveRecord
を経由せず直接SQL
を実行するので、バリデーションやコールバックが発火されない。BULK INSERT
のバッチ処理からもActiveRecord
からもバリデーションロジックを切り離し、独自のバリデーションクラスを実装することでデータの不整合が起こらないように一元管理した。CPU使用率
が80%を超えていた。オフショア開発と密にコミュニケーションを取ることで、タスクの遅延率を80%から20%に削減。
エンジニア以外のステークホルダーから要望のヒアリング・要件定義を遂行
会員制動画配信サービス「Icey」の新規開発・運用をしていた。
一言で言うと、自身の動画コンテンツを限定公開・売買するWebアプリケーション。
イメージとしては以下の様な感じである。
技術スタック | |
---|---|
フロントエンド | Haml, jQuery |
バックエンド | Rails |
DB | MySQL, Redis |
インフラ | AWS, Docker, CircleCI |
開発支援ツール | GitHub, Slack |
フェーズとしては、0→1
と1→10
を経験。
フルスタックエンジニア 兼 Tech Lead 兼 EM 兼 PjM(PdM未経験)として、以下の重要な役割を担当:
CloudWatch
, Performance Insight
, Athena
を用いたパフォーマンスの可視化とログ解析 CloudWatch
を用いてCPU/Memory使用率
や ALBのレスポンスタイム
, StatusCode
などが一定の閾値を超えるとSlack
に通知することで、チーム全員が即座にパフォーマンス悪化を確認できる様にした。Performance Insight
, Athena
を導入し、ログ解析・原因の早期発見・改善を実現した。AutoScaling
とマルチAZ
構成用いたスケーラビリティを実現し、高負荷時でもダウンタイムをゼロに成功 マルチAZ
, AutoScaling
を用いてアクセス数に応じてEC2
を自動で増減させることで、アクセスのダウンタイムをゼロにした。50%削減
に成功ECS
をFargate
ではなくEC2
を使い、コスト削減を実現WAF
を用いて、SQLインジェクション
やDDoS攻撃
からプロダクトを保護(実際、めっちゃDDoS攻撃きててヤバかった)。Public Subnet
のみを使うことでコスト削減を実現(EC2
やRDS
はSG
を用いてリクエスト元を制限)。Private Subnet
ではNATゲートウェイ
が必要になり、使用時間とデータ転送量でお金がかかる。Route53
のCLI
を活用し、CSの業務時間を月30時間削減
に成功 test.icey.jp
のようにサブドメインを発行して専用サイトを作る。Lambda
, MediaConvert
, CloudFront
を用いて動画再生のUX向上に成功 MediaConvert
を起動し、HLS
形式に変換・解像度変換処理を実装し、CloudFront
を用いて動画のキャッシュすることでUX向上に貢献した。Cost
は良いが、Quality
, Delivery
が最低だったので、以下取り組みを通じで、バックエンドの底上げを行った。PRレビュー
やペアプロ・モブプロでは時間的限界があった。Brakeman
やBullet
, lol_dba
, Rubocop
を導入し、セキュリティ脆弱性やパフォーマンス問題、コードの可読性などをシステマティックに特定・修正させることで、漏れなくコードの品質向上に成功した。Quality
よりDelivery
優先で、テストが一切実装されておらず、プロダクトの品質を保証する根拠が全くない状態だった。Delivery
最優先だったので、これらを通じてメンバーの技術力の底上げに成功し、コードの品質向上や属人化を排除に貢献した。
M1 Mac(Apple Silicon)
を使っていてCPUアーキテクチャが異なり、結局Docker
イメージが動かないという問題が発生した。EC2
のCPU
がIntel
製のx86
アーキテクチャにも関わらず、M1 Mac
でビルドされたイメージはarm
アーキテクチャだから。)CircleCI
を提案・導入し、開発スピードの向上に貢献した。私以外のメンバーがプログラミングスクール卒業したばかりの実務未経験エンジニアだったので、シンプルにタスクマネジメントができていなかった。
型
のみ導入し、思想
は導入しない)の導入。思想
までちゃんと導入するには自分もメンバーも知識不足で失敗する可能性が高かったので、プロジェクト管理の手段としてスクラムを導入した。無人のセルフ医療ホワイトニングサービス「HAKU」の開発・運用をしている。
一言で言うと、HotPepper
のホワイトニング版のような予約管理Webアプリケーション。
直接的な競合サービスは、hacomono
やSTORES
など。
具体的には、以下の機能が強み。
技術スタック | |
---|---|
フロントエンド | Haml, jQuery, React, TypeScript |
バックエンド | Rails, Go |
DB | MySQL, Redis |
インフラストラクチャ | AWS, Docker, Github Actions, Terraform |
開発支援ツール | GitHub, Slack, Notion, CodeRabbit, GitHub Copilot |
フェーズとしては、0→1
と1→10
を経験。
フルスタックエンジニア 兼 Tech Lead 兼 EM 兼 PjM(PdM未経験)として、以下を担当:
TypeScript
, React
, Go
, Terraform
を導入)することで、2名の離職防止と2名の新規採用に成功した。Rails
, jQuery
, AWS
だけやっていてもエンジニアの成長を感じない』という技術的な成長・長期的なキャリア形成が課題ということが分かった。また、リファラル採用できそうな2名も同じ理由で内定承諾を渋っていた。よって、TypeScript
, React
, Go
, Terraform
を導入し、技術レベルを向上させたことで2名の離職防止と2名の新規採用にも成功した。(もちろん開発スピードが低下しないように、ドキュメント化とオンボーディングを徹底し、新規採用者がすぐに開発に参加できる環境を整えている)。CodeRabbit
を導入し、プルリクレビューからマージまでのリードタイムを50%軽減に成功CodeRabbit
を導入することで、プルリクレビューの大変さを解消し、技術レベルの向上に貢献した。著しくDelivery速度が低下
していた。DDD
の概念を導入し、MVCより適切にレイヤー分けできるようにした。Value Object
、Repository
、Service
層とRailsのForm Object
層を導入し、それぞれの責務を明確にすることで、コードの可読性を向上させた。DDD
を導入することはアンチパターンだと考えている。よって、DDD
の中でも比較的簡単で且つ、現状のカオスなコードにコスパ良く導入でき且つ、DDD
以外の文脈でも登場するレイヤーのみを導入した。Rubocop
による記法の強制統一型
を導入することにより、マネジメント属人化を解消し、チーム全体での進捗管理を行った。30%削減
staging
環境や未使用のAWSリソースを削除・作り直しを行い、約30%のコスト削減に成功した。Billing and Cost Management
を用いてリソース利用料金を分析することで網羅的なコスト削減とリソース整備を行った。また、production
とstaging
でAWSアカウントを分けることでコスト管理・セキュリティ・インフラ運用の向上を行った。staging
環境構築とデプロイの安定化staging
環境がないのでぶっつけ本番での動作確認になっていた。Rolling Deployment
だったのでデプロイが不安定だった。staging
環境を構築Rolling Deployment
でも耐えうるコードを設計し、サーバー数も増やすことで一時的な高負荷にも耐えられる設計を実装した。月100時間削減
月100時間削減
に成功した。OKR管理ツール「Resily」の開発・運用をしていた。
技術スタック | |
---|---|
フロントエンド(SPA) | React, TypeScript |
バックエンド | Go |
DB | PostgresQL, Redis |
インフラストラクチャ | GCP, Docker, Github Actions, Terraform, Kubernetes |
開発支援ツール | GitHub, Slack, Notion, CodeRabbit, GitHub Copilot |
API | REST, GraphQL, gRPC |
開発メンバーとして、フロントエンド、バックエンド、インフラ全ての分野で幅広く開発に携わっていた。
また、Resilyがアドバンテッジリスクマネジメント(ARM)に買収された後は、『アドバンテッジタフネスカウンセリング』の開発リーダーとして上流工程を行なっている。
SRE
を導入することで効率的な監視体制を構築したSJIS
のCSVインポートができない不具合が発生し、ユーザーの一括登録ができず、新規契約顧客がサービスを使えなくなっていた。SJIS
のCSVインポートができるように修正を行うと同時に、SRE
の設定も行った。SRE
を導入することで効率良くプロダクトの品質向上に注力できるようにした。VoC
を聞き続けることで、エンジニア視点ではなくユーザー視点を身につけることに尽力した。Ruby
用のgRPC
のOSSのバグを修正して Mailer
サービスを実装した。Mailer
が独立している。gRPC
経由でMailer
サービスを呼び出しているが、Ruby
用のgRPC
のOSSのバグが原因で実装が滞っていた。Ruby
用のgRPC
のOSSのバグを修正して、メーラーを実装した。Issue
が無かったので、自分でIssue
を立てて、PRを出した。CloudSQL
からAlloyDB
へ移行し、DBの読み書き速度を30%改善View
はデータ分析など単純な用途でしか使うべきではないが、複雑なView
に更に複雑なクエリをかけていた。AlloyDB
への移行を行い、DBの読み込み速度を30%改善した。Materialized View
やテーブル化で対応すべきだが、テーブル化するには開発リソースが足りず、また、リアルタイム性を求められるデータなのでMaterialized View
も適していなかった。AlloyDB
への移行を行い、DBのRead速度改善によりUX改善に成功した。Go
のデバッグ環境を整備し、開発スピードを向上させた(計測はできていないが体感2倍以上)REPL
系のデバッグ環境が無く、デバッグが大変だった。Delve
を導入して、デバッグ環境を整備した。Delve
は使いにくいので、UIが分かりやすいVSCODE
経由でDelve
を使えるようにした。Docker
コンテナ内外両方からでもデバッグできるようにした。DDD
でバックエンドの実装を行い、ドキュメント整備を行いメンバーのキャッチアップをサポートした。DDD
で記述されていたがメンバー全員DDD
未経験で、コードが属人化していた。DDD
未経験だった為、キャッチアップを行いながらでバックエンドの実装を行い、DDD
についてドキュメント整備を行うことでメンバーのキャッチアップをサポートした。React
のコンポーネントレンダリングに20秒弱かかっていた処理を3秒に改善React.memo
, useCallback
, useMemo
を用いて、コンポーネント・関数・変数のメモ化を行い、パフォーマンスを改善した。why-did-you-render
を導入して、レンダリングの原因を特定し、パフォーマンスを改善・再発防止した。onChange
でPOST
していてパフォーマンスが最悪だったので、ユーザーの文字記入数が激減していた。debounce
で実装することにより、レンダリング速度を10分の1に改善 && 文字記入数を20倍に改善に成功400行
以下にすることで、PRレビューの効率化を行った。メンタルカウンセリング・コーチングのWebアプリケーション「アドバンテッジタフネスカウンセリング」の刷新をしている。
開発リーダーとして、RFPや要件定義書の作成、カウンセラーのマネジメントなど、上流工程を担当している。
具体的には以下を担当:
このプロジェクトは私がアサインされる前からかなり炎上していた。
具体的には以下。
現在もその影響を強く受け、プロジェクトの進行が遅れに遅れているがリリース日は絶対にズラせないので、試行錯誤しながらなんとか前に進む様に奮闘している状況である。
Excel
ファイルを用いて行なっていた。しかもそのExcel
を個人フォルダに置くなど情報管理が属人化していた。Excel
を廃止し、Backlog
を用いて協業T社と直接コミュニケーションできるようにした。 Backlog
を使い進捗管理を徹底させた。Excel
で管理していたが、重すぎて開かなくなったりメンテが大変だったので、Miro
を導入したことで劇的に業務効率が上がった。プロジェクト
MRR
やChurnRate
など)の定期的共有プロダクトマネジメント
組織マネジメント
要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。
なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。