フォルシア
フォロワー 2人
わたしたちは「フェアであることに挑戦し続ける」をミッションに掲げ、世の中の人々を「探す」ストレスから解放し、自らの選択、判断そして行動が結果に反映される「フェアな世界」を広げていくことを目指しています。この理念のもと、膨大・複雑なデータから必要な情報を的確に探し出す検索テクノロジーを基にしたシステム開発・サービス提供並びに、コンサルティングを行っています。

フォルシア の技術ブログ

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

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

OpenAPI定義を用いて型安全にFormDataを扱いたい!

こんにちは、エンジニアの籏野です。 フォルシアの API 開発では OpenAPI 定義を利用し、TypeScript の型定義や各種ソースコードを自動で生成していることがあります。 最近は型の生成にopenapi-typescript、フロントエンドで利用する API クライアントにopenapi-fetchを利用する機会が増えてきました。 openapi-fetch を利用する場合、クエリ/パスパラメータ―や JSON.stringify できるような

「あの写真どこいった?」を画像認識で解決してみる

はじめに はじめまして、こんにちは。 フォルシアの基盤技術部でエンジニアをしている太田と申します。 突然ですが、みなさまはスマホ、デジカメ等々で写真を撮ることは多いでしょうか? 写真をよく撮られる方にあるあるのお悩みの一つに「あの写真どこ?」となることがあるかと思います。 今回はそんなお悩みが解決するような「文章による画像検索機能」を作成

Node.jsによるCLI開発のススメ ~watchモードを添えて~

こんにちは、エンジニアの籏野です。 近年のフォルシアのアプリ開発は Node.js を中心としたエコシステムの恩恵を多く受けながら行われています。 モジュールとしてアプリで利用するだけでなく、便利な CLI などもたくさん存在しており、ちょっとした困りごとが簡単に解決できる場面も多いです。 今回は開発を進める中で CLI を自作しようかなと思う場面があり、基本

調査時大活躍!テキスト処理シェルワンライナー

こんにちは、エンジニアの水野です。 普段我々エンジニアが用いるOSには様々な種類があります。 フォルシアでは主に、Windows標準のLinux環境であるWSLや、VirtualBoxのUbuntuを用いて開発しています。 Linuxの操作には様々なコマンドを駆使しますが、頻繁に使うもの以外は忘れてしまったり、応用方法が狭まってしまうのもまた事実。 フォルシアの現役エンジニア社員はどの

GitLab CIでMR毎にプレビュー環境を作ろう!

概要 フォルシアではアプリのリポジトリ管理のために、社内に GitLab のインスタンスを立てて運用しており、開発は GitLab の MR(Merge Request) の作成 → チームメンバーからのレビューというサイクルで行われています。 レビューの際、特に見た目の変更を伴う修正が入る場合には自分のローカル開発環境に開発ブランチを持ってきてアプリを立ち上げる必要が出てきます。

フォルシア社員に聞いたおすすめのVSCode拡張10選

こんにちは、エンジニアの松川です。 普段我々エンジニアがコードを書く際に欠かせないのがコードエディタの存在。 そのなかでも Microsoft が提供する VSCode は現在最も人気のあるコードエディタの一つです。 VSCode の強みは何といってもその拡張機能の豊富さです。標準機能では物足りなくなったときも 54000 [1] もの拡張機能が強力にコーディングをサポートしてくれ

Rustのquick-xmlを使ってXMLをTSVに変換してみた

こんにちは、エンジニアの澤田です。 最近、社内でRustで書かれたプログラムを見かけることが増え、社内ライブラリにRustが導入されたりなど、社内でRustを使う気運が高まっているのを感じ、自分もRustを勉強してプログラムを書いてみよう!と思いました。 自分の業務に近いところでRustを使うのによさそうなテーマを考えたとき、前回書いた記事「 Haskellで階層化され

リクエストパラメーターをzodでバリデーションするときのTips

こんにちは、エンジニアの籏野です。 近年のフォルシアでの API 開発では Web フレームワークとしてExpressを利用することが多くあります。 また、開発言語には TypeScript を採用しており、型に守られた安全な開発を目指しています。 型安全な API 開発を進める上では、リクエストされたパラメーターをバリデーションし適切な型付けを担保することが必要になってきます。

良いプロダクト開発をするための取り組みを紹介します

はじめに・ユニット紹介 児山 祥 2023年新卒入社 2023年8月素材登録プロダクトにJOIN 関連記事:https://www.forcia.com/blog/002730.html はじめまして。エンジニアの児山と申します。 新卒でフォルシアの旅行プラットフォーム部旅行技術3-2ユニットに配属され、三ヶ月ほど経ちました。 本ユニットでは、「良いプロダクト開発」を実践するために様々な取り組みを行っていますが、

TypeScript プロジェクトのコンパイル時間を改善してみた話

TypeScript プロジェクトのコンパイルのボトルネックを調査・解消してみた話 はじめに こんにちは。エンジニアの辻󠄀です。 私は社内のとある TypeScript プロジェクトで開発業務を行っていました。 ある日、新たに関数の実装を追加しようとしたその時、tsserver(TypeScript の language server)による補完候補がなかなか表示されないことに気づいたのです。 どうやら、コンパイ

PostgreSQLでユーザー定義関数をつくってみよう

はじめに フォルシアの高速検索を支える重要な技術のひとつである PostgreSQL には標準でも様々な関数が用意されていますが、独自にユーザ定義の関数をC言語で用意することも可能です。 C言語は処理が高速であることがメリットでありますが、一方で往々にしてコードが難解になりがちです。また、私も含め若いエンジニアはそもそもC言語にほとんど触ったことがないこ

JotaiのDevtoolsを試してみよう!

はじめに こんにちは、エンジニアの籏野です。 突然ですが、皆さんは Web アプリを作る際にどのような方法で状態管理を行っているでしょうか? 私は長く Redux を使っていましたが、よりシンプルに状態管理を行うことができる Jotai というライブラリを最近使い始めました。 Jotai への入門については様々な記事がありますので割愛して、本記事では Jotai の Devtools を使っ

自社サービスの継続的開発を通じて得た教訓

はじめに こんにちは、エンジニアの田中です。 フォルシアでは SaaS のサービス"webコネクト"を旅行会社様向けに展開しており、 私はその中の"検索機能"の開発・運用に従事しています。 今回、webコネクト検索機能の開発において実践しているブランチ運用とそこから得られた知見について紹介します。 webコネクトについて webコネクト® は、旅行商品販売機能を SaaS 型サ

PostgreSQL 14で追加されたmultirange型(多重範囲型)を試してみた

エンジニアの吉田です。 今回はPostgreSQL(以降postgresと表記) 14から新しく追加されたmultirange型について紹介し、簡単な性能検証をしようと思います。 multirange型とは 従来よりpostgresではrange型(範囲型)と呼ばれるデータ型が用意されていました。これは文字通り範囲を保持するためのデータ型です。例えば整数であれば以下のように宣言できます。 select int4range(1,10); int4rang