株式会社ユーザベースのブログ - TECH PLAY

TECH PLAY

株式会社ユーザベース

株式会社ユーザベース の技術ブログ

全532件

はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の QA/SET チームの海老澤です。 先日は Playwright を使ったE2Eテストの導入について、紹介させていただきました。 今回は作成したテストをAWS 基盤上で動かす方法を紹介させていただきます。 前回の記事 tech.uzabase.com E2Eテスト実行のタイミング NewsPicksでは 下記のタイミングで E2Eテストを実行させています。 ①リリース時のカナリーデプロイ後 NewsPicks ではカナリーリリースを採用していてカナリーへのデプロイが完了した後、カナリーに向けてE2Eテストが動きます。 ②開発…
はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の NewsPicks Stage. チームの三嶋です。 普段は、NewsPicks Stage. という経済情報に特化したオンライン番組配信プラットフォームの開発をしています。 NewsPicks Stage. チームでは、昨年末からフロントエンドのアプリケーションで Next.js の App Router を使い始めています。 今回は、Next.js の Parallel Routes を使った際の気づきを共有させてください。 Parallel Routes とは 詳細は公式を参照ください。 端的には、複数のページを1つの…
はじめに こんにちは!株式会社ユーザベース SaaS事業 Product Team の沖です。 この記事では、私がプロダクト開発中に遭遇した問題とその解決方法について共有します。具体的には、Flexbox 内の要素にカードのタイトルが「…」で省略される仕様を追加した際の課題に焦点を当てます。解決までの道のりを、レイアウト例を用いて説明していきます。この記事が、同様の問題に直面している方の参考になれば幸いです。 仕様を追加する前の画面の説明 仕様を追加する前の画面は、以下のようなレイアウトになっています。 ページ全体はヘッダー、サイドバー、コンテンツ領域で構成されています サイドバーとコンテンツ…
はじめに こんにちは!NewsPicksのVP Of Mobile Engineeringの石井です。 約1年前にPharmaXさん主催の「事例で学ぶ!エンジニア組織文化を作る採用・評価の仕組み」というイベントでPharmaX 取締役・エンジニアリング責任者の上野さん、カオナビCTOの松下さんと私の3人で事例発表やパネルディスカッションをしました。(そのときの記事は、PharmaXさんのこちらの記事にあります) このときに私が話したエンゲージメントに関することは、「採用とオンボーディングを頑張った結果、エンゲージメントもよくなりました」的な話もしました。 ただ、それ以外にも多くのことをしていま…
はじめに こんにちは!Product Teamの渡邉臣(@Sicut_study)です。 今回はProduct Teamで特徴的な取り組みの1つである「1人プロジェクト」について実際に体験したので紹介します。 1人プロジェクトを通して、この1年間での成長を実感できたのでぜひ多くの方に知ってほしいです。 1人プロジェクトとは? Product Teamには色々ユニークな取り組みがあるのですが、その1つが「1人プロジェクト」です。 エンジニアである以上、技術力が大事です。 日々の業務の中でも成長する環境は整っていますが、例えばパイプラインを1人で構築できる機会が訪れなかったなど特定の技術に触れられ…
はじめに 初めまして!ソーシャル経済メディア「NewsPicks」SREチーム・新卒エンジニアの樋渡です。今回は「AWS Security Hub」と「Slack」を用いて、弊社で利用しているAWSリソースの監視運用を効率化したお話です。 お話の内容 年々増加するサイバー攻撃に対抗するため、セキュリティ対策は日々重要度が増してきています。 そこで弊社で利用しているAWSのリソースに対して、各種セキュリティイベントの収集ができるAWS Security Hubを利用することで、セキュリティ状態の可視化と迅速な対応がしやすい運用を行い、セキュリティ状態の現状把握から始めることにしました。特にNIS…
はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の QA/SET チームの海老澤です。 先日 弊社で E2E テスト実行するために Playwright を導入したため紹介させてください。 E2Eテストとは E2Eテスト(エンドツーエンドテスト)とは、ソフトウェア開発におけるテスト手法の一つで、アプリケーションが実際の運用環境と同様の条件下で正しく動作することを確認するためのテストです。 システムの開始点から終了点までを通じて、ユーザーの視点でアプリケーションのフローを追い、機能全体が連携して期待通りに動くかを検証します。具体的には、ユーザーが行うであろう一連の操作をシミュレ…
Product Team の竹原です。 みなさん、ドメインのモデリングしてますか? 最近私たちのチームでは以下のプレスリリースにある機能の開発に勤しんでいます。 FORCAS、生成AIを活用した新機能「AIセールストーク自動生成」の実証実験を開始 | FORCAS(フォーカス)|営業DXソリューション|企業データベースと顧客分析 その開発において、ドメインの理解をしっかり深めないまま開発を続けたためにちょっとつまづいてしまったので、反省も兼ねて記事にまとめてみることにしました。 ドメインの概要 上記のAIセールストーク自動生成機能には以下の図のように、 課題に悩む企業 自社のプロダクトをおすす…
ソーシャル経済メディア「NewsPicks」でエンジニアをしております小林です。 弊社の「Kaigi Pass」というカンファレンス参加費用をサポートしてもらえる制度が今年から始まりました! せっかくなのでそちらの制度を利用して、2024年4月16、17日に開催された国際カンファレンスの DevOpsDays Tokyo 2024 に参加してきました!(スポンサー関係者含めた総参加者は324名の規模感) 実はテックカンファレンス初参加です!本記事では参加レポートをお届けします。 #DevOpsDaysTokyo 2024、遂に明日から開催です!Day1のキーノートはDevOpsDaysの発起人…
はじめに 皆さんこんにちは、株式会社ユーザベース SaaS事業の本谷です。今回はタイトルにある通り、Spring Security を使った独自の認可処理の実装方法について概要を紹介しようと思います。 Spring Security は認可に関する標準の実装が提供されており、一般的な認可処理を実現することは簡単です。例えばユーザごとに権限を持たせ、情報へのアクセスを許可または拒否することは多くのコードを書くことなく実現できます。一方、独自の実装をConfigクラスを使って設定することで、自由度の高い認可処理を実現することができ、より複雑な要件に対応できます。 今回、アプリケーションの要件は権限…
UB Researchチームで2週間の短期インターンをしている梶川です。 現在、UB ResearchではRAGシステム構築に向けた研究を行っており、社内のさまざまなデータを正確に拾い上げるための検索エンジンの開発と評価を行っています。 今回、その検索エンジンに代わるモデルを用いて、実際の検索テキストで検索を実施した結果を報告します。 概要 近年、LLMを用いた文書生成が流行しており、その中でも外部情報を検索し、LLMに追加して生成させるRAGという技術が活用されています。RAGによって、LLMが知らない情報に対して正確な応答を返すことができ、UB Researchでもニュース記事や有価証券報…
はじめに 皆様こんにちは、ソーシャル経済メディア「NewsPicks」(Media Infrastructureチーム)エンジニアの北見です。 現在、私は弊社サービスの一部のインフラ刷新を行なっている最中で、ここ数ヶ月 AWS CDKを触っておりました。 前職では Infrastructure as Code として Terraform を使ったことがあるのですが、少なくともAWS を使うという条件においては CDKを使うべき という結論に辿り着きました。 今回はそのように考えるようになった理由について説明していこうと思います。 前提 Terraform はパブリッククラウドにおける Infr…
こんにちは。ソーシャル経済メディア「NewsPicks」で検索システムを開発しております崔(ちぇ)です。 弊社の検索システムはAWS EC2(Elastic Compute Cloud、以下、EC2)で動いていました。それを昨年、Amazon ECS(Elastic Container Service、以下、ECS)に移行しました。前回のブログでは、移行のために調べた「アプリケーションをコンテナ化するベストプラクティス」をまとめましたので、ご興味ある方は読んでいただけると嬉しいです。 tech.uzabase.com 今日は、ECS on Fargateのタスク起動に手こずった話をしてみようと…
ソーシャル経済メディア「NewsPicks」でiOSエンジニアをしている金子です。 世界中のiOSエンジニアが集う国際カンファレンス try! Swift Tokyo 2024 に参加してきました! tryswift.jp 弊社のNewsPicksアプリで採用しているTCA(The Composable Architecture)の作者であるPoint-Freeのお二人が来日されるということもあり、これは行かない理由がない!と社内で手を上げて、行かせていただきました。 本記事ではtry! Swift Tokyo 2024参加レポートをお届けします。 Kaigi Pass 一日中楽しめる Swi…
こんにちは。ソーシャル経済メディア「NewsPicks」NewsPicks Stage.事業のエンジニアをしています、林です。 業務では Next.js / Rust / Go などを用いて、経済・ビジネス情報に特化した動画配信サービスであるNewsPicks Stage.の開発・運用を行っています。 はじめに 突然ですが、皆さんは自身のソフトウェアのライブラリアップデートは行えていますか? 皆さんはどのようにライブラリアップデートを行なっていますか? 新機能を試したくて? npm iで失敗してから頑張る? Renovate / dependabot が自動Mergeされる環境? もしくは対応…
ソーシャル経済メディア「NewsPicks」でiOSエンジニアをしている金子です。 先日、弊社ユーザベース主催でTCA(The Composable Architecture)の勉強会を開催しました。 本記事では勉強会の開催レポートをお届けいたします! uzabase-tech.connpass.com 総勢約140名の参加者 入門から最新バージョン情報、開発ノウハウまで!バラエティに富んだ10名の登壇者によるLT TCA入門したてなので、自分が馴染みのある実装と比較しながらキャッチアップしてみる(fumiyasacさん) TCA魔法学入門(dazyさん) 個人開発をTCAで運用していくとい…
SaaS Product Team(以下Product Team)のあやぴーです。 Product Teamの開発しているプロダクトでは「企業に関する大量データ」というものを扱う機会があります。特に様々な形式でデータパートナーから受領するため、一筋縄でいかないことが多々あります。今回はその中でも巨大なZIPファイルの中に大量のCSV(ライクな)ファイルをClojureでいい感じに処理するために苦戦した話を書いていこうと思います。 前提 最初のアプローチ OutOfMemoryErrorとの闘い 実行時間との闘い CSVの読み込み リフレクションの抑制 まとめ 前提 まずはZIPファイルについて…
UB Researchの高山です。 今月神戸で開催された言語処理学会NLP2024に株式会社ユーザベースとして参加してきました。 個人としては2018年から言語処理学会の年次大会にはほとんど参加していましたが、近年はオンライン参加も多かったです。今年はユーザベースとして初めてスポンサーをしてブースを出すことができたことを嬉しく思います。 また、弊社の田村が発表とポスターセッションをおこないました。 ポスターのプロポーザルはこちらで公開されています。以前から取り組んでいる、LUKEを使ったニュースに対する企業名の紐付けの精度改善の取り組みについてです。 発表内容はこちらで公開されています。こちら…
はじめに こんにちは!株式会社アルファドライブの佐藤です。 この度、タイトルにもあるように2000行台(最大2415行)の巨大なReactコンポーネントをいくつかリファクタリングしました。この作業には大量の変更が生まれます。2月の私のmainブランチへのコミットは11905 (+5683, -6222)行でした。結論、ペアレビューの時間を設けることで約1ヶ月でこの膨大な変更をやり切ることができたので、今回はそこに至るまでの試行錯誤を記録したいと思います。 背景 私たちが扱うプロダクトには、2000行を超えるようなReact クラスコンポーネントがいくつか存在していました。このような巨大なコンポ…
はじめに SSRF の脆弱性とは? なぜ SSRF の脆弱性? ある日、実際に SSRF の脆弱性を埋め込んでしまった、開発現場の話(空想) SSRF の脆弱性の対策 実装ミスによる脆弱性対策 ユーザーの入力を信用しない 許可リスト・拒否リストの利用 ライブラリの脆弱性を回避する ライブラリの脆弱性をチェックする ライブラリを使う際には、極力標準ライブラリを使用する まとめ We are hiring!!! 参考文献 はじめに こんにちは! 株式会社ユーザベース BtoB SaaS Product Team(以下 Product Team)の山田・度會です。 ユーザベースの Product T…