🤖

2025年を振り返って

に公開

はじめに

こんにちはたくみです。
あと少し寝るとお正月になってしまいます。2025年はとても時間の流れが早かったような気がします。

さて、年末なので2025年を振り返って何をしたのか、何ができなかったのかを考えてみようかなと思います。
日記を読むような感じで読んでいただけると幸いです。

したこと

認証基盤刷新リリース

今年6月に弊社が運用しているSaaSの認証基盤を一つにまとめるリリースを行いました。マイクロサービスアーキテクチャへの第一歩って感じです。
私は主にインフラ部分を担当し、AWS、Auth0を触っていました。

TerraformでのAuth0管理

認証基盤にAuth0を使用し、IaCとしてTerraformを使用しました。
Terraformの名前自体は知っていましたが、実際触るのはこれが初めてであり、普段よく使うTypeScriptやC言語などとは違い苦戦しました。約半年、試行錯誤しながら触り続けたおかげで、ある程度わかるようにはなりましたが未だTerraform独自の関数などは使えません...
弊社のモダンスタックではTypeScriptを多く使用しているため、学習コストを考えるとCDK for Terraformを使用するのも一つだなとは感じました。(とりあえずリリース優先だったのでそこまでできませんでした。)

AppRunnerからECS on Fargateへの置き換え

弊社では、ユニネク®︎というSaaSを展開しています。元々このSaaSはAWSのApp Runnerにデプロイされていましたが、柔軟なコスト、柔軟なアーキテクチャを持ちたいということで、認証基盤刷新のついでにECS on Fargateへ置き換えました。
App RunnerもDockerfileを使用してデプロイされているため、置き換え自体はそこまで大変ではありませんでしたが、AWS初めてだったこともあり理解に時間を要しました。

Next.js on Lambdaへの置き換え

ユニネク®︎はフロントエンドをApp Runnerでホストしていました。上記でも記したとおり、柔軟なコスト、アーキテクチャを優先したいということでLambda Web Adapterを使用してLambdaでホストするようにしました。
この置き換えによりフロントエンドの料金が無料枠で賄えており、ほぼ0円になっています。
しかし、Next.jsのキャッシュ戦略、コールドスタートが遅い、同時実行数の制限など、今後考える課題はたくさんあります。
https://speakerdeck.com/taku271/next-dot-js-ssr-wolambdadehosutositemiru-jaws-education

サービス間通信にLatticeを使用

バックエンドのサービス通信にVPC Latticeを使用することで完全プライベートな通信を実現しています。また、各バックエンドのエンドポイントを露出しないことによって、API統合サーバーにリクエストを統合することができています。
Transit GatewayやVPC PeeringではなくVPC Latticeを使用することでネットワークを意識する必要がなく、L7のエンドポイント通信が可能になっています。
ちょうど実装している時に、ECSとLattice Serviceとの直接統合が可能になったのでALBも置いていません。

関連記事

https://zenn.dev/uniformnext/articles/2b45ce9712707b
https://zenn.dev/uniformnext/articles/graphql-federation

社内AI SaaSのリリース

AWSが提供しているGenUを使用して社内向けAI RAG SaaSを8月にリリースしました。
私は主にインフラ部分を担当し、Bedrock、Bedrock Knowledge Bases、S3 Vectors、Auth0を触っていました。特に、GenUをカスタマイズする部分に注力しました。

Bedrock Knowledge BasesのベクトルデータベースにS3 Vectorsを使用

当時のGenUでは、ベクトルデータベースにOpenSearch Serverlessが使用されていました。
しかし、OpenSearch Serverlessは割高になってしまい費用対効果が合わないということでリリース当初からAurora Serverlessを使用していました。しかし、毎月50$ほど常に料金がかかっており、コストに問題がありました。
そこで、AWS re:inventにてS3 Vectorsが正式リリースしたとのことだったのでベクトルデータベースをS3 Vectorsに変更し、コストをとても安くすることに成功しました。今後、別のSaaSからretrieve関数を高頻度で呼び出されることが想定されているため、この置き換えによって結構なコスト削減になった気がします。
しかし、S3 Vectorsはハイブリッド検索をサポートしておらず、セマンティック検索のみになってしまっているため若干精度は落ちているかもしれません。

Predict Stream関数をAPI Gatewayに配置

API GatewayがResponseStreamに対応したことから、Predict Stream関数をAPI Gateway経由で呼び出すように修正しました。
これにより、CognitoなどでAWSへの認証情報を持つ必要がありましたが、API Gatewayを叩くだけで良くなり、Cognito脱却を行うことができました。また、Lambda関数が全てAPI Gatewayで統合され、とてもクリーンなアーキテクチャになったと思います。

認証にCognitoではなくAuth0 SPAを使用

GenUでは認証にCognitoを使用していました。しかし弊社のSaaSでは基本的にAuth0を使用しており認可をやりやすくするためにauth0-spaを使用してAuth0での認可を行うようにしました。
Cognitoも使用しなくて良くなり、若干コストが低くなりました。また別のSaaSから簡単に呼び出すことができるようになり、AIエージェント戦略の幅が広がります。

イベント参加

AWS SummitやCTOAの研修、JAWS UGなどの様々なイベントに参加しました。参加だけでなく登壇もすることができ、良い経験がたくさんできました。

CTOA研修(ISUCON)

内定者ですが、5月に開催された、CTO協会の新卒研修で行われたISUCONに参加しました。初めての東京出張、初めての外部イベントでドキドキしていましたが、周りのエンジニアの方々がみなさん優しく、とても楽しい会となりました。
また、Webサイトのパフォーマンスチューニングをそこまでしたことがなかったため、とても良い経験となりました。この経験から来年には社内ISUCONを企画しており、システムGのモチベーション向上、技術力向上を狙っています。
https://cto-a.org/news/20250408_release

AWS Summit 2025

5月に開催されたAWS Summit 2025に参加しました。そこまでAWSについて詳しく知らない時期に参加しましたが、会場の熱気や素晴らしい発表などから圧倒され、今ではAWSの虜になりました笑。
特にAWS Japan様の自由研究のようなブースがとても面白く、私もAWSを使用してワクワクするようなアプリケーションを作りたいと思いました。
JAWSや外部イベント参加を積極的にしたくなったのはAWS Summitへ参加したからだと思います。いつかはre:invent行きます。
https://aws.amazon.com/jp/summits/japan/
https://zenn.dev/uniformnext/articles/aws-summit-2025

JAWS UG 新潟支部 夏のハンズオン祭り

AWS SummitでJAWS UGの存在を知り、ずっと参加したいと思っていました。そこで、7月に開催されたJAWS UG 新潟支部 夏のハンズオン祭りに参加しました。
福井から車で約4、5時間、とても長い道のりでしたがその価値は十分にあった参加でした。このハンズオンではAWSアカウントの初期設定やAmazon Athenaを使用したデータパイプライン、Bedrock Agentsを活用したWMSの作成を行い、とても勉強になりました。
また、懇親会では参加者の皆様の興味深いお話をたくさん聞くことができ、イベントへの興味がとても高まりました。この会でLTをしてくださったお二人が初めての登壇ということで、さまざまなお話をお聞きし、私も登壇したいと感じるようになりました。
https://jawsug-niigata.connpass.com/event/355361/

Zenncafe

7月に開催された、Zenncafe#3日比谷 - TypeScript night AIコーディングLTと表彰に、なんと登壇者として参加することができました!
AWS Summitが終わり、JAWS UG 新潟でたくさんの刺激をいただき、先輩に背中を押していただいて登壇者として申し込みを行いました。人生初登壇、このような大きなイベントで登壇できたことをとても嬉しく思います。Zennの皆様、JAWS UG 新潟でお会いした皆様、背中を押してくれた先輩、本当にありがとうございました。
初めてのLTということで、過去に書いたZennの記事を元に7分程度の発表をさせていただきました。参加者の皆様からは初LTスムーズにできていてすごかったなどのお褒めの言葉をいただき、登壇して良かったと思いました。
https://www.youtube.com/watch?v=m1Y1QhJUN2k
https://speakerdeck.com/taku271/zi-she-uikonponentonimcpsabawozuo-tutahua
https://zenn.dev/uniformnext/articles/zenncafe-speaking

JAWS FESTA 2025 in 金沢

ちょっと飛んで10月、JAWS FESTA 2025 in 金沢に参加しました。
最初行くか迷っていましたが、もっとJAWSのことを知りたい、もっとAWSのことを知りたいという気持ちで申し込みました。本当は会社の先輩と一緒に行きたかったのですが、一般枠がすぐ埋まってしまい叶いませんでした。(学生枠が使えるのも今年まで...)
このイベントでとても有意義な時間を過ごすことができました。特に2025 Japan AWS Jr. Championsの方々のパネルディスカッションでは、AWSを学び始めたきっかけやJr. Championsになったきっかけ、今後の展望などとても影響されました。私ももっとアウトプット頑張ります。
懇親会では様々な方々とお話しすることができ、皆さんの意気込み、AWSへの想いを聞くことができました。

https://jawsfesta2025.jaws-ug.jp/

また、AWS Japan 沼口様に福井でAWSを触っている方々をご紹介いただき、JAWS UG 福井支部の立ち上げを行うことができました。念願の福井でのJAWS イベント、盛り上げていきたいと思います。
https://jawsug-fukui.connpass.com/event/375652/
https://x.com/numaguchi/status/1983764406170476613
https://zenn.dev/uniformnext/articles/jaws-festa-2025

Education JAWS #5 なつやすみの自由研究発表会

JAWS FESTAでたくさんの影響を受けたのち、登壇意欲がとてもあったためEducation JAWS なつやすみの自由研究発表会にお邪魔させていただきました。
登壇は学生Only、どんな内容でもOKということだったので5月におこなったNext.jsをLambdaでホストする話をしました。終了後、参加者の皆様からたくさんのフィードバックをいただいたため、この内容から質の良いアウトプットを行なっていこうと思います。
https://speakerdeck.com/taku271/next-dot-js-ssr-wolambdadehosutositemiru-jaws-education
https://youtu.be/0d2MuFfGaGs?t=2074

資格試験の受験

AWS認定試験やIPAの試験を受験しました。

AWS認定試験

1月にAWS CLFを受験し、その勢いで8個のAWS認定試験を受験、合格することができました。このモチベーションには同じく認定試験をたくさん持っている先輩(先日全冠してました👏)の影響やJapan All AWS Certifications Engineers賞の存在があります。
Japan All AWS Certifications Engineers賞をいただけないとしても、来年の3月までには全冠できるように来年も頑張っていきたいと思います。資格試験は合格しただけではダメなので、AWS認定試験で学習した内容を実践へ応用できるようにしていきます。

https://zenn.dev/uniformnext/articles/19495107b17158

IPA試験

4月に応用情報技術者試験、10月に情報処理安全確保支援士試験を受験し、合格することができました。
基本情報技術者試験は高校2年生で取得しており、久しぶりのIPA試験でした。やはり午前と午後合わせて約5時間の試験は辛いです笑。来年の春にはネットワークスペシャリスト試験を受けようかと思っていましたが、体力がもたなさそうなので見送りです...
情報処理安全確保支援士試験、登録してバッジが欲しいですが、バッジのために高額な費用を払えないと思うので未登録のまま行きます笑。

これらの資格試験は自身のスキルを証明すると同時に、この資格を持っているならというバイアスが働いてしまいます。その期待に応えられるよう、合格した後でも学習を続けていきたいです。

社内イベント

内定者なのですが様々な社内イベントに参加しました。

社内LT会の開催

システムGで始業前に集まりLTをするLT会を開催しました。
現在は2週間に1度ほど実施しており、アンケートでは高評価をいただいております。また、普段時間が取れずなかなかアウトプットができない方々に機会を提供する、システムGエンジニアの考え方を皆が知ることができるといったメリットがあり、今後も続けていこうと思っています。

システムインターンシップ講師

夏に開催されたシステムインターンシップに講師として参加しました。
インターンシップの内容はAIを用いたVibe Codingをやってみようとの内容で、インターン生の補助や質疑応答、発表のサポートなどを行いました。未経験の大学生と接することで教育の仕方や就職への価値観を知ることができ、今後のマネジメントに活かしていきます。
最終日での学生たちのアウトプットは、現在開発しているエンジニア達も興味を引くような、とてもクオリティの高いものでした。また、このインターンシップを通して開発の楽しさを知り長期インターンシップへ参加してくれる学生もおり、とても有意義なイベントになっていたと思います。

長期インターンシップ管理

システムインターンシップの講師を行なっていた流れで長期インターンシップ生のマネジメントを行いました。
初めてのマネジメントでどれもうまくいかず...インターン生を振り回してしまっている気がします。いつも迷惑かけて申し訳ないです...
来年は今年感じたマネジメントに対する苦手意識を克服できるように努力します!

できなかったこと

AWS認定試験全冠

目指している尊敬する先輩がAWS12冠、全冠を行なっており、私も行いたいと思っていましたが達成できませんでした。
主な原因は始めるのが遅かったこと、福井では試験自体が低頻度であること、別のリリース、卒業研究でのリソース不足が挙げられると思います。また、残りがDOP、ANS、MLA、MLSと難しいものが揃っており、踏み込めずにいました。
来年の3月までには全て取れるようにAWSへの学習、スケジュール設定を行なっていきます。

AI エージェントを触る

社内向けAI SaaSをリリースしましたが、現状RAGしか機能がなく大きなイノベーションとはなっていない現状です。
re:inventでもBedrock AgentCoreやStrands AgentsなどのAIエージェントに関するアップデートが多くあったため、乗り遅れないためにも触っておくべきだと思います。Auth0 For GenAIなど、認証周りもリッチになってきているためここで触っておきたいです。
少なくとも年末年始には触ろうと思っているので、できなかったことというよりはすることに近いかもしれません。

社内ワークフローアプリのリリース

現在、稟議書ワークフローやアカウント申請などのワークフローを行えるSaaSを一人で開発しています。
このSaaSを今年中にリリースしようとしていましたが、別のリリースや私のリソース不足によりリリースすることができませんでした。このSaaSによってバックオフィスの運用が改善されるため、来年は優先度高めで進めていく予定です。

読書

圧倒的、読書不足でした。実は結構技術書読むの苦手でして、なかなか読めずにいました。
現在、Obsidianも導入し読書の準備を進めています。来年は読書によるインプットを増やします。どなたか良い読書の方法を教えてください。

最後に

ここまで読んでいただいてありがとうございます。
この記事を書くことで今年1年の振り返りをすることができました。また、反省点や課題展なども見つかり、来年のための準備にすることもできました。

来年からは「学生」ではなく「社会人」になります。今以上に活躍し、弊社を引っ張っていけるような人材に成長します。

ではみなさん、良いお年を!

ちょっとだけ宣伝

弊社システムGでは長期インターンシップを開催しています。
今回紹介したような、楽しい業務を行うことができる、有償であるなどメリットたくさんあるので、ぜひ見てみてください!
https://recruit.uniformnext.net/recruit_event/system_saas/

GitHubで編集を提案
ユニフォームネクスト株式会社

Discussion