TECH PLAY

株式会社ユーザベース

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

476

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…
アバター
ソーシャル経済メディア「NewsPicks」のSREをしている飯野です。 サービスの開発は試行錯誤の連続です。サービスの成長とともに機能はどんどん増えていきます。追加される機能はサービスに不可欠な重要な機能だけではなく、サービスの方向性や前提が変わり不要になってしまったり、思ったように価値が提供できずに使われない機能もたくさん登場します。 このような機能が登場してしまうことは仕方のないことですが、ずっとメンテナンスしていくコストは払えません。定期的にお掃除したいものです。 というわけで、使われなくなってしまった機能(APIサーバーのREST API)をNew Relicを使って探し出してみまし…
アバター
ソーシャル経済メディア「NewsPicks」でiOSエンジニアをしている金子です。 WWDC23でObservationフレームワークが発表されてからすぐ、XのPoint-Freeアカウントより以下の投稿がありました。 「ViewStoreが消えるだと...!?めちゃシンプルになるじゃないか...!」とワクワクしたのを覚えています。 Apple engineers have done something incredible at this year’s WWDC.Thanks to @​Observable, macros and more, you can write Composable…
アバター
はじめに インセプションデッキとは 10個の質問 実際にチームで行ったこと まとめ はじめに 株式会社ユーザベース BtoB Saas Product Team の 阿久津です。 前提として、私の所属しているチームは「アジャイルの知見の少ないメンバーのみを集めて1から新しいチームを作る」という試みを行っているチームです。 私も、昨年の4月にNew JoinerとしてJoinしたアジャイルの知見の少ないメンバーの一人です。 約1年ほどこのチームで働いてきて色々とアジャイルのプラクティスに関しては経験をしてきましたが、 その中でもインセプションデッキを今回はじめてチームで取り組んでみたので取り上げ…
アバター
はじめに こんにちは! Uzabase の Saas Product Teamに所属しているWatanabe Jinと申します。 Uzabaseではチームが3ヶ月に一度変わるチームシャッフルという文化があり、チームメンバーが定期的に変わるような仕組みがあります。 そんな頻繁に変わるチームで、チームメンバー同士の相互理解などを助けてくれるのが今回紹介する「エンパシーサークル」という取り組みです。 エンパシーサークルとは エンパシーサークル(別名: 共感サークル)とは、集まった人たちの中で一人が「自分のエピソードを話す話手」となり、それ以外の人全員が「話しての感情やその奥にある大切にしたいこと(ニ…
アバター
こんにちは!経済情報プラットフォームSPPEDA の開発をしている山本です。 本稿ではBiome.jsをプロダクトに導入してみたので事例の紹介をしていきます。 はじめに 私が所属しているチームで新たにマイクロフロントエンドで機能開発をしていくにあたりWeb componentsを作る流れになりました。今回はそのWeb componentsに以前からちょっぴり興味のあったBiome.jsを導入してみました。 導入背景は、ツールのシンプルさに魅力を感じたからです。フロント開発をする上でESLintやPrettierなどのツールを導入しているプロジェクトは多いと思います。ただ設定ファイルが複数存在し…
アバター
こんにちは! Uzabase の SaaS Product Team に所属している樽本と申します。普段は SPEEDA の開発をしています。 今日は「DOM のイベントが発火(ハンドリング)する順序を考慮した実装はやめたほうが良い。」という個人的な教訓と、それを得るに至ったストーリーの紹介をします。タイトルは願望です。 ※開発時のブラウザは Chrome でしたので、その他のブラウザでの検証は行っていません ある日のこと フロントエンドアプリケーションをカキカキワチャワチャしていたある日、以下のようなコード(諸々省略)で問題は発生しました。 .... <input type="text" o…
アバター
1. はじめに こんにちは。ソーシャル経済メディア「NewsPicks」でエンジニアをしております小林です! 皆さんは英語学習に取り組んでいらっしゃいますか?エンジニアとして技術ドキュメントや国際カンファレンスの動画等で英語に触れる機会があると思います。また、技術的なスキルはあるが、英語を話すことが苦手な場合、将来的に市場でどう評価されているかの動向も気になるところです。 最新の2023年度の報告によると、世界的にITエンジニアの給与が上昇している一方、日本では前年比USドルベースで5.9%減少、現地通貨(円)ベースでもわずか0.4%増加に留まっています。残念ながら、世界と比較した時に日本の給…
アバター
ソーシャル経済メディア「NewsPicks」で推薦や検索などのアルゴリズム開発をしている北内です。Pythonは頻繁に新機能や便利なライブラリが登場し、ベストプラクティスの変化が激しい言語です。そこで、2024年2月時点で利用頻度の高そうな新機能、ライブラリ、ツールなどを紹介したいと思います。 この記事では広く浅く紹介することに重点を置き、各トピックについては概要のみを紹介します。詳細な使用方法に関しては各公式サイト等での確認をおすすめします。なお、本記事ではOSとしてmacOSを前提としています。 環境構築 Pythonの環境構築はpyenvとPoetryの組み合わせがもっとも標準的でしょう…
アバター
こんにちは。ソーシャル経済メディア「NewsPicks」Media Infrastructure Unitの韓です。 年末にNewsPicksとSaaS Product Team合同で『ユーザベースの技術文化大公開!Engineer Meetup 〜クリスマスLT祭り!〜』というイベントを開催しました。 今回はそのイベントレポートについて書いていきます。 イベントについて タイムテーブル 当日の様子 ▼1人目:NewsPicksプロダクトチームの西さん ▼2人目:NewsPicksプロダクトチームの三村さん ▼3人目:SaaSプロダクトチームの朴さん ▼4人目:NewsPicksプロダクトチー…
アバター
こんにちは。 BtoB SaaS Product Teamの中嶋です。 Product Teamでは1週間のイテレーションごとにチームでふりかえりをしています。 コロナ禍に入る前は物理のホワイトボードでやることが多かったと聞いていますが、最近は大体figjamボードを使っています。 オンラインのホワイトボードはスペースを自由に使えたり、付箋以外にも画像とかスタンプを押せたりと楽しいですが、油断せずに片付けないでおくと過去のふりかえりの残骸がどんどん残っていきます。 年明けになったのもあり、それらを片付けようと思ったときに、ふと「過去のふりかえりをふりかえってみるのも良さそうだな」と思いました。…
アバター
はじめに 新規プロダクトにおける API テストの重要性を理解してもらう 誰でも容易に信頼性の高いテストが書ける基盤づくり カバレッジ情報の見える化でテストを書くモチベアップ API テストの継続的なリファクタで負債と戦う チームメンバーとのコミュニケーションと協力 おわりに はじめに はじめまして!株式会社アルファドライブにてバックエンド開発をやっています コタ @sirogami_main です。 この記事は AlphaDrive Advent Calendar 2023 の最終日の記事です! qiita.com 現在開発中の新規プロダクトではバックエンドのほぼすべての API に複数のテ…
アバター
この記事は AlphaDrive Advent Calendar 2023 の24日目の記事です。 こんにちは、株式会社アルファドライブの佐藤です。今回は、AlphaDriveのエンジニア・デザイナーのデスク周りを紹介します! 弊社は出社義務のないリモートをベースとした働き方となっているため、デスク周りにもそれぞれの働き方や個性が反映されているはずです。メンバーから募集したデスク周りの画像と紹介コメントに対して筆者が一言コメントする形でお届けしますので、お楽しみください! おしゃれ編 R.I 友人と一緒に作ったデスクです。2台作ってコーナー型に配置。仕事してると何かとモノを広げるタイプなので置…
アバター
こんにちは。ソーシャル経済メディア「NewsPicks」で検索システムを開発しております崔(ちぇ)です。 この記事は、 NewsPicks Advent Calendar 2023 の23日目の記事になります。 qiita.com 昨日ははぐっさんによる「SwiftUIのKeyframeAnimatorでちょっとしたカードアニメーション 〜猫の手を添えて〜」でした! はじめに コンテナ流儀: 必要最低限のものだけで運用する Point1)レイヤーは少ないほどいい TIP:ベースイメージを作る Point2)不要なパッケージをインストールしない Point3)いつ再起動してもいいコンテナを作る …
アバター
AlphaDrive Advent Calendar 2023 12/23 公開分の記事です。
アバター
概要 ソーシャル経済メディア「NewsPicks」SREチームの中川です。 皆さんはバッチ処理基盤はどうされていますでしょうか。 NewsPicks では少し前まではそれらをEC2、cronの組み合わせで動作させていました。 何年も前からこの仕組みだったのですがSREとしてはEC2の面倒見るのも手間ですし、それ以上にcronを変更する際のオペレーションミスが目立ったのが懸念点でした。 その為、まずはAWSマネージド化するための基盤を整備し、その後バッチアプリを載せ替えていくようにしました。 対応前の基盤構成 同じSREチームの安藤さんが CloudNative Days Tokyo 2023 …
アバター
この記事は NewsPicks アドベントカレンダー 2023の21日目の記事です。 qiita.com こんにちは、Androidネタばかりで肩書きと合わなくなってきてるので、iOSも頑張りたいと思い始めているNewsPicksのVP of Mobile Engineerの石井です。 1年間、様々な改善をしてきましたが、書いてなかったけど実はすごくいい結果がでているものがあるので、それについてです。 概要 2022年11月下旬にアプリの起動時間を改善したことは、以前のブログで書きました。 tech.uzabase.com それ以前では、「アプリが重い。起動が遅く、画面がフリーズしたかと錯覚を…
アバター