ID:82058さん

あなたを気にしている企業

キャリアビジョン


価値探索を重視し、変動の大きなビジネスの中で機能やサービスを素早く実装し、プロダクトのビジネス価値を向上するエンジニアを目指している

プロダクトは課題を解決できるからこそ価値がある、と私は考えております。 課題が解決できたかどうかは、測ることでしか、判明しません。課題は前提の疑いや日頃の小さなきっかけに注意深くあることで、発見できるものと思いますが、想定していた課題自体が間違っていた、というのも大いにあり得ますので、素早く検証し、素早く方向転換ができることが重要だと思っております。 また、実装した機能やサービスをより良く改修または削除するためには、その機能やサービスが評価可能である必要があります。評価可能であるためには、最初から何を目指すのかというものを明らかにして、達成指標として何を測れば良いのかを考える必要があると思っております。全てを測ることはできないですが、評価指標を設定し、それを改めることができるチームや組織作りが重要と思っております。 あらゆる場にて受け取ったフィードバックを素早く反映させ、検証し、改めることで、より良いプロダクトを開発していくことが可能と思っておりますので、それをチームや組織に提供できるエンジニアを目指しております。

プロジェクト経験

2025年/2年以内

AIを活用したコンテンツ生成管理Webアプリケーションの開発・運用

弊社はアパレルにおける商品ページやマーケティングなどに活用するささげ画像の作成において、AIを活用しております。本プロジェクトは、ささげ画像の作成業務の効率化及び生成モデルを使用した画像または動画生成を提供するWebアプリケーションの開発と運用です。その中で私は、以下の業務を遂行しておりました。 ## 概要 ### バックエンド - WebAPIの仕様策定、DBのテーブルスキーマの策定、実装、単体テスト実装、API単位の結合テスト実装 - 本番環境、開発環境、ステージング環境のアプリケーションデリバリー ### インフラ - Webアプリケーションのデモ環境の用意 - 監視構成の考案と実施 - 監視リソースの管理と改修 ### QA - 本プロジェクトにおけるE2Eの立ち位置の制定 - PlaywrightとGithub Actionsを活用したE2E実行基盤の用意 - 探索テストの実施 ## 詳細 ### バックエンド WebAPIの仕様策定では、WebAPIの仕様の考案やREST原則に合わせたスキーマ定義(OpenAPI)等を行なっていました。WebAPIの作成において必要なDBテーブルのスキーマ策定は、FlywayのDDLファイルを追加することで行なっておりました。WebAPIの実装では、Kotlinを使って実装と単体テスト実装、結合テスト実装を行なっておりました。テストの流派はロンドン派を採用しており、可能な限り一つのコンポーネント単位で単体テストは用意するように工夫しておりました。テスト戦略はテストピラミッドを採用しており、単体テストを網羅的に用意し、結合テストではコンポーネントを跨ぐケースを用意することで、品質を確保しておりました。 開発環境とステージング環境、本番環境のデリバリーは、ECRのコンテナイメージとArgoCDによるクラスターのコンテナバージョンの管理にて実現しておりました。Githubのバージョンを切り、そのバージョンの内容をECRのコンテナイメージとしてプッシュした後、Kubernetesマニフェストを編集してクラスターのコンテナバージョンを変更し、ArgoCDを使ったCDパイプラインを通すことで、各環境のデリバリーを実施していました。 ### インフラ Webアプリケーションのデモ環境の用意は、お客様に見せてWebアプリケーションのアピールをしたいという要望があったため、デモ環境が必要となったので、用意しました。TerraformファイルにEKSクラスターやALB、ターゲットグループ、Route53などのリソースと各種必要な監視リソースを定義して、Terraformワークフローを実行して用意しました。Kubernetesマニフェストの適用によりクラスター上にアプリケーションをデプロイするために、ArgoCDをクラスターにインストールして、ArgoCD環境を用意しました。 Kubernetesマニフェストでは、ターゲットグループにサービスをアタッチする定義やその他アプリケーションに必要な定義を追加して、CDワークフローを実行することで、Kubernetesマニフェストの適用を行いました。 安定したアプリケーション運用において、Webアプリケーション及びEKSクラスター、Auroraの死活監視が最低限必要だったため、監視構成について考案及び実施をしました。Webアプリケーションにおいては、標準出力されたログ情報をFargateに組み込まれているFluentBitを用いてCloudWatch Logsにログを送信し、サブスクリプションフィルターを設置することで、ERRORレベルのログが来たらSlackに通知を飛ばすように、実装しました。 EKSクラスターにおいては、Kubernetesのため自動的に障害から復旧する仕組みがあったので、単純に起動中のPod数を見るだけでは偽陽性な通知が飛んでくる可能性が高かったので、Readinessヘルスチェックを通過したネットワークから取り除かれていないPodの数を見ることで、対応しました。標準ではReadinessヘルスチェックを通過したPodの数が取得できないので、kube-state-metricsを立ち上げて、そこからADOTを使ってメトリクスを取得し、CloudWatchに送信するようにしました。 Auroraではライターインスタンスが死んだ時に通知できるようにするために、Lambdaを使ってAuroraのAPIを叩いてライターインスタンスが死んでいないかを確認することで、対応しました。 両方の異常検知においては、CloudWatchのアラームと通知用のLambdaを紐づけて、通知基盤を実装しました。Amazon Q Developer(旧称:AWS Chatbot)を使わなかった理由としては、通知するメッセージを自由にカスタマイズできる方が良いと判断したため、通知用のLambdaを用意しました。 ただ、現状のEKSクラスターの死活監視構成にはモニタリングの観点及びオブザーバビリティの観点、運用容易性の観点から課題がありましたので、AWS Synthetics Canaryを使ったend-to-endの監視構成に変更し、実装しました。 ### QA Webアプリケーションの品質担保のために、E2Eテストを用意しました。E2Eテストはその性質上、フレーキーなものとなり、かえって開発生産性を損なう可能性があったため、基本的には基本となるユースケースを1つ選び、それを担保するようなテストという立ち位置である、というふうに設計しました。また、Playwrightにおいて、Web画面の操作はロケーションというものを使うのですが、フレーキーなテストにしないことと誰が見てもテスト内容が理解できるようにするために、ロケーション取得において、内部構造に依存しない取得方法を基本とすることを策定しました。具体的にはロールまたはラベルを使ってロケーションを取得するようにして、テストIDなどを使ってロケーション取得するようにしたり、一定時間を待つような検証内容ではなく、画面の遷移やレスポンスの返却などを起点とする検証内容を是とする方策を策定しました。 E2Eの実行環境として、PlaywrightとGithub Actionsを使ってワークフローを実装しました。ワークフローの実行には金銭コストがかかるのと、デリバリーまでのリードタイムが上昇するため、開発環境のみおのE2E実行とすることで、開発生産性と品質確保のバランスを取りました。

2022年/2年以内

クライアントの既存または新規サービスのシステム開発支援

弊社では、クライアントの要望に合わせて支援案を提案し、上流から下流まで一括でシステム開発支援を行っております。システム開発支援はUI/UXデザイン、フロントエンド、バックエンド、インフラ等に及び、私は主にバックエンドの分野で仕事を担当しています。具体的には、API開発における要件定義の修正及び実装(テスト含む)やそれに伴うDBのマイグレーションの修正、AWSにて構築されたインフラの保守業務について遂行してきました。また、社内で使用するツール(Docker、Orbstackなど)の管理業務やコーディング試験のレビュワーなども並行して担当しております。専門分野を問わず、あらゆる必要な事柄について積極的に取り組んできました。 ## バックエンド いくつかの案件を跨いで、主にWebAPIの実装をしてきました。APIはREST、GraphQLを経験しており、レイヤードアーキテクチャで構築されたバックエンドコードを扱ってまいりました。PHP、Kotlin、Goの言語を使って、層の役割を重視した保守容易性の高いコーディングを心がけて開発・保守をしてきました。最初はAPIの仕様通りに実装し、単体テストを用意してきましたが、最終的にはAPIの仕様を策定し、一気通貫でAPIの実装をしていました。必要に応じて、AWSにて構築されたインフラの保守業務を行なっていました。 ## その他 社内で使用するツール(Docker、Orbstackなど)の管理業務を行なってまいりました。弊社は専任のツールを管理する部署は存在せず、自主的にこれらの管理を担当するチームが発足され、私はそこに参加しておりました。直近の課題として存在していた、各開発者ごとにDocker Desctopのサブスクリプション契約がバラバラになされているという課題について、Dockerを扱える各社の比較検討を行い、Orbstackに取り決め、そちらに全体の契約を集約することに尽力しました。それぞれの案件ごとの事情もあるため、全てをOrbstackにした訳ではありませんが、Orbstackを基本としつつ、事情により他のサービスを使っても良い環境作りをしてまいりました。 コーディング試験のレビュワーも行なってまいりました。こちらも専任の部署は存在せず、自主的にこれらを扱うチームがあるため、そこに参加して案件参画の空き時間を使いながら、レビュワーの責務を果たしてまいりました。レビュー観点は主に保守性を加味したものであり、グローバル変数を多用していないか、ファイルを読み込む際、そのファイルの容量が大きすぎてメモリオーバーフローが起きる可能性のあるコードになっていないかなどを見ておりました。

マネージメント能力

アピール項目


アウトプット

GitHub アカウント
あり
Qiita アカウント
未入力です
Zenn アカウント
未入力です
Speaker Deck アカウント
あり
SlideShare アカウント
未入力です
特にアピールしたいアウトプット
未入力です

今後、身につけなければいけないと思っている技術は何ですか?

ElixirとOpenTelemetry、AIの生成物に対する評価技術。 Elixirを学びたい動機は、今までOOPの観点にてコンポーネントの抽象化を行なってまいりましたが、FPの観点だとどうやるのかということについて興味があるためです。現在進行形で学習中であり、Elixirの宣言的な書き方を見ていると、Kotlinの拡張関数は「クラスの振る舞い」ではなく「データの変更」として捉えると、良い書き方ができそうだなと思っていたりします。 OpenTelemetryを学びたい動機は、これからのシステムに必要になってくる考え方である「オブザーバビリティ」を実践するものだからという理由です。オブザーバビリティを担保することで、そのシステムについてどのような状態でも説明できることは、AIによる爆発的な機能開発をより良い形でサポートすると思っております。 AIの生成物に対する評価技術を学びたい動機は、AIを用いた機能開発や開発体制の構築では、評価技術がものを言うと思っているからです。AIの、オープンエンドかつ生成結果が確率論的に確定する性質により、現状ではそれっぽいから品質が良いという、あまりにも論理性を欠いた評価(Vibe Check)がそこらでなされております。これを専門で研究している方々であれば誤謬が起きづらいと思いますが、エンジニアの全員がそういう方々というわけではありません。本当は品質が悪く、評価可能な機能実装にはなっていないのにそのままリリースされて、使われていないのに永遠と保守され続けるという未来があり得ます。評価技術を獲得できれば、どういう観点ではそのAIを用いた機能が悪いのか、どこに課題があるのかについて論じることが可能であり、改善可能なものとして機能開発が行えます。同様に、開発体制においても、自身が評価をサポートしつつ、チームメンバーの多様な意見も取り入れながら、生産性の高い体制を構築することができると思っております。

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

チーム開発において、最も重要なことはアカウンタビリティ(説明責任)であると思っております。チームを引っ張っていくには、自らの意見を言うだけではなく、その意見に価値があると説得し、納得させなければいけません。そうではなく、なんとなく採用されてなんとなく運用されてしまう状況は、その意見が良かったのかどうかを評価することができず、仮にその意見が良かったとしても、合わせたチームメンバーにとってはそう捉えられないことで、心理的なしこりを生み、生産性を損なわせることになると思っております。 私が一番パフォーマンスを発揮できるのは、そういった視点を持ったメンバーと一緒に開発できる環境です。

生成AIの活用状況

日常的な情報収集・業務活用
ChatGPTやGeminiなどのチャットツールを、情報収集、ドキュメント作成、翻訳に日常的に活用
業務でコード補完系の生成AIを活用
GitHub Copilot等のコーディング支援ツール
業務でコード生成、コーディングエージェント系の生成AIを利用
コードレビュー、テストコード生成、デバッグに生成AIを活用
生成AIをコアとした開発
生成AIを主要技術としたサービス・プロダクト・機能の企画や、RAGなどの高度な手法を用いた開発経験
モデルの構築・研究開発
LLMのファインチューニングや、独自モデルの構築経験

キャラクター

直近で一番やりたいこと
サービスを作りたい
好きなスタイル
一人で黙々
どちらかといえば一人で黙々
どちらともいえない
どちらかといえばみんなでワイワイ
みんなでワイワイ
好きな規模
小さい会社
どちらかといえば小さい会社
どちらともいえない
どちらかといえば大きい会社
大きい会社
自信を持って人より秀でていると言える点
学習能力
スキルのタイプ
ゼネラリスト
どちらかといえばゼネラリスト
どちらともいえない
どちらかといえばスペシャリスト
スペシャリスト
得意なフェーズ
0 → 1
どちらかといえば0 → 1
どちらともいえない
どちらかといえば10 → 100
10 → 100
会社を選ぶ一番の基準
風通しの良さや意思決定ライン
やりたくない分野
未入力です
その他の特徴
新しい技術はとりあえず試す / 勉強会でLTをよくする
その他のやりたいこと・やりたくないこと
未入力です

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で20代後半
好きなテキストエディタ
Neovim
希望勤務地
東京都 / 神奈川県
希望年収
700万円
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?