サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Advent Calendar
tech.uzabase.com
こんにちは、ソーシャル経済メディア「NewsPicks」のむとうです。 この記事は NewsPicks アドベントカレンダー 2023 の3日目の記事です。 昨日は@J_Nakagawa(隼佑 中川)さんによる『LambdaレスポンスストリーミングとAWS-SDKを使ってSlackに進捗バーを表示させる』でした! 世の中には再現が難しく一見してバグがありそうに思えないコードもありますが、一方でプロダクションコードの中にはひと目見てバグが有りそうなコードもまた多いものです。いくつかの特定のパターンをとる文字列(環境名など)やenum(以下どちらもenumと表現します)に関する条件分岐もその一つです。プルリクを見てこのようなパターンがあれば、バグの疑いが強くなります。周囲を見渡すと、大抵すでにバグっているか潜在バグを含むコードが見つかります。すべてバグというのは言い過ぎにせよ、わかりやすさと変
こんにちは。ソーシャル経済メディア NewsPicksのSREチームで仕事をしている安藤です。 NewsPicks Advent Calendar 2023 の1日目ということで、日常の業務風景から軽いコスト最適化TIPSをご紹介します。 qiita.com AWSコストを最適化したいよぉ〜 NewsPicksはおかげさまでサービス10周年を迎え、ユーザー数も事業も伸びておりますが、 事業の成長やエンジニア組織の拡大に比例してAWSコストが増え、円安でさらに日本円での負担が増え、となると事業の利益率にも少なからず影響がでます。 私が所属するSREチームでは、「売上に対するAWSコストの割合は、規模が拡大するほど減っていくべき」という考えを持っており、 積極的にAWSサービスの使い方を見直して毎年コストを削っていくつもりで仕事をしています。 AWSが提唱するCloud Financial M
こんにちは、ソーシャル経済メディア「NewsPicks」のむとうです。 先日から『Ghost of Tsushima』の開発者が書いた『ルールズ・オブ・プログラミング』という本をちょっとずつ読み進めていて、プログラミング熱が高まっています。この本は大きな指針を示すだけで具体の話をするものではないのですが、読み物として面白いので私も似たようなことをやってみたくなりました。 何年もこういう仕事をしているとバグが入るパターンというのが見えてきます。そしてだいたいどこに行っても何の仕事でも似たようなことをすることになるのですが、今回の話もその一つです。 構造化テキストを文字列結合で作らない、置換でいじらないというのはこれだけみると何のことか分かりづらいかも知れませんがSaaS Product Team セキュアコーディングの啓蒙 第2回 (SQL インジェクション編)の内容とある面では同じ話です。
はじめに SQL インジェクションとは? 概要 リスク 発生件数 攻撃方法 対策 根本的な対策 プレースホルダの利用 静的プレースホルダ 動的プレースホルダ エスケープ処理 保険的な対策 入力値の制限 適切なデータベース権限の設定 詳細なエラーメッセージの非表示 WAF の導入 まとめ We are Hiring!! 参考資料 はじめに こんにちは! 株式会社ユーザベース BtoB SaaS Product Team(以下 Product Team)の山室・利根です。 ユーザベースの Product Team には、全社のセキュリティを担うチームとは別に、プロダクトセキュリティの底上げを担うセキュリティチーム、通称 Blue Team というチームがあります。 私たちはそのチームの一員として、日頃の開発業務に加えてユーザベースのプロダクトのセキュリティを横断的に向上するための活動を行なって
ソーシャル経済メディア「NewsPicks」でSREをしている美濃部です。 NewsPicksのSREのミッションの1つに「コストを適正化する」というものがあります。サービスの規模拡大に比例してインフラコストが増えないようにし、売上に対するコストの割合を低く維持していくのがミッションになります。 今回はAWSコスト削減の中でもConfigの料金に注目して紹介したいと思います。 コストモニタリング定例について Configのコスト分析をどうやって行なったか ConfigのレポートをQuickSightで可視化 構成 手順 QuickSightで可視化する事でわかった事 コスト増加の要因となったリソースタイプがわかったので対応する まとめ まず、SREでは週次でコストモニタリング定例を実施しているのでその内容について簡単に触れさせて頂きます。 コストモニタリング定例について 週次で主に以下のよ
皆さんこんにちは! 株式会社ユーザベース NewsPicksで機械学習エンジニアとして長期インターンをしている森田です:) 現在はData/Algorithm チームで、NewsPicksの推薦システム・データ基盤まわりの開発に取り組んでいます。 本記事は、私が2022年8月から同組織に入社して現在までの約1年間の長期インターン活動を経て、参加して良かったことと苦戦したことをまとめたものです。特に企業での長期インターンに興味がある方に向けて、本記事の内容を共有できればと想定しています。 はじめに タイトルの通り、私は非情報系なのに推薦システムを独学で勉強していた博士学生です(実は本記事の執筆期間中に博士学生ではなくなりました…!)。ちょうど博士課程への入学時期に偶然Kaggleをきっかけに推薦システムという分野と出会い、興味を持って論文読んで実装してブログに上げて...みたいな活動を趣味で
こんにちは、ソーシャル経済メディア「NewsPicks」でSREをしている飯野です。 今回はSREで行ったNew RelicをCDK for TerraformでIaC管理する話を紹介したいと思います。 SLOモニタリングをSREチームだけで行うのは難しい CDK for Terraformとcdktf-newrelic-provider 追記 IaCで作成する内容 CDK for Terraformで実装していく -1. cdktf init 0. @cdktf/newrelic-provicerの初期化 1.DataNewrelicEntityの作成 2.ServiceLevelの作成 3.AlertPolicyの作成 4.AlertCondition(バーンレートアラート)の作成 5. NotificationDestinationの作成 6. NotificationChannel
みなさんこんにちは。株式会社ユーザベース SaaS事業 炭谷・酒井です。 Prometheusスケーリング問題とその解決策 自社の監視ツールとして、Prometheus採用しております。しかし、監視の規模が大きくなるにつれ、一部の構成にはスケーリングの限界があることが明らかとなってきました。この記事では、私たちが遭遇したスケーリングの問題と、それをどのように解決したのかを紹介します。 遭遇した問題 GrafanaでPrometheusのデータを参照しようとすると、10分以上の期間が表示されない事象が起きました。この問題の原因は、Prometheusのメモリ不足によるものでした。 複数のユーザーが同時にGrafanaのダッシュボードを参照すると、Prometheusが停止してしまう事象が発生しました。これもメモリ不足が原因でした。 当初、Prometheusのメモリを増加させることでこれらの
初めまして、 @takano-hi です。 2023年2月に AlphaDrive にジョインして、主にフロントエンド領域を中心に設計・実装などの業務を担当しています。 最近、Next.js のプロジェクトを新たに立ち上げる機会があり、せっかくなので App Router を採用しました。 そのプロジェクトの認証機能の実装に当たり、今まで他プロジェクトでも利用していた Keycloak と @auth0/nextjs-auth0 の組み合わせを試したところいくつかの困難に遭遇したので、その解決方法についてまとめようと思います。 環境 next v13.4.9 @auth0/nextjs-auth0 v3.1.0 keycloak v20.0.1 ライブラリの選定背景 私が所属しているチームでは、認証基盤(IDプロバイダー)に Keycloak を利用しています。 Keycloak は Op
みなさんこんにちは。ソーシャル経済メディア「NewsPicks」を運営する、ユーザベースの技術広報チームです。 NewsPicks のプロダクト開発チームでは、技術やデザイン領域をテーマとした社内勉強会が多数開催されており、日々学びの場としてインプットに励んでいます。 本日は、定期的に開催している社内勉強会を一挙ご紹介します! iOS勉強会 Android知見共有会 ゆる frontend 共有会 ABテスト輪読会 AI論文読み会 Kotlin 知見共有会 インフラ・運用勉強会 ポートフォリオ発表会 輪読会 ChatGPT 勉強会 iOS勉強会 【開催日程】 隔週金曜 15:00~ 【会の目的】 ・知見の共有 ・アウトプットする場を設けてインプットを強化 ・他のメンバーから刺激をもらう 【これまでの内容】 ・Sendableと@SendableとTCA ・Easingを意識してみよう ・え
こんにちは。NewsPicks CPO/CTO の文字です。先週、仕事が少し落ち着いたタイミングで久しぶりに DX Criteria を測定したので、今回はその結果を大公開しようと思います。 はじめに:NewsPicks は開発者体験に注力しています NewsPicks は、まもなくサービス開始から 10 周年を迎える息の長いサービスです。およそ 10 年前に Uzabase の新規事業として立ち上がり、以降は比較的少人数のエンジニア体制で長らく開発が続けられていました。4 年ほど前からビジネスの多角化に伴いエンジニアを大幅に増員していますが、高成長の裏でシステム面では様々な箇所が老朽化しており、エンジニアを増員してもスケールできない状態に陥っていました(きっと多くの方が想像できる状況だと思います)。 そこで 2020 年に私と高山(現 VP of Data Engineering)が執行
導入 企画の背景 ハンズオン 環境構築 攻撃開始 XSS の説明 順位発表 ハンズオンをやってみてどうだったか? 良かったこと 伸びしろ 学び 今後に向けて We are hiring 導入 こんにちは、BtoB SaaS Product Team (以下 Product Team) の利根です。SPEEDA、FORCAS、INITIAL といったプロダクトの開発を行っています。 Product Team 内には、全社セキュリティを担うチームとは別に、プロダクトセキュリティの底上げを担うセキュリティチームが存在しています。 このセキュリティチームの課題はいくつもあるのですが、この数年でエンジニアの人数が大きく増えたため、メンバーのセキュリティ知識の底上げが重要な課題の一つでした。 今回は、その課題への対応として、Product Team 内の全メンバーを対象に、やられアプリ(Bad Tod
UB ResearchとNewsPicksの両方を担当している高山です。 去る7月10日に株式会社プレイドさんとNewsPicksの合同で、次のようなイベントを開催しました。 uzabase-tech.connpass.com 実はこのテーマは、僕から是非ともとお願いしてやってもらったのでした。 というのも、NewsPicks社内で蓄積されているA/Bテストの施策レポートが2年少々で120個(!)も溜まっていたので、是非ともその良い話を自分が聞きたいし、世の中にもシェアしたいと思ったのです。 NewsPicksでABテストの学びのストックが凄すぎるので絶対に世の中にアウトプットしたい!と思って是非にとお願いしてイベントで話してもらうことになりました!!もしかしたら地味なテーマなんですが、それは承知の上で、他社さんでABテストとかをやってる方々には参考にしてもらえるはず。 https://t
NewsPicks Androidエンジニアの sefwgweo です。 今回はモバイルチームで取り入れているE2Eテストでのリトライ自動化とリリース完全自動化を作った話を紹介します。 モバイルチームでは品質担保のために毎晩定時にBitriseでE2Eテストを実行していますが、 端末やクラウドのネットワーク状態など、本来グリーンになるはずのテストでもエラーになることで余計な確認が必要でした。 自動リトライとリリース完全自動化を入れる前後では以下な違いがありました。 Before After 毎朝Slackで失敗したテストを目視後、BitriseのWebコンソールでPassするまで手動でRetryを実行し、テスト結果が正しいかわからないため3回以上失敗した場合にBitriseでエラーログをみて対処 テスト結果が正しい。失敗していた場合は、ほぼ確実にデグレが起きてるので、Bitriseで確認す
こんにちは。NewsPicks App Reader Experience Unit でエンジニアしている青木です。 NewsPicks では日々のサービス改善において AB テストを数多く実施しています。 施策毎に AB テストを柔軟に実施できるのは過去紹介した AB テスト基盤があってこそです。 https://tech.uzabase.com/entry/2022/12/25/183334 App Reader Experience Unit(以下 ARX)でも上記の AB テスト基盤を使ってモバイルアプリの改善を行なっています。 今回は ARX で AB テストを行う際に特に大事にしていることについてお話ししていきます。 ABテストの結果よりも大事なたった一つのこと 目的 ~ AB テストの結果が良かったから施策を適用するわけではない ~ 仮説 ~ 事前調査に基づく観点での仮説検証
導入 こんにちは、Product Teamの朴です。 プロダクトを開発する中で、信頼が大事という話は良く聞きます。プロダクトマネジメントに関する本の「INSPIRED」、「Radical Candor」などでもメンバー同士の信頼関係の構築の大事さが強調されています。 特にプロダクト開発の中で多く取り上げられるこの信頼とはなんでしょうか? 時々組織の技術的な面よりこの信頼を積み上げることで、プロダクト開発のスピードが上がる重要なキーにもなります。ではプロダクト開発のスピードにも関係するこの信頼はどう積み上げていけば良いでしょうか? この記事は信頼についてと、信頼を資産のように考え、活用する方法についてです。 信頼とは 信頼の語源は「慰安」の意味のドイツ語の「trost」からだと言われています。誰かを信頼し、裏切られる心配がないと安心できますよね。それに裏切られる心配もないので、予防のためにコ
こんにちは。NewsPicksでエンジニアをやっております崔(チェ)です。現在は Data / Algorithm チームで検索エンジンの開発を担当しております。 弊社は、検索エンジンとしてElasticsearch(以下、ES)をAmazon EC2に乗せて構築しておりましたが、ヤクの毛刈りも含め、約1年かけてマネージドサービスであるAmazon OpenSearch Service(以下、OpenSearch)に移行することができました!今回は、マネージド化のための諸タスクの中から、かなりハマっていたセキュリティの設定部分を中心にお話したいと思います。ご興味ある方は是非読んでいただけると嬉しいです。 はじめに OpenSearch DashboardsにOktaでログインできるようにしたい SAML認証とは きめ細かなアクセスコントロールとは Dashboards接続時にOktaのログ
NewsPicks Mobile App Unitでインターンをしているりゅう(@ryu_hu03)です。 NewsPicksのiOSおよびAndroidアプリは基本的に週一で新しいバージョンがリリースされています。 リリース作業の多くは自動化されており、重要な機能についてはUIテストによって品質が担保されるようになっているのですが、見た目上のデザイン崩れが起きていないかの確認はこれまで手動で行っていました。 デザイン崩れがないかどうかの確認は目視でやるしかなく、確認項目もそれなりに多いので、デザイン崩れの見落としがあったりリリース作業自体の負荷が大きいといった課題がありました。 そこで、デザイン崩れが起きていないかどうかの確認を自動化すべく、Visual Regression Testingを実装しました。 本記事では、その実装や効果についての話をしたいと思います。 使用したツールと流れ
こんにちは、Product Teamのあやぴーです。 今回はここ1年くらい私のいるチームで使っているF#とASP.NET Coreを使ったAPI開発について簡単にまとめていきます。 F#ってなんだ? なぜ、今F#を採用したのか Minimal APIを使って、APIをつくる アプリケーションの雛形をつくる 任意のHTTPステータスとJSONレスポンスを返却する ルートパラメータやJSONボディの受け取り方 最後にF#を採用してみた雑感 F#ってなんだ? F#はMicrosoft(MSFT)が開発した、いわゆる関数型言語の特徴(第一級関数,イミュータブルデータなど)を持つ言語です。.NET VM上で動き、OCaml(ML系)に近いシンタックスを持っているというのがユニークなところです。また.NET VM上で動作するため、C#などのライブラリを使うことができるのもメリットです。JVM上で動くS
はじめに 経歴 キャッチアップ方法の結論 やったこと(時系列) 参画前(2ヶ月) Kotlin Android アーキテクチャ 参画後(6ヶ月) やっていたこと NewsPicksだからできたこと 最後に はじめに はじめまして、Androidエンジニアのa7therです。 Androidエンジニアとはいっても、まだまだAndroid開発に従事して8ヶ月の駆け出しのため、 自分なりの技術キャッチアップ方法と参画前後でどのようなことをしてきたかを書きたいと思います。 経歴 前提情報として自分の経歴を軽く.. 業務系Webアプリケーション開発と組込み系Java開発に約6年従事していました。 そのため、エンジニア初心者というわけではなく、また、以下の本に影響を受けています。 リーダブルコード Java言語で学ぶデザインパターン入門 Java言語で学ぶデザインパターン入門 マルチスレッド編 Eff
NewsPicks SREチームのEdwin Wilsonです。 NewsPicksでは開発環境のテストデータのプロビジョニングを行うツールとしてDatarefreshというものがあります。 このツールは本番環境のデータストアから開発環境のデータストアに対してデータを同期するアプリケーションです。 対象のデータストアは以下となります。 Amazon RDS Amazon DynamoDB Amazon S3 Amazon ElastiCache 個人情報はRDSにのみに存在しており、マスク処理を行った後、同期しています。 DynamoDB ,S3, ElastiCacheには個人情報を存在しないため、開発に必要なデータをそのまま同期しています。 Datarefreshの実行は開発者がいつでもChatopsで行えます。 ChatopsでDatarefreshの実行の仕方 Chatopsで呼び
はじめに これまでのNewsPicks有料プランの決済手段と課題 なぜキャリア決済にしたのか 開発 キャリア決済導入という山に登る ABテスト 振り返り はじめに こんにちは、NewsPicksエンジニアの上村です。 NewsPicksのプレミアム月額プランがキャリア決済に対応しているのはご存知でしょうか? これまで決済手段はクレジットカード決済のみでしたが、今年(2023年)3月に全ての新規購読者向けに(プレミアム月額プランのみ)3キャリアの決済手段が選択可能になりました。 そこで今回はキャリア決済導入の経過と学びについて書いていきたいと思います。 プレミアム月額プランでキャリア決済が選択可能になりました これまでのNewsPicks有料プランの決済手段と課題 前述した通り、これまでNewsPicksではWEB有料プランの決済手段はクレジットカードのみで、クレジットカードを持っていない方
概要 どうやって指標を確認しているの? NewsPicksのFour Keysはどんな感じ? 改善前はどんな感じ? 改善のために何をした? 終わりに 概要 NewsPicksは「最高の開発体験の追求」をしている会社です。エンジニア向けのサイトの1ページでも謳っており、そこから弊社高山の記事に辿れるので、こちらも読んで頂けると幸いです。 そして、これはサーバーサイドだけの話しではなく、モバイルチームでも同じように開発者体験向上を目指し、Four Keysを追っています。 Four Keys とは、ソフトウェア開発チームのパフォーマンスを計測する4つの指標です。Four Keys 指標を用いることで、ソフトウェアデリバリの「スピード」と「安定性」を測定できます。 いわゆる組織の開発生産性が可視化できるということですね。 私が所属するモバイルチームもさまざまな改善をすることで、Four Keys
皆様こんにちは、NewsPicksエンジニアの米澤です。 先日 2023/03/30は、こちらでアナウンスしていた通り、サービスの停止を伴うシステムメンテナンスを実施させて頂きました。 NewsPicksをご利用頂いている皆様には、ご迷惑おかけいたしました。 今回はこのメンテナンスの中で行われたDBテーブルのmigrationについてお話ししたいと思います。 ことの始まり NewsPicksではバグの検知にBugSnagを利用しています。 ある時、BugSnagにこんなエラーが通知されてきました。 org.springframework.orm.hibernate4.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQL state [HY000]; e
はじめに NewsPicksエンジニアの七五三です。 最近はChatGPTの話題が尽きません。弊社でもChatGPT APIの社内勉強会やブログの執筆が行われ盛り上がりを見せています。 tech.uzabase.com そんな中、ChatGPTを利用したプロダクト改善アイディアの発散や実装事例の作成を目的にNewsPicksプロダクトチームで「ChatGPT開発合宿」が開催されました。 開催から少し日が経ってしまいましたが、本記事で合宿の様子をご紹介します。 スケジュール 3月30日から2日間に渡って開催された開発合宿は以下のスケジュールで進行しました。 1日目 10:00 集合・アイディア出し オフィスに集まり合宿スタートです。 アイスブレイクののち、アイディア出しを行いました。 プロダクトの新機能や社内の業務改善ツールなど、大小様々なアイディアが創出され、開発合宿では2つのアイディアを
こんにちは、NewsPicks サーバーサイドエンジニアの池川です。 こちらのイベントご存知でしょうか? server-side-kotlin-meetup.connpass.com www.youtube.com 実は先日 4/7 (金) に、東京駅目の前にある、ユーザベースオフィスにて、オフライン会場の提供をさせていただきました。 今回のブログではその裏側について書いていきたいと思います。 きっかけ 開催までの準備 リハーサル・当日の準備 当日 イベント終了後 終わりに (オフライン会場での勉強会に興味がある方々) 宣伝 ー LLM 勉強会 with 朝日新聞さん きっかけ 今年に入って以下のようなツイートをお見かけしました。 久しぶりにオフラインでのMeetupに裏方として参加したけど、オンラインと違って熱気というか人の圧を感じた!笑 オンラインはオンラインで良いところもあるんだけど
あいさつ こんにちは。Product Team の 下川、9sako6、手嶋、藤原です1。 本記事では、我々が開発している Deno 製アプリケーションのパフォーマンス監視を Elastic APM で行った方法を紹介します。 背景 Product Team では、パフォーマンス監視を目的として部分的に Elastic APM の導入を進めています。 本記事で監視対象としたアプリケーションは Deno で書かれており、対応する Agent がありませんでしたが、 必要なものは自分たちで用意すべきと考え、Agent を自作することにしました。 (厳密には、Node.js には対応していましたが、Deno で試したところうまく動きませんでした) Elastic APM と今回実装した Deno 向け Agent の概要 Elastic APM の簡単な説明 Elastic APM とは、Ela
この記事は、NewsPicks Advent Calendar 2022 の 17 日目の記事になります。 qiita.com こんにちは。AlphaDrive で Web アプリケーションエンジニアをしている fmatzy です。普段は主に Go でバックエンドの開発を行なっています。 現在新規開発中のプロダクトにて、パスワードログインの導入に Keycloak を利用しました。社内ではすでに Keycloak の導入事例があり、かなり参考にできる環境が整っていました。一方で Keycloak 自体は近年 WildFly から Quarkus に移行し、公式含め技術情報が outdated なものが多く見受けられました (例えば、公式の docker-compose の example は WildFly 版がアーカイブされた後 Quarkus 版が追加されていない…)。 本記事では、今
こんにちは、NewsPicksの米澤です。 ところで皆様、テストコードって書いてますか...? ネットでテストコードについて検索すると 「テストコードを書きましょう」 「テストコードとはこうあるべし」 「TDD(Test Driven Development)だ」 等々が叫ばれています。 ただ、なんとなく「方法論ありきでとにかくテストを書け」と言われているようで、テストの必要性について納得感に欠けている方もいらっしゃるのではないでしょうか? なぜ テストコードを書くのでしょうか? テストコードを書く理由 諸説ありますが、私が思うテストコードを書く理由は 将来リファクタリングをしやすくする テストコード書く途中で、開発者自身が仕様を理解し、成長できる の2つです。 将来リファクタリングをしやすくする 「昔書かれたこのコードはどういう挙動になるべきなんだ...?さっぱり分からん!」 ある程度コ
次のページ
このページを最初にブックマークしてみませんか?
『UZABASE Tech』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く