Tech Blog

Amazon EFSのバーストクレジットを活用してコストを4分の1に削減!

ソーシャル経済メディア「NewsPicks」SREチームの美濃部です。 NewsPicksではアプリケーションのビルドにAWS CodeBuildを使用しており、ビルドキャッシュの格納先としてAmazon EFS(AWSのフルマネージド型NFSファイルシステムサービス)を利用しています。 …

Kotlinのsealed classを使ってif文を取り除き、コードをシンプルにする

Kotlinのsealed classでいい感じにコードをシンプルにする事例を紹介します。 sealed classをうまく使って、コードの可読性を高めてみましょう。

オンボーディング体験記

初めましてこんにちは! ソーシャル経済メディア「NewsPicks」プロダクトエンジニアの 寺坂 です。 2024年5月に中途入社して4ヶ月が経ちました。 だんだんと会社にもチームにも慣れてきたぞ!、ということで、今回は私のオンボーディング体験をご紹介します…

社内システムのセキュリティ向上のため、Lambda + CloudFront + S3でインフラ基盤を再構築した話

はじめに ソーシャル経済メディア「NewsPicks」SREチーム・新卒エンジニアの樋渡です。今回は、AWSサービスである「Lambda」「CloudFront」「S3」を用いて、弊社で使用している社内向けシステムの基盤を再構築し、開発者体験の向上やセキュリティ対策を行な…

ユーザー行動ログの増減をアラートする仕組みを導入して廃止した話

ソーシャル経済メディア「NewsPicks」の高山です。 NewsPicksではユーザーが画面上で操作したときなどに行動ログを記録し、それを分析してサービスの改善に役立てています。 そのログはWebサーバーのnginxで記録されてデータウェアハウスであるAmazon Redshi…

Playwrightでのユーザー行動ログのテスト

はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の QA/SET チームの海老澤です。 今回は NewsPicks WebにおけるPlaywrightでのユーザー行動ログのテストの取り組みを紹介させていただきます。 ログについて NewsPicks では法人向けサービスや広告…

AWS CDKのWeightedTargetGroupを使いEC2からECSへ段階的に移行を進める方法

こんにちは。ソーシャル経済メディア「NewsPicks」で主に検索システムを開発しております崔(ちぇ)です。 去年まで弊社の検索システムをEC2上に構築しておりました。今年にそれをコンテナ化しECSへ移行しました。コンテナ化に関しては前回の記事でまとめて…

LLMの日本語化はベクトル表現にも有効か?LLM2Vecにおける日本語ドメイン適応の効果

はじめに こんにちは! 株式会社ユーザベース スピーダ事業部の飯田です。 この記事では、テキストをベクトルに変換(エンコード)にLLMを用いる際に有効なLLM2Vecという手法を紹介します。 合わせて、LLM2Vecにおける日本語ドメイン適応として、LLM2Vecの処…

モノレポ内のディレクトリ構造について考えてみた

はじめに 試したこと モチベーション 試してみた感想 さいごに はじめに 株式会社ユーザベース スピーダ事業 Product Teamの阿久津です。 私が開発に関わっているスピーダ 経済情報リサーチは多くのマイクロサービスによって様々な機能が提供されています。 …

CDKでスタック間参照してはならない

CDKでスタック間参照してはいけません。 スタック間の依存関係が意図した通りに解決されず、cdk deploy時に失敗してしまいます。

ディレクトリトラバーサルの脆弱性 セキュアコーディングの啓蒙 第4回

ディレクトリトラバーサル はじめに こんにちは! 株式会社ユーザベース スピーダ事業 Product Team(以下 Product Team)の新熊・度會です。 ユーザベースの Product Team には、全社のセキュリティを担うチームとは別に、プロダクトセキュリティの底上げを…

コンテナをrootで動かすことの実際とSecure by Defaultにする改善案を紹介する

こんにちは。株式会社ユーザベース スピーダ事業でSREをしている八代 (@yashirook) です。 先日、社内勉強会でコンテナをrootで動かすことについて話したのですが、そこで気づきがあった人もいたようなので、テックブログにも記事を書いてみることにしました…

フロントエンド・オブザーバビリティ Meetupを開催しました!

ソーシャル経済メディア「NewsPicks」エンジニアの韓です。 先日、弊社ユーザベースオフィスでフロントエンド・オブザーバビリティ Meetupを開催しました。 本記事ではそのイベントレポートをお届けいたします! イベントについて セッション フロントエン…

Playwright で簡単な外形監視をやってみた

こんにちは!株式会社ユーザベース SaaS事業 Product Team の斉藤・度會・沖です。 業務では主に Elixir / TypeScript / Go を用いて、経済情報サービス「スピーダ」の開発・運用を行っています。 はじめに みなさんは外形監視はなにでやっていますか? 今回…

2024年 SREチームの Google Cloud コスト削減を振り返る

なぜコスト最適化することになったか? Active Assist Cloud Storage ストレージサイズの削減 ストレージクラスの変更 ロケーションの検討 結果 Cloud SQL コスト削減のため、Dev環境の停止を行なった 不要なリソースの削除 結果50%くらい削減することができ…

NewsPicksに推薦システムを本番導入する上で一番優先すべきだったこと

はじめに 皆さんこんにちは! ソーシャル経済メディア「NewsPicks」プロダクトエンジニアの森田です:) 私は2024年4月に株式会社ユーザベースに新卒入社し、現在は主にNewsPicksにおける推薦機能の開発改善に携わっています。 NewsPicksでは、ユーザに価値のあ…

F#でAsyncとResultを組み合わせたときにきれいに書く方法

スピーダ事業Product Teamのあやぴーです。 「関数型ドメインモデリング」が翻訳されて日本でもF#が流行る兆しが見えてきたので、今日はF#を書き始めた人が感じやすい違和感を解決する方法についての紹介です。尚、私たちProduct Team内では持っていない人は…

NewsPicksの課金基盤を作り直した話

NewsPicksの課金基盤を作り直した話です。 オーソドックスな方法ですが、実際に自分の手で進めてみると、とても学びが多いプロジェクトでした。

CodeDeployで更新するECS ServiceをCDK管理して詰んだ話

CodeDeployで更新するECS ServiceをCDK管理して失敗した話です。

Kotlin Fest 2024参加レポート

ソーシャル経済メディア「NewsPicks」のMobileAppUnitの野口です。 開催日から日が経ってしまいましたが、先月22日(土)ベルサール渋谷ファーストで開催された、テックイベントKotlinFestに参加してきたのでそのレポートです。 (後半に一緒に参加した石井さ…

円安に負けない!共通バックエンドAPIサーバーARM対応プロジェクト

こんにちは。ソーシャル経済メディア「NewsPicks」のSREチームの飯野です。 SREでは2023年から円安に負けないコスト削減を継続して行なっていますが、最近は圧倒的な円安におされ気味です。 2024年1月-6月の間に141→161円の変動はちょっと厳しすぎますよね。…

Software Engineer(SWE)としてMachineLearning Engineer(MLE)の仕事をやってみた話

はじめに きっかけ 何を開発しているか 機械学習の門外漢 機械学習とは ニューラルネットワークとは パーセプトロン 活性化関数 ニューラルネットワークの推論 配列の内積 numpy 推論 ニューラルネットワークの訓練 ロス関数 微分 誤差逆伝播法 全体的な処理…

ECSタスクの単発実行によるオンデマンド踏み台サーバーの実現

前書き こんにちは!株式会社アルファドライブに所属していたくすのきです。 4月からは、アルファドライブの一部事業カーブアウトに伴い株式会社ユーザベース Holdings Productのエンジニアとしてユーザベースのすべての社員がより効率的に働ける環境づくり…

1人プロジェクトで実感したチーム開発の良さ

はじめに 1人プロジェクトとは? 作ったもの 感じたこと おわりに はじめに こんにちは! SaaS事業 Product Division Product Team の山室です。 私たち Product Team は普段チームで開発を行っていますが、5月は自分だけチームを離れて1人プロジェクトを行…

Pythonスクリプトのモジュラリティとポータビリティを高めていく

はじめに PoCで使用したスクリプトのサンプル 小さなPythonスクリプト evaluate.py 共通の工夫:入出力の扱い 入力の扱いの工夫 出力の扱いの工夫 jsonl_to_csv.py つなげるシェルスクリプト ポータビリティの高いPythonパッケージ管理方法 PEP 723 – Inline…

Search Engineering Tech Talk 2024 Springに登壇しました

こんにちは。ソーシャル経済メディア「NewsPicks」で検索システムを開発しております崔(ちぇ)です。 Search Engineering Tech Talk 2024 Springに登壇し、「検索失敗率のモニタリングから改善まで」というテーマで発表しました。 search-tech.connpass.com…

手動作成AWSリソースをIaC化するモブプロ「cdk import day」を定期開催している話

はじめに 「私…全ての手動作成AWSリソースを生まれる前に消し去りたい。全ての宇宙、過去と未来の全ての手動作成AWSリソースを…この手で!」 そんなことを思われた経験はないでしょうか?私は常に思っています。 こんにちは。ソーシャル経済メディア「NewsPi…

人工知能学会JSAI2024でスポンサーと発表をしました

UB Researchの高山です。 先日開催された人工知能学会JSAI2024に株式会社ユーザベースとして参加してきました。 UB Researchは「あらゆるデータを”活きた経済情報”として利用可能にするAI研究所」として去年から活動しており、人工知能学会は去年に引き続き2…

Playwrightを使ったE2Eテストを導入した話 - インフラ編 Playwright × Allure Report × AWS

はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の QA/SET チームの海老澤です。 先日は Playwright を使ったE2Eテストの導入について、紹介させていただきました。 今回は作成したテストをAWS 基盤上で動かす方法を紹介させていただきます。 前…

Next.js の Parallel Routes に入門したらユーザー体験に関する悩みが良い意味で増えた話

はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の NewsPicks Stage. チームの三嶋です。 普段は、NewsPicks Stage. という経済情報に特化したオンライン番組配信プラットフォームの開発をしています。 NewsPicks Stage. チームでは、昨年末から…

Flexbox内でのテキスト省略の謎を解く

はじめに こんにちは!株式会社ユーザベース SaaS事業 Product Team の沖です。 この記事では、私がプロダクト開発中に遭遇した問題とその解決方法について共有します。具体的には、Flexbox 内の要素にカードのタイトルが「…」で省略される仕様を追加した際…

エンジニア従業員エンゲージメント向上への道

はじめに こんにちは!NewsPicksのVP Of Mobile Engineeringの石井です。 約1年前にPharmaXさん主催の「事例で学ぶ!エンジニア組織文化を作る採用・評価の仕組み」というイベントでPharmaX 取締役・エンジニアリング責任者の上野さん、カオナビCTOの松下さ…

チームから離れて1人1ヶ月でシステムを作る1人PJという取り組み

はじめに こんにちは!Product Teamの渡邉臣(@Sicut_study)です。 今回はProduct Teamで特徴的な取り組みの1つである「1人プロジェクト」について実際に体験したので紹介します。 1人プロジェクトを通して、この1年間での成長を実感できたのでぜひ多くの方に…

AWS Security HubとSlackを利用して、セキュリティ状況の監視運用を効率化したお話

はじめに 初めまして!ソーシャル経済メディア「NewsPicks」SREチーム・新卒エンジニアの樋渡です。今回は「AWS Security Hub」と「Slack」を用いて、弊社で利用しているAWSリソースの監視運用を効率化したお話です。 お話の内容 年々増加するサイバー攻撃に…

Playwrightを使ったE2Eテストを導入した話

はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の QA/SET チームの海老澤です。 先日 弊社で E2E テスト実行するために Playwright を導入したため紹介させてください。 E2Eテストとは E2Eテスト(エンドツーエンドテスト)とは、ソフトウェア開…

設計って技術的にも大変だけど組織的な大変さもあるよねという話

Product Team の竹原です。 みなさん、ドメインのモデリングしてますか? 最近私たちのチームでは以下のプレスリリースにある機能の開発に勤しんでいます。 FORCAS、生成AIを活用した新機能「AIセールストーク自動生成」の実証実験を開始 | FORCAS(フォーカ…

英語が苦手でも国際カンファレンスに行ってみよう! 〜 DevOpsDays Tokyo 2024 参加レポート

ソーシャル経済メディア「NewsPicks」でエンジニアをしております小林です。 弊社の「Kaigi Pass」というカンファレンス参加費用をサポートしてもらえる制度が今年から始まりました! せっかくなのでそちらの制度を利用して、2024年4月16、17日に開催された…

Spring Security を使って独自の認可処理を実装した話

はじめに 皆さんこんにちは、株式会社ユーザベース SaaS事業の本谷です。今回はタイトルにある通り、Spring Security を使った独自の認可処理の実装方法について概要を紹介しようと思います。 Spring Security は認可に関する標準の実装が提供されており、一…

インターンでRAGシステムの検索エンジンの改善をおこないました

UB Researchチームで2週間の短期インターンをしている梶川です。 現在、UB ResearchではRAGシステム構築に向けた研究を行っており、社内のさまざまなデータを正確に拾い上げるための検索エンジンの開発と評価を行っています。 今回、その検索エンジンに代わ…

なぜCDKを使う「べき」なのだろう?

はじめに 皆様こんにちは、ソーシャル経済メディア「NewsPicks」(Media Infrastructureチーム)エンジニアの北見です。 現在、私は弊社サービスの一部のインフラ刷新を行なっている最中で、ここ数ヶ月 AWS CDKを触っておりました。 前職では Infrastructure a…

ECS on Fargate 1.4.0で「ResourceInitializationError」を解決する方法

こんにちは。ソーシャル経済メディア「NewsPicks」で検索システムを開発しております崔(ちぇ)です。 弊社の検索システムはAWS EC2(Elastic Compute Cloud、以下、EC2)で動いていました。それを昨年、Amazon ECS(Elastic Container Service、以下、ECS)…

try! Swift Tokyo 2024に参加してきました!

ソーシャル経済メディア「NewsPicks」でiOSエンジニアをしている金子です。 世界中のiOSエンジニアが集う国際カンファレンス try! Swift Tokyo 2024 に参加してきました! tryswift.jp 弊社のNewsPicksアプリで採用しているTCA(The Composable Architecture…

ソフトウェアエンジニアのライブラリアップデートの向き合い方

こんにちは。ソーシャル経済メディア「NewsPicks」NewsPicks Stage.事業のエンジニアをしています、林です。 業務では Next.js / Rust / Go などを用いて、経済・ビジネス情報に特化した動画配信サービスであるNewsPicks Stage.の開発・運用を行っています。…

TCAの勉強会を開催しました!(資料・動画のリンク全部あります)

ソーシャル経済メディア「NewsPicks」でiOSエンジニアをしている金子です。 先日、弊社ユーザベース主催でTCA(The Composable Architecture)の勉強会を開催しました。 本記事では勉強会の開催レポートをお届けいたします! uzabase-tech.connpass.com 総勢…

Clojureで巨大なZIPファイル/CSVファイルを処理した話

SaaS Product Team(以下Product Team)のあやぴーです。 Product Teamの開発しているプロダクトでは「企業に関する大量データ」というものを扱う機会があります。特に様々な形式でデータパートナーから受領するため、一筋縄でいかないことが多々あります。今…

言語処理学会NLP2024でスポンサーと発表をしました

UB Researchの高山です。 今月神戸で開催された言語処理学会NLP2024に株式会社ユーザベースとして参加してきました。 個人としては2018年から言語処理学会の年次大会にはほとんど参加していましたが、近年はオンライン参加も多かったです。今年はユーザベー…

2000行台の巨大なReactコンポーネントをリファクタリングして学んだこと【ペアレビュー】

はじめに こんにちは!株式会社アルファドライブの佐藤です。 この度、タイトルにもあるように2000行台(最大2415行)の巨大なReactコンポーネントをいくつかリファクタリングしました。この作業には大量の変更が生まれます。2月の私のmainブランチへのコミ…

SSRFの脆弱性について セキュアコーディングの啓蒙 第3回

はじめに SSRF の脆弱性とは? なぜ SSRF の脆弱性? ある日、実際に SSRF の脆弱性を埋め込んでしまった、開発現場の話(空想) SSRF の脆弱性の対策 実装ミスによる脆弱性対策 ユーザーの入力を信用しない 許可リスト・拒否リストの利用 ライブラリの脆弱…

New RelicのルックアップテーブルとNRQLを駆使して使われていないAPIを探し出す

ソーシャル経済メディア「NewsPicks」のSREをしている飯野です。 サービスの開発は試行錯誤の連続です。サービスの成長とともに機能はどんどん増えていきます。追加される機能はサービスに不可欠な重要な機能だけではなく、サービスの方向性や前提が変わり不…

TCA1.7(Observable Architecture)へのマイグレーションで得た知見を共有します

ソーシャル経済メディア「NewsPicks」でiOSエンジニアをしている金子です。 WWDC23でObservationフレームワークが発表されてからすぐ、XのPoint-Freeアカウントより以下の投稿がありました。 「ViewStoreが消えるだと...!?めちゃシンプルになるじゃないか.…

Page top