- 2023年3月〜
- ソフトウェアエンジニア(フルスタック)
- 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
- 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パターンについて議論するなど
- 当初はリファクタしてもらっていたが、レビューのコストが高かった
- 後半はバックエンドのテストを書いてもらうことにした
- 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まわりのデザインから、企画、開発をしていました。
- 全ページのCSSリファクタ
- SMACSS
- コンポーネント設計
- Atomic Design
- Google Analyticsを用いたUIのABテスト
- 求人詳細画面リニューアル
- フロントエンド
- 検索UIのリニューアル
- フロントエンド
- CoffeeScriptからECMAScriptへの完全移行
- Webpackerの導入
- https://blog.rista.jp/entry/2017/09/27/103715
- 静的解析などの導入
- scss-lint
- ESLint
- Rails Best Practice
- Brakeman
- RSpec
- カバレッジ見ながら書けてないところの補充
- ユーザーテスト
- 動画を用いたユーザーテストサービス(popinsignt)を使用
- 求人張り紙情報の投稿機能
- 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ヶ月連続達成、社内表彰を受ける。