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を使った、エラーハンドリングの基本的な部分についてまとめておく。 Result型 doc.rust-lang.org Rustには、エラーハンドリングのための特別な型、Resultが用意されている。 enum Result<T, E> { Ok(T), Err(E), } Okバリアントは操作が成功し</t,>…
概要 Flutterで riverpod という状態管理ライブラリを使って、MVVMアーキテクチャにおけるViewModelを作成する。 riverpodは、v2になり色々と作成方法も変わったので、基本v2でアノテーションによるコード生成を使う前提で記載。 使用するライブラリ riverpo…
useTransitionとは https://react.dev/reference/react/useTransition useTransitionは、React 18で新しく導入されたhooks。 useTransitionは、startTransitionという関数を提供していて、このstartTransitionに渡した関数内で状態を更新された場合、その状…
useDeferredValueについて https://react.dev/reference/react/useDeferredValue#usedeferredvalue useDeferredValueは、React 18で新しく導入されたhooks。 Suspenseコンポーネントによって、コンポーネントのレンダリングに遅延が発生する場合、最新のデー…
Suspenseについての簡単なおさらい Suspenseを使って非同期処理を含むReactコンポーネントを内包すると、Suspenseは未完了のPromiseをcatchして、完了まではfallbackのコンポーネントを表示してくれる。 inon29.hateblo.jp 参照。 ErrorBoundary Suspenseがc…
概要 FirebaseAuthの signInWithRedirect をそのまま使うと、Safariで動かないという問題があったので事象の理解と対応のメモ 問題のサマリー 問題のissueはhttps://github.com/firebase/firebase-js-sdk/issues/6716に上がっている。 要約すると、 リダイレ…
概要 React18から正式に使えるようになったSuspenseという機能について、自身であまり積極的につかってこなかったため改めて、理解をまとめる。 公式ドキュメント https://react.dev/reference/react/Suspense 整理 コンポーネント内で処理が中断(例えばProm…
概要 CSSのアニメーションを使って、画面の最下部からスライドアップのアニメーションでメニューを表示する方法について紹介します。 イメージとしては、以下のような初めから表示されているメニューの開閉ボタンを押下すると、画面外に隠れていたサブメニュ…
概要 最近、サーバサイドKotlinを触り始めていて、データベース管理のライブラリにJetBrains製のExposedを使っています。 Exposedの使用方法として大きくDSL方式とDAO方式の2種類あるのですが、この使い分けについて個人的な悩みがあったので記載しました。 …
やりたいこと・背景 サーバサイドKotlin + GraphQLでAPIを作成しています。 GraphQLを書いているとアプリケーション内部のドメインに紐づくモデルを、GraphQLスキーマに変換することは日常的にあるかなと思いますが、このときモデルのIDをGraphQLのグローバ…
背景・スキルなど クライアントサイドの開発(6割) iOS, Android, Flutterなどのモバイルアプリ開発 React(NextJS)のWebアプリ開発 サーバーサイドの開発(4割) - Ruby On Rails - NodeJS(Express系) サーバーサイドは、Java/Kotlinともに未経験であり、Spring…
概要 SwiftUIを使ってピンチイン・ピンチアウトによってView(画像に関わらずViewコンポーネント)を拡大・縮小する方法について記載します。 環境 Swift: 5.2.4 Xcode: 11.6 サンプル環境 struct ContentView: View { var body: some View { ZStack { Circle(…
概要 JetpackにSQLiteを使いやすくするためのライブラリである「Room」というものがあります。 モバイルのデータベースといえば、昔から主流はSQLiteでしたが個人的には最近はRealmを使うことが多くSQLiteはしばらく触ってませんでした。 (SQLiteは、使うま…
概要 Android Jetpackの機能の一つに「Navigation コンポーネント」という画面遷移を管理してくれる機能があります。 Navigationコンポーネント自体は発表されて数年たちそれほど最新の話ではないのですが、僕自身は触ったことがなかったので改めて触ってみ…
概要 iOS13から Combine というフレームワークが追加されました。 RxSwiftやRxJavaなどのRx系のライブラリを使わずとも純正のフレームワークでReactive Programingができるようになるというものです。 Rx系は、そこまで経験がないので、まずは基本的な使い方…
概要 androidx.lifecycle:2.2.0 からライフサイクルのイベントをオブザーバー経由で受け取れるようになったため実装のメモ 環境 targetSdkVersion: 29 kotlin: 1.3.72 androidx.appcompat:appcompat: 1.1.0 実装 LifecycleEventObserver import androidx.app…
概要 前回の記事では、LiveDataとViewModelを使った基本的な数字カウントアップの実装を試しました。 inon29.hateblo.jp 今回は、前回のコードをベースにレイアウトにUIコンポーネントを直接紐付ける仕組みである DataBinding を追加してみます。 環境 compi…
概要 Android Jetpack に含まれる「LiveData」についての入門になります。 Jetpackが発表されて約2年ほど立ちますが、この間ほとんどAndroid開発は触っていなかったため、かなり置いていかれてしまいました。 最新のAndroid開発事情に追いつくためにもまずは…
概要 SwiftUIで画面遷移をする方法の1つとして「表示フラグを使用して遷移をコントロールする」というものがあります。 詳しくは、以前書いた記事を読んでいただければ幸いです。 inon29.hateblo.jp この方法を使う場合は、画面遷移のアニメーションは自分…
環境 Swift: 5.2.2 Xcode: 11.4.1 プロパティ名を取得する for children in Mirror(reflecting: self).children { print(children) } Mirrorという構造体に参照したいオブジェクトや構造体を渡す 各プロパティは、children から参照できる サンプル class My…
概要 SwiftUIでは、変数を参照型として扱うためのBindingという型があります。 Bindingを扱うためには、@Binding という PropertyWrapperを使うことが多いと思いますが、Binding型 というデータ型と@Bindingの扱いでたまに混乱してしまうことがあります。 そ…
概要 SwiftUIでQRコードを表示する必要があり、調べた内容になります。 UIKitと全く同じだと若干ハマりどころもあるため、備忘録として残しておきます。 環境 Swift: 5.2.2 Xcode: 11.4.1 QRCodeの画像を作成 import CoreImage import UIKit class QRCode { …
概要 SwiftUIを使ってアプリケーションを作成していると、Viewのコードが長くなり、Modifierの処理を共通化したいケースがでてくると思います。 そんな時にViewModifierを独自で定義して共通化するのも選択肢の1つです。 今回は、このような場合に独自でVie…
概要 SwiftUIのViewの書き方には今までのSwiftにはなかった特徴があります。 次のような、クロージャにViewを連続で渡すようなDSL記法です。 今までのSwiftを書いたことがある人は、「なぜこんな書き方ができるんだろう?」と疑問に思われた人もいるかもしれ…
はじめに この記事の内容は、実装方法に依存する話です。 実装によっては必要ない場合もありますのでその前提で読んでいただければと思います。 環境 XCode: 11.4 Swift: 5.2 概要 SwiftUIの画面描画は基本的には階層構造になっています。 struct FirstView:…
概要 前回の記事では、propertyWrapperの基本について書きました。 inon29.hateblo.jp SwiftUIではこのpropertyWrapperの機能を使って様々な機能が提供されています。 今回は、値の更新を検知してViewを再描画させるためのpropertyWrapper @State についてみ…
概要 SwiftUIにおける基本的な画面遷移の方法についてまとめてみました。 SwiftUIはぱっと1画面を試すのは非常にシンプルで便利なのですが、個人的にはまだ画面遷移の方法に慣れない部分もあり、整理してみました。 環境 XCode 11.4 Swift 5.2 ① NavigationL…
概要 最近はSwiftUIでアプリを書いているんですが、色々と戸惑うところが多かったので備忘録的にまとめておきます。 環境 Swift version 5.1 onAppearが呼ばれるタイミング 画面再描画時の挙動 SwiftUIには、Viewが初めて描画されるタイミングで呼ばれるコー…