Ubie テックブログのフィード

https://zenn.dev/p/ubie_dev

Ubie株式会社のテックブログです。 採用情報:https://recruit.ubie.life/engineer

フィード

記事のアイキャッチ画像
NestJSのGraphQL Resolver関数を型安全にしたい
はてなブックマークアイコン 10
Ubie テックブログのフィード
ユビーではNestJSでGraphQLのサーバー実装をおこなっています。今回は実践で得られた知見を元にNestJSでGraphQLのResolverに対してGraphQLのスキーマから生成したTypeScriptの型を適用する方法について解説します。前提としてNestJSにはスキーマファーストとコードファーストがありますが、今回はスキーマファーストで書いたうえで、スキーマから型を生成するアプローチを紹介します。 NestJS組み込みの型生成を使うNestJSのスキーマファーストのアプローチではNestJSの組み込みの機能でスキーマからTypeScriptの型を生成することができま...
3日前
記事のアイキャッチ画像
UbieエンジニアがGoogle Cloud Next'24に参加・登壇してきた
Ubie テックブログのフィード
はじめにUbieプラットフォームチームのonoteru(@teru0x1)です。4/9-11にかけて開催されたCloud Next'24に参加してきたので、イベントの様子や参加したセッション、そこから考えた今後のUbieに必要なクラウド施策についてレポートします。 Cloud Next'24Google Cloudが毎年主催する一大イベントで、技術、製品、サービスに関する最新情報や、ユーザー企業による知見を共有する場です。去年は8月の終わりにサンフランシスコで開催されましたが、今年はそれから1年経たない内に初のラスベガス開催となりました。Ubieからは自分と、プラットフォー...
16日前
記事のアイキャッチ画像
UbieにおけるGo言語のエラーハンドリング
Ubie テックブログのフィード
背景Ubieでは以下の記事にあるように、一昨年から新しく始めるプロジェクトにはGoとTypeScriptを積極的に採用しています。私は本来プロダクトセキュリティが主な専門領域なのですが、公私ともに普段からGoでツールやサービスの開発をしているため、社内のGo言語の普及をサポートしたりプロダクト開発に参加したりしています。https://zenn.dev/ubie_dev/articles/4437cde02a672bGo言語で開発したことがある方はご存知かと思いますが、Goは標準パッケージで提供されているエラーハンドリングは最低限の機能しか提供されていません。これは、CLIツー...
21日前
記事のアイキャッチ画像
WebViewからReact Nativeの関数を型安全に呼び出す
Ubie テックブログのフィード
今までCapacitor(=WebViewのみ)で実装されていたユビーのモバイルアプリ(Android/iOS)を、React NativeとWebViewを組み合わせたハイブリッドアプリとして刷新しています。その過程で、WebView内で実行されるJavaScriptから、React Native側で定義した関数を型安全に呼び出せるライブラリを実装しました。その使用例と仕組みを紹介します。https://github.com/yukukotani/react-native-webview-rpc 使い方 React Native側の実装まずライブラリをインストールします。P...
25日前
記事のアイキャッチ画像
Prismaのテストでデータ削除を高速化する
Ubie テックブログのフィード
背景ユビーではNode.jsのアプリケーションにおいて、DBのORMにPrismaを採用しています。Prismaに限らず、実際のデータベースを使ったテストにおいてはテストを実行するごとにデータを削除することでテストごとのデータの干渉を防いでテストの安定性を保つという手法が用いられます。今回はPrismaでテスト時にデータ削除するときのパフォーマンス改善の事例について紹介します。今開発しているアプリケーションでは以下のように、DBを用いるテストを実行する前に全てのテーブルを truncateするという素朴な方法でテストDBの掃除を行っていました。import { Prisma, ...
1ヶ月前
記事のアイキャッチ画像
TypeScript 5.5で型述語を推論できて最高。配列のfilterも型安全に
Ubie テックブログのフィード
2024/04/09プロパティによる絞り込みが可能になったので追記しました。TypeScriptの次バージョン5.5で、開発者が長い間求めていた挙動が手に入ります。現状のTypeScript (執筆時点で5.4)では、ユーザー定義型ガードを使う際には型述語(用語は後ほど解説します)の記述が必要です。function isNumber(value: number | string): value is number { return typeof value === 'number';}6月リリース予定のTypeScript 5.5では、関数の実体から型述語の型推論(in...
1ヶ月前
記事のアイキャッチ画像
NestJSの構造化ロガーを公開しました
Ubie テックブログのフィード
先日以下の記事で書いたNestJSの構造化ロガーを汎用的に使えるかたちにして npm に公開しました。https://zenn.dev/ubie_dev/articles/4f2d5607875589https://github.com/ubie-oss/nslog使い方は普通のNestJSのカスタムロガーと同じでこんな感じで使います。async function bootstrap() { const app = await NestFactory.create(AppModule, { bufferLogs: true }); app.useLogger(new St...
1ヶ月前
記事のアイキャッチ画像
NestJSでCloud Loggingのための構造化ロギング
Ubie テックブログのフィード
以下の記事で書いたように、ユビーではNestJSを利用したモジュラモノリスなシステムの構築を進めています。https://zenn.dev/ubie_dev/articles/53c5953b037e38その際に得られた知見として今回は構造化ロギングについて紹介します。 やりたいことまず、実現したいのは以下のようなことです。ユビーではGCPのCloud Loggingにログを出力しているため、Cloud Loggingに合わせたかたちでログを出力したいCloud LoggingはJSONによる構造化ログをサポートしている出力するJSONのフィールドはいくつか特別扱いさ...
1ヶ月前
記事のアイキャッチ画像
「情報アクセシビリティ好事例2023」に応募しました
Ubie テックブログのフィード
「症状検索エンジン ユビー」を総務省が募集している情報アクセシビリティ好事例2023に応募しました。(募集はすでに締め切っています。)https://www.soumu.go.jp/menu_news/s-news/01ryutsu05_02000156.html 情報アクセシビリティ好事例2023「情報アクセシビリティ好事例2023」は、総務省が主導する取り組みで、情報アクセシビリティに配慮したICT機器やサービスを対象とした募集活動です。この取り組みを通じてアクセシブルなICT機器・サービスの普及促進を目的としています。応募には3つの書類が必要です。情報アクセシビリティ...
3ヶ月前
記事のアイキャッチ画像
Rebooting Ubie Vitals Design Systems
Ubie テックブログのフィード
デザインシステム Advent Calendar 2023 25日めの記事です。Ubieでデザインエンジニアをしているtakanoripです。この度UbieのデザインシステムであるUbie Vitalsのウェブサイトを公開しました。https://vitals.ubie.life/またUbie Vitalsを構成するUIコンポーネントライブラリであるUbie UIをOSSとして公開しました。(こちらはまだWIP)https://github.com/ubie-oss/ubie-uiウェブサイトやコンポーネントライブラリ公開に至った過程を振り返ります。 Ubie Vita...
3ヶ月前
記事のアイキャッチ画像
Ubie Engineering ゆく年くる年 2023
Ubie テックブログのフィード
!この記事は Ubie Engineering Advent Calendar 2023 の25日目です。Ubie の @yohei_kikuta です。この記事は Ubie Engineering Advent Calendar 2023 の締めとして、engineering の観点から 2023 年の状況を振り返り、来年も頑張っていこうという決意を表明するものです。Ubie の engineering 全般に関して整理してお伝えすることはあまりなかったので、2023 の情報をまとめつつ全体像をご紹介しようと思います。 どのようなエンジニアが在籍しているのか? エンジ...
4ヶ月前
記事のアイキャッチ画像
Firebase Authから内製認証基盤に無停止移行して年間1000万円以上削減した
Ubie テックブログのフィード
!この記事は Ubie Engineering Advent Calendar 2023 の23日目です。期末試験が大変で遅れてしまいました。症状検索エンジン「ユビー」 では、ローンチ当初から Firebase Auth (GCP Identity Platform) を使っていましたが、OIDCに準拠した内製の認証認可基盤に移行しました。認証認可基盤そのものは m_mizutani と nerocrux と toshi0607(退職済) が作ってくれたため、僕は移行のみを担当しました。結果として、強制ログアウトなし・無停止でビジネス影響を出さずに、年間1000万円以上のコスト...
4ヶ月前
記事のアイキャッチ画像
アルファチャンネルを持つ色のコントラスト比の計算
Ubie テックブログのフィード
こんにちは。Ubieでデザイン、フロントエンド関連のお手伝いをしています、腹筋ローラーの力を信じろです。腹筋しろよ(私は最近してません)。Qiita/アクセシビリティ Advent Calendar 2023の25日目を滑り込み(2日遅れ)で書いていきます。サイトのグレーを定義する場合に、アルファチャンネル(透過度)を設定することがあります。グレーを color や border-color に指定することで、背景色など、他要素との馴染みがよくなります。UbieのデザインシステムであるUbie Vitalsでも、カラーパレットに採用したグレー(ブラック)にはアルファチャンネルを含め...
4ヶ月前
記事のアイキャッチ画像
【入社エントリ】Ubie に入社して一ヶ月が経ったよ
Ubie テックブログのフィード
はじめにUbie に入社して1ヶ月が経ちました。あれ、さっき入社したばっかだよな〜?というくらいのスピードで時が流れており、もう一ヶ月が経ったのかという驚きと、いつまでもニューカマー面できないなと少し寂しくもあります。後から見返せるように、この入社直後のアツアツホヤホヤな感情を書き連ねようかなと思います。 今までの経歴は?SIer → スタートアップSWE → Ubie という経歴を歩んできました。前職ではファッションテックな会社で働いており、サービスリニューアルや新規サービスのリリース立ち上げなど、SWEとして色々なことに携わらせてもらっていました。 なぜ Ubie...
4ヶ月前
記事のアイキャッチ画像
コンポーネントをアクセシブルに保つ技術
Ubie テックブログのフィード
アクセシビリティ Advent Calendar 2023 21日目の記事です。Ubie株式会社 デザインエンジニアのtakanoripです。Ubieではデザインシステムの1要素としてコンポーネントライブラリの実装を進めています。その中でコンポーネントをアクセシブルに保つための仕組みをいくつか導入しているので紹介します。 Linterまず一番オーソドックスなものとして、アクセシビリティ向けLintツールを導入しています。Ubieではeslint-plugin-jsx-a11yとMarkuplintを導入しています。両者は重複する部分もありますが、eslint-plugin-...
4ヶ月前
記事のアイキャッチ画像
共用のQA環境の利用状況を Notion でノーコードで可視化する
Ubie テックブログのフィード
はじめにこんにちは、 syucream です。 Ubie でソフトウェアエンジニアをやっています。ここでは表題の通り、筆者が関わっている Ubie の toC サービス開発の現場において、共用の QA 環境の利用状況をサクッと可視化したエピソードについて触れます。 課題Ubie の toC サービス開発の現場では、現在ソフトウェアエンジニアや QAE が動作確認をする時に共用の QA 環境を用いています。この運用は今までは十分に回っており、共用 QA 環境を用いた動作確認を行う前提でデプロイパイプラインやツールは最適化されてきました。しかしサービスの成長に合わせて開発に...
4ヶ月前
記事のアイキャッチ画像
強い開発チームを作るためのコツ〜課題の抽出・可視化・共有のプラクティス〜
Ubie テックブログのフィード
!この記事は Ubie Engineering Advent Calendar 2023 の18日目の記事です。こんにちは。Ubieでソフトウェアエンジニアをやっているtatsuroroです。いきなりですが、チームでサービス開発って難しくないですか?特に不確実性の高い目標を達成しようとした取り組んでいく場合。チームワークの良し悪しによって、得られる成果は大きく違ってきますよね。この記事では、自分がエンジニア兼スクラムマスターとして関わった開発チームにて、課題を抽出・可視化してチームが成長するきっかけを作っていった事例を紹介します。 新チームのミッションは、サービスの回遊...
4ヶ月前
記事のアイキャッチ画像
LLMを使って自分の住みたい街を見つけてみた
Ubie テックブログのフィード
はじめにこんにちは、Ubieでアナリティクスエンジニアをやっている@matsu-ryuです。普段は、Ubieが提供する症状検索エンジンを始めとするヘルスケア関連のデータを扱い、「テクノロジーで人々を適切な医療に案内する」ミッション遂行のために、頑張っています。昨今、話題であるLLM(Large language Models:大規模言語モデル)ですが、Ubieの分析業務においても、活用しています。同僚の@masa_kazamaがhttps://note.com/masa_kazama/n/n0f340ab3a3d8でUbieでのLLM活用についてまとめています。今回は、...
4ヶ月前
記事のアイキャッチ画像
Ubie のアーキテクチャレビュー運用で得られたもの
Ubie テックブログのフィード
この記事は Ubie Engineering Advent Calendar 2023 の 16 日目の記事です。昨日はohtamanによる「言語モデルはどのようにして知識を蓄えているのか? 関連文献の紹介 」でした。本日の記事では、 Data Engineer 兼 Backend Engineer として働く私から、Ubieで実施されているアーキテクチャレビューがどのような効果を生んでいるかについて紹介させていただきます! Ubie でのアーキテクチャレビューUbie では、システムアーキテクチャに変更を加える際にはアーキテクチャレビューの実施をしています。「Design D...
4ヶ月前
記事のアイキャッチ画像
MLE が医師と働くってどんなかんじ?~Ubie での症状クラスタリングによる業務効率化の例~
Ubie テックブログのフィード
Ubie で ML Engineer (MLE), Product Owner (PO) をやっているくんぺーです。今日は MLE の人格で記事を書いています。今回は、Ubie で全く異なる専門性を持つ MLE と医師が、ひとつのスクラムのなかでどう協力しあっているか?を紹介します。!Ubie Engineering Advent Calendar 2023 14日目の記事です。Ubie では主力の toC サービスとして 症状検索エンジン ユビー を展開しています。対話的なインタフェースを介していくつかの質問に答えると関連する病名リストを調べられるサービスで、適切な医療サービ...
4ヶ月前