ペペロミア & memoir開発ブログ

React Nativeで開発しているペペロミア & memoirの技術系記事を投稿してます

PR毎にCloud Runをデプロイできるようにする

GCP固有の処理などローカル環境では検証できない機能が増えてきたので、PR毎にCloud Runをデプロイできるように修正した。 PR github.com 参考記事 zenn.dev cloud.google.com 実装 Cloud Runはtagを設定することで、リビジョンのURLが設定され個別にアクセ…

msw + graphql-codegen-typescript-mock-data + testing-library/react-nativeでインテグレーションテストを実装する

フロントエンドのインテグレーションテストを簡単に書けるようにしたいと思ったので、mswを使用してインテグレーションテストを実装してみた。 PR 以下の3回ののPRで実装。 github.com github.com github.com 実装①: typed-document-nodeに移行 実装の想定と…

Retoolでコード健全性の可視化のダッシュボードを作成

コードのカバレッジを継続的に計測したくて作成。 元々、codecovがデファクトだったが、以前あったセキュリティ問題から使用するのは微妙だなと思っていたので、Retoolを使用してダッシュボードを作成して可視化してみた。 インスパイヤ元の記事 以下の記事…

React Nativeでスクロールとタッチイベントとスワイプイベントを同時に使用する

memoirの不具合フィードバックで以下の報告があったので修正 上下スクロールしていると、意図せずスワイプイベントが発火して日付移動してしまう タッチインベントを設定している箇所でスワイプイベントが発火しない PR github.com 実装 元々はreact-native-…

gqlgen + opentelemetry-go + Cloud Traceでパフォーマンス測定

backendのパフォーマンス測定を実装してみた PR github.com OpenTelemetryとは opentelemetry.io OpenTelemetryは、オープンソースのオブザーバビリティフレームワーク 運用しているアプリのパフォーマンスや健全性が正常な状態か判断するために使用する情報…

zapを導入してCloud Loggingに構造化ログを出力する

サーバーのログの出力を見直したので記載 PR github.com 実装 ログの実装にはzapを導入。 github.com 以下みたいな感じでログ出力が可能。 logger, _ := zap.NewProduction() defer logger.Sync() logger.Info("failed to fetch URL", zap.String("url", url…

VSCode + air + delveでデバッグする

Goのデバッグツールが導入していなかったので追加した。 PR github.com 導入 まずは、デバッグツールのdelveを導入する github.com 以下のコマンドを実行。 $ go install github.com/go-delve/delve/cmd/dlv これで、dlvのコマンドが使用できるようになる。 …

GAE→Cloud Runに移行

概要 memoirのサーバーではGAEを使用していたが、以下を考慮してCloud Runに移行したので記事にしました。 GAE/GOだと現状 1.16までしかサポートしていないので1.18以降の機能が使用できない memoirのサービスのアクセス傾向だとApp EngineのよりCloud Runの…

ExpoでEAS Submitを使用してみる

前回記事で、EAS Buildを試したので引き続きで、EAS Submitの方も実装してみたので記事にしました。 www.wheatandcat.me PR github.com 実装 EAS Submitを使用するとEAS Buildから、そのままApple Store/Google Playへのアップロードまで自動で行えるように…

ExpoでEAS Buildを有効にした際にハマった箇所の紹介

memoirでEAS Buildを試してみた。 実際にやってみたら結構ハマりどころがあったので記事にした。 PR github.com EAS Buildとは docs.expo.dev EAS BuildはExpoの提供しているクラウドのビルド環境で、こちらを使用することでビルドの速度アップ、Hermes Engi…

Qaseを使用してリリース前のテスト管理をする

memoirのアプリ公開前にシナリオテストの実施をしたかったので、 Qaseを使用してテストの管理を行ってみた。 Qaseとは qase.io シナリオテストの管理ツール。 3人までなら無料で使用可能。料金に関しては以下を参照。 qase.io 実施 まず、プロジェクトを作成…

React NavigationでTextInputのautoFocusが効かない問題の対応

本番アプリの検証中に見つけた不具合の対応を記載 PR github.com 対応 TextInputにautoFocusを設定しても反応しない事象が発生。 原因は以下の通り。 github.com 内容的にはReact Navigation で画面遷移した先の画面でTextInputにautoFocusを設定してもキー…

Prismaを試してみた

Prismaに触れる機会があったので紹介 リポジトリ github.com スライド speakerdeck.com Prismaとは? Node.js製のORM RDB周りの処理を簡易に扱えるようにする Schemaファイルから型情報を自動生成 以下のDB対応をサポート PostgreSQL、MySQL、SQL Server、SQ…

GraphQLのエラーハンドリングを追加する

GraphQLではエラーになった場合でも http status 200にしてGraphQLのレスポンスをエラーにして、エラーメッセージを返すのが一般的にである。 ただ、それだと特定のエラーの場合のみフロントエンド側でハンドリングしたい時に不便だなと感じていた。 そこで…

CSSのclip-pathの紹介

memoirのLPサイトのデザインでCSSのclip-pathを使用してみた感じ結構良さ気だったのでサンプルリポジトリを作成してみたので紹介 リポジトリ github.com 紹介 以下で紹介用のサイトとスライドを作成した。 ■URL https://try-css.vercel.app/ ■スライド speak…

docsifyで開発ドキュメントの管理を行う②: 実運用まで

以下のdocsifyで開発ドキュメントの管理を行なう①: 基礎構成の記事の続きです。 docsifyで開発ドキュメントの管理を行う① - ペペロミア & memoir開発ブログ 以下に記載している内容をドキュメント化して実際の開発フローにのせる運用をやってみた。 開発手順…

zxを使用してGitHubのCHANGE_LOG.mdを作成する

www.wheatandcat.me ↑で開発ドキュメントを管理するサイトを作成したが、その際に編集履歴の画面が欲しいと思ったので、zxを使用して実装してみた。 PR github.com 実装 開発ドキュメントを管理するサイトとして以下を実装した。 wheatandcat.github.io ドキ…

frontendはformikとyupで、backendはozzo-validationを使用してバリデーションを実装する

LPサイトのお問い合わせフォームのバリデーションを作成する時に使ってみた組み合わせを紹介 PR github.com frontendのバリデーションを実装 以下を使用してバリデーションを実装 formik yup yupでは、バリデーションを以下のように実装できる。 import * as…

docsifyで開発ドキュメントの管理を行う① :基礎構成

プロジェクトの開発規模が大きくなってくると設計書の可視化が必要になってくる。 どう管理するか検討した結果、GitLabのHandbookのガイドを参考にするのが良いと思い、開発ドキュメントのWebサイトを作成した。 about.gitlab.com リポジトリ github.com 開…

アサイン募集中のissueを集めて共有するモンハンのクエストボードみたいな仕組みを作る

管理するメンバーが増える & 複数のRepositoryに跨ったプロジェクトだったりすると issueのアサインに時間が掛かることがあるので、特定の記事をモンハンのクエストボードみたいに見立てて、そこから自分に合ったissueを引き受けるような仕組みを作ると楽そ…

Slidevでスライドを作る

開発中のアプリのスライドを作成する機会があったのでスライドの作り方を調査してみた。 調べた感じ、今はSlidevちうツールがよく使われているみたいなので、こちらを使用してスライドを作ってみた。 作成したスライドの情報 ■ GitHub https://github.com/wh…

react-native-view-shotを使用してiOSで8200pxを超える画像をキャプチャした時に画像が真っ白になる不具合の対応

概要 タイトルの通りだが、react-native-view-shotに不具合があり、iOSで8200pxを超える画像をキャプチャする真っ白の画像になってしまっていた。 github.com native側の修正が必要なので、Expoでは修正不可能だなーとなっていたのを力技で解決したので、そ…

scenarigoでE2Eを実装

APIのE2Eテストを実装したいなーと思い調べていたところ、以下の記事を見つけてscenarigoが、良さげだなと思ったので実装してみた。 engineering.mercari.com PR github.com 実装 scenarigo実行まで scenarigoはGO製のscenario-based API testingのツール。…

Goでローカル開発時に必要なスタックトレースのみ表示する

概要 以前、sentry-goの記事でスタックトレースについて軽く触れたが、 www.wheatandcat.me ローカル開発中もエラー時にスタックトレースを表示したいと思い実装したら、 意外と良い感じにスタックトレースを表示させるのに手間取ったので、その辺の諸々をま…

React Navigation v5 → v6への移行

React Navigation v6がリリースされたので移行してみた reactnavigation.org PR github.com 実装 v5→v6の移行は、以下の記事を読んで進めた https://reactnavigation.org/docs/upgrading-from-5.x/ package.jsonを更新 ■ package.json "@react-navigation/na…

sentry-goを使用して、正しくエラーをハンドリングする

以前、sentry-goの実装の記事を書いたが、そこからより実践に向けのエラーをハンドリング & 情報追加をしてみました。 www.wheatandcat.me Pull Request github.com github.com 実装 導入に関しては以前の記事で紹介しているので割愛 以下は、新たに実装した…

Storybook + Loki + reg-suitでReact NativeでVisual Regression Testingを実装

React NativeでVisual Regression Testingを実装したので解説します。 ただ現状CIで実行するのは難しそうだったので(セルフホストランナーを使用すればCIでも実行できそうですが)、一旦ローカルのみ実行できる実装になっています。 PR github.com 実装 今…

react-nativeで画面スクリーンショット & 共有機能を開発

memoirする画面の共有機能を実装したので解説 Pull Request github.com 実装 内容としては、memoirする画面(1週間分のタスクを表示する)をスクリーンショットして、共有できるような感じで実装していきます。 まず、画面スクリーンショットはreact-native-…

React Nativeでチュートリアルを作成

memoirのチュートリアルを実装したので紹介 Pull Request github.com 実装 ペペロミア作成時だと、react-native-app-intro-sliderを使用していましたが、今回はライブラリを使用せず実装しました。 github.com 実装は、以下の記事を参考に作成 medium.com ス…

ts-unused-exportsを使用して不要なexportを検知する

exportしているが使用していない場合は、削除したいなーと思ったので実装してみた Pull Request github.com 実装 検知には ts-unused-exports を使用 github.com 以下のコマンドで追加 $ yarn add -D ts-unused-exports 以下のコマンドで実行できます $ yarn…