It’s now or never

IT系の技術ブログです。気になったこと、勉強したことを備忘録的にまとめて行きます。

2023-01-01から1年間の記事一覧

useSyncExternalStoreを使って、Subscribe(購読)形式のデータ取得をhook化する

useSyncExternalStoreとは react.dev React18から追加された 外部にあるデータソースをReact Hookに変換するためのhooks 外部ネットワークやアプリケーション外から subscribe で取得する形式のデータをhooksでstoreとして扱うことができる 型 export functi…

トレイトオブジェクトとトレイト境界の入門

Rustのトレイトオブジェクトとトレイト境界について整理。 トレイト(trait) doc.rust-jp.rs 任意の型となりうるSelfに対して定義されたメソッドの集合 多言語、例えばJavaで言えばInterfaceのようなもの trait Speak { fn speak(&self); } トレイトオブジェ…

RustによるResult型のエラーハンドリングの入門

RustにおけるResultを使った、エラーハンドリングの基本的な部分についてまとめておく。 Result型 doc.rust-lang.org Rustには、エラーハンドリングのための特別な型、Resultが用意されている。 enum Result<T, E> { Ok(T), Err(E), } Okバリアントは操作が成功し</t,>…

Riverpod(v2)を使ったViewModelの作り方

概要 Flutterで riverpod という状態管理ライブラリを使って、MVVMアーキテクチャにおけるViewModelを作成する。 riverpodは、v2になり色々と作成方法も変わったので、基本v2でアノテーションによるコード生成を使う前提で記載。 使用するライブラリ riverpo…

useTransitionについて理解する

useTransitionとは https://react.dev/reference/react/useTransition useTransitionは、React 18で新しく導入されたhooks。 useTransitionは、startTransitionという関数を提供していて、このstartTransitionに渡した関数内で状態を更新された場合、その状…

useDeferredValueについて理解する

useDeferredValueについて https://react.dev/reference/react/useDeferredValue#usedeferredvalue useDeferredValueは、React 18で新しく導入されたhooks。 Suspenseコンポーネントによって、コンポーネントのレンダリングに遅延が発生する場合、最新のデー…

ErrorBoundaryについて理解する

Suspenseについての簡単なおさらい Suspenseを使って非同期処理を含むReactコンポーネントを内包すると、Suspenseは未完了のPromiseをcatchして、完了まではfallbackのコンポーネントを表示してくれる。 inon29.hateblo.jp 参照。 ErrorBoundary Suspenseがc…

Firebase AuthのsignInWithRedirectがSafariで動かない件のメモ

概要 FirebaseAuthの signInWithRedirect をそのまま使うと、Safariで動かないという問題があったので事象の理解と対応のメモ 問題のサマリー 問題のissueはhttps://github.com/firebase/firebase-js-sdk/issues/6716に上がっている。 要約すると、 リダイレ…

ReactのSuspenseコンポーネントことはじめ

概要 React18から正式に使えるようになったSuspenseという機能について、自身であまり積極的につかってこなかったため改めて、理解をまとめる。 公式ドキュメント https://react.dev/reference/react/Suspense 整理 コンポーネント内で処理が中断(例えばProm…

【CSS】CSSアニメーションで画面下部からスライドインするアニメーションを実装する

css

概要 CSSのアニメーションを使って、画面の最下部からスライドアップのアニメーションでメニューを表示する方法について紹介します。 イメージとしては、以下のような初めから表示されているメニューの開閉ボタンを押下すると、画面外に隠れていたサブメニュ…

ExposedにおけるDSLとDAOの使い分け

概要 最近、サーバサイドKotlinを触り始めていて、データベース管理のライブラリにJetBrains製のExposedを使っています。 Exposedの使用方法として大きくDSL方式とDAO方式の2種類あるのですが、この使い分けについて個人的な悩みがあったので記載しました。 …

サーバサイドKotlinでのGraphQLのグローバルIDの変換処理

やりたいこと・背景 サーバサイドKotlin + GraphQLでAPIを作成しています。 GraphQLを書いているとアプリケーション内部のドメインに紐づくモデルを、GraphQLスキーマに変換することは日常的にあるかなと思いますが、このときモデルのIDをGraphQLのグローバ…

【サーバーサイドKotlin】ことはじめ

背景・スキルなど クライアントサイドの開発(6割) iOS, Android, Flutterなどのモバイルアプリ開発 React(NextJS)のWebアプリ開発 サーバーサイドの開発(4割) - Ruby On Rails - NodeJS(Express系) サーバーサイドは、Java/Kotlinともに未経験であり、Spring…