TECH PLAY

株式会社ユーザベース

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

482

こんにちは。ユーザベースグループ 技術広報チームです。 この度、株式会社ニューズピックス (以下、NewsPicks) は、Findy Team+ Award 2022 を受賞致しました。 受賞内容について 今回の受賞について、NewsPicksフェロー・高山からのコメント NewsPicksのエンジニア組織について 11 月に「開発者体験の測定と改善」というテーマで、オンラインイベントも開催予定です! 募集ポジション 受賞内容について Findy Team+ は、エンジニア組織のパフォーマンス向上を支援するサービスです。 GitHub や Jira などを解析し、エンジニア組織のパフォーマン…
NewsPicks でサーバーサイドエンジニアを務めている池川です。 サービス運営をされている会社さんであれば、どの会社さんでも何らかの障害を起こし、その対策のための MTG を実施されていると思います。 が、サービスを長く運営していると、過去に発生してしまった事故と似た事故を発生させてしまうということが往々にしてあります。 NewsPicks でも、そのような事故が発生し、どうしたものかということが MTG での話題にのぼりました。 そこで、 NewsPicks ではそのような事故を風化させないための取り組みとして、事故が発生しそうな PR に対して、 GitHub Actions を用いて…
NewsPicks Web Experience Unit でフロントエンドエンジニアをしているじゆんきち(@junkisai)です。 弊チームでは、ここ1年間くらいWeb 版のNewsPicksを新しい基盤に置き換えつつ、見ためも刷新するプロジェクト(以下リニューアルプロジェクト)を進めています。 今回は、弊プロダクトで Visual Regression Testing をはじめて、3ヶ月ほど運用してきたので、今回はその導入や運用にあたっての話をしたいと思います。 導入に至った背景と目的 使用したツールと構成 ツール 構成 導入の流れ ライブラリのインストール storycap の設定 r…
こんにちは!Product Teamのtakenokoです。 2022年4月に Ubuntu 22.04 LTS がリリース*1されました。皆さんはもう試されましたか? Ubuntuのアップグレードって、基本的にはdo-release-upgradeコマンドを実行するだけなのですが、久しぶりのアップグレードだったりaptパッケージを長いこと更新していないと、何かと時間が掛かるものです。 そこで今回は細かい補足も交えながら、Ubuntu 20.04 LTS を Ubuntu 22.04 LTS にアップグレードする手順をまとめました。「もう準備OKだよ!」という方は、事前準備を読み飛ばしてもらっ…
こんにちは。NewsPicks Androidアプリエンジニアの sefwgweo です。 今回はタイトル通りNPのAndroidで使われているJsonのアサートをするライブラリについて話をします。 要件 苦労ポイント まとめ おわりに 要件 正解データはJsonファイルとして用意されるので、それを用いたアサーションを行うこと。 苦労ポイント Json同士を比較するために、Javaの世界ではいくつかライブラリがありましたがAndroid内で使おうとすると色々問題が出たため、初期の頃はケースによってはMapに変換してアサーションしていました。 Map変換していた理由としては、テストケースによって…
こんにちは。みなさんテスト書いてますか? Uzabase FORCAS開発チームです。 今回、FORCASから送っているメールの処理を変更するにあたり、これまで出来ていなかったメールを含むE2Eテストを実施するようにしたので、紹介したいと思います。 課題 MailHog サンプル構成と利用例 DockerでMailHogを立ち上げる サンプルアプリケーション E2Eテスト まとめ 課題 FORCASからのメール送信は、Amazon SESのSMTPインターフェイスを利用しています。 E2Eテストを実施するにあたって、費用面や検証の取り回しを考えると、Amazon SESを利用せずにテストできる…
こんにちは。 NewsPicksの鶴房です。 前回のテックブログでは、テストの技法の話をしました。 (前回のテックブログはこちらから) tech.uzabase.com 早いもので、そこから1年経ちましたが、今回はAWSのスティッキーセッションに関する話をしようと思います。 ググっても日本語情報が見つからなかった内容なので、ニッチにな内容になりますが、同じことで困っている方がいればきっとお役に立てる内容かと思います! 尚、該当部分でも注意喚起をしていますが、今回の内容はAWSのサポートが保証する使い方でないものを含んでいます。 今回の内容に関して、AWSサポートより、推奨しないけど、多分実現可…
こんにちはこんにちは!!あやぴーです。 最近の仕事ではF#を使ったり、Clojureを使ったりすることが多いのですが、今日は久しぶりにClojureの話を書きます。 Clojureでテスト書くときに一緒に使うライブラリ何使ってますか? テスト対象が依存する関数をモックしたい - mockfn 複雑なデータ構造のdiffを簡単に知りたい(あるいはデータ構造の比較を簡単にやりたい) - matcher-combinators モックした関数が取る引数をスマートに制限したい - mockfn & matcher-combinators まとめ Clojureでテスト書くときに一緒に使うライブラリ何使…
みなさんこんにちは。NewsPickでiOSアプリの開発をしている森崎です。 当記事ではどのアプリも一度は見直しを検討したことがあるであろう、アプリの起動時間の高速化についてお話しします。 他の記事で起動時の処理や高速化への改善策を書いたので、ここでは具体的に行ったこととその結果を数字とともに書きたいと思います。 ⬇️起動時の処理や高速化への改善策を書いた記事です。 こちらを読んでもらうと、当記事の内容がより理解できると思います。(読まなくてももちろんわかります!) qiita.com 今回はSystem Interface Initializationの箇所の見直をしました。(⬇︎この箇所)…
はじめに こんにちは! NewsPicksの法人向けサービス開発チームの森です。 入社から約3ヶ月経ったので、入社エントリーを書いてみようと思います! …が!タイトルにも匂わせた通り、私の前職は営業職@メーカーで、エンジニアとして働くのはNewsPicksが初めてですし、テックブログという文化に触れるのも初めてです。 「入社エントリーって何書けばいいんや…」というのが本音です。 何を書けば良いかわからないなりに、このブログを読んで「NewsPicks/Uzabaseってメンバー同士リスペクトし合っている素敵な会社っぽいな〜」と思ってくださる方が1人でも増えたらいいな、という気持ちで一生懸命書こ…
NewsPicksの高山です。 NewsPicksではちょうど1年前の2021年8月に、サーバーサイド開発言語をJavaからKotlinに切り替えていく決断をしました。 今では社内でも最も歴史のある2つのシステムがKotlinでも書けるようになり、置き換えも徐々に進んでいっています。一般的な社内のサーバーサイドエンジニアはKotlinとJavaを半々ぐらいの割合で書いているような印象です。 tech.uzabase.com さて、去る8月25日に、同じくサーバーサイドKotlinを使っている株式会社ヘンリーさんと合同勉強会を開催しました。 ヘンリーさんによるブログ記事はこちら。 note.co…
NewsPicks iOSエンジニアの金子です。 最近あちこちでリアーキテクチャについての話をしているのですが、割とふわっとした内容に留まってしまっていたので、もう少し具体的にどういうことをしているかをお伝えするために記事を書くことにしました。 本記事では、リアーキテクチャの背景、リアーキテクチャで目指していること、リアーキテクチャで採り入れている技術について触れたいと思います。 tech.uzabase.com tech.uzabase.com なお、Androidアプリのリアーキテクチャの話は以下の記事で詳しく紹介しているので、是非合わせてご覧ください。 tech.uzabase.com …
アプリチームでの自動化を紹介!Bitrise, ZapierをSlackを使ってより便利に
はじめまして。AlphaDrive Product Division の fmatzy です。 AlphaDrive では、新規プロダクトの開発に Go を採用しています。 Go はシンプルな言語機能によって高い生産性を実現するという思想の言語です。本ブログでは、Go のシンプルな言語機能ゆえの奥深さに感動した話を紹介します。 Go における enum (っぽいもの) を実現する仕組み stringer で出力されるコードの奥深さ おわりに Go における enum (っぽいもの) を実現する仕組み Go はシンプルな言語仕様ゆえに、他のプログラミング言語には見られるような機能がなかったりしま…
皆様はじめまして! NewsPicks SREチームの中川です。 本日はコンテナイメージのバージョン管理についての記事をお届けします。 概要 実装 ビルド デプロイ Pros Cons おわりに 概要 NewsPicksではECSやKubernetesに代表されるコンテナサービスを使用しておりますが、コンテナのデザインパターンとしてサイドカーパターンを採用しているサービスがあります。 詳しい説明は省きますが、サイドカーはメインアプリケーション用コンテナを補助するコンテナです。 これらのサービスをデプロイするとき、サイドカー毎に使用するDockerfileを ImageTag で指定していました…
こんにちは。AlphaDrive フロントエンドエンジニアの aku11i です。 Next.js で開発中のプロジェクトに New Relic APM / Browser を導入しました。 実は前にも対応したことがあったのでこれで2度目ですが、改めて調べ直したところ @newrelic/next というパッケージが新しく公開されていました。 Node.js エージェントをそのまま使う方法に比べて確認できる情報が増えるなどメリットがありましたので紹介したいと思います。
こんにちは。ユーザベース TechBrandingチームです。 2022年7月28日(木)にオンラインイベントイベント「NewsPicksでのモバイルアプリの技術的負債解消方法 - TechBase vol.2」を開催しました。弊社のNewsPicks アプリ開発チーム リーダー 石井 幸次 (@ko2ic)と、株式会社ニューズピックス Product Division iOSアプリエンジニア 金子 雄大 (@takehilo_kaneko)が登壇しました。 当日は100名以上の方にご参加頂き、沢山の反響を頂き大変盛り上がりました! 登壇者について イベント内容について ▼当日の資料 メインセ…
はじめに タスクについて 実装までの流れ 1. 採用するに相応しいインメモリDBがどれかを調査して決定する 2. インメモリDB向けにデータを初期化するプログラムを開発する 作ったもの 3. テストコードを書く 4. テストコードをリファクタリングする 4-1. SessionFactoryを切り出す 4-2. restoreを抽象化して切り出す 4-3. transactionの処理をスッキリ書く 4-4. contextを用いてテストケースをグループ化する おわりに はじめに こんにちは!NewsPicksのSREユニットでインターンシップをしている西(@yukinissie)です!ニッシ…
NewsPicksの高山です。 今回は、AWSのコストを我々がどのように定点観測しているかを書いていきます。 あわよくば他社さんも事例を広く共有してもらえて業界全体の共有知が増えることに繋がってほしい狙いがあります。 NewsPicksでは過去2年ぐらいかけて地道にコストモニタリングのオペレーションを作ってきました。手法としては、毎週コストモニタリング担当のメンバーで定例ミーティングをして、以下の手順をやりながら議事録にまとめていきます。 毎週のオペレーション コスト異常検出 Savings Plansの購入 DynamoDBのReserved Capacityの購入 毎月のオペレーション 請…
はじめに arrow.core.Eitherとは arrow.core.Eitherのサンプル arrow.core.Eitherの生成方法 1. Any#left / #right 2. Either#fx arrow.core.Eitherの利用方法 arrow.core.Eitherに関するまとめ Kotlinソースをデコンパイル 2回呼ばれる#bindメソッドの謎 caseブロック間の比較 コードリーディングのまとめ ブログのまとめ はじめに はじめまして、NewsPicks App Product Unitの池川(いけがわ)と申します。 2022年5月から今のチームにジョインしており…