Avatar

ソフトウェアエンジニア

結婚
付き合って
社会人
現職勤続
父親歴

人となり

現在の状況

※2021年9月13日現在

昨今の社会情勢もあり原則リモートワーク。18時以降は基本的に父親業優先。

株式会社 R

レガシーシステム(少なくとも2009年から稼動)に携わるエンジニア組織のマネージャ。モバイルアプリ(少なくとも2012年から開発)開発チーム(10名弱)の目標設定や評価等のピープルマネジメントをする傍ら、システム全体の技術的負債に光を当てるべく、既存システムや体制の掌握に努める。

背景には、ベンダー依存の既存体制下に新規参画した内製開発部隊として、内部品質の向上を通した事業貢献を求められている、という情勢がある。事業・投資主体に対する説明責任を果たしつつ、技術的な主導権を発揮出来る範囲を拡大し、実効性のある改善を行っていくという、コーディングや設計、アーキテクチャといったソフトウェアエンジニアリングの問題からは一段抽象度を上げた課題に取り組んでいる。

とはいえ先ずは隗より始めよ、つまりエンジニアとしてシステムの各論を解像度高く語れる所から…ということで、いにしえのコードやドキュメント群と格闘する日々を送っている。

指向や価値観など

プロダクトやサービス等の開発を通じて最高のリターンを最短で得るために、自分の技術力を投資することに価値を見出す。

ソフトウェアエンジニアの中心的な価値は、実際に動く・使えるモノを、誰の手も借りず許可も得ずに作れてしまうことだと考えており、それを武器として刃を常に研ぎ澄ませつつ、他の専門家達とも対等に意見を戦わせながら、より良いリターンを求めていきたい。

特定の技術分野に拘りはなく、必要とされているが足りていない、という部分を補っていくスタンス。拘りはないといっても、常に What に対する最高の How を求めており、また、これまでの経歴から主にサーバーサイドやインフラなどバックエンドに強みは感じている。

個人的な指向としては、複雑な現実世界を何如にシンプルにモデリングしコードに落とし込めるか、ということを考えるのが楽しいのと、読む人間に優しいイミュータブルで簡潔な実装を好む。その文脈で、オブジェクト指向や DDD 、クリーンアーキテクチャのような話題にも関心がある。

また、個人ではなくチームで最良の成果を引き出せることがエンジニアとして求められることだと考えているため、チーミングや開発プロセスといった人間的な部分にも興味がある。これまでには、 Nexus を用いた複数チームにおけるスクラムマスターを担ったり、 Liberating Structures 等を参考にしたリモート環境下での課題設定を行う等の実践もしている。

やってきたこと

完全なプログラミング勉強会

シニア的な立場になってきたころ、全員の「よいコード」の認識を揃えるべく、 CODE COMPLETE を題材にした勉強会を行なった。そのときの資料は今でも指針として利用されている。

2020 年に、 〈完全なプログラミング〉を目指す会 2020 と題し、過去資料を リファインした上で公開 した。

動画サムネイルシークの開発

各時点のサムネイルを選んでシークするという機能を、バックエンドからフロントエンドまで全て一人で対応した。

FFmpeg のシーンチェンジ検出結果を保存、配信し、それをネイティブクライアントが利用してシークする、というもの。

ネイティブ開発は初めてだったが、3ヶ月程で Android, iOS ともに対応することが出来た。

ひとつの機能をバックエンドからフロントエンドまで一気通貫で全て独力で実装する という貴重な経験だった。

メディアコンテンツ投稿・変換・配信システムのエンハンス開発

S3 にファイルを直接アップロードすることによる負荷軽減や、 imgix と連携した画像配信、複数ファイルの非同期並列アップロード対応などのエンハンスを行った。

素の JS のままでは並列的な処理を書くのがしんどかったため、 React でリライトした。

それまで単一ファイルのみ受け付けていたものを複数対応させるには Rails モデルのリアーキテクトも必要だった。無停止で機能をリリースするため、事前に用意した新たなデータ構造に徐々に移行するという段取りを立て、実行を主導した。

Keen IO -> BigQuery 連携

Keen IO がそれまで提供していた BigQuery 連携機能を停止してしまったため(ベータとして提供されていたので仕方ない)、急遽対応したもの。

Keen が S3 にローデータを配置するのをトリガーとして Lambda を起動、 BigQuery にデータを連携する、というもの。 node-lambda を用いて実装した。

突発対応で急拵えだったが特に問題なく稼動し、ことなきを得た。

自分の中の技術の引き出しを増やすいい経験だった。

Grape + OpenAPI による高速開発推進

3ヶ月で開発を完了させなければならず、極力無駄を省くために、 Grape::Entitygrape-swagger を採用し、実装と同時に API 定義を生成し、クライアント側はその定義を元にライブラリを自動生成して実装を進める、というアプローチで開発を進めた。

結果として上手くいき、無事に期間内にサービスインすることが出来た。

Open API を活用する好事例だった。

職務要約

 
 
 
 
 
入社
株式会社D
2010年4月 – 2010年7月
PHPによるシステム開発研修を受講
 
 
 
 
 
テレビ実況システムバックエンド開発
株式会社D
2010年7月 – 2010年8月
PHP (独自フレームワーク) 製。メンバーとして参加
 
 
 
 
 
ニュースサイト開発
株式会社D
2010年8月 – 2011年11月
PHP (独自フレームワーク) 製。メンバーとして参加
 
 
 
 
 
動画投稿・変換システム開発
株式会社D
2011年11月 – 2013年12月
PHP (ノンフレームワーク) 製。メンバーとして参加し、2012年5月以降は開発リーダーを務める
 
 
 
 
 
PUSH 通知システム開発
株式会社D
2013年12月 – 2015年9月
Play! Scala 製。プロジェクトリーダーとして参加
 
 
 
 
 
システム間連携システム開発
株式会社D
2014年11月 – 2015年9月
Play! Scala 製。プロジェクトリーダーとして参加
 
 
 
 
 
PUSH 通知・システム間連携システム課
株式会社D
2015年2月 – 2015年9月
課長に就任。メンバーのマネジメントを行なう
 
 
 
 
 
レシピ閲覧サイトバックエンド開発
株式会社R
2015年9月 – 2018年1月
Ruby on Rails 製。開発メンバーとして参加。2017年4月以降はiOS、Android アプリのエンハンス開発も担当
 
 
 
 
 
学生向け学習時間管理支援システムバックエンド開発
株式会社R
2018年1月 – 2018年4月
Ruby on Rails 製。開発メンバーとして参加。
 
 
 
 
 
マッチングサービス開発
株式会社R
2018年4月 – 2019年4月
Spring Boot 製。スクラムマスター。2018年9月以降はテックリードとして技術課題の解消に注力
 
 
 
 
 
ブライダルメディアサービスiOS開発
株式会社R
2019年4月 – 2020年4月
開発メンバーとして参加
 
 
 
 
 
ブライダルメディアサービスモバイルアプリ開発
株式会社R
2020年4月 – 2020年9月
Nexus チーム(2チーム)のスクラムマスターに就任。プロセス整備とメンバー装着を行う。
 
 
 
 
 
ブライダルメディアサービスモバイルアプリ開発
株式会社R
2020年9月 – 2021年4月
技術チーフに就任。プロダクト全体の技術的な意思決定に責任を持つと共に、横断での開発プロセス改善を進める。
 
 
 
 
 
個人事業主として開業
YAGNI ワーク
2017年10月 – 2021年1月
知り合いから声を掛けられて副業を開始。 その頃ちょうど .work ドメインが安売りされていて yagni.work というドメインを安く取れたので、 屋号を YAGNI ワークとした。
 
 
 
 
 
BtoB動画マニュアル管理ツール開発
株式会社S
2017年10月 – 2021年1月
Ruby on Rails 製。個人事業主として開発全般の業務委託を請け負う
 
 
 
 
 
ブライダルメディアサービス開発
株式会社R
2021年4月 – Present
グループマネージャに就任。モバイルアプリ開発チームのマネジメントと、サービス全体の技術ガバナンス強化を推進。

プログラミング言語

※2020年1月時点

名称業務経験レベル感
Ruby5年RoR アプリを一人で開発出来るし、指導もできる
JavaScript2年React で基本的な実装や Lambda で Node.js の適当な機能は作れる
Objective-C3年実践的な実装スキルはあるが、プラットフォーム自体の知識はそこそこで、モダンなライブラリを豊富に使った開発経験も無い
Swift3年同上
Kotlin2年Android に関しては同上。サーバーサイドに関しては Spring Boot でそこそこ出来るはず
Java2年Lambda や Stream を使ってテストも書きつつ一人で Spring Boot 開発出来る
Scala2年Play! で基本的には一人で開発出来る。Scalazとかは怪しい
Python2年Fabric 等で薄く触ってる程度
PHP5年PHP 6 の時代まで。もう忘れた
Emacs Lisp10年https://github.com/yewton/.emacs.d を見てください

ミドルウェア

※2020年1月時点

名称業務経験レベル感
MySQL(MariaDB)10年レプリケーションやらバックアップやらの一通りの運用や基本的なパフォーマンスチューニングは出来る。変わったところだと Galera クラスターの運用経験有り
PostgreSQL2年Heroku についてるのである程度触れる程度
Redis5年キャッシュとして当たり前に運用する程度
Elasticsearch2年日本語インクリメンタルサーチや表記揺れの対応が出来る程度
Docker5年基本的には日々の開発で使うのみ。一部本番サービスでも運用したが堅牢性が求められるようなクリティカルな利用経験は無い

クラウド

※2020年1月時点

名称業務経験レベル感
AWS5年Webアプリ開発に必要な一通りは運用経験有り。サーバーレスとかはあんまり
GCP2年BigQuery とか Vision API とかの単機能をたまに利用する程度

資格など

Certified ScrumMaster®
更新はしてないです…
See certificate