- 名前: 南 貴博(みなみ たかひろ)
- 性別: 男性 (1984年うまれ)
- GitHub @tMinamiii
- 大学在学中に使用。Swingを用いてGUIアプリを作成
- 新卒入社した会社にて全文検索システムの開発にて約6年間使用した(Java5.0 - Java7.0)
- Hadoop/Solrを用いた分散検索システムの開発に使用した
- APIGateway + Lambdaを使用してAPIサーバーを開発
- TypeHintで型を記述した開発を実践
- SQLAlchemy(ORM) + MySQL, Elasticsearch + ElasticsearchDSL を用いて開発
- 各種Linterを用いた開発(flake8/black/isort/mypy)
- ヘッドレスブラウザを使用したクローラー実装に使用
- Lambda上でPuppeteerを使用ヘッドレスブラウザクローラーを実装した
- Nuxt.jsを用いてフロントエンドのSPAのロジック実装
- Linterにeslint/prettierを使用
- DELISH KITCHENのバックエンド開発に従事
- ヘルスケア機能のバックエンドを実装
- 食事記録機能の実装
- カラダ記録機能の実装
- ダイエット機能の実装
- DELISH KITCHENサーバーの保守・障害対応
- サブスクリプションを管理するサーバーの保守・ログ拡充
- 広告・チラシサーバーにAWS OpenSearch Serviceを導入
- ヘルスケア機能のバックエンドを実装
- LGTM画像を生成するCLIを作成 https://github.com/tMinamiii/lgtm
- ゼロから作るディープラーニング1をGoで実装 https://github.com/tMinamiii/deep-learning-from-scratch-go
- Pocketに保存した記事を検索するCLIを作成 https://github.com/tMinamiii/pick
期間 | 会社名 | 案件 | 役割 |
---|---|---|---|
2021年3月 - 現在 | 株式会社エブリー | DELISH KITCHENのサーバーサイド開発 | バックエンドエンジニア |
2019年6月 - 2021年2月 | エディプレックス株式会社 | スマホアプリのサーバーサイド開発 | バックエンド・インフラエンジニア |
2019年2月 - 2019年6月 | 同上 | 社内情報管理システム | 同上 |
2018年12月 - 2019年1月 | 同上 | 画像解析システム | 同上 |
2018年2月 - 2018年11月 | 同上 | Webクローラー開発・保守画 | 同上 |
2015年3月 - 2018年1月 | - | - | - |
2009年4月 - 2015年2月 | 株式会社日立ソリューションズ | 文書検索パッケージソフトの開発 | パッケージプロダクトエンジニア |
- DELISH KITCHEN新機能、ヘルスケア機能実装
- 食事記録とアドバイスの実装 (2022年5月 - 8月)
- マイメニュー機能を実装 (2022年9月 - 10月)
- 使用技術: Go, ECS Task Scheduler
- iOS, Androidの課金状態管理の修繕とログ改修
- IAP, IABレシートとユーザー状態の管理について
- 使用技術: Go, Nuxt.js
- DELISH KITCHENの保守や施策の実施
- 使用技術: Go, Nuxt.js + Javascript
- DELISH KITCHENチラシの郵便番号・地域名・店舗名検索実装について
- 郵便番号でのみだったキーワード検索を郵便番号・店舗名・地域名の組み合わせ検索に対応
- 使用技術: Go, Elasticsearch
- メモリを過剰に使用しているコードの改善
- SlowQueryの見直し
- 使用技術: Go, MySQL
- APIサーバーの設計と実装
- サーバーレスインフラ構成
- CodePipeline CloudFormationやGitHub Actionsを用いてCI/CD環境の構築
- エンジニアとしてMTGなど顧客と仕様検討したり、スケジュール調整したり、顧客情シスと連携したりとフロント業務も兼任
- APIのロジック実装
- 言語はPython3.7
- 単体テストは1000ケース以上、カバレッジ85%以上を達成
- MySQLの使用
- ORM(SQLAlchemy)+MySQL(Aurora)を用いてRDBを使用した
- データ構造を意識して、テーブル設計をしたことで、クエリの複雑化を防いだ。
このインフラ構成はAWSが推奨するベターな構成ではない。 しかし、顧客要望を突き詰めていった結果たどり着いた構成です。 正しいアーキテクチャが、顧客の要望にマッチするとは限らないのが辛いところでした。
- API Gateway + Lambda + RDS + Elasticsearch で APIサーバー構築
- Elasticsearch Serviceでシノニム作成、カスタム辞書作成
- MultiAZ / Public+Private Subnet / NAT Gateway
- AWS SAM / CloudFormation を利用してインフラ構築・Lambdaデプロイのコード化
- APIを一つ追加するたびに必ずOpenAPIを記述
- ドキュメントのスキーマとPythonの実装が一致するようテスト実装
- VSCodeの拡張を活かして、yamlを分割管理することで保守しやすくした
- OpenAPIにAWSのデプロイコードを埋め込みAPI Gatewayとも連携させた
- Pull Request時にGitHub ActionsでLinterや単体テストを実行(テストをパスしないとmasterにマージできない)
- 各ブランチにマージすると, dev/stg/prod環境に自動デプロイされる仕組みを構築
- 単体テストを拡充することでリリース後大きな問題もなく稼働し続けている
- デプロイを自動化やIaC化したことで手作業によるデプロイミスを0にした
- OpenAPIのドキュメントを継続維持することでフロントエンドやPMへの説明資料にもなり、納品物にもなり、外部のセキュリティ診断時の提出資料にもなり作業の効率化を図れた
- データ構造を意識して、テーブル設計をしたことで、クエリの複雑化を防いだ結果、リソースを消費を抑えてバッチ処理を実行できた
- Laravel + Vue によるフロントからバックエンドまで実装
- バラバラの資料から要件を整理
- 要件にあったデータベースのテーブル設計
- データ集計のバッチ処理実装
- 長年ストップしていた開発を始動させプロトタイプ開発まで完成させた
- 実現したいことを整理し、それに則したテーブル設計をおこなったことで、ばらばらになったデータをRDBに収めることができた
- さまざまなサービスやインフラを利用しており、フロントもシステムも開発に苦戦していたのでローカルで議事環境を構築した
- 極力手作業をしないため繰り返し行う作業は全てコード化した
- Python, Nuxt.js, TensorFlowによる物体検知
- デモ画面のフロントエンド実装
- 機械学習・ディープラーニングの技術調査
- TensorFlowAPIを使った物体検出の転移学習
- 実現できるかわからない研究的な案件に対して、進行方法を提案しプロトタイプ製作まで取り組むことができた
- 動作するプロトタイプ実装まで達成できた(画像をアップロードすると、物体検出し、画像を抜き出してOCRし、文字を抜き出す)
- ただしスケジュールや予算が会わずプロジェクトは中断・譲渡となった
- ヘッドレスブラウザをつかったスクレイピングを実装
- ロジックやインフラ、DBテーブルを見直して安定化
- AWS Lambda化によるコスト削減、スケールアップ
- 管理画面の高速化
- 以前は、毎日のように不具合報告が来ていたいけれど、1-2年おおきなトラブルはなくなった
- 非対応だったWebページも取得できるようになり、デイリー5万件だったデータが、15万件まで取得できるようになった
- クリックすると固まってしまう状態だった管理画面を、正常に使えるようにした
- バックエンドエンジニアですがTypeScriptの社内初導入
- エンジニアとしても社会人としても自信を失い自分を見失った期間
- それと同時に自分を見つめ直した期間
- 精神的に不安定になった期間
- 現在も月1ペースで通院中
- 病名を言われたことはなく、環境・性格など、長年積み重なって不安定な状態になった
- 風邪のように急な完治はなく、徐々に緩和するけれど一生のおつきあいと言われている。また自分もそれを受け入れてバランスを保てている
- 通院とお薬で基本バランスはとれており、こまったら直ぐ相談できる環境を保っている
- 復職後に無断欠勤したり、長期間仕事ができなくなったり、仕事に支障をきたしたことはない
- 大量のバグ修正を行った
- Javaのヒープメモリ不足を解消。
- 複数の検索エンジンのクエリを生成するフレームワークの実装
- Jenkinsによる単体テスト自動化、ビルドジョブの作成
- Hadoopを使用したクローラーのエラー処理実装・バグ修正
- 影響範囲を調査しながら慎重にバグ修正するスキルを身に着けた
- 生存期間の長い変数に大きな値を設定しないなど、GCを考慮したプログラミングができるようになった
- クラス図を用いた設計ができるようなった
- 分散処理に関する基本的な知識が身についた
とにかく話しかけやすくあるよう努めています。 常にSlackのハドルに入っていたり、ペアプロして一緒に考えたり、放っておいたら支障がでると判断したら自分から声をかけてフォローしたり。 うまく言い表すことができませんが、チームが円満に進むような雰囲気づくりを心掛けています。
自分の中でやると決意したことは、様々な手を尽くして完成に導きます. アドバイスをもらうために自分の意見をぶつけてみたり、顧客に質問したり、MTGを設定したり、やれることを全部やるよう心掛けています。
スケーラビリティを求められる案件に関わったことから、AWSのLambdaなどサーバーレス環境の開発をしました。 またフロントエンドの開発にも多少関わることがあったため、Vue/Nuxtを会社に導入しました。PythonではTypeHintやpoetryをつかい、Node.js開発ではTypeScriptを用いるなど、時代遅れにならないよう心掛けています。
- バックエンドのシステム開発が得意です
- バッチ処理の実装
- APIの実装
- ビジネスロジックの実装
- AWSを使ったクラウドインフラ構築の経験が得意です
- MultiAZ / Public+Private Subnet / NAT Gateway
- API Gateway + Lambda + RDS + Elasticsearch で APIサーバー構築
- S3 + CloudFrontいよる静的サイトホスティング
- CodePipelineによるデプロイ自動化
- Nuxt(Vue)+TypeScriptでフロントのロジックの経験もあります
- HTMLとCSSは用意してもらい、そこにロジックを加えて動的する
- HTML/CSS描画関係の経験
- Webサービスの開発経験
- スクラムなどの体系的なチーム開発経験
いろいろなことにTryしつつ、作る人間でありたい。
正直にいうとビジョンが漠然としています。 現段階で、「絶対にこれがやりたい!」「これしかない!」というものがありません。 いままで様々な開発に携わり納品してきました。インフラ、バックエンド、管理画面のフロント幅広く挑戦して携わってきました。幅広く携わったゆえにコレだ!という絶対的な技術的な強みが曖昧としています。 失敗しつつも何度も挑戦し、作りつづける人間でありたいと思っております。
- 1例として検索技術に回帰して知識を深めたい
- 社会人スタートが検索システムの開発だったが、つねにバグFixだったので深堀りできなかった
- 大量の情報から、欲しいものを絞り込むというのはどんな場面でも欠かせない技術だと思っている
- 仕組みを学びつつチューニングや、検索インフラ基盤の構築してみたい
- 検索UXの改善にも取り組みたい
- 多くの人と関わり話し合い、意見や経験談を聞き、ドメイン知識を深めたり広げたりすることで設計力をたかめていきたい
- 豊富なドメイン知識をもとに様々な開発に関わり役立てる良ような人物になりたい
- 自分が作りたいと決めたらなんでもやるよう心掛けている
- 自主的に問題を見つけて、解決していくことが好き
- 研究よりもプロダクトを世に出すこと。価値をだすことがすき。
- お客さんと会って話すことに抵抗はないので時には顧客と直接話して知見を深めたい。
- 不安定なものを、安定化させるのがすき(ひたすらバグ修正やっていたから)
- 整理したり、整備したり、改善したりってのは好き
- チームを大事にしたい。頑張る人のために頑張るのが好き。
- バックエンド・インフラ
- マルチタスク
- 裁量がない環境
- つねに上に許可を求めないと行動ができない、
- 孤独な作業
- 形骸化したお気持ち評価制度
- 達成できないような会社状況に関わらず、OKRを無理やり書くことなど
- 人の出入りが多い環境
- 中途半端に終わらせる仕事(結果もフィードバックもなくやりっぱなしで終わる仕事)
- 何も手を加える機会が一切なく、現状のシステムを延々と保守するだけの仕事
- 誰かを不幸にするうシステム開発
ユーザの動作類似度に基づく共通鍵生成法(加速度センサーを用いて、似たている動作からパスコードを生成する研究) https://ci.nii.ac.jp/naid/110007338494
- TOEIC 650点 2014年2月
- 応用情報技術者 2009年6月
- 基本情報技術者試験 2005年5月