Skip to content

Latest commit

 

History

History
512 lines (345 loc) · 22.4 KB

detail.md

File metadata and controls

512 lines (345 loc) · 22.4 KB

Resume(details)

Table Of Contents

自己紹介

インターネットでは「かなで」という名前で活動しています。

2018年4月よりWebのエンジニアとしてキャリアを開始しています。

主たる領域はサーバサイド開発とクラウドを使ったインフラ構築、多少はWebフロントエンド開発の心得があります。

TypeScriptやGolangとGCP、Terraformでのサーバサイド・インフラ開発が得意です。

twitter

GitHub

はてなブログ

Obsidian Publish

LAPRAS

Scrapbox(ほぼ停止)

性格

16personalities

管理者(ISTJ-A)巨匠(ISTP-A)論理学者(INTP-A)

DiSC

CSタイプ2

経歴一覧

技術スタックは私が関わった範囲のみ記載しており、そのシステムが内包している技術全てではない可能性があります。

株式会社Speee(2022年8月~)

広告配信プラットフォームの開発

TerraformやNode.jsのバージョンアップ、EC2で動かしていたJenkinsの2.xへのアップグレード、他社との連携機能の要件・設計・実装や新しいアドタグの開発をしています。

プロパーのエンジニアが少ないので一人一プロジェクトで設計と実装を全て行う立ち回りが必要になるので、幅広い要素技術を一通り扱えることと個人PMとしてプロジェクト管理をすることが必要になります。

技術負債の解消が多いですが、直近では他社との連携機能の検討と設計・実装をEMと協力して行いました。

技術スタック

株式会社良品計画(2022年8月~10月)

ECサイトのバックエンド・フロントエンド開発

主に2つの業務内容があります。

1つ目はElasticSearchのパフォーマンス改善の調査とパフォーマンス改善をするための修正実装のプロトタイピングを行いました。

2つ目はWebフロントエンドのTypeScript化とStorybookの導入、カタログ作成をしました。

技術スタック

こちらは業務委託で参画させていただいております。

大手メーカー様の内製Androidアプリのビルドパイプライン刷新

業務内容

ビルドパイプラインのインフラで使用しているAWSの構築を担当しました。

技術スタック

こちらは業務委託で参画させていただいております。

自社Webアプリケーションの開発

マキヤマブラザーズ株式会社様が提供している複業サービス「DeLMO」の開発に携わりました。

技術スタック

株式会社ビットエー(2019年8月〜2022年5月)

ビットエーではサーバサイドからインフラの設計・運用、フロントエンド開発の開発業務に携わりました。

SESであることから実際にお客様のエンジニアと会話したり非技術職の方ともコミュニケーションを取って業務を進めておりました。入社当時は課題感がありましたが、現在は指摘されないので非技術職の方とのコミュニケーションは問題ないと思っております。

また開発業務以外では、主に知見共有と採用業務を行いました。

社内で技術知見を広めるために勉強会の主催やLT会での多数登壇をしました。 勉強会は普段業務では直接関わらないが現代の基礎となっている技術について取り上げています。現在はマスタリングTCP/IPを題材にネットワークについて勉強をしています。

採用業務では実際に社員・業務委託の面接に複数回出席して応募者様のスキルをヒアリングしたり会社とマッチングするかを会話しました。 採用面接以外でも毎日良さそうなエンジニアの方を見つけてはGitHubの実装を見て実際に声をかけたりプログラミングテストの採点を行なっておりました。

開発業務のみならず、会社が楽になるように日々動いています。

広告配信の最適化の基盤システムの開発・運用

案件クライアント

美容系専門の広告代理店

期間

2021年1月~2021年12月

開発人数

2〜5人(途中で増加)

開発全体としてはスクラム開発の手法を一部採用してGit-flowで開発をしました。 1週間を1スプリントとして、スプリントの最初にSprint Planningをしてスプリント最後にRetrospectiveをしてKPTについて話し合いました。 新たに発生したタスクに対してはstory pointをplanning pokerで見積もりをしました。

当初は自分と弊社の別メンバーのみで開発をしましたが、メンターをしていた常駐先クライアントの新卒3名を開発に加えて最終的には5名で開発をしました。

主に2つの開発をしました。

1つは常駐先クライアント様の社内で広告運用に使用している社内Webアプリケーションの機械学習を使った予算配分の最適化機能の開発です。

もう1つは自社顧客向けの効果測定と広告配信の最適化の基盤システム開発です。

社内Webアプリケーションは自分がアサインされる以前に弊社の別メンバーが開発していたアプリケーションにエンハンスで新規のページから作成をしました。

構成はBackendがTypeScript+Expressで、FrontendがTypeScript+Next.jsでCloud Runにデプロイしています。

初めて実務でTypeScriptやExpress、Next.jsやGCPを使いましたが、アプリケーションの仕様を含めてキャッチアップを行い、スケジュール通りに新機能をリリースできました。

基盤システム開発は自社顧客向けにFacebook Conversion APIを利用した広告配信の最適化と効果測定を目的としています。要件定義から開発運用を行いました。

立ち上げ時は自分含め2名で開発をしました。プロパーではなかったですが、システム要件の策定からクラウドアーキテクチャの設計、開発と運用まで含めて任せていただきました。

現在ではリリース済みで、いくつかの企業様に導入していただいております。

この開発では、多くのGCPサービスを使い倒す機会を得ることができたこと、実務未経験でしたがIaCにTerraformを自分から導入し、インフラを安全に管理できるようにしました。

この2つの開発以外の業務では、広告運用チームとそのチームの担当顧客様とのFacebook Conversion APIの導入相談を受けたり、常駐先クライアント様の新卒のメンターを行いました。

開発面ではIaCの旗振り役をやったりテストコードの推奨、アプリケーションやTerraformのCI/CD自動化を導入しておりました。

技術スタック

AI/VRを活用した不動産仲介プラットフォーム開発

案件クライアント

某外資系コンサルティングファーム

期間

2019年10月〜11月 2020年4月〜12月

途中参画にはなりますが、入社して初めての案件でした。

Laravelを使ったバックエンド開発とVue.jsを使ったフロントエンド開発、詳細設計とテストを行いました。

LaravelとAzureは初めてだったためキャッチアップを行い、既存メンバーよりも詳しくなりました。

また以下のような実績があります。

  • テストコードの導入
  • Clean Architecture likeな設計導入
  • Bus EventをVuexに置き換え
  • Atomic Designの導入

まずバックエンドのフロントエンドともにテストコードがなかったため、テストコードの追加とテストコードを書く意識を作りました。テストコードを書くことで実装の理解が早まり、CircleCIやAzure Pipelinesとの相乗効果からリグレッションを未然に検知できる仕組みを整備しました。結果として在籍している間はPoCもしましたが障害ゼロを達成できました。

そして設計指針を導入して実践しました。 当初はLaravelのModelとControllerそれぞれにビジネスロジックが混在しており、Fat ControllerとFat Modelが入り混じった状態でした。 ここに永続化層としてRepository層、ビジネスロジックを記述するService層を追加、外部とのやり取りはInfrastructure層に、Controller層はHTTPリクエストを受け付けてService層に受け渡し、Service層から受けた結果をHTTPレスポンスとして返すだけにしました。

設計指針を作ったことで全体の設計に一貫性が保たれ、自然とモジュールの責務について考えることができるようになりました。指針もお互いシステム設計に詳しいわけではないので、深入りしすぎることはせず、共通理解として作成して本来のプロダクト開発に専念しました。

フロントエンドでは2つあります。まずBus EventをVuexに置き換えました。

当時はBus Eventでコンポーネントの状態の受け渡しをしていました。これをVuexに置き換えましたが、本来Vuexで扱うべきではない状態も入り込んでしまいました。ある程度は成功ですが、一部は理想とは程遠い状態となってしまいました。あらかじめ現在のstateを洗い出した上で、Vuexに持たせるべきstateは何か、他はコンポーネントの依存関係を整理して解決できないかなどを考えるべきでした。

またフロントエンドも設計指針がなかったのでAtomic Designを導入しました。これも一部では設計指針として分かりやすかったのでよかったですが、安易が導入は微妙だったという結論に至りました。Atomic Designは本来UIデザイナー向けの設計手法であり、エンジニアが導入するなら当時導入していたFigmaのコンポーネントからAtomic Designを踏まえて設計するべきでした。当時はAtomic Designに準拠したデザインではなかったため、atomsやmolucules、organismsの粒度が曖昧になってしまい混乱が生じました。

現在もフロントエンドのコンポーネント設計は模索中ですが、安易にAtomic Designを選ぶべきではないという教訓を得ました。

技術スタック

株式会社スタッフサービス(エンジニアリング事業本部)(2018年7月〜2019年7月)

衛生画像の分析支援Webアプリケーション開発

案件クライアント

大手日系メーカー子会社

期間

2018年10月〜2019年7月

開発内容

Spring Bootでのバックエンド開発とAngularでのフロントエンド開発、開発後のテストで社内のみの総合試験を行いました。

開発では元々画面の描画完了まで10秒かかっていた処理を2秒まで短縮したこと、総合試験で不要ログ削除ツールのバグを発見するなどをしました。

また総合テストではテスト項目以外でも自分で考えてテストを行い、非常にクリティカルなバグを発見し報告しています。

技術スタック
  • Backend
    • Java 8
    • Spring Boot
  • Frontend
    • JavaScript
    • Angular 1.x

製薬開発支援Windowsアプリケーション開発

案件クライアント

中小SIer

期間

2018年7月〜2019年9月

開発内容

C#でのWindowsアプリケーションの開発をしました。

実装前にテストケースのマトリックスを提出する必要があり、ここでソフトウェアテストの観点やテストの意義について学びました。

技術スタック
  • Application
    • C#

太陽光発電パネルの統計情報管理Webアプリケーション

期間

2018年4月〜6月

開発内容

太陽光パネルを設置している顧客向けに発電量やCO2削減量などを確認できるWebアプリケーションを開発しました。

エンジニアとして初めての業務で、最初のリリースは4月中と決められていたため頑張って開発をして期日に間に合わせました。

PostgreSQL以外は初めてでしたが、業務中にキャッチアップを行って先輩に質問しながら開発を進めました。

リリース後はエンハンスでチャート画面の拡張などを行いました。

技術スタック
  • Backend
    • C#
    • .NET MVC
  • Frontend
    • Angular 1.x
  • Infrastructure
    • PostgreSQL
    • IIS

できること・得意なこと

Backend

  • 以下要素技術でのAPI開発
    • Laravel8
    • Node.js(TypeScript)
    • Python
    • Go
  • テストコードでのunit testとintegration test
  • playwright or puppeteerでのE2Eテスト

Infrastructure

  • RDBでの論理設計

  • GCPでのインフラ構築

    • Cloud Run+Pub/Sub+Dataflow+Cloud SQL+BigQueryみたいな構成
    • GCLB+Serverless NEGも構築したことあり
  • AWSでのインフラ構築

    • CloudFront+ALB+ECS on EC2+Auroraみたいな構成
    • SageMaker
  • BigQueryでのデータ操作

  • Athenaでのデータ操作

  • TerraformでのIaC

  • Jenkinsサーバ構築

Frontend

  • (React or Next.js) and TypeScriptでのフロントエンド開発

  • jestを使ったテスト

  • playwright or puppeteerなどでのE2Eテスト実装

  • storybookでのカタログ作成とインタラクションテスト

DevOop

  • GitHub ActionsやCircleCIでのCI/CD構築

  • renovate導入

  • Docker & Docker Composeでの環境構築