Skip to content

Instantly share code, notes, and snippets.

@c5meg1012
Last active February 25, 2024 10:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save c5meg1012/1f9760119eb3aab5907a0fe9d6fbd643 to your computer and use it in GitHub Desktop.
Save c5meg1012/1f9760119eb3aab5907a0fe9d6fbd643 to your computer and use it in GitHub Desktop.
職務経歴書

freee株式会社

  • 2023年3月〜
  • ソフトウェアエンジニア(フルスタック)

Classi株式会社

  • 2019年10月〜2023年2月
  • バックエンドエンジニア(Ruby)→SRE→バックエンドエンジニア(PHP)

学校向け自社サービス運用・開発

背景

学校向け(BtoBtoC)のWebプロダクトで、機能によって性質が異なります。

  • 校務支援
  • 学習支援
  • コミュニケーションツール

ピークタイム(平日朝)には、アクティブユーザー 3万、秒間リクエスト143万程度のアクセスがあります。

担当した役割

  • プロダクトチームメンバーとしての開発・運用
  • 基盤チームのSREとしての開発・運用

具体的に行ったこと

  • 機能追加開発
  • システム移行
  • Ruby on Railsアップデート
  • Elasticsearch(AmCazon OpenSearch Service)アップデート
    • 仕様調査
    • 検証環境構築
    • クライアントライブラリのアップデート
    • QA計画
    • 深夜メンテナンスでリリース
  • Terraform Import
    • Amazon SQS
    • Amazon EventBridge
    • AWS KMS
    • Amazon Route53
    • AWSの各種インフラ運用・構築
    • Amazon ECS
    • Amazon EC2
    • ネットワーク(VPC, サブネット、SG)
    • Amazon S3
  • アラート・不具合対応
  • 問い合わせ2次対応
  • AWS SAA資格取得
  • 他チームのアーキテクチャ調査
    • AWS Step Functions
    • Amazon DynamoDB
    • Golang
    • Amazon Kinesis Data Firehose
    • AWS Glue

UUUM株式会社

  • 2018年3月〜2019年9月
  • エンジニア→チームリーダー→グループリーダー

動画クリエイター向け素材ダウンロードサービス開発(エンジニア)

Ruby on Rails, scss, Webpacker, Vue.js, vuex, Docker, MySQL, circleci2.0, Docker-compose, AWS ECS

背景

いわゆるYouTuberの方が動画制作で用いる、音源素材や画像素材をダウンロードできるサービスの開発をしました。 プロジェクトマネージャー1名、デザイナー1名、エンジニア2名

担当した役割

メインエンジニア。 序盤はインフラ構築と技術メンターのようなメンバーが別途おりましたが、中盤以降は自分がメインエンジニアとしてバックエンドの開発をし、終盤に業務未経験の新人がジョインしました。

具体的に行ったこと

初期構築

  • DB設計
  • deviseを用いたログイン機能
    • ユーザー画面
      • 他の自社開発システムにおける認証プロバイダを用いたOAuth認証
    • 管理画面
      • HENNGE Oneを用いたSAML認証
  • ユーザー管理機能
    • 一般ユーザー
    • 管理ユーザー
  • 素材管理機能
    • 初期構築では音源のみ
    • 素材アップロード機能
      • S3のPre-Signed URLにPOSTでアップロード
    • 素材ダウンロード機能
      • S3のPre-Signed URLにGETでダウンロード
    • カテゴリー検索機能
  • Bootstrap導入(管理画面)
  • 静的解析の導入
    • slim-lint
    • rubocop
    • ESLint
    • sass-lint
  • Minitestによるテストの導入
  • WebpackerによるVue.jsの導入

その他

  • デザイナーのコードレビュー
    • CSS設計(ユーザー画面)
  • 新人教育(プロジェクト終盤にジョイン)
    • Vue.jsについて
    • フロントエンドを中心としたコードレビュー
    • 実装の相談など

社内向けインフルエンサー管理サービスの開発(エンジニア)

Ruby on Rails, scss, Webpacker, Vue.js, vuex, Docker, MySQL, circleci2.0, Docker-compose, AWS ECS

背景

社内向けで、契約しているインフルエンサーの個人情報などを管理するサービスを開発しました。 プロジェクトマネージャー1名、デザイナー1名、エンジニア1〜4名(に加えて外注先のエンジニア4名)

担当した役割

開発エンジニア

具体的に行ったこと

  • deviseを用いたログイン機能
    • インフルエンサー用画面
      • Googleログイン
      • Facebookログイン
      • Instagramログイン
      • Twitterログイン
      • 認証プロバイダ機能の開発
      • SSOとして他の自社開発システムへの導入   - 受け入れ側の開発も
    • RSpec
  • インフルエンサーのスカウト管理機能
    • 機能開発
    • RSpec
    • 旧システムからのデータ移行
      • Enbulk × ECS task
  • 新人教育(一時的に2〜3人抱えたことも)
    • コードレビュー
    • 実装の相談など
  • デザイナーのコードレビュー
    • CSS設計

小規模インフルエンサー向けポータルサイトの開発(エンジニア)

Laravel, scss, Nuxt.js, Vue.js, vuex, Docker, MySQL, circleci2.0, Docker-compose, AWS ECS, digdag

背景

比較的小規模なインフルエンサーを対象とした、ポータルサイトの開発をしました。 プロジェクトマネージャー1名、デザイナー1名、エンジニア3名(に加えて外注先のエンジニア4名)。

担当した役割

開発リーダー。メインはフロントエンドですが、Laravel側の開発をすることもあります。

具体的に行ったこと

  • Nuxt.jsにJestの導入
    • components の単体テスト
    • storeのテスト
    • CIでもテストが回るように設定
  • 運用が止まっていたフロント側の静的解析を復活
    • ESLint
    • prettier
    • stylelint
  • 不具合の調査と対応
    • フロントエンド
    • バックエンド
  • リリースフローの整理
    • ドキュメントを作成して属人化を防ぎました
  • エンジニアの取りまとめ
    • エンジニアだけのミーティングで細かいタスクを整理
    • 実装の相談など
    • コードレビュー
  • 新人教育
    • VuexとNuxt.jsについて
    • ECSについて
    • CIによるデプロイについて
  • 外注先のコードレビュー(英語)
    • LaravelのRepositoryパターンについて議論するなど
    • 当初はリファクタしてもらっていたが、レビューのコストが高かった
    • 後半はバックエンドのテストを書いてもらうことにした

擬似SREチーム立ち上げ(チームリーダー)

課題

  • 1名への過剰な負担を減らすこと
  • エンジニア全体でクラウドインフラやコンテナデプロイに関する技術力を底上げすること

エンジニア全体の人数が少なかった時の名残で、もともとインフラ関連の依頼が経験者1名に集中してしまう状態にあり、その他のエンジニアにはクラウドインフラやコンテナデプロイ等の知識・関心がありませんでした。また、デプロイ環境やインフラを構築したメンバーが組織を離れてしまっていたのもあり、経験者1名に過剰な負担がかかっていました。 ですので、インフラに関するタスクとノウハウが複数人で共有できる体制を作る必要がありました。

具体的に行ったこと

  • まずは仲間を集めて勉強会

まずは自分自身もクラウドインフラに関する知見を深めたかったので、クラウドインフラに興味のあるバックエンドエンジニアを数名集めて、経験者1名を囲み、インフラのコード化やコンテナデプロイに関する勉強会を開催しました。経験者が非常に忙しかったのもあり、勉強会は数回しか継続できなかったのですが、他のバックエンドエンジニアもクラウドインフラアーキテクチャに関心をもつきっかけになりました。現在では輪読会に形を変えて、勉強会を再開しています。

  • クラウドインフラに関することを目標に含める
  • 信頼関係からのタスク分散

クラウドインフラに興味のあるバックエンドエンジニアがたまたま自分のチームに多かったのもあり、各メンバーと話をして、インフラにの知見を深める旨の目標を公式に設定することができました。 そして定期的にインフラ関連タスクの共有を行い、各メンバーにタスクの分散を行うようにしました。 経験者1名がタスクを抱え込みすぎるところもあったので最初はなかなかうまくいきませんでしたが、他のエンジニアにも経験者と一緒にタスクに取り組んでもらうよう働きかけると、次第にメンバー同士の信頼関係が構築され、タスクの分散がうまくいくようになりました。

現在では複数名でSREのように、各プロジェクト担当のエンジニアのサポートを行ったり、プロジェクトを横断してアーキテクチャの管理を行えるようになり、負荷がかかっていた経験者も他のメンバーとAWSの新しいプロダクトの話をするなどして、楽しく働けるようになったとのことです。

テックリード(チームリーダー)

課題

  • チームビルディングをして気軽に相談できる環境にすること

プロジェクトを担当するエンジニアが一斉に移動になり、自分も別のプロジェクトから移動してきたので、まずは新しいチームで運用開発を進めるための流れを確立させる必要がありました。 また、1名はベトナムからの留学生で、もう1名は入社したばかりの新人だったので、開発を進めながら互いに相談し合えるような関係づくりから始める必要がありました。

具体的に行ったこと

  • 積極的な引き継ぎ

以前担当していたエンジニアがプロジェクトマネージャーと関係を悪化させてしまっていたのもあり、プロジェクトの引き継ぎが難航しました。ですので、普段よりも前のめりにタスクを取りに行ったり、アーキテクチャ全体を把握するように心がけました。

  • 新人に寄り添って一緒に開発
  • エンジニア全員でフランクに話す機会を設ける

無事にプロジェクトを引き継げてからは、新人とペアプロやブレストをする機会を定期的に設けるようにしました。 また、最初はチーム内ではプロジェクトマネージャーが開く会議で少し堅めの雰囲気で話す機会しかなかったので、留学生も含めたエンジニアだけの報告・相談の場を設けるようにしました。 留学生は引き継ぎ前からこのプロジェクトに参加していたのですが、現在のメンバーの方がコミュニケーションが多くなり、学びも多いので楽しいというフィードバックをもらえています。

マネージャー(グループリーダー)

課題

  • Biz側との大きな溝
  • 各職種の役割が明確でなかったことからくるPMの多忙

自分が入社する1年ほど前に、Biz側からの強い要求に耐えきれずエンジニアがほぼ全員退職したそうです。
そこから再度エンジニア組織が立ち上がってきたのですが、それ以降、Biz側もDev側も両者を腫れ物に触るようなコミュニケーションになってしまっており、社内受託のような関係性になっていました。 また、両者をつなぐ存在であるPMが、両者の要求に引き裂かれるような形になってしまい、MTGだけがたくさん開催されてしまう状況になっていました。

具体的に行ったこと

  • PMのつながりを作る

PMが受託のようなスタンスだったので、自立的に考えられるようになるため、各々のやり方や考え方を臆せず共有できる環境を作りました。多忙な中ではあったのですが、普段の業務から離れて「社内でのPMの役割」や「現在の課題」について、抽象的な議論をまとまった時間で行い、あえてPMではない自分がファシリテーションを行うことで、議論に集中してもらうことができました。

  • MTGのルール化

MTGのゴールを定め、事前にアジェンダを定め、時間配分を決めるなどの事前準備を行い、PMが漫然と行なっていたMTGにルールを定めました。比較的MTGを嫌がっていたエンジニアも、自ら興味を持って積極的に発言していけるような環境にできたと思います。 また、ゴールを定めることによってMTGが持ち越されるのを防ぎ、PMと自分自身の時間を確保することにも役立っています。

  • PMOとしてプロジェクトに参画

これまでのグループリーダーの参画スタンスが、PMが対応できない技術的な質問に答えるだけであったので、Biz側との溝を埋めるため、積極的に両者の会話を取りもつように心がけています。社内の仕組み上、PMは管理職ではなく権限がなかったりするので、権限が足りない場合にもサポートをするようにしています。

  • インフラなど、緊急時の窓口

Biz側との溝が生まれた原因でもある緊急対応ですが、「緊急対応は行わない旨をBiz側に強く伝える」というスタンスから、以下のように「緊急対応は無くせないけど、そこで起こるコミュニケーションの質を良くする」というスタンスに徐々に変えています。

  • 起こってしまった緊急対応が、本当に必要だったのかBiz側と振り返る
  • 緊急対応の様子をBiz側にもリアルタイムで伝えるようにする
    • どんなことをしていて、どのくらい時間がかかるのか

これらの取り組みを行なっても、まだまだ両者の溝は深いですが、1ヶ月の取り組みで少しずつ関係性が改善している様子も受けています。 一部プロジェクトのMTGでは、Biz側のメンバーとDev側のメンバーが、一緒にシステムを作っているスタンスでコミュニケーションできるようになりました。Biz側の役員からも、協力してもらえて嬉しいという声を聞けるようになりました。

株式会社リスタ

  • 2016年11月〜2018年1月

求人広告サービス開発

Ruby on Rails, scss, Webpacker, ES2015, jQuery, MySQL, wercker, NewRelic, AWS EC2

背景

いわゆるアルバイト検索サイトのような、求人広告サービスの開発に携わりました。 エンジニア3名。

担当した役割

ベンチャー企業でエンジニアが3人のため、インフラ構築以外のほぼ全ての工程に携わり、UI/UXまわりのデザインから、企画、開発をしていました。

具体的に行ったこと

改善など

機能開発

  • 求人張り紙情報の投稿機能
    • Google Mapを用いた現在地と住所の取得
    • 画像アップロード機能
  • 投稿ユーザーランキング
    • フロントエンド

株式会社プレート

  • 2015年1月〜2016年10月

Web制作・受託システム開発を行う。実務未経験であったがコーダーとして入社。 初めて担当した実務案件で、なぜかWordpress投稿機能のView側出力を実装することになり、そこからコーダーの範疇はあまり意識せず、jQuery実装やWordpressのオリジナルテーマ作成を中心に業務を行う。

その後、ベトナムオフショア開発のディレクション、大規模Wordpress構築/運用を経て、エンジニア部署に異動。 データベース周りやPHPを中心に勉強したのち、Wordpressのカスタムフィールド実装、cakephpやjQueryValidateなどを用いたフォーム開発、営業支援システム(Laravel)の設計、与信管理システム(Laravel)の開発、EC-CUBE3系(Symfony2)の開発を行った。

また、社内ではエンジニア勉強会、SlackBot、Slack Channel(それまでSlackはDMが主だった)、PullRequestの導入などを行った。

第一生命保険株式会社

  • 2014年4月〜2014年12月

「総合営業職」として大手商社・地方公共団体事務所などへ営業に赴く。 1ヶ月あたりの最大ノルマを6ヶ月連続達成、社内表彰を受ける。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment