タグ

ブックマーク / zenn.dev/ubie_dev (7)

  • NestJSのGraphQL Resolver関数を型安全にしたい

    ユビーではNestJSでGraphQLのサーバー実装をおこなっています。今回は実践で得られた知見を元にNestJSでGraphQLのResolverに対してGraphQLのスキーマから生成したTypeScriptの型を適用する方法について解説します。 前提としてNestJSにはスキーマファーストとコードファーストがありますが、今回はスキーマファーストで書いたうえで、スキーマから型を生成するアプローチを紹介します。 NestJS組み込みの型生成を使う NestJSのスキーマファーストのアプローチではNestJSの組み込みの機能でスキーマからTypeScriptの型を生成することができます。 以下のように書くことで、 graphql.ts に型が生成されます。 GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, t

    NestJSのGraphQL Resolver関数を型安全にしたい
    mizdra
    mizdra 2024/04/25
    デコレーター使って書くと型安全にならないの困るのわかる。自分はそれが嫌で NestJS を採用しなかったのだけど、GraphQL Codegen 使えば良かったのかー。デコレーターやめたことで発生したトラブルがないかは気になる。
  • WebViewからReact Nativeの関数を型安全に呼び出す

    今までCapacitor(=WebViewのみ)で実装されていたユビーのモバイルアプリ(Android/iOS)を、React NativeとWebViewを組み合わせたハイブリッドアプリとして刷新しています。その過程で、WebView内で実行されるJavaScriptから、React Native側で定義した関数を型安全に呼び出せるライブラリを実装しました。その使用例と仕組みを紹介します。 使い方 React Native側の実装 まずライブラリをインストールします。Peer dependenciesであるreact-native-webviewとcomlinkも入れてください。 npm install @react-native-webview-rpc/native npm install react-native-webview comlink # peer dependencies

    WebViewからReact Nativeの関数を型安全に呼び出す
    mizdra
    mizdra 2024/04/04
    Comlink 活用事例だ。良さそう。
  • GraphQL Mesh で The Guild が目指す Web API エコシステムの世界観

    The Guild は GraphQL Code Generator や GraphQL Yoga を筆頭に、多くの GraphQL 関連 OSS をメンテナンスしています。これらは一見 GraphQL エコシステムにフォーカスしているように見えますが、The Guild は Web API エコシステム全体の改善を目指しているようです。 その世界観について、GraphQLConf 2023 で The Guild CEO の Urigo から聞いた内容をもとに、僕の解釈を交えて紹介します。 GraphQL Mesh によって全てが GraphQL になる GraphQL Mesh は、様々なデータソースから自動的に GraphQL スキーマを生成して配信するゲートウェイです。別の GraphQL API はもちろん、REST API (OpenAPI, JSON Schema) や gR

    GraphQL Mesh で The Guild が目指す Web API エコシステムの世界観
  • Ubie は Go と Node.js の会社になります

    Ubie では、創業当初から Server-Side Kotlin を推進してきましたが、全社的な技術選定を再度行い、これからは Go と Node.js を中心とすることにしました。 記事では、Go と Node.js を選定した理由や、それを普及させる取り組み、そして選定の流れを紹介します。 経緯 これまで Ubie では技術スタックを発散させてきていて、現在は KotlinGo、Node.js、RubyPython のバックエンドサービスが動いています。以前は新規開発が多く、それぞれに携わるメンバーが技術選定をすることにより、最大瞬間風速を出せるなどのメリットがありました。しかし、現在では弊害が目立ってきています。 まず、事業成長に伴って運用の重要性が増しています。人材が潤沢とは言えないスタートアップにおいて、様々な技術スタックを安定運用することはコストが高すぎると感じています

    Ubie は Go と Node.js の会社になります
    mizdra
    mizdra 2022/12/14
    選定の根拠なるほど。サービステンプレートやガイドライン用意してるの丁寧だなー。
  • Ubie における ESLint 活用

    Ubie では JavaScriptTypeScript で開発されているプロジェクトに対して、静的解析のために ESLint を導入しています。 この記事では Ubie での ESLint を活用事例を紹介します ESLint を活用する目的 まず私が ESLint を活用する目的は、コーディング規約やベストプラクティスを強制することで、コードレビューの手間を省き、結果として番環境でのエラーやパフォーマンスの悪化を減らすことです。 この記事で紹介するいくつかの設定もその目的を達成するためのものです。 no-restricted-syntax でアンチパターンを禁止する ESLint には no-restricted-syntax というルールがあります。 このルールはセレクタで指定した構文を禁止できます。簡単に言えば、簡易的に独自ルールを作成できます。 たとえば次のように設定する

    Ubie における ESLint 活用
  • GitHubの運用を「会社」にしていく話

    Ubie DiscoveryでSREなどをしている@itkqです。 UbieではGitホスティングにgithub.comを使っています。プロダクト開発に必要なprivateなコードベースはもちろん、OSSや就業規則といったドキュメントをpublicにホストしたりもしています。また、この記事を書いている時点で、メインのOrganizationのメンバーは121名です。 自分が入社したのは一年前(2021年1月)で、まだ情報システム専任の人がいませんでした。それから今に至るまで、GitHubの運用を「会社」にしていく話を書きます。 一年前のGitHubの運用 当時、UbieのOrganizationに所属していた人数は、業務委託含め80〜90名ぐらいで、Businessプランを利用していました。私はSREとして入社しましたが、情報システム専任の人がおらず、SREをはじめとする何名かのメンバーが

    GitHubの運用を「会社」にしていく話
  • Next.js で SSR/SSG したページに Cache-Control などのヘッダを設定する

    Next.js には強力な Incremental Static Regeneration がありますが、Vercel 以外にホストしている場合は使うことができません。そのとき、Cache-Control や Surrogate-Control ヘッダを用いて Fastly のような CDN にキャッシュを持たせたくなります。 このヘッダの持たせ方に少しクセがあったので備忘録的に書きます。 例えば、/articles/[id] にヘッダを持たせたいとします。 方法1. next.config.js で設定 next.config.js の headers で設定する方法です。 const cacheHeaders = [ { key: 'Cache-Control', value: 'max-age=0', }, { key: 'Surrogate-Control', value: 'pu

    Next.js で SSR/SSG したページに Cache-Control などのヘッダを設定する
  • 1