Business social network with 4M professionals
株式会社CreamCheese / バックエンドエンジニア / テックリード
■自己紹介 小野 波留也(おの はるや)と申します。 エンジニア5年目になります。
1. AI技術を活用したプロダクト開発 特に自然言語処理や機械学習を用いたサービスの開発に興味があります。
株式会社CreamCheeseにて、エンジニアリングを中心にしつつ、営業、顧客対応、プロダクトマネジメントなど多岐にわたる役割を担っています。少人数組織の中で、上流から下流まで一貫して関わり、以下のような業務を推進してきました。
見積もり・設計から開発まで担当してます
担当チームのメンバーが働きやすい環境を整えることに専念しております。 また、社内の採用促進の向けたイベント企画や社内LTイベントの主催、ポテンシャル採用業務にも取り組んでおります。 チーム内エンジニア数:約5名 - 採用業務(主にポテンシャルの採用に注力) - 月次1on1 - チームの目標管理、技術力向上 等
■概要 MAU2千人のライブ配信サービスにおける配信基盤移行プロジェクトの開発。 ■使用技術 Kotlin, Ktor, TypeScript, Angular.js, Oracle, CloudFirestore, CloudFunctions, AWS Lambda, S3, CloudFront, MediaLive, CodeBuild, Docker, Github Actions ■チーム情報 6~8人チームの中でバックエンドを担当。 ■ポジション PL ■担当業務 ・既存の配信基盤やAPIサーバの技術調査 ・クライアントワークによる仕様策定 ・サーバーサイドKotlinによるAPI開発 ・Angular.js+TypeScriptによるフロントエンド実装。RxJSとFireStoreによるリアルタイム通信の確立 ・Firestore(NoSQL型データベース)のデータベース設計および適切なセキュリティルールとインデックスの設定、トランザクションによるデータ整合性の担保 ・Cloud Functionsを使用した各種バックエンド関数や定期実行バッチ関数の作成 ・Stripeによる決済機能の構築 ・アプリ内課金のレシート検証 ・コードレビュー ・メンバーの進捗管理、タスク割り振り ・ドキュメント作成 ■課題1 ー 某配信基盤の不調により映像の遅延や乱れが発生していた。ユーザーからのクレームが多く、優良顧客を失うとサービス収益が見込めなくなる懸念があった。しかし、基盤の提供企業のサポート対応が遅かったり、目に見える改善が見られないことを皮切りに、早急な配信基盤の移行を希望されていた。 ■ 課題2 ー ポイント購入, 投げ銭機能の実装にあたり、スケジュールに間に合わせる必要があったため、既存DBであるCloudFirestoreに決済まわりの重要なデータを保管することになった。「データの欠落や不整合は起こりうる」というFireStoreの思想と共存しなければいけなかった。 ■取り組み ー 課題1に対して インフラエンジニアと連携して、AWS MediaLive(配信サーバ)をAWS Lambdaで制御する構成を採用し、Lambda → CloudFormation → MediaLiveのリソース作成・削除までの一連の流れを実装して頂いた。 配信サーバーの作成・削除・アーカイブ動画のストレージ保存等の処理は多くのメモリを占有するため、既存のAPIサーバと共存させることができなかった。そのため、Kotlin + Ktor で駆動するAPIサーバからLambdaを呼び出すことで、サーバーレスな配信基盤の制御を実現した。 ー 課題2に対して Firebase Authentication未使用な環境下で、トランザクションによるデータ整合性の担保が厳しいように見えたが、排他制御の仕組みの理解や挙動検証を通して、なんとか解決方法を見つけ出した。 ■ 発揮したバリュー 技術的な壁の突破 ・NoSQLデータベースであるFireStoreのクセのある設計手法やトランザクション、Kotlin+Ktor によるDDDアーキテクチャを採用したAPIサーバ開発に戸惑ったが短期間でキャッチアップ ・できるエンジニアを巻き込んで、設計レビューやコードレビューをして頂いた ・その結果、詰まないDB設計や決済等の重要データの整合性を取ることに成功 不確定な仕様の策定 ・金銭振込の締日、ポイント償却の締切日等のサービス設計が決まっていなかった ・PMと相談しつつ、スケジュールを加味した提案をしながらクライアントと一緒に方向性を確定 ・その結果、PMの負担を軽減 & 仕様未定による開発遅延を防止できた 人手不足の解消 ・専門ではないが、フロントエンド業務も率先して担当。 ・既存コードの調査及び各種書籍やネット情報をもとに素早くキャッチアップして即戦力となる ・その結果、フロントエンド領域において新メンバーのサポートが可能となった 絆を深める ・ベテランエンジニアを巻き込んで「使用技術の理解を深めよう」のMTGを不定期で開催 ・慣れない技術を使用した開発に戸惑う自分や他のメンバーの技術理解が進んだ ・その結果、信頼関係が深まり、働く環境が良くなった
■概要 医療施設と器具製造業者間の器具受発注システムの開発。 ■使用技術 PHP/Laravel/TypeScript/Vue.js/AWS ■チーム情報 5~7人チームの中でバックエンドおよびフロントエンドを担当。 ■ポジション 実装者 ■担当業務 ・DB設計の考慮漏れの指摘 ・PHP + Laravel によるサーバーサイド開発。管理画面/認証/画像アップロード/CSRF対策/N+1問題 ・Vue.js+TypeScriptによるフロントエンドSPA実装。CSSはSCSSを導入 ・コードレビュー ■課題 ー 人員不足によりフロントエンドおよびバックエンドのスケジュール遅延が発生していた。複雑なテーブル設計や実装をすぐにキャッチアップできる即戦力となる人材をすぐにアサインできない状況だった。 ■取り組み ー 画面仕様書やER図、過去のMTG議事録を読み込み、現在の開発状況を整理。初めてコードレビューも担当し、レビュー担当者の負担軽減に貢献した。LaravelによるMVCアーキテクチャ、Vue.jsによるSPA開発においては、書籍やネット上の記事で学習して実務に落とし込み、開発スケジュールの遅延改善に貢献した。 ■担当した機能 画像アップロード ・Minioを採用して、開発環境のS3にデータ保存可能な基盤を構築 ・テストデータをMinioに流し込むスクリプトを作成 ・AWS SDKを用いてS3に画像データをアップロードするAPIを作成 キャッシュによる画像表示 ・「画像データのバイト数が大きい&アクセス数が多い 」という壁をクリアするため、CloudFrontによるコンテンツ配信でキャッシュを実現。 ・環境(本番、検証、開発)ごとに自動でエンドポイントの向き先が変わる設定をした 各種API ・MVCにServive/Repository層が組み込まれたアーキテクチャでAPIを作成 ・データモデルとビジネスロジックの依存関係を分離、ビジネスロジックとデータ入出力の依存関係を分離することで、例えば「ストレージをMySQLからMemcacheに切り替える」という柔軟な対応も可能となった。また、テストも容易になり保守性が高いシステムとなった。 各種ページ ・Laravel Adminによる管理画面の作成 ・Vue.js+TypeScriptによるSPAを実装。VueRouterに不具合が見受けられたので、pageライブラリを用いてルーティングを実現。バックエンド専門ということもあり、フロントエンドとAPIの繋ぎこみおよびバックエンドのレスポンス修正等を全般担当した。
IT業界で活躍する為、中途退学しました
休学中に開業してホームページ制作の活動に専念しておりました。 Web制作会社様から案件を受注して納品をこなしておりました。
陸上競技
Kotlin
Ktor
PHP
Laravel
TypeScript
yuichi oyama
合同会社DMM.com, デジタルコンテンツ開発本部
Jumpei Tanaka
DIGGLE株式会社, プロダクトデザイナー
土屋魁太
株式会社ZOZO(エンジニア・デザイナー部門), フロントエンドエンジニア
Takenari Yamamoto
UPSIDER, Inc., バックエンドエンジニア
龍崎 翔子
株式会社水星, 代表取締役
Receive Scouts from companies