開発

暗黙的フィードバックのための逐次行列分解ライブラリを公開しました

NewsPicksエンジニアの北内です。今回は、先日公開した協調フィルタリングのための行列分解ライブラリについて紹介します。 ニュースの推薦アルゴリズム 私が所属するアルゴリズムチームでは、アルゴリズムの力でNewsPicksのプロダクトやサービス全体を改善…

フロントの動作確認用の環境をGithub Actionsで自動構築してみた

AlphaDrive、NewsPicks兼務でエンジニアしているスギウラ (saba-can00)です。 今回、Github Actionsを利用してコードをpush すると動作確認ができるコンテナが自動で立ち上がるように環境整備したので、その内容をまとめます。 背景 Webのリアーキテクチャプ…

Amazon VPC内の独自サービスをPrivateLinkでプライベート接続する

こんにちは、NewsPicksエンジニアの美濃部です。 この記事ではAWSのPrivateLinkについての概要について説明していきます。PrivateLinkの知識が全くない方が理解をして頂く為の最初の入り口としてお役に立てればと思います。 PrivateLinkとは 公式ドキュメン…

NewsPicksにおけるレコメンドエンジニアのお仕事について

NewsPicksでCTOをしている高山です。最近の仕事のうちの大きな部分は、レコメンドエンジンを開発するチームのプロダクトマネージャー的な役割です。 今回はレコメンドエンジニアに興味のあるエンジニア向けにNewsPicksにおけるレコメンドエンジニアのお仕事…

NewsPicksの姉妹メディアを立ち上げ。そのプロダクト開発の裏側。

こんにちは、NewsPicksエンジニアの大森です。 今回はNewsPicksの姉妹メディア『JobPicks』を昨年立ち上げた際の裏側をエンジニア視点で振り返りたいと思います。NewsPicksのプロダクト開発の雰囲気や新規サービスでやって良かったことや次回への反省点など…

iOSアプリのログが正しく送信されていることを担保する

NewsPicks iOSアプリエンジニアの金子です。 NewsPicksアプリはニュース記事やコメントの投稿・閲覧といった基本的な機能に加えて、動画コンテンツや広告の表示、有料会員機能、法人向け機能など、様々な機能を持った規模の大きなアプリです。 このため社内…

システムの複雑さはどこから来るのか – Out of the tar pitを読む

Uzabase Saas Product Divisionフェローの矢野です。 この記事は、Rich Hickey(プログラミング言語Clojure作者)のプレゼンテーションSimple Made Easyへと繋がっていく、Ben MoseleyとPeter Marksによる「Out of the tar pit」というシステム設計について…

新卒エンジニアが 『リーダブルコード』 を読んで感じたこと

初めまして。2020年4月NewsPicksに新卒エンジニアとして入社した崔(チェ)です。 実は私は、大学では語学を専攻し大学院から情報系に進学したもので、入社当時コーディング歴2年という浅い経験しかありませんでした。 そんな中、むしろ変な癖のついてない今…

NewsPicks AndroidアプリにPicture in Picture機能を実装した話

こんにちは。 NewsPicksエンジニアのmarshallStonesです。 NewsPicksではiOS/Androidアプリケーションを開発するチームに所属しています。 レビューやお問い合わせなどからユーザーの皆様から導入を希望されておりましたPicture in Pictureを Androidアプリ…

Spring におけるエンドポイントの列挙と IntelliJ IDEA の呼び出し階層による影響範囲調査

こんにちは、 NewsPicks でソフトウェアエンジニアをしているガニエです。 2019年に NewsPicks に新卒入社してから現在に至るまで、基本的には toC サービスである NewsPicks の上に顧客組織内に閉じたコミュニティを作って NewsPicks をコミュニケーション…

Amazon SQSのロングポーリング設定でコストを99%削減した話

こんにちは。 NewsPicksエンジニアの美濃部です。 NewsPicksではAWSをインフラ基盤として利用しているのですが、この記事では実際に行ったSQSのコスト削減の話をしたいと思います。 結論から話すとタイトルにもありますが「SQSでメッセージを受信する時には…

Elasticsearchの中国語Analyzer

こんにちは!SaaS Product Teamの成です。 出身は中国・上海です。学生のときからは国語が苦手でテストもよく落ちましたが、一応中国語は分かります。 最近Product開発で中国語文章の全文検索について調べたことがありましたので、ここでElasticsearchの中国…

億件オーダーのデータ移行ツールの検証の際に、確率計算とサンプリングを用いて効率的にテストをした話

こんにちは。 NewsPicksエンジニアの鶴房です。 2020年1月に入社して、既に1年が経ちました! 今回は入社して最初に任せていただいた案件で、億件オーダーのデータ移行ツールの検証の際に、サンプリングを用いて効率的にテストをした話をさせてもらいます。 …

Grafana の Backend plugin を利用して BigQuery と連携した監視をする

はじめに こんにちは、UZABASE SREの鈴木(@sshota0809)です。 今回は、Grafana の Backend plugin という仕組みを利用して、データソースを BigQuery とした監視設定を行う方法を紹介します。 目次 はじめに 目次 TL;DR はじめに 現在のログ収集構成 やりた…

Spring Data R2DBCでリアクティブにDBアクセスを行なう

はじめに こんにちは、SaaS Product Teamのヒロオカです。 SPEEDAではSpring Webfluxの採用が行われおり、一部リアクティブなシステムが動いています。 今回は、R2DBCという、リアクティブな非同期でRDBにするための仕様とSpring(Reactor Project) による実…

Smalltalk かつ TDD で『オブジェクト指向設計実践ガイド』の「第5章 ダックタイピングでコストを削減する」をハンズオンしたら 9章も確認せざる得なかった

今日は。 SPEEDA を開発している濱口です。 前回の続きです。 以下の通り、今回も設計の段階的な進化に沿った忠実な写経ができたと思います。 ダックを見逃す 問題を悪化させる ダックを見つける 概要としては、依存関係でがんじがらめになった設計を、ダッ…

Smalltalkで『オブジェクト指向設計実践ガイド』の「第4章 柔軟なインタフェースをつくる」を考える

今日は。 SPEEDA を開発している濱口です。 前回の続きですが、この章にはコードが出てこないため、 前回までのようないわゆる写経にはなりませんでした。 そもそも、この章の趣旨のひとつとして、コードを書かずシーケンス図を用いることで かんたんにイン…

Vue.jsでComposition APIを使ってクリーンアーキテクチャ

こんにちは! Saas Product Teamの板倉です。 今回は少し前にバージョン3がリリースされたVue.jsとComposition APIを使ってクリーンアーキテクチャをどう組むのかを書いてみたいと思います。 クリーンアーキテクチャについてはこちらを参照ください 今回のエ…

WebComponentsを使ってみよう(その1)

こんにちは、SaaS Product Teamのとみたです。 今回は、WebComponentsについて調べてみたことを書きます。その1として、 カスタムエレメント に注目して書いています。ほかの項目については、また別の機会に書きます。 また、今回のサンプルコードと、デモで…

EnvoyをFront Proxyとして利用する

こんにちは、ユーザベースのProductチームでSREをやっています阿南です。弊社ではKubebrnetes + Istioを利用してサービスメッシュの構築、マイクロサービスの運用を行っています。Istioでは sidecar proxyとしてEnvoyが利用されていますが、このEnvoyをFront…

Kubernetes で運用する JVM アプリケーションの OutOfMemoryError に備える

こんにちは。SPEEDA 開発チームの old_horizon です。 JVM アプリケーションの運用について回るのが、OutOfMemoryError (以下 OOM) への対処です。 しかし実際に発生した際に、適切なオペレーションを行うのは意外と難しいのではないでしょうか。 特に本番環…

フロントエンドのコンポーネント設計で気をつけているn個のこと

はじめまして、昨年の12月に入社しました根岸です。 UZABASEに入社する前はフロントエンドエンジニアとして働いており、ここ1年間くらいはReactとTypeScriptの開発ばかりやっていました。 今回はフロントエンドのコンポーネントを設計するときに気をつけてい…

方法より原理 〜正規化ルールとリレーショナルモデルについて〜 【実践編】

今日は。 SPEEDA を開発している濱口です。 理屈編では、まずリレーショナルデータベース(以下、RDB)の論理設計やその後において、 正規化ルールを運用する難しさについて述べました。 主な要因として、 例えば正規化を一度完了したテーブルに対し SELECT …

Ktor で小さな API を作る

こんにちは。SPEEDA 開発チームの緒方です。 システムをマイクロサービスで構成するメリットのひとつに、採用する技術にバリエーションを持たせることができるという点が挙げられると思います。 実際、SPEEDA でも様々な言語・フレームワークを利用してマイ…

Sealed Secretsを利用したKubernetes Secretリソースのセキュアな管理

はじめに はじめまして、UZABASE SPEEDA SREの鈴木(@sshota0809)です。 今回は、Sealed Secretsを利用したKubernetesのSecretリソースをセキュアに管理する方法を紹介します。 目次 はじめに 目次 TL;DR Sealed Secretsとは 概要 アーキテクチャ インストー…

方法より原理 〜正規化ルールとリレーショナルモデルについて〜 【理屈編】

今日は。 SPEEDA を開発している濱口です。 アプリケーションデータの永続化を担うデータストアには様々な選択肢があります。 その1つとして、リレーショナルデータベース(以下、RDB)がありますが、 RDBを選択した場合、データの容れものとしてリレーショ…

GraalVMに入門する

はじめに はじめまして、2019年11月に入社しましたヒロオカ(@yuya_hirooka)です!! 先日、同僚との雑談の中でQuarkusのNative Image化が話題に挙がりました。その際に「そういえば、GraalVMとかNative Imageってよく聞くけどあまり知らないなぁ...」と思い…

Smalltalkで『オブジェクト指向設計実践ガイド』の「第2章 単一責任のクラスを設計する」をハンズオンしたら快適で楽しかった

今日は。 SPEEDA を開発している濱口です。 前回はテスト駆動開発(TDD)を習得するためのハンズオンを行いましたが、今回はオブジェクト指向設計(OOD)です。 SPEEDA は複雑なビジネスロジックから成っており、開発では複雑で多くのコミュニケーションが発…

Smalltalkで『テスト駆動開発』の「第I部 多国通貨」をハンズオンしたら快適で楽しかった

今日は。 SPEEDAの開発をやっている濱口です。 SPEEDA開発チームではテスト駆動開発(TDD)、ペアプログラミングを徹底しています。 だからなのか、『テスト駆動開発』はすごく楽しく読めました。 今回ハンズオンを行った「第I部 多国通貨」でも、ペアプロをし…

Go言語でオブジェクト指向プログラミングの基本(型編)

こんにちは、SPEEDA開発チームの @tkitsunai です。 最近リリースされたプロダクションコードにようやくGo言語が採用されました。嬉しい。 今回はGo言語でオブジェクト指向プログラミングで型表現についてのテクニックや考え方の基礎を紹介します。もっとGop…

Gaugeのsetupとteardownステップを用いて効率的に読みやすいテストを書く

こんにちは!SPEEDA開発チームの工藤です。 大分時間が開いてしまいましたが、Gaugeシリーズの第四回目です。 今回はe2eテスト書く際には必須であろうSet Up/Tear Down Stepsを、Gaugeではどのように実現できるのかをSPEEDA開発チームでの実例も交えてお伝え…

KotlinのCoroutineを用いた,外部API呼び出しの並列数を指定できるライブラリを作成した話

KotlinのCoroutineを用いた,外部API呼び出しの並列数を指定できるライブラリを作成した話 ユーザベースインターンの原田です.大学院で研究しながら京都でユーザベースのインターンをさせて頂いており,今回初めてブログを書かせて頂きます! 題名にある通…

ReactとReactHooksを使って、Flux的なアーキテクチャを実現する

こんにちは。SPEEDA開発チームの冨田です。 昨今のフロントエンドでは、Fluxというアーキテクチャが利用されることが多くなってきています。SPEEDAでもVueを使っている画面がありますが、そこではVuexというVue向けのFluxライブラリで状態管理をしています。…

Ringアプリケーションで例外をいい感じにハンドリングする方法(Ductでの解説も含む)

こんにちは!こんにちは!SPEEDA開発チームのあやぴーです。 社内のClojureを使ったAPIにおいて、「例外をうまくハンドリングしたいんだけど…」という話が出てきたので、今回はRingアプリケーションにおける例外のハンドリング方法について解説します。また…

【kubernetes / Helm】大量のCronJobに悩む貴方に送るプラクティス

はじめに こんにちは! UZABASE SPEEDA SRE teamの生賀です。 最近あった嬉しかったことは、自分が翻訳した日本語がkubernetesのCronJob - Kubernetesページに反映されていたことです。 閑話休題、弊社SPEEDAサービスでは大量のバッチジョブがHinemosを起点…

Rustで非同期リクエストでハマったこと

こんにちは!SPEEDAプロダクト開発チームの成です。 去年の秋ごろからRustを触り始め、徐々にRustの魅力に惚れられました。 最初は日々コンパイラーにボコボコにされていましたが、 The Book *1 を読みながら、Rustを少しずつ理解していくと、段々コンパイラ…

appiumを使ってモバイルアプリのテストを自動化する

こんにちは!SPEEDA プロダクト開発チームの板倉です。 前回は、テスト環境(appium + gauge + kotlin)のセットアップについて書きました。 appiumを使ってモバイルアプリのテストを自動化する ~環境構築まで~ - Uzabase Tech 今回は、実際にアプリのテストを…

appiumを使ってモバイルアプリのテストを自動化する ~環境構築まで~

こんにちは!SPEEDA プロダクト開発チームの板倉です。 前回書いた時はNewsPicksの開発をしていましたが、今はSPEEDAの開発をしてます。 SPEEDAのプロダクトチームでは、以下の記事のようにE2EをGaugeとKotlinを使って書くことが多いです。 Gauge Test Autom…

Istioでマイクロサービスのテスタビリティを向上させる

SPEEDAの開発チームの石橋です。 最近ではマイクロサービスでプロダクトを開発することが多くなってきていると思います。 そういった状況の中でマイクロサービスのテスト、特に異常系のテストをするコストがやや高いという話を何度か耳にしました。 本記事で…

Kubernetes + Istioでblue-green deploymentを実現する

こんにちは、SPEEDAのSREチームの阿南です。最近Kubernetes界隈が盛り上がっていますね。ここ一年で、各企業での利用事例やKubernetesを解説している書籍等もかなり増え、活用の仕方も徐々に確立されて来ているのではないでしょうか。一方Istioについては、…

Istioを使いこなすために知っておくこと

こんにちは、SPEEDAのSREチームの阿南です。最近Kubernetes界隈が盛り上がっていますね。ここ一年で、各企業での利用事例やKubernetesを解説している書籍等もかなり増え、活用の仕方も徐々に確立されて来ているのではないでしょうか。一方Istioについては、…

Vue.jsとFirebaseとGASとiPadで会議室表示板を作った

こんにちは、コーポレートエンジニアリングチームという新チーム所属のたけうち(@chimerast)です。ユーザベース社内ではレアポケモンと呼ばれています。 数ヶ月前、メンバーも数百人を超え、アメリカのQuartz社がユーザベースグループに加わったりして、業務…

GaugeのParameterを使いこなす

こんにちは! SPEEDA日本事業部でテストエンジニアをやっている工藤です。 Gaugeシリーズの第三回目です 第二回目の記事はこちらから 今回はGaugeの「Parameter」について書きます。 ParameterはGaugeでテストを書くにあたり、基礎的かつ重要な機能です。 Pa…

GaugeのConceptを用いてテストシナリオをより仕様書のように記述する

こんにちは! SPEEDA日本事業部でテストエンジニアをやっている工藤です。 前回の記事から、大分時間が経ってしまいましたがGaugeシリーズの第二回目です。 第一回目の記事はこちらから 今回はGaugeの「Concept」について書きます。 Conceptsを利用すること…

モンスト、スマニュー、Wi2の運用秘話多数! 「SRE Lounge #3」レポート

2018年5月17日、「SRE Lounge #3」という勉強会を開催しました。発表企業4社のみ参加の非公開な会でしたが、ここでしか聞けないようなディープな話題が満載でした。 参加企業:ユーザベース、ワイヤ・アンド・ワイヤレス様、スマートニュース様、ミクシィ様…

はじめてのDuct

SPEEDA開発の中村です。今回の内容は,弊社主催のclj-ebisu #2で発表した「実践Duct(仮)」です。 ClojureのサーバサイドフレームワークDuctを業務で使って学んだことを紹介します。 connpass.com 勉強会で発表した資料はこちらです。 はじめに,Ductのコア…

hbstudy#82 の「SRE大全:ユーザベース編」で話をしてきました。

こんにちは。ユーザベースのSPEEDAで、SREチーム内のソフトウェアエンジニアをしている @tkitsunai です。 3月15日(木)に、株式会社ハートビーツ様が主催している「hbstudy#82」で、「SRE大全:ユーザベース編」というお題目の下に、弊社のSREチームの4人で…

Chatwork、CrowdWorks、スタディスト、ユーザベースでSRE Lounge #2 を開催しました

こんにちは、ユーザベース SREチームでインターンをしております杉田です。 1/17(水)に始動したSRE Loungeの第二弾として、3/13(火)にSRE Lounge #2を開催しましたので、 今日はその模様を投稿します。 そもそも「SREとは?」といったことや、SRE Lounge開催…

【k8s合宿】 Kubernetesのメトリクスを取得する 〜PrometheusにGrafanaを添えて〜

こんにちは、SPEEDAのSREチームの阿南です。前回から少し時間が経ってしまいましたが、今回はKubernetesのメトリクス取得についてです。本番環境でkubernetesを運用する際、ポッドがどの程度リソースを消費しているのか、クラスター自体のリソースは大丈夫か…

【k8s合宿】 Kubernetesのログ分析環境を作る

こんにちは、SPEEDAのSREチームでエンジニアをしている阿南です。SPEEDAのSREチームでは、昨年末kubernetesについて理解を深めるために合宿を行いました。やり方はA〜Cの3チームに分けて、それぞれのチームでkubernetesに関することを調査、構築するという…

© Uzabase, Inc. All rights reserved.