初めまして。2020年4月NewsPicksに新卒エンジニアとして入社した崔(チェ)です。 実は私は、大学では語学を専攻し大学院から情報系に進学したもので、入社当時コーディング歴2年という浅い経験しかありませんでした。 そんな中、むしろ変な癖のついてない今…
こんにちは。SaaS Product Divisionのとみたです。 WebComponentsを使ってみよう(その1)の続きです。 今回は、Reactアプリケーションをカスタムエレメントとし、さらに別のフレームワークから使う、といったマイクロフロントエンドをやっていく上で実践的な…
こんにちは。NewsPicksでソフトウェアエンジニアをしている森田です。 今回は業務の中で実際におこなった Node.js の CPU プロファイリングについてご紹介します。 なぜプロファイリングをおこなったのか 現在私が運用・開発しているWebサービスの Webフロン…
こんにちは!NewsPicksエンジニアの森川です。今回はNewsPicksのオンコール(=障害対応)体制の変遷と試行錯誤をご紹介したいと思います。 オンコール1.0 ~ 全員野球時代 ~ NewsPicksにはエンジニア全員が入るslackチャンネルがあり、ここで周知事項の共有や雑…
こんにちは!SPEEDA開発の岩見です。普段は業務でKotlinやClojureなどのJVM言語によく触れています。 今回TypeScriptを使ってテスト駆動開発(以下TDD)を実践する機会があり、良い勉強になったなと感じたので記事を書くことにしました。この記事では、TypeS…
こんにちは。 NewsPicksエンジニアのmarshallStonesです。 NewsPicksではiOS/Androidアプリケーションを開発するチームに所属しています。 レビューやお問い合わせなどからユーザーの皆様から導入を希望されておりましたPicture in Pictureを Androidアプリ…
みなさんこんにちは!UB Tech推進室にてインターンをしています、近藤です。 寒い冬が終わり日差しの強い日が続いていますね。いかがお過ごしでしょうか。ユーザベースは、2月18日・19日に開催されたDevelopers Summit2021にてスポンサー出展をしておりまし…
こんにちは、 NewsPicks でソフトウェアエンジニアをしているガニエです。 2019年に NewsPicks に新卒入社してから現在に至るまで、基本的には toC サービスである NewsPicks の上に顧客組織内に閉じたコミュニティを作って NewsPicks をコミュニケーション…
こんにちは。 NewsPicksエンジニアの美濃部です。 NewsPicksではAWSをインフラ基盤として利用しているのですが、この記事では実際に行ったSQSのコスト削減の話をしたいと思います。 結論から話すとタイトルにもありますが「SQSでメッセージを受信する時には…
みなさん、こんにちは。ユーザベースでTech推進をしております西脇です。 本日、Tech blog は Uzabase Tech としてユーザベースの技術情報を発信するポータルにリニューアルしました。 このポータルでは、ユーザベースのエンジニアやデザイナー、クリエイタ…
こんにちは。SaaS Product Team の old_horizon です。 Docker の登場により、Selenium によるクロスブラウザでの E2E テストが簡単になりました。 Linux で動作する主要ブラウザについては、Selenium 公式の Docker Hub 等から Docker イメージを取得するだ…
こんにちは。SaaS Product Team SREの八代です。 はじめに 弊社が開発しているSPEEDAでは、KubernetesとIstioを利用してサービスメッシュ基盤を構築しています。オンプレミス上に構築したK8s、GKE、Google Anthosなど10個以上のK8sクラスタを管理しており、…
こんにちは!SaaS Product Teamの成です。 出身は中国・上海です。学生のときからは国語が苦手でテストもよく落ちましたが、一応中国語は分かります。 最近Product開発で中国語文章の全文検索について調べたことがありましたので、ここでElasticsearchの中国…
こんにちは。 NewsPicksエンジニアの鶴房です。 2020年1月に入社して、既に1年が経ちました! 今回は入社して最初に任せていただいた案件で、億件オーダーのデータ移行ツールの検証の際に、サンプリングを用いて効率的にテストをした話をさせてもらいます。 …
こんにちは。このブログでは初めまして。2020年の2月にNewsPicksに入社した高山です。 今回は僕がNewsPicksのCTOになってからの1年でやったお仕事について書いていきます。 CTO最初のミッション NewsPicksは2013年に誕生し、5年ほどの壮大な創業期の間にたく…
はじめに こんにちは、UZABASE SREの鈴木(@sshota0809)です。 今回は、Grafana の Backend plugin という仕組みを利用して、データソースを BigQuery とした監視設定を行う方法を紹介します。 目次 はじめに 目次 TL;DR はじめに 現在のログ収集構成 やりた…
はじめに こんにちは、SaaS Product Teamのヒロオカです。 SPEEDAではSpring Webfluxの採用が行われおり、一部リアクティブなシステムが動いています。 今回は、R2DBCという、リアクティブな非同期でRDBにするための仕様とSpring(Reactor Project) による実…
今日は。 SPEEDA を開発している濱口です。 前回の続きです。 以下の通り、今回も設計の段階的な進化に沿った忠実な写経ができたと思います。 ダックを見逃す 問題を悪化させる ダックを見つける 概要としては、依存関係でがんじがらめになった設計を、ダッ…
こんにちは、SaaS Product Team の Ryo33 です。 この記事では Rust でモックオブジェクトを作ることを通してRefCellやMutex、Rc、Arcの使い方やSendやSyncについて学びます。 この記事を読むことで Rust でモックオブジェクトを自作できるようになります。 …
こんにちは。7月からSaaS Product Teamに参加している横山です。 Uzabaseにきて大体半年が経ちました。 SaaS Product Teamに来るまでは、比較的ウォーターフォールがメインの現場にいたのですが、 ここにきて驚いたことのうち3つを書いていきたいと思います…
SaaS Product Team の野口です。 以前にもいくつかの記事で触れたように、SaaS Product Team では XP(エクストリーム・プログラミング)をベースとしたチーム開発に取り組んでおり、ほぼ全ての作業をペアで行っています。*1 かく言う私もこのチームに入って…
今日は。 SPEEDA を開発している濱口です。 前回の続きですが、この章にはコードが出てこないため、 前回までのようないわゆる写経にはなりませんでした。 そもそも、この章の趣旨のひとつとして、コードを書かずシーケンス図を用いることで かんたんにイン…
こんにちは! Saas Product Teamの板倉です。 今回は少し前にバージョン3がリリースされたVue.jsとComposition APIを使ってクリーンアーキテクチャをどう組むのかを書いてみたいと思います。 クリーンアーキテクチャについてはこちらを参照ください 今回のエ…
こんにちは、SaaS Product Teamのとみたです。 今回は、WebComponentsについて調べてみたことを書きます。その1として、 カスタムエレメント に注目して書いています。ほかの項目については、また別の機会に書きます。 また、今回のサンプルコードと、デモで…
こんにちは、SaaS Productチームの比嘉です。 私たちSaaS Product チームは常日頃からペアプログラミングを行っています。 チームペアプロの細かい流れは過去に鈴木さんが紹介しています。 tech.uzabase.com そんな中、あるときエンジニアの友人から質問され…
こんにちは、ユーザベースのProductチームでSREをやっています阿南です。弊社ではKubebrnetes + Istioを利用してサービスメッシュの構築、マイクロサービスの運用を行っています。Istioでは sidecar proxyとしてEnvoyが利用されていますが、このEnvoyをFront…
GoogleにおけるGCPにおいて、Anthos GKE On-Prem の事例紹介をして頂きました。 記事を見る
こんにちは。SPEEDA 開発チームの old_horizon です。 JVM アプリケーションの運用について回るのが、OutOfMemoryError (以下 OOM) への対処です。 しかし実際に発生した際に、適切なオペレーションを行うのは意外と難しいのではないでしょうか。 特に本番環…
CodeZineにて、NewsPicksのプロダクト開発についての取材を受けました。 記事を見る
こんにちは。SPEEDA開発チームの佐藤です。 今回はAndroid Studioに入門しようということで、 初心者向けに簡単な使い方から、今回は主にUI部品・レイアウトについて紹介したいと思います! Android Studioとは? JetBrains社のIntellJ IDEAをベースとしたAn…
今日は。 SPEEDA を開発している濱口です。 前回の続きです。趣旨も同じ。 『オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方』のサンプルコードを Ruby から Smalltalk に翻訳しながら読み進めることで、ただ…
はじめまして、昨年の12月に入社しました根岸です。 UZABASEに入社する前はフロントエンドエンジニアとして働いており、ここ1年間くらいはReactとTypeScriptの開発ばかりやっていました。 今回はフロントエンドのコンポーネントを設計するときに気をつけてい…
初めて会社のブログに書きます。SPEEDA事業でCTOをしている林です。 TDDをこよなく愛する身として今日はDartでTDD、そしてテストの独立性を担保していく上で欠かせないMockライブラリーのMockitoについて書こうと思います。 Mockitoとは Dart開発チームが作…
今日は。 SPEEDA を開発している濱口です。 理屈編では、まずリレーショナルデータベース(以下、RDB)の論理設計やその後において、 正規化ルールを運用する難しさについて述べました。 主な要因として、 例えば正規化を一度完了したテーブルに対し SELECT …
こんにちは。SPEEDA 開発チームの緒方です。 システムをマイクロサービスで構成するメリットのひとつに、採用する技術にバリエーションを持たせることができるという点が挙げられると思います。 実際、SPEEDA でも様々な言語・フレームワークを利用してマイ…
はじめに はじめまして、UZABASE SPEEDA SREの鈴木(@sshota0809)です。 今回は、Sealed Secretsを利用したKubernetesのSecretリソースをセキュアに管理する方法を紹介します。 目次 はじめに 目次 TL;DR Sealed Secretsとは 概要 アーキテクチャ インストー…
今日は。 SPEEDA を開発している濱口です。 アプリケーションデータの永続化を担うデータストアには様々な選択肢があります。 その1つとして、リレーショナルデータベース(以下、RDB)がありますが、 RDBを選択した場合、データの容れものとしてリレーショ…
はじめに はじめまして、2019年11月に入社しましたヒロオカ(@yuya_hirooka)です!! 先日、同僚との雑談の中でQuarkusのNative Image化が話題に挙がりました。その際に「そういえば、GraalVMとかNative Imageってよく聞くけどあまり知らないなぁ...」と思い…
今日は。 SPEEDA を開発している濱口です。 前回はテスト駆動開発(TDD)を習得するためのハンズオンを行いましたが、今回はオブジェクト指向設計(OOD)です。 SPEEDA は複雑なビジネスロジックから成っており、開発では複雑で多くのコミュニケーションが発…
こんにちは。SPEEDA開発チームの上村です。 先日同僚が書いたElixirのコードを眺めていた際に、とあるバッチ処理内でback-pressureを用いてAPIサーバを優しく呼び出している処理を見かけました。 そのコード内で用いられていたライブラリを調べてみるとなか…
今日は。 SPEEDAの開発をやっている濱口です。 SPEEDA開発チームではテスト駆動開発(TDD)、ペアプログラミングを徹底しています。 だからなのか、『テスト駆動開発』はすごく楽しく読めました。 今回ハンズオンを行った「第I部 多国通貨」でも、ペアプロをし…
こんにちは、SPEEDA開発チームの @tkitsunai です。 最近リリースされたプロダクションコードにようやくGo言語が採用されました。嬉しい。 今回はGo言語でオブジェクト指向プログラミングで型表現についてのテクニックや考え方の基礎を紹介します。もっとGop…
はじめに SPEEDA PDT歴3ヶ月の相川です 今回はJavaを2年くらい書いていた私が、3ヶ月間で感じたKotlinの特徴を列挙していこうと思います Kotlinの特徴 型推論 データクラス nullable 検査例外の話 returnを明示的に書かなくても良い 拡張関数 リスト操作の評…
こんにちは!SPEEDA開発チームの工藤です。 大分時間が開いてしまいましたが、Gaugeシリーズの第四回目です。 今回はe2eテスト書く際には必須であろうSet Up/Tear Down Stepsを、Gaugeではどのように実現できるのかをSPEEDA開発チームでの実例も交えてお伝え…
KotlinのCoroutineを用いた,外部API呼び出しの並列数を指定できるライブラリを作成した話 ユーザベースインターンの原田です.大学院で研究しながら京都でユーザベースのインターンをさせて頂いており,今回初めてブログを書かせて頂きます! 題名にある通…
こんにちは。SPEEDA開発チームの冨田です。 昨今のフロントエンドでは、Fluxというアーキテクチャが利用されることが多くなってきています。SPEEDAでもVueを使っている画面がありますが、そこではVuexというVue向けのFluxライブラリで状態管理をしています。…
こちらの記事は以前にNewsPicks Tech Guideに投稿された記事をインポートしたものです。元の記事はid:yossiyossi923によって書かれました。 こんにちは! NewsPicksのデザイナーの吉川です。 9/26・27の2日間、ニューヨークで行われたAWWWARDSカンファレンス…
こんにちは。 SPEEDA開発チームの掛川です。 現在、私が参画しているプロジェクトではPythonを使ってサービスの開発を行なっています。 私自身、Pythonを書くのは今回が初めてなのですが、 テストを書く際にハマったことについて記事にしていきたいと思いま…
こんにちは。SPEEDA開発チームの鈴木です。 昨年一児(娘)の父になりまして、凄い勢いで変化していく様子に喜んだり困ったりしながら過ごしております。 色々できることが増えると嬉しいのですが、それは同時にいたずらの幅が広がることも意味するんですよ…
こんにちは!こんにちは!SPEEDA開発チームのあやぴーです。 社内のClojureを使ったAPIにおいて、「例外をうまくハンドリングしたいんだけど…」という話が出てきたので、今回はRingアプリケーションにおける例外のハンドリング方法について解説します。また…