freeeの開発情報ポータルサイト

技術

より良いプロダクトを目指して、freee 請求書のメール送付機能不正利用防止対策の話

こんにちは!freee 債権請求書領域でプロダクト開発に取り組んでいる 韓国出身のエンジニア jason です。 この記事は freee Developers Advent Calendar の24日目になります。 adventar.org すでにお気づきの方もいらっしゃるかもしれませんが、今年のアド…

デザインシステムを拡張し、プロダクト開発の共通基盤を目指す

統合UX基盤というチームでエンジニアをしているtakumiです。freee Developers Advent Calendar 2024の20日目は、現在社内向けに開発を進めている新しいUIライブラリ「標準UI」について、その特徴や開発過程を紹介していきます。 デザインシステムの浸透と新…

脅威モデリングのためのカードゲームを比較する

freee Developers Advent Calendar 2024 17日目の記事はWaTTsonが担当します。昨年のAdvent Calendarでは「credentialをSlackに書くな高校校歌」というのを出してプチバズりしていたのですが、今回はネタ枠ではなくもうちょっと真面目な話を書きます。 devel…

Ruby のコードから TypeScript のコードを生成する

この記事は freee Developers Advent Calendar 2024 の 16 日目の記事です. freee でエンジニア兼 Dev Branding をやっているけむりだま (@_kemuridama) です. 今年は Apple Vision Pro を購入したのですが, 予約したことを X に投稿したらフジテレビに開封…

生成AIを用いたクレジットカード明細OCR開発の挑戦

はじめに この記事は freee Developers Advent Calendar 2024 - Adventar 12/14(14日目)の記事です。 adventar.org こんにちは。freeeで機械学習エンジニアをしているmickyです。 普段はAI-LabというチームでOCR開発のリードをしています。 今回はOCRチーム…

ページオブジェクトモデルを採用しているE2Eテスト基盤の実装Tips

こんにちは。SEQ (Software Engineering in Quality)のnakamuです。 freee QA Advent Calendar2024 11日目です。 これまで、freeeのE2EテストツールはSelenium+RSpec+Capybara+SitePrismをベースにした独自基盤を利用してきました。 この基盤は、2016年から…

E2Eテスト分析基盤としてReportPortalを導入しました!

E2Eテスト分析基盤としてReportPortalを導入しました

チームで実例マッピングをやってみた

こんにちは freee会計のQAエンジニアをしているsugenoです。 freee QA Advent Calendar 2024 - Adventar 5日目です。 私が所属する開発チームで、実例マッピングを作ってチーム内での要件整理/検討を行ったのでその取り組み内容について書いていこうと思いま…

認知を優先するか、作り込みを優先するか

この記事は、freee Developers Advent Calendar 2024 5日目の記事です。 こんにちは。現在プロダクトマネージャー兼ソフトウェアエンジニアとしてfreee人事労務の開発を行っている金山(id: tepppei)です。先日わたしが投稿した記事(「機能を削る」以外の…

OAuth/OIDCのClient管理を"型"で制する - freee_client_typeの軌跡

freeeの認可サーバー移行プロジェクトの一環として、freee_client_typeの誕生とその運用について詳しく解説。多様なクライアントに対応する新たな機能制御の導入背景と成果を紹介します。

ActiveSupport::CodeGenerator で遊ぼう

この記事は、freee Developers Advent Calendar 2024 の3日目です。 bucyou (ぶちょー) と申します。普段は大阪は京橋にある関西拠点で freee販売の設計・実装を行っています。ちなみに、社内では freee販売を実際に利用して、ミニ店舗の運営などを行ったり…

Rails の time_zone ヒヤリハット

こんにちは!freee の gon です。 freee Developers Advent Calendar 2024の2日目の記事です。 freee ではマイクロサービスを含め大小さまざまなサービスが稼働してますが、あるサービスで Rails の time_zone の設定をし忘れており、time_zone がデフォルト…

Terraform Monorepo の CI の実行時間を可視化し 2 分以上高速化

SRE team の suzuki-shunsuke です。 今年の 8 月(約3か月前)から freee の SRE team に join しました。 本記事では Terraform Monorepo の CI の実行時間を CIAnalyzer で可視化し 2 分 (70 percentile で約 160 %) 以上高速化した話を紹介します。 背景 f…

Kaigi on Rails 2024に参加してきました!

こんにちは、freee エンジニアの WaTTsonとyongiです!少し遅くなりましたが、2024年10月25日(金)〜26日(土)に行われたKaigi on Rails 2024に参加してきたのでレポートします! 今回参加したWaTTon, yongi, k-massanの3人と、運営側のメンバーだったhachiさ…

『freee技術の本』第2弾の詳細を公開します!

こんにちは、『freee技術の本』編集長のWaTTsonです。 先日のブログ記事で、技術書典17で『freee技術の本』の第2弾を出すことを発表しました。 developers.freee.co.jp 前回の記事では概要だけを公開していましたが、書影や目次などの詳細を公開します! 『f…

技術書典17で『freee技術の本』第2弾を出します!

こんにちは、『freee技術の本』編集長のWaTTsonです。 昨年の11月、技術書典15で『freee技術の本』を販売しました。 developers.freee.co.jp 今年の11月に技術書典17が開催されますが、こちらで『freee技術の本』の第2弾を出すことが決まりました! コンセプ…

『AWS Jam』に参加しました!!

はじめに こんにちは! SRE Platform Deliveryチームで内定者インターンをしているhagiです。 今回は9月3日に社内で開催されたAWS Jamに参加したので、その様子や感想をお伝えします! そもそもAWS Jamって何? AWS Jamの公式サイトから抜粋すると、次のよう…

freee人事労務の給与計算ロジックにLocal Write Forwardingを導入した話

読まなくても良い漫才パート ボケ「いきなりですけどね、freee人事労務の給与計算ロジックでいつも使ってる DB instance があるらしいんやけど」 ツッコミ「あっ、そーなんや」 ボケ「うちのオカンがね、reader instance なのか writer instance なのかをち…

大阪Ruby会議04のSponsor LTで「データベースだけじゃないN+1とその対策」について話しました

大阪Ruby会議に参加しました! こんにちは、関西でfreee販売・freee工数管理の開発を行っています、bucyouこと川原です。 2024/8/24(土)に開催された、大阪Ruby会議04にスポンサーとして (かつ個人的にも気になったので) 参加してきました。 同僚で大阪Ruby会…

『勝手にコードゴルフ王決定戦 in RubyKaigi 2024』を開催しました! - 後編

こんにちは。freee エンジニアの yongi です。 この記事は後編です。前編はこちらの記事をご覧ください。作問の背景や、当日の様子を紹介しています。後編では、問題の簡単な解説と、優勝回答の紹介をします。 developers.freee.co.jp 問題解説 詳しい内容に…

freee PSIRTの風景:Dependabot alertの調査

こんにちは、PSIRTのWaTTsonです。 昨年の夏頃に、「Dependabot alertをSlackに通知して、トリアージ運用に役立てる仕組みを作ってみた」という記事を投稿しました: developers.freee.co.jp ここでは、新しく報告されたDependabot alertをSlackに通知し、Ji…

『勝手にコードゴルフ王決定戦 in RubyKaigi 2024』を開催しました! - 前編

RubyKaigi 2024 で freee が出展していたブースでは、コードゴルフ大会を開催しました。沖縄の地図が出力されるスクリプトを作るまでのプロセスを説明しています。

権限制御とは? を freee の権限管理基盤で説明

どうも、freee でエンジニアリングマネージャー をやっている sentokun です。 以前に私の所属しているチームで開発している権限管理基盤マイクロサービスの記事を書いたのですが、そういえば「権限制御ってなに?」という説明をしていないと思ったので、今…

git worktreeを使ってプルリクレビューを効率化した話

共通マスタ基盤チームにおけるソフトウェアエンジニアのyugoです。 共通マスタ基盤チームは、従業員、商品、取引先といった製品横断で利用できるマスタデータを一元管理し、ユーザーにfreeeプロダクトにおける統合体験を提供できる基盤開発をミッションとし…

5月31日(金)・6月1日(土)、freee 技術の日 2024開催!

DevBrandingチームのmaoです! すでに公式サイトなどをご覧になった方もいらっしゃるかもしれませんが…今年もfreee 技術の日を開催します! freee-tech-day.freee.co.jp 「freee 技術の日」って? freee 技術の日とは、昨年2023年から始まったfreeeのテック…

おじいちゃんのスマホ操作を見ながら感じた認証のあり方について

こんにちは。認証認可基盤エンジニアのてららです。 最近好きな言葉はコンフォートゾーンです。好きな食べ物はニンジンです。 猫派です。 経緯 週末、パートナーが祖父母の家に帰るということで付き添いをしてきました。 その1つの目的としてパートナーの祖…

Playwright の waitForLoadState('networkidle') のようなメソッドを Selenium で動かす

Chrome DevTools Protocol を使って、 Selenium でネットワークの待機を実現します。

freee 会計ソフト iOS のレシート撮影カメラをリニューアルしました

Hello, world. 会計ソフト iOS チームで開発をしている Kirk(カーク)です。 みなさまとのご縁で生きながら、コントラバスを弾くためにコードを書いています。 今回、恐らくユーザーからは念願であったであろう、レシート撮影で使用するカメラのリニューア…

Attack Surface Management? はじめました

こんにちは、北海道から freee PSIRT(Product Security Incident Response Team)に参加している yu です。 今年は雪が少ないな〜と思っていたら最近ドカドカ降るようになってきて、1日デスクで集中した後に外に出ようとすると玄関のドアが雪で開かない日も…

マインドマップを使ったテスト分析を開発チームとQAチームでやってみた

こんにちは freee会計のQAエンジニアをしているsugenoです。 freee QA Advent Calendar 2023 24日目です。 私は2023年4月にfreeeにQAエンジニアとして入社しました。 今回は、会計チームでマインドマップを用いたテスト分析を始めてみたので実際やってみてど…

Bundleの3年間をライブラリで振り返る

こんにちは。freee株式会社でBundleの開発を行っている kouhei です。 この記事は freee Developers Advent Calendar 2023 の23日目の記事です。 Bundleは、サービス提供からそろそろ3年が経とうとしているサービスで、もともとはfreeeにグループジョインし…

複数の検証環境でのDB相乗り化

この記事は freee 基盤チーム Advent Calendar 2023 の 22 日目の記事です。 こんにちは、freee のDBRE (Database Reliability Engineering) で ジャーマネ(マネージャー)としてDBRE組織を運営管理しているJuni です。 今回は何故integration環境*1を相乗…

リグレッションテストで使うテストの設計にGIHOZ使ってみた

こんにちは、freeeのQAでマネージャーをしてるymtyです。 freee QA Advent Calendar2023 22日目です。 私は、QAマネージャーとしていくつかのプロダクトのQAに関わっています。今日はその中のひとつで、freee会計の申請機能(経費精算、各種申請、支払依頼、…

freee会計の月末のDB負荷を減らしたい!

こんにちは、freee 基盤チーム advent calendar の 21 日目担当、DBRE (Database Reliability Engineer) の shinta です。今年新卒入社しました。 freee の中でも一番のリクエスト数を誇る freee会計の DB は、月末に負荷が高まって色んなアラートを発報する…

GoのASTを解析してFeature Toggleを掃除する

この記事はfreee Developers Advent Calendar 2023の21日目の記事です。 こんにちは、金融開発部でEMをしている ogugu です。 今回は、Go言語において Feature Toggle の分岐を掃除するCLIを作ったので、ご紹介します。 ※ 毎年恒例の開発合宿 での成果になり…

どうやってGoをキャッチアップしてきたのか

こんにちは。この記事はfreee Developers Advent Calendar 2023の20日目になります。 認証認可基盤チームのアプリケーションエンジニアを担当しているハトンです。 一番好きな言語はGoです! 学生時代はコンピューターサイエンスとは無縁で、メモリとストレ…

Terragruntで快適なTerraformライフをめざす

Gruntwork社が公開しているTerraformのラッパーツール「Terragrunt」について、基礎的な概念や主要機能、使用方法について紹介します。Terragruntを用いてDRYにTerraformコードを書くことで、インフラの設定管理を効率化を目指しましょう!

ファイルの後方互換を考える

こんにちは、freee販売 開発エンジニアをやっているtakayanです。この記事はfreee Developers Advent Calendar 2023 - Adventar 17日目です。 2023年に開催されたfreee技術の日ではPublic APIについての話をしました。その中で後方互換の話もしましたが、こ…

AWS のコスト統制の道

SRE 統制チームの oracle です。 この記事は freee 基盤チームアドベントカレンダー の16日目になります。 今回は AWS の コスト統制についてお話させて頂きたいと思います。 先日「 AWS の組織移行をしました 」という記事の中で AWS の組織移行のために SR…

多様なプロダクトが存在する freee における health check 標準化

こんにちは。freee の Platform Solution チーム1 に所属している nkgw (Twitter) です。 この記事は freee 基盤チーム Advent Calendar 2023 の 15 日目の記事となります。 普段は、エンジニアリングマネージャーをしつつ、新規プロダクトのリリースサポ…

AWS の組織移行をしました

SRE 統制チームの oracle です。 この記事は freee 基盤チームアドベントカレンダー の12日目になります。 今回は AWS の 組織移行を行った話をさせて頂きます。 AWS の 組織移行というのはどういうこと?と思われる方もいらっしゃるかと思いますので、正し…

PagerDutyを用いたアラート対応改善の取り組みとTips紹介

はじめに こんにちは!freee の Enabling SRE チームに所属している阿部 寛明 (uryy)と申します。freeeのシステムを運用する際にはDatadogからの通知をもとにアラート対応するケースが多いのですが、組織拡大により従来の方法ではうまくワークしない箇所もで…

型を意識した Ruby on Rails 上のモデル

こんにちは。freee販売を大阪で開発しております、bucyou (ぶちょー) というものです。 この記事は、freee Developers Advent Calendar 2023 の10日目です。 例によって普段は Ruby on Rails で開発をしておりますが、ここでのアーキテクチャや、モデリング…

TerraformのAWS ProviderでRoute Table Resourceを利用するときに気を付けたほうがよいこと

こんにちは!PSIRTのimarikuです!この記事はfreee 基盤チーム Advent Calendar 2023の8日目としてお送りします。 私は普段、PSIRTのメンバーとして主にクラウド方面を中心にプロダクトセキュリティの向上に取り組んでいます。 PSIRT buleteamでは現在AWS Ne…

スクラムチームのメンバーとしてQAが入ってみる

こんにちは。freee会計のQAをしているakariです。 freee Developers Advent Calendar2023 8日目です。 私が所属する開発チームでは、QA含むスクラムチームで開発をしています。スクラムチームの中で QAがどのような動きをしているかについて先日インボイス制…

How to write an effective test cases?

Hello! Today is the 6th day of Advent Calendar 2023, and my name is Ween, QA of データ化サービス. I am grateful for the opportunity to write a blog and share with everyone the best practices that we used in my former company where I am als…

A novice to API testing

Hello! I’m Tin, a QA engineer of HR payroll and this is the 5th day of the freee QA Advent Calendar 2023. I had the opportunity to test an API in July of the current year, 2023, and I made the decision to write about it in the hopes that i…

インフラ爆速構築記〜freeeの場合〜

こんにちは。この記事は freee基盤チームアドベントカレンダー の4日目になります。 認証認可基盤チームのアプリケーションエンジニアを担当している てらら です。 社内の人にはエンジニアではなく、freee Tech Nightの司会の人、またはSlackで良く見かける…

謎解き制作にfreeeQAプロセスを適用してみた

こんにちは。freee申告でQAエンジニアをしている金子です。 freee QA Advent Calendar2023 の4日目です。 freeeには謎解き部があり、謎解き公演に一緒に行ったり、社内イベント用に謎解き制作を行なったりしています。 この記事は、普段はWebサービスに対し…

ArgoCDバージョンアップを安全かつ迅速に行うための取り組み

概要 freeeではAmazon Web Services (AWS) Elastic Kuerbentes Service (EKS) 上にほとんどのアプリケーションが載っており、EKSへのデプロイ基盤としてはOSSの ArgoCD を利用しています。 ArgoCDから各クラスタにデプロイを行うため、非常に中央集権的なア…