フォルシア の技術ブログ

Next.js 15アップグレードで嵌った話

まえがき エンジニアの恒川です。 2024年10月に Next.js 15 安定版がリリースされました。キャッシュ戦略に大きな変更があったり、 Turbopack のstableが使えるようになったりなど気になる変更内容がたくさんありました。 私が所属するチームでは Next.js 14 を使ったアプリケーション開発をしていましたが、今回の Next.js 15 リリースを受けてバージョンアップを行いました。 14

Apacheの拡張モジュール「mod_qos」でアクセスが殺到しても落ちないwebサイトを作る

はじめに インターネット上でwebサイトを運用している方であれば、自身の管理するwebサイトに突然アクセスが殺到しwebサイトが高負荷になってヒヤヒヤしたり、実際にダウンさせてしまったという経験があるかもしれません。 アクセス数の見積もりやサーバのサイジングを慎重に行っていたとしても、インターネット上にサーバを公開している以上はアクセスが突如とし

Neovim で VS Code みたいにコーディングする

はじめまして、新卒1年目エンジニアの出口です。 私は以前 Visual Studio Code (VS Code) を使ってプログラムを書いていました。 VS Code はインストールしたらすぐに様々な言語でコーディングを始めることができ、便利です。 ただ、VS Code の統合ターミナル上のシェルと、VS Code のキーボードショートカットが干渉してしまうことが多い点では不便だったため、Neovim に移行しまし

18リポジトリをnpmからpnpmに移行した際の学び

はじめに こんにちは、エンジニアの力石です。 フォルシアでは商品販売プラットフォームwebコネクトを提供しており、私はその中の検索システム(検索領域)の開発・運用保守を行っています。 検索領域はマイクロサービスアーキテクチャで構築されており、機能毎(コンポーネント毎)にリポジトリを分けるマルチリポジトリ構成を採用しています。 そして最近、検索領域

高速データ変換とトランザクション処理を両立するためのデータベース設計

まえがき フォルシアでは長年検索に特化したアプリケーションを開発してきましたが、近年注力しているプラットフォームのwebコネクトにおいては検索領域に留まらず商品販売に求められるあらゆる機能を提供しています。 webコネクトにおいて、ほぼ全ての商材データを管理する領域が素材登録システム(造成領域)です。素材登録システムでは商品販売に必要な情報の

Honoを使ってNext.jsにPOSTページを実装しよう!

こんにちは、エンジニアの籏野です。 近年、弊社の作るWebアプリケーションはNext.jsを用いて開発されることが多いです。 Next.jsは高パフォーマンスなWebページを作るための様々な機能を内包したReactフレームワークであり、メジャーバージョンアップの際には次々と新しい機能が追加されています。 さて今回はとある事情により、POSTメソッドで描画されるページを実装し

【チートシート】psqlコマンドで全部やる

こんにちは、エンジニアの水野です。 突然ですが、みなさんコマンドライン操作はお好きですか? 私は特に、直感的かつ手軽にスクリプトを書いてタスクをこなせるようなコマンドが好きです。 たとえばPostgreSQLを日常的に利用するDBプロフェッショナルは数多いるとはいえ、 「psqlコマンドをフルに使いこなしているよ」という方は意外と少ないのではないでしょうか。

【2024年版】めっちゃ使いやすいPythonの開発環境をVSCode上で構築する方法

筆者はPythonのパッケージ管理ツールとしてpip、バージョン管理ツール(仮想環境)としてpyenv / virtualenvを利用していますが、 要求されるパッケージのバージョンが衝突する、全体の環境が汚れていくなど色々不便さを感じています。このような悩みはPythonユーザーあるあるではないでしょうか? そこで今回は、2024年時点で非常に使いやすいと噂のRyeやその他ツールを改

AWS Organizations と AWS Config を利用した複数アカウントのリソース監視

はじめに こんにちは、フォルシア SRE ユニットの高嶋です。 本記事では、AWS Organizations と AWS Config を利用した複数アカウントのリソース監視についての一例をご紹介します。監視の実現にあたっては、 Config アグリゲータという複数アカウントの AWS Config 設定や評価情報を集約してくれる機能を利用しています。大変便利な機能なのですが、集約した情報を利用して通知

非コンテナ環境でもOK!AnsibleとAnsistranoで簡単サーバーデプロイ

こんにちは、エンジニアの瑠東です。 エンジニアは誰しもデプロイに困ったことが一度はあるのではないでしょうか。 OSやミドルウェアのバージョンアップデート・インストールをしたいが、自動で全て行う方法はないか ローカルに環境構築を行いたいが、npmコマンドなどをひとつひとつ叩かないといけない 追加・修正したコードをサーバーに反映したいが、手動でsymli

monorepo × vitestでプロジェクト全体のカバレッジを計測する

こんにちは、エンジニアの籏野です。 アプリケーション開発において、テストを書くということは非常に重要です。 テストを書く際の一つの指標としてカバレッジを計測することがあると思います。 弊社でもカバレッジの計測を行っているのですが、モノレポ構成のプロジェクトでプロジェクト全体のカバレッジを計測したいという要望がありました。 プロジェクト内

PostgreSQLだけでElasticsearchのようなキーワード検索!ParadeDB触ってみた

はじめに こんにちは、エンジニアの長谷です。 最近社内でPostgreSQL拡張をRustで実装しているのですが、世の中でもRust製のPostgreSQL拡張がいろいろと開発されているようです。 今日はその中の1つParadeDBをご紹介します。 ParadeDBとは ParadeDBとはElasticsearchのような機能を持つPostgreSQL拡張で、Rustで実装されています。 似たような拡張としてはZomboDBがありますが、こちらはあく

できるだけターミナルを使わないVisual Studio Codeでの開発

この記事は、Visual Studio Code(以下「VS Code」といいます)でできるだけターミナルを使わないで開発する方法を紹介する記事です。 ターミナルを使わない理由 VS Codeはターミナルを内蔵しており、VS Codeを離れることなくコマンドを使って作業できることが便利とされていますが、初学者の方はコマンドを覚えていなかったり、ターミナルでの作業に慣れていなかったりする

出ない順 PostgreSQLの実行計画

まえがき エンジニアの吉田です。 このブログのタイトルを見て記事をご覧になった方は言うまでもなく常日頃よりexplainコマンドの結果とにらめっこする生活を送っていることと推察しますが、PostgreSQL(以下postgres)の実行計画について「完全に理解した」と言える人は果たしてどれくらいいるでしょうか。 かくいう私も「ここでSeq Scanが走っているんだな」「ここはNested Lo

その関数ほんとに全部わかってますか? ~Effectの実例を添えて~

こんにちは、エンジニアの籏野です。 最近、弊社エンジニアが社内向けに書いた記事で「ある関数を実行したときに捕捉すべきエラーをどのように知ればよいか?」という問いを投げていました。 この問いに対する回答として、いわゆるResult型の利用を提案してくれていたのですが、これが個人的にとても興味深いものでした。 私自身最近はRustを触っていることもあり