Flutter状態管理ライブラリ
モチベーション
- Flutterアプリ作成のチュートリアル、作成をするにあたって調査していると、Flutterアプリの状態管理にはProvider及びその後継であるRiverpodを使用するのがセオリーだという記事を見た。
- どこでも手放しに称賛されているので、とりあえず導入、使用方法を理解しておくべきだと判断。
- そのうえで、メリデメについて自分なりに考察したい。
導入
dependencies: flutter_riverpod:
flutter pub get
使用方法
例えばAmplifyのInitializeをFutreProviderに、状態をStateProviderに持たせようとするとこんな感じだろうか。
final amplifyConfiguredStateProvider = StateProvider<bool>((ref) => false); final amplifyConfigExecutorProvider = FutureProvider<bool>((ref) async { final _amplify = Amplify; _amplify.addPlugins([AmplifyAuthCognito()]); try { await _amplify.configure(amplifyconfig); final _amplifyConfiguredState = ref.watch(amplifyConfiguredStateProvider); _amplifyConfiguredState.state = true; return true; } on AmplifyAlreadyConfiguredException { return true; } catch (error, stack) { rethrow; } }); void main() { runApp(ProviderScope(child: AppWidget())); } class AppWidget extends ConsumerWidget { @override Widget build(BuildContext context, ScopedReader watch) { final AsyncValue<bool> _amplifyConfigExecutor = watch(amplifyConfigExecutorProvider); return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('Example')), body: Center( child: _amplifyConfigExecutor.when( data: (configured) => Text('$configured'), loading: () => const CircularProgressIndicator(), error: (error, stack) => Text('Error: $error')), ))); } }
所感
- 正直いまのところ何が嬉しいのかさっぱり分からない。
- アプリが大きくなってきたら恩恵を受けられるようになる?
- もしくはテストを書き始めたとき?
その他
- Exceptionの取り扱い等が雑なので修正しないと。。
- ConsumerWidgetの範囲を狭めればリビルドが早いらしい。設計時になるべくリビルド範囲を狭くするように設計したほうがよさそう。
- 他にもスタンダードになっている便利なライブラリの捜索をしたいところ。
Amplify-Flutterチュートリアルその2
モチベーション
引き続きFlutterAmplifyのチュートリアルやる
Amplifyサイトのチュートリアル
- なんかAWSのチュートリアルと書いていることががっつり違う。
- 書いてあることの正しさからして、Amplifyサイトのチュートリアルのほうがよさそう
- 役割によるファイル分割など、Flutterアプリ自体の作り方についてはAWSのチュートリアルのほうが参考になる
- とはいえ、それはそれで別で学べばいいところなので、基本的にAmplifyサイトのチュートリアルを参照するべき
アプリ雛形作成
私はAndroidStudioを使用しているため、ウィザードで作成した。
Amplifyインストール
npm install -g @aws-amplify/cli
Pinpoint作成
- Pinpointはマーケティング用ツールらしい
- イベントログを送って集計やマーケティングに使える
- デバッグログ収集にも手軽に使えるかな、と思ったがイベント中身の参照の仕方がわからない
- 1つ1つの中身詳細を見るにはKinesisに一度送ってS3に保存してから見る必要がありそう?
- 東京リージョン対応したのが最近だからか、Profileを東京リージョンにしていてもオレゴンリージョンに作成される。嫌なら修正を待つか、amplify push前にCF部分をいじるしかない
- でもそのリージョン指定部分はAmplifyが自動生成するところなので、更新するような動作を行ったときに毎回修正しないとだめかも
所感
- 流石にまだチュートリアル自体が短いのと、Amplifyをこうしたら組み込めますよ、という程度のものしかない
- Flutterアプリ作成自体の勉強が別途必要
- どこまでAmplifyの機能が使えるのかがまだ分かってない。AppSyncなんかはまだ使えないっぽい。
今日の一言
ようやく仕事が落ち着いてきた
Flutter-Amplifyチュートリアルやってる
状況
Next.js触ってみたりとか、いろいろ迷走している状況だが、やっぱりモバイルアプリ作りたいのもあってFlutterを見てみている。
モチベーション
- クロスプラットフォーム素敵
- 何なら将来的にはWebも対応するらしい
- Amplify用のSDKが新しく出たって!(AWSに慣れてしまってGCPいじれないマン)
- Googleのブラウザで動作するスクリプト言語への執念が見えるのがなんとなく素敵。
チュートリアル
Amplify公式のチュートリアルと、AWSが提供しているチュートリアルがある。現在私がやってみているのはAWS公式のほう。
https://aws.amazon.com/jp/getting-started/hands-on/build-flutter-app-amplify/
やってみている現状
- flutter用のamplifyライブラリの仕様がまだ破壊的変更多いため、修正が追いついていないようで、チュートリアルのコードそのままじゃ動かない
- Linterがないと落ち着かないので導入したらやはりチュートリアルのコードは警告がそこそこあって悲しみ
- dart言語はまだ闇が深いところ触ってないとは思うけどすごく分かりやすい
- 普段お仕事はWebとかバックグラウンド、インフラメインなので、自分で書いたものがスマホでアプリとして動いてるって新鮮
- Amplifyの構成自体はいっそCloudFormationやServerlessFrameworkで書かせてほしいと思うこともある
- でもフロントからの連携がどうなっているか分からないので迂闊にさわれない
- AndroidStudio(IntelliJ IDEA)の扱いになかなか慣れられない
- Flutterのデバッグツールの使い方に慣れられない、というより使い方がまだ全くわからない
今後やりたいこと
- 新しいものなだけあって、ネット上に記事が少なめ。でもやはり注目されているのか、新しいものの割には多い気がする
- せめて上記チュートリアルの補完記事を書いていきたい
- このままこのライブラリをしっかり追っていきたい
- で、実際問題、何つくろ
今日の一言
お仕事が忙しくてもブログ継続する能力が必要。
WSL2でのメモリ枯渇問題対処
モチベーション
- WSL2を使用して、勉強等を行っていると段々PCが重くなってくるためなんとかしたい。
原因
- 重くなっているときのタスクマネージャーを見れば一目瞭然。
- Vmmemというプロセスが大量のメモリを使用している。
対策など
参考サイト https://qiita.com/yoichiwo7/items/e3e13b6fe2f32c4c6120
この問題はWSL界隈ではずっと残り続けている問題児らしい。
- 根本解決にはいまだいたっておらず、暫定対策としてメモリ使用量を固定する方法が効果的とのこと
- %USERPROFILE%.wslconfigに以下のような設定を追加
[wsl2] memory=8GB swap=0
swap=0はSSD保護のため。
しかし・・
ホストPCがメモリ枯渇してにっちもさっちもいかない、という状況はなくなったが、WSLがものすごく重くなるという事象は変わらず。
結論
Macbookほしい
tmuxの導入
モチベーション
- 業務ではSSHで踏み台サーバ接続した際等に必須(放置してセッション切れたりしたときの保険)
- ローカルで起動するWSLだとそこまで恩恵はないかもしれないが、慣れているのもあって導入したい。
- ついでだから、Prefix等の操作感、見た目についてもちょっと調べて凝ってみたい
前提
- brew導入済み
tmuxのインストール
brewでインストールするだけ。
brew install tmux
設定ファイルテンプレートのコピー
cp /home/linuxbrew/.linuxbrew/opt/tmux/share/tmux/example_tmux.conf ~/.tmux.conf
コピーしてきた.tmux.confをお好みに従って編集する。私は下記の記事を参考にさせてもらって設定した。 - https://red-full-moon.com/tmux-2020/
fishの導入
モチベーション
かっこいいターミナル画面のために、以前は色々やっていたが管理しきれなくなって最初から、みたいなことが多いので、デフォルトでかなりいい感じという話のfishに乗り換えてみようと思った。
前提
fishインストール
brewでいっぱつ
brew install fish
fishをデフォルトシェルに変更
sudo echo `which fish` >> /etc/shells chsh
fisherを導入
fisherはfish用のプラグイン管理ツール。
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
とりあえず見た目をかっこよくする
fisher install ilancosman/tide
インストール後に、すぐに設定するか聞かれるので設定してしまう。
fish_config
お好きなカラースキーマを選択しましょう。私は割と気分ですぐ変えますがseaweedあたりがお気に入りです。
今日の一言
週末雨降ると釣りにいけなくてつらい。