TECH PLAY

株式会社ユーザベース

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

476

こんにちは。 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月から今のチームにジョインしており…
アバター
ユーザベースでは、「エンジニアリングを起点に、誰もがビジネスを楽しめる世界を実現したい」という想いから、2022年4月より「Play Engineering」というプロジェクトを推進しています。 このプロジェクトでは、エンジニアではない職種のメンバーも楽しくエンジニアリングを学べる研修の実施や、保有するエンジニアリングスキルのレベルによって手当が支給される制度「プラスエンジニアリング手当」の導入など、さまざまな取り組みをおこなっています。エンジニア以外の多様な職種のメンバーたちにも、エンジニアリングに慣れ親しみ、業務に活かしてほしいという目的もあるため、上記の施策は全社員が対象となっているのも…
アバター
こんにちは。NewsPicks Androidアプリエンジニアの sefwgweo です。 今回はタイトル通りAndroidにおけるSearchViewのUIをMVVMでCustomした話をします。 なお、SearchViewの検索機能に関しては一切触れておりませんので予めご了承ください。 要件 苦労ポイント まとめ おわりに 要件 ユーザ属性に応じて、ツールバー及びSearchView内の各パーツごとの色が動的に変更されてほしい 色及びその他デザインの細かい仕様は以下とする 2-1. Toolbar背景色は動的に変更できること 2-2. 検索Box内背景色は動的に変更できること 2-3. 検…
アバター
はじめまして、NewsPicks Web Product Unitのじゆんきち(@junkisai)です。 弊チームでは、ここ1年間くらいWeb 版のNewsPicksを新しい基盤に置き換えるプロジェクト(以降、リアーキプロジェクト)を進めています。 新 Web 基盤のフロントエンドはReact (Next.js)+TypeScriptを採用しており、バックエンドとの通信にはGraphQL(Apollo) を採用しています。 今回はFragment Colocationという考え方を導入したら、これまで抱えていた技術的な課題が解消され、開発スピードが向上したお話をしようと思います。 導入前の課…
アバター
こんにちは。ユーザベース TechBrandingチームです。 2022年6月24日(金)にオンラインイベントイベント「エクストリームプログラミングで見える開発風景 - TechBase vol.1」を開催しました。ゲストに、『エクストリームプログラミング』翻訳者の角 征典さんをお迎えし、弊社のSaaS事業 Product Division ソフトウェアエンジニア 野口光太郎も登壇しました。 当日は200名以上の方にご参加頂き、沢山の反響を頂き大変盛り上がりました! 登壇者について イベント内容について メインセッション「エクストリームプログラミングー基本に立ち戻れー」 事例講演「実践エクスト…
アバター
こんにちは。NewsPicksでエンジニアをやっております崔(チェ)です。現在は Data / Algorithm チームで検索エンジンの開発を担当しております。この半年間、検索に関しては色々と改善しており、去年までと比較し大きく使いやすくなったのではないでしょうか。前回の記事では検索精度改善に関するお話をしましたので、今回は検索速度を改善したお話をしようと思います。ご興味ある方は是非読んでいただけると嬉しいです。 ことの背景 問題発生 原因を考えてみる 確認事項1.十分なメモリーが確保できているか 確認事項2.SSDを使用しているか 対策を考える 費用調査 検証 稼働中のInstanceのV…
アバター
こんにちは。NewsPicksエンジニアの雲越です。 NewsPicksでは、記事のレコメンドを始めとする機械学習を組み込んだシステムがいくつか動いており、中にはAmazon SageMakerを使って実装されているものもあります。 今回はそんなシステムの一つである記事分類システムが、どのようにSageMakerを使っているかについて紹介します。 どんなシステム? 学習について Training Jobを利用している背景 推論について Serverless Inference導入 CDKで推論エンドポイントを作るのをやめました 今回の対応まとめ 今後の改善 終わりに どんなシステム? News…
アバター