ebiken
https://scrapbox.io/files/6763d4caaf9037247f20f1bd.jpg
This is my personal wiki.
Resume
Kenichi Ebinuma / 海老沼 健一
Links
お仕事の依頼はこちらから
手を動かすエンジニア、開発コンサル、技術顧問など
mail: kenichi.ebinuma@gmail.com
Skills
Skills
ある程度複雑なシステムの要件定義から、アーキテクチャ設計、開発、運用
CI/CD や IaC, 監視基盤など DevOps の改善
経験のない技術、最新の技術の高速なキャッチアップ
0->1 のサービス立ち上げ
品質の細部へのこだわり
大規模トラフィックを捌くサービスのパフォーマンス改善
Tech Stack
Infrastructure
Others
Qualifications
基本情報技術者
応用情報技術者
Jobs
Mesh, Inc.
Duration
2022/08 ~ now (full-time)
2022/01 ~ 2022/07 (side job)
Role: Software Engineer
Summary
開発の初期段階からデリバリー型スーパーのシステム開発/運用を担う
Stripe と連携した決済機能、Algolia と連携した検索機能など、様々な機能のアーキテクチャ設計、開発/運用
初期のGoでのプロジェクト構築支援
Cloud Spanner の導入/運用を主導
インフラ設計/構築、IaC 化
Cloud Operations, Sentry を利用した監視基盤の構築
GitHub Actions を利用したCI/CDの構築
倉庫内作業員向けアプリの機能開発/運用
ADR, Design Doc の導入
スクラムの導入
Tech Stack
Links
EVERSTEEL株式会社
Company:
Duration: 2025/4 ~ now (fulltime)
Role: Software Engineer (Tech Lead)
Summary
オブザーバビリティの改善
工場でのカメラ撮影~AI推論までの非同期ワークフローのアーキテクチャ見直し
ポストモーテムの導入
feature flag の仕組み導入
モノレポ化の推進
CI/CDの改善(ワークフロー見直し、高速化)
設計レビュー
AIツール利用の推進
エンジニア採用のサポート
Tech Stack
Links
Next Genba Inc. / ミライのゲンバ
Duration: 2023/10 ~ now (fulltime/side-job)
Role: Software Engineer (Lead Engineer)
Summary
バックエンド、インフラ、管理画面を担当する1人目のエンジニアとしてジョインしサービスの立ち上げ
電子帳票のフォーマット管理を行う Web ノーコードUIの開発
電子帳票のエクセルライクな記入UIの開発
LLM (OpenAI API)を利用した機能の開発、検討
エンプラ企業向けのセキュリティ対策としてRLS,SSOの導入 インフラの構築、管理基盤の整備、CI/CDの構築、改善
Tech Stack
Links
DeNA, Co., Ltd.
Duration: 2020/4 ~ 2022/07 (full-time)
Role: Software Engineer
Summary
1. 大規模ユーザー数を抱えるゲームサーバー基盤 Takasho の開発/運用
ArgoCD, CircleCI を利用した自動デプロイ環境の構築
Cloud Operations を利用した監視基盤の構築
Blue Green/Canary デプロイの技術検証、導入
2. あるゲームタイトルのサーバー開発チームリーダーとして、基盤を利用したゲームサーバーの開発/運用
500万人以上のユーザーが遊ぶリリースを無事に乗り切る
大規模リリースに向けた負荷試験、パフォーマンス改善を主導
チームメンバーの教育(アーキテクチャ設計、DB設計、コーディングなど)
Tech Stack
Links
Training
BluAge
Duration: 2021/09 ~ 2021/11 (side-job)
Role: Software Engineer
Summary
CDNと連携した画像変換サービスの導入(調査~負荷試験~提案~実装)
Tech Stack
Qriteria
Duration: 2021/06 ~ 2021/12 (side-job)
Role: Technical Advisor, Software Engineer
Summary
Web 標準の音声認識APIを利用したオンライン 1on1 会議自動分析システムの PoC 作成、実装サポート
VPC 利用環境での AWS(ECS) への移行支援
Tech Stack
SYN, Inc. (Chompy, Inc.)
Duration: 2021/04 ~ 2021/06 (side-job)
Role: Software Engineer
Summary
店舗用タブレットで利用する注文管理アプリをReact(web)からFlutter(native)へリプレース
管理画面の機能開発
Tech Stack
DeNA, Co., Ltd.
Duration: 2020/1 ~ 2020/3 (freelance, full-time)
Role: Native Application Engineer
Summary
日比谷音楽祭の参加者向けアプリの開発
Tech Stack
Links
STELLA, Inc.
Duration: 2018/12 ~ 2019/12 (freelance, full-time)
Role: Backend Lead Enginner
Summary
若者向けYouTube同期視聴アプリ Synchro の開発/運用
創業期の企画段階から参画し、幅広く開発、運用を行う。初期から様々な技術選定を主導
Tech Stack
Links
playground, Co., Ltd.
Duration: 2017/6 ~ 2018/11
Role: Software Engineer (intern)
Summary
QuickTicket のwebアプリ、管理画面開発
EC2 から ECS(EC2) へのサーバー移行調査、検証
iOSモバイルSDKの開発
Tech Stack
---
code:script.js
if (sessionStorage.getItem('scrasobox-paste') !== 'true') {
document.addEventListener('paste', event => {
const type = 'text/html'
const d = event.clipboardData
if (d.types && d.types.indexOf('Files') == -1 && -1 < d.types.indexOf(type)) {
event.preventDefault()
const dom = new DOMParser().parseFromString(d.getData(type), type)
const ng = text => text.trim().replace(/[\\\n]/g, ' ') const q = query => dom.querySelectorAll(query)
const f = (text, deco) =>
[].concat(text.split(/\n/)
.filter(l => l.trim()).map(l => [${deco} ${l.trim()}] )).join('')
q('pre').forEach(d => {
d.innerText = 'code:code.*\n' + d.innerText.split('\n').map(l => ${l}).join('\n') })
q('h3').forEach(d => { d.innerText = f(d.innerText, '**') })
q('h2').forEach(d => { d.innerText = f(d.innerText, '***') })
q('h1').forEach(d => { d.innerText = f(d.innerText, '****') })
q('em, i').forEach(d => { d.innerText = f(d.innerText, '/') })
q('strong, b').forEach(d => { d.innerText = f(d.innerText, '*') })
// q('ahref imgsrc').forEach(d => { d.closest('a').outerHTML = [${d.src.trim()}#.png ${d.closest('a').href}] })
// q('ahref').forEach(d => { d.outerHTML = [${d.href} ${ng(d.text).trim()}] }) q('imgsrc').forEach(d => { d.outerHTML = [${d.src.trim()}#.png] }) d.outerHTML = [https://www.youtube.com/watch?v=${d.src.split('/embed/')[1].split('?')[0]}] })
q('code').forEach(d => { d.innerText = '' + d.innerText + '' })
let depth = -1
const li = node => {
depth++
node.querySelectorAll('li').forEach(n => li(n))
return node.innerHTML = '@sp@'.repeat(depth--) + node.innerHTML
}
li(dom.body)
const div = document.createElement('div')
div.innerHTML = dom.body.innerHTML
document.body.appendChild(div)
const range = document.createRange()
range.selectNode(div)
//const text = range.toString()
const text = div.innerText
document.execCommand('insertText', null, text.replace(/(\s*\n){3,}/g, '\n\n').replace(/@sp@/gi, ' '))
document.body.removeChild(div)
}
})
sessionStorage.setItem('scrasobox-paste', true)
}
window.addEventListener('unload', () => { sessionStorage.setItem('scrasobox-paste', false) })
faviconを変更する
code:script.js
$('head > linkrel=icon').attr('href','/api/pages/ebiken/ebiken/icon'); code:script.js
import '/api/code/yutaro/emoji_selector/script.js'