TECH PLAY

株式会社ユーザベース

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

481

ソーシャル経済メディア「NewsPicks」SREチームの美濃部です。 NewsPicksではアプリケーションのビルドにAWS CodeBuildを使用しており、ビルドキャッシュの格納先としてAmazon EFS(AWSのフルマネージド型NFSファイルシステムサービス)を利用しています。 アプリケーションビルド構成 以前はS3に格納していましたが、EFSにする事でビルド時間が2分程短縮できる事がわかったので多少コストを払ってでも開発者の生産性を重視しました。1日に何度もビルドを行う開発者にとってこの2分の積み重ねは大きな価値があります。開発者の人数が多ければ多いほどこの価値もあがります。 ただ…
Kotlinのsealed classでいい感じにコードをシンプルにする事例を紹介します。 sealed classをうまく使って、コードの可読性を高めてみましょう。
初めましてこんにちは! ソーシャル経済メディア「NewsPicks」プロダクトエンジニアの 寺坂 です。 2024年5月に中途入社して4ヶ月が経ちました。 だんだんと会社にもチームにも慣れてきたぞ!、ということで、今回は私のオンボーディング体験をご紹介します。 初めましてこんにちは! 私とオンボーディング オンボーディングカリキュラム ユーザベースでは、パーパス・バリューがとても大事 オープンコミュニケーションと風通しの良さ とても手厚い1on1 まとめ 私とオンボーディング 私にとって、今回が初めての転職となります。 これまではずっと受け入れる側の立場にいたので、改めて逆の立場になってみると…
はじめに ソーシャル経済メディア「NewsPicks」SREチーム・新卒エンジニアの樋渡です。今回は、AWSサービスである「Lambda」「CloudFront」「S3」を用いて、弊社で使用している社内向けシステムの基盤を再構築し、開発者体験の向上やセキュリティ対策を行なったお話です。 お話の内容 弊社で使用している社内向けシステムの一つに「Watson」というシステムがあります。「Watson」とは簡単にいうと「NewsPicks」のユーザーIDをもとにユーザーごとの情報を検索・閲覧できるシステムで、お客様からの問い合わせ対応等に活用される重要なシステムです。「Watson」は構築されたのが…
ソーシャル経済メディア「NewsPicks」の高山です。 NewsPicksではユーザーが画面上で操作したときなどに行動ログを記録し、それを分析してサービスの改善に役立てています。 そのログはWebサーバーのnginxで記録されてデータウェアハウスであるAmazon Redshiftに送られるのですが、僕はそのRedshiftまわりのチームを少し前まで持っていました。 今回は、当時おこなった、ログの増減アラートの仕組みについて書いていきます。 何が課題だったか 行動ログの記録処理は、開発者が画面上で確認するわけではないので、エンバグしたままリリースされやすい箇所です。 NewsPicksでも過…
はじめに こんにちは。ソーシャル経済メディア「NewsPicks」の QA/SET チームの海老澤です。 今回は NewsPicks WebにおけるPlaywrightでのユーザー行動ログのテストの取り組みを紹介させていただきます。 ログについて NewsPicks では法人向けサービスや広告システムがあり、法人向けサービスや広告パフォーマンスのレポート、またKPIの追跡などログデータの信頼性がビジネスに直結しています。ログはただの記録ではなく、ビジネスインサイトを得るための重要なデータソースです。 そのため、ログが正確に記録され、リクエストが期待通りに発生しているかをテストで保証することが不…
こんにちは。ソーシャル経済メディア「NewsPicks」で主に検索システムを開発しております崔(ちぇ)です。 去年まで弊社の検索システムをEC2上に構築しておりました。今年にそれをコンテナ化しECSへ移行しました。コンテナ化に関しては前回の記事でまとめてますので、ご興味ありましたら是非読んでみてください。 tech.uzabase.com EC2からECSへ移行することに限らず、あらゆる「AからBへ移行する」行為はスイッチを切り替えるように簡単ではありません。 仮に、昨日までAが100%担った処理を、今日からBが100%担うようにしたとしましょう。何かの考慮漏れがあり以下のようなエラーが発生し…
はじめに こんにちは! 株式会社ユーザベース スピーダ事業部の飯田です。 この記事では、テキストをベクトルに変換(エンコード)にLLMを用いる際に有効なLLM2Vecという手法を紹介します。 合わせて、LLM2Vecにおける日本語ドメイン適応として、LLM2Vecの処理を日本語で行った場合とLLMの継続事前学習を日本語で行った場合について実験を行ったため、これを紹介します。 LLM2Vecとは LLM2Vecは、"LLM2Vec: Large Language Models Are Secretly Powerful Text Encoders"で提案された手法です。 Llamaなどで有名なL…
はじめに 試したこと モチベーション 試してみた感想 さいごに はじめに 株式会社ユーザベース スピーダ事業 Product Teamの阿久津です。 私が開発に関わっているスピーダ 経済情報リサーチは多くのマイクロサービスによって様々な機能が提供されています。 そして、その多くのマイクロサービスはモノレポで管理されています。 今回新しくマイクロサービスを作ることになったのでその際に試したことを書き残そうと思います。 試したこと 今回試したことは単純に一つのマイクロサービスに関わる登場人物を一つのディレクトリにまとめるです。 所謂コロケーション *1というやつです。 実際どのように変えたのかです…
CDKでスタック間参照してはいけません。 スタック間の依存関係が意図した通りに解決されず、cdk deploy時に失敗してしまいます。
ディレクトリトラバーサル はじめに こんにちは! 株式会社ユーザベース スピーダ事業 Product Team(以下 Product Team)の新熊・度會です。 ユーザベースの Product Team には、全社のセキュリティを担うチームとは別に、プロダクトセキュリティの底上げを担うセキュリティチーム、通称 Blue Team というチームがあります。 私たちはそのチームの一員として、日頃の開発業務に加えてユーザベースのプロダクトのセキュリティを横断的に向上するための活動を行なっています。 現在、 Blue Team の取り組みのひとつとして、脆弱性のリスクや対策方法について継続的に記事に…
こんにちは。株式会社ユーザベース スピーダ事業でSREをしている八代 (@yashirook) です。 先日、社内勉強会でコンテナをrootで動かすことについて話したのですが、そこで気づきがあった人もいたようなので、テックブログにも記事を書いてみることにしました。 はじめに コンテナ技術を利用して開発している人であれば、コンテナをroot以外のユーザーで実行することがベストプラクティスとされていることを耳にしたことがある方が多いと思います。 弊社のテックブログでも、以下の記事が投稿されています。 tech.uzabase.com DockerやKubernetesなどを利用してコンテナをroo…
ソーシャル経済メディア「NewsPicks」エンジニアの韓です。 先日、弊社ユーザベースオフィスでフロントエンド・オブザーバビリティ Meetupを開催しました。 本記事ではそのイベントレポートをお届けいたします! イベントについて 🎤 セッション フロントエンドエンジニアとして、オブザーバビリティにコミットすること(イイダユカコさん) ClassiにおけるSentry活用事例(lacolacoさん) observabilityを支える要素技術(sadnessOjisanさん) こつこつ育てる SLO(ニッシー☆) アーカイブ動画 おわりに イベントについて UzabaseではUB Techと…
こんにちは!株式会社ユーザベース SaaS事業 Product Team の斉藤・度會・沖です。 業務では主に Elixir / TypeScript / Go を用いて、経済情報サービス「スピーダ」の開発・運用を行っています。 はじめに みなさんは外形監視はなにでやっていますか? 今回はPlaywrightを使ってWebサービスの簡易的な外形監視を作ってみたので、その紹介をしていきます! 外形監視を入れたかった動機 スピーダのアジア版の一機能で、各分野に紐付いた直近2件のM&A案件を見られるという機能があります。以下のスクリーンショットのように、タイトルが2件表示されるという仕様です。 その…
なぜコスト最適化することになったか? Active Assist Cloud Storage ストレージサイズの削減 ストレージクラスの変更 ロケーションの検討 結果 Cloud SQL コスト削減のため、Dev環境の停止を行なった 不要なリソースの削除 結果50%くらい削減することができた テスト環境の削除 テスト環境が起動しっぱなし問題 テスト環境を削除した 不要なテスト環境は削除していこうという啓蒙 結果 BigQuery CUDの購入 Compute Engine Bigtable まとめ なぜコスト最適化することになったか? 私たちは、株式会社ユーザベース スピーダ事業 Produc…
はじめに 皆さんこんにちは! ソーシャル経済メディア「NewsPicks」プロダクトエンジニアの森田です:) 私は2024年4月に株式会社ユーザベースに新卒入社し、現在は主にNewsPicksにおける推薦機能の開発改善に携わっています。 NewsPicksでは、ユーザに価値のある経済情報を届けるための施策の一つとして記事推薦機能を導入しています。 本ブログでは、NewsPicks記事推薦機能にて基盤改善がモデル改善につながってCTR(Click Through Rate)を改善できた事例をもとに、私たちが認識した「推薦システムを本番導入する上で一番優先すべきだったこと」を共有します。 また先日…
はじめに こんにちは! スピーダ事業 Product Team の渡邉臣(@Sicut_study)です。 Product TeamではE2EテストにSelenideとGaugeを使っています。 E2Eはパイプラインで実行されるのですが、一部不安定でリスタートを手動ですることがありました。 今回はそんな不安定なテストに対して、新たなアプローチをしてみたのでまとめます。 読み込みを待つ不安定なテスト 私が開発に関わっている 「スタートアップ情報リサーチ」では、スタートアップ企業を一覧で見られるページ(スタートアップ一覧)があります。 このページでは、検索やフィルター機能があり、検索中には以下のよ…
スピーダ事業Product Teamのあやぴーです。 「関数型ドメインモデリング」が翻訳されて日本でもF#が流行る兆しが見えてきたので、今日はF#を書き始めた人が感じやすい違和感を解決する方法についての紹介です。尚、私たちProduct Team内では持っていない人はいないのではないか、と思う程度には購入している人が多い本です。 store.kadokawa.co.jp F#には async コンピュテーション式というものがあり、非同期処理をうまく書きやすいです。例えば、以下のようなコードです。 let asyncFunctionA () = async { return 42 } let a…
NewsPicksの課金基盤を作り直した話です。 オーソドックスな方法ですが、実際に自分の手で進めてみると、とても学びが多いプロジェクトでした。
CodeDeployで更新するECS ServiceをCDK管理して失敗した話です。