2023年8月創業のベンチャー企業にて、CRM/SaaSプロダクトの開発をPL/PGとして担当。 Nest.jsプロジェクトのクリーンアーキテクチャ/DDD構成への改修と、テスト並列化・クエリ最適化・DB設定チューニング・アラート整備による速度改善を主導。 機能面では、全文検索(OpenSearch)導入、CSVインポート、SMS多要素認証、カレンダー/メール外部連携、多言語対応、非同期バルク処理基盤など幅広く設計・実装。 設計から本番運用(ECS)まで一貫して携わっている。
HR系プロジェクトにおいて、開発に関わるインフラやソースコード、その他運用に関して改善提案を行うスポット案件 ■提案 ・バックエンドコードにおけるクリーンアーキテクチャの提案 ・フロントエンドコードにおけるfeaturesアーキテクチャの提案 ・インフラ運用に関するterraform化の提案 ・ブランチ運用の提案 ・OpenSearch導入に伴う環境構築 ・その他細かいバグ修正や機能追加の実装 etc... ■コメント ・短期的な開発改善の案件だったが、これまでの知識を活かして諸々提案することができた ・プロジェクト自体が厳格なスクラムを行なっていたため、これまで何となくやっていたスクラムについて学ぶことができた
入札資格を管理するサービスを新規で立ち上げを実施。 インフラ構築からバックエンド、フロントエンド側の開発を一貫して担当。 ■機能 ・新規ユーザー登録 ・アンケート ・アンケート回答チェック ・ダッシュボード ・資格検索 ・資格の後で登録 ・資格登録/編集 ・資格の統合、分割、廃合に対応する機能 ・ユーザー招待/管理 ・企業管理 ・資格マスタ管理 ・資格検品機能 ・フェーズログ ・E2Eテスト ・endpointテスト ■インフラ AWSのAmplify/App Runnerを軸に構築。 導入ハードルが低く、小規模サービスには向いていると感じたが、以下調整及び懸念があった。 ・Amplifyは内部でCloud Frontが動いているが、それに対してWAFを当てられないため、Cloudf Front2台構成になってしまう。 ・App Runnerをパブリックネットワーク構成にした場合、DBとの接続がオープンになってしまうためプライベートネットワーク構成にしたが、外部へのリクエストをVPC Endpointを返す必要があり、料金が高くなってしまう。 ・App Runnerのauto scalingはCPUやメモリのトリガーではなく、同時実行数をトリガーにスケールするため、アプリケーション側の実装をより気をつけなければいけなかった。 ■提案 ・Qiita Teamの導入 ドキュメント管理が全てスプレッドシートで管理されており、ナレッジの共有や将来の検索性において懸念を感じ、Qiita Teamの導入を提案し採用された。 Jira Confluenceが望ましかったが、既に他部署で採用されており採用ハードルが低かったためQiita Teamを選択した。 ・PRD(Product Requirements Document) 仕様に関して、会議での議事録やslack、スプレッドシートなどで分散してしまっており、言った言ってないが発生している状況だったため、PRDや詳細設計などをQiita Teamにテンプレート化し、機能開発時にステークホルダーとこの資料を見て認識合わせする様提案した。 ・API仕様書をPostmanで表現 API仕様書をスプレッドシートやswaggerで管理していたが、メンテナンスされておらず正確な情報として誰も信用していない状況になってしまっていたため、必ず動作確認で利用するPostmanでAPIドキュメントを表現するよう提案し採用された。 Postmanで進んでいるが、最近はApidogが良さそうで利用を考えている。 ・sourcetree等でGitのコミットグラフを見る文化の普及 チームにてgit管理はコマンドで行なっていたが、コミットグラフを見る文化がなく、rebaseやcherry pickなど便利な機能を使いこなせていなかったり、破壊的な操作をしてしまうことがあったため、グラフを見る文化及び先述した機能の使い方を普及した。これにより無駄なコミットが入らず、レビュアーの負担が減ったりなどチーム開発がより円滑に進む様になった。 ■コメント ・別企業が実装途中だったアプリケーションを引き継ぐ形で実装 ・チームリーダーとして進捗管理や設計を行い、全てスケジュール通りにリリースした ・リリース後も大きな不具合なし ・リリーススケジュールの合間の時間を使い、2週間という短い間でデフォルトのexpressアプリケーションからオニオンアーキテクチャ&Typescriptへリプレイスすることができた ・使用する言語は全て新しいものだったが、素早くキャッチアップし開発することができた
入札資格管理サービス新規立ち上げプロジェクトと並行して、入札案件検索サービス保守対応を実施。 CS課等から上がってくる要望に応える形で改修を行なった。 バックエンド及びフロントを担当した。 ※5とは違うサービス ■コメント ・技術力と仕事のスピードを買われ、一人で別プロジェクトと並行して業務を遂行した ・初めてRubyやMongoDBを業務で利用したが、スムーズに対応できた。 ・仕様書などなく、システム独自の使用による考慮漏れが多かったため、テスト駆動で開発を進め、認識齟齬を防いだ
Nuxt2系から3系へのバージョンアップに伴う破壊的な変更の修正を行なった。 ■インフラ Nuxt3バージョンアップに伴い、パフォーマンスに影響が無いかや、元々ECSで稼働していたアプリケーションをそのまま稼働させることができるか、脆弱性に問題がないかなどの調査を請け負った。 パフォーマンスに関しては、AWSのDistribution Load TestingやChromeのLighthouse測定を利用して負荷テストを実施し、Nuxt2と比較した。結果的にDatadog Agentの過度な連携によるパフォーマンスの悪化や、Cloud Frontの設定不備を発見することができた。 脆弱性に関しては、OWASP ZAPを利用した簡易scanを実施し、Nuxt2系で検知されたなかった脆弱性の確認を行った。 ■コメント ・業務としてフロントエンド領域に初めて携わった ・インフラがわかるメンバーが自分しかいなかったため、インフラ領域でもバリューを出せた ・プロジェクトのサブリーダーを務め、進捗管理等のマネジメントも一部行なった
入札案件検索サービス保守・改修を通年で実施。 バックエンド及びインフラを担当。 ※3とは違うサービス ■機能 ・入札案件のランダム取得処理 ・検索回数に応じた検索ロック処理 ・リファクタ ・不具合対応等 ■インフラ 既に構築されている環境だったため大きなトピックは無いが、ECSのメモリ逼迫の原因を探るためECS Execを導入し、不要なログファイルが溜まり続けている問題を見つけることができた。 ■コメント ・LumenのmiddlewareとRedisを利用して、ゲストユーザーの検索ロック機能を実現 ・OpenSearchからの値取得をGoから取得していたため、ランダム取得処理を追加 ・CVR数への影響により切り戻しが行われる事も予想し実装 →実際にランダム処理は切り戻しが行われたが、既存処理には全く影響無く切り戻すことができた ・Dockerで動いているGoアプリケーションがホットリロードになっていなかったため、airを導入した ・Goアプリケーションにて、利用していたolivere/elasticにて意図したDSLを実行できないことによるメモリの不効率な利用を発見し、公式パッケージのelastic/go-elasticsearchを提案した。(スケジュールの問題で採用はされなかった)
大手キャリア向けIOT関連のAPI開発やアプリ改修、新サービスに伴うコンテンツ等を作成した。 特にGoを用いたサービス共通の認証APIの実装を行なった。 アプリ、バックエンド、インフラ領域を担当。 ■機能 各所別々で動いていた認証機能を、Goのシステムにて一元管理できるよう新規で実装した。クリーンアーキテクチャの構成でプロジェクトを作成し、現行で動いている各システムから複雑なリクエストが送られくる(リクエストの仕様は変えられない)ものを対応できるよう実装した。 一日1000人以上が使うサービスだが、特に顧客影響なくリリースを終えることができた。 ■コメント ・Terraformを用いたインフラ構築のノウハウを学ぶことができた ・実際のIoT機器との連携の開発などを行い貴重な体験ができた ・今まで独学で実装していたテストに関しての知見を深めることができた
WebViewで表示するスマホアプリのWeb部分をPhalconからLaravelへリプレースし、新たな機能を追加した。また、SalesForceとのSSO連携も実装した。 更にECサイトに関する新機能実装のマネジメントを行った。 改修・保守に関しては、インフラからスマホアプリまで担当。 ■コメント ・リプレースを通して、よりLaravel及びの知見が深まった ・外部のコンサルティング会社と連携して開発を進めたりと、実装以外の部分も学びが多かった ・別PJのマネジメントなども行い、マネジメントについての知見が深まった
CackePHP製のシステムをLaravelへリプレースを行なった。 ■コメント ・自身のLaravelの技術を活かして短期間でリプレースを終了させることができた
大手ゼネコン向け施設維持管理を新規開発及び、システムのマスター管理をほぼ全て一人で実装。(PJ後半で人員増加) インフラ ~ スマホアプリまで全て担当。 組織のヒエラルキー管理や、マスターシステムからのスマホ通知機能、物件情報のCSV取り込み機能などなど、様々な機能開発を行いリリースした。 ■コメント ・特にAWSとLaravelに関してかなり知見を深めることができた ・スマホアプリとのAPI連携について知見を深めることができた ・0 ~ 1のサービス開発を経験することができ、要件定義からリリース、保守まで経験することができ、全体像を把握できた →この経験を機により具体的な提案や見積もり、連携が取れる様になった
音楽ラジオアプリのAndroidの改修を実施 ■コメント ・AndroidにてYouTubeの様な音楽プレイヤー機能を実装した ・Android開発はほぼ初めてながら、上記の様な難易度の高い実装を公式ドキュメントを見ながら実装することができ自信に繋がる経験だった
社内プロダクトが無かったため企画しプロトタイプ開発まで実施 ■コメント ・画面遷移図・APIシーケンス図・ユースケース図の作成やTrelloのガンチャートを使用した進捗管理等も行い、0から1を作り出す経験ができた ・ローカル開発環境はDockerを使用し、社内gitサーバで行なっていた開発をGitHubのPullRequestベースでの開発の提案するなど新しい事を多く経験できた
腕につけるタイプのヘルスケアデバイスに内蔵されているファームウェアのアップデートアプリの開発を実施 ■コメント ・全く知見がなかったアプリ開発を任せて頂き、ほぼ一人で開発を実施 ・お客様との打ち合わせにも参加し、初めて進捗管理等を経験することができた
・PHP, MySQL, UML, 等の社内研修 ・社内監視サーバの構築 ・大手機器メーカー文書管理ソフトウェア保守・運用 ・古地図アプリ管理画面開発