たろすの技術メモ

Jot Down the Tech

ソフトウェアエンジニアのメモ書き

【2024年2月版】SwiftUIでiOS/Androidのデュアルプラットフォーム開発ができるSkipを触ってみた

※2024年2月時点の情報です。 概要 Skipについて 料金 開発に必要なもの 開発環境 Skipをインストール 余談(読み飛ばしてOKです) アプリプロジェクトを作成 まとめ 概要 先日X(旧Twitter)で以下のポストが話題になっていました。 I’m thrilled to announc…

fly.ioのタイムゾーンを変更

概要 先日Railsで開発したアプリをfly.ioにデプロイしたのですが、その際にタイムゾーンがAsia/Tokyo以外になってました(おそらくUTC)。その解決法の備忘録です。 解決 以下の方法で解決できました。 community.fly.io $ fly launch実行時に生成されるor元…

画像アップロード時にアスペクト比とサイズをチェックする方法

active storageをインストール $ rails active_storage:install $ rails db:migrate model, migrationを作成 $ rails g model Hoge $ rails db:migrate Modelを作成 # app/models/hoge.rb class Hoge < ApplicationRecord MAX_IMAGE_SIZE = 2 # 2MBまで has_…

画像アップロードフォームにサムネを表示する

概要 Railsで画像アップロードフォームを作成している時に、アップロードする画像を確認できるように表示する方法を調べました。 準備 Active Storageをインストール $ rails active_storage:install $ rails db:migrate ModelとMigrationを作成 $ rails g m…

Boolean型のカラムがテーブル内で2つ以上trueにならないようにするバリデーションの実装方法

概要 Railsで、enabledカラムがtrueのデータがテーブル内で1つだけという状況を担保したい状況があると思います。そういう時に実装するバリデーションについて書きます。 実装 class Hoge < ApplicationRecord validate :enabled_hoge_uniqueness private de…

Punditをテストする

前提 Punditの基本的な使い方等については割愛します。 rails v7.0.4 pundit v2.3.0 factory_bot_rails v6.2.0 rspec-rails v6.0.1 以下のPolicyをテストします。 # app/policies/hoge_policy.rb class HogePolicy < ApplicationPolicy def show? user.admin…

Textウィジェットの引数に長い文字列を渡してもコードを読みやすくする方法

dart.dev 上記のページで知りました。 Textウィジェットの引数に長い文字列を渡す場合、改行しないとファイルが横長になり読みにくいですよね。 Text('ERROR: Parts of the spaceship are on fire. Other parts are overrun by martians. Unclear which are …

Sidekiqを導入する方法

概要 ActionMailerでdeliver_laterするため、以下を参考にしながらSidekiq(とRedis)を導入したのでその備忘録です。 prabinpoudel.com.np gemを追加 gem 'sidekiq' gem 'redis' $ bundle installします。 Sidekiqを有効化 # config/application.rb config.ac…

Can't load Kernel binary: Invalid kernel binary format version.を解消する

stackoverflow.com ある時から$ flutter ~ コマンドを実行するとこのログが出るようになったので原因と解決方法を調べました。 開発環境 13.4.1(22F82) Intel Iris Plus Graphics 1536 MB $ fvm flutter --version Flutter 3.0.4 • channel unknown • unkn…

ActionMailerのメソッドへ変数を渡す2つの方法

概要 ActionMailerのメソッドで変数を受け取る方法は2つあります。一つはHogeMailer.with(arg:).fugaの形式、もう一つはHogeMailer.fuga(arg)の形式です。どんな違いがあるのか調べてみました。 前提 Rails v7 両者の違い HogeMailer.with(arg:).fugaの形式…

letter_openerを導入する

gemを追加 group :development do # 略 gem 'letter_opener' gem 'letter_opener_web' # 略 end インストール $ bundle install ルーティングを設定 # config/routes.rb mount LetterOpenerWeb::Engine, at: '/letter_opener' if Rails.env.development? Let…

GitHub ActionsのDangerでcouldn't find remote ref refs/heads/danger_base, danger_headエラー

はじめに ある日、Pull requestを作成した時に走るDangerが表題のエラーで落ちたので解決法を調べました。 実行コマンド $ bundle exec danger --fail-on-errors=true エラーログ(抜粋) fatal: couldn't find remote ref refs/heads/danger_base fatal: co…

【Flutter】BitriseでFirebase Test LabへUploadしIntegration Testする方法

以下の記事を参考に、「GitHubで作成したFlutterリポジトリでPull Requestを作成した時にBitrise経由でFirebase Test LabでIntegration Testを行う方法」について調べたので、その備忘録です。 adityadroid.medium.com はじめに Firebase Test Labにapkファ…

Flutter v3.7.0ざっくりまとめ

※この記事はFlutter v3.7.0ざっくりまとめの記事をエクスポートしたものです。内容が古くなっている可能性があります。 以下の記事をざっくりまとめました。 medium.com Material 3サポートの強化 該当PR↓ github.com 使用するには以下のコードを記述する Ma…

【個人開発】同棲カップル・夫婦のための支出管理アプリを作った話

※この記事は【個人開発】同棲カップル・夫婦のための支出管理アプリを作った話の記事をエクスポートしたものです。内容が古くなっている可能性があります。 概要 「ファミコスト」という、同棲カップルや夫婦など2人で支出管理している方向けのモバイルアプ…

Flutter v3.0.5 × mobile_scanner v3.0.0-beta.2でビルドする為の回避策

※この記事はFlutter v3.0.5 × mobile_scanner v3.0.0-beta.2でビルドする為の回避策の記事をエクスポートしたものです。内容が古くなっている可能性があります。 概要 Flutter v3.0.5で開発中のプロジェクトでmobile_scannerのBeta版であるv3.0.0-beta.2を使…

AppBundleで配信したアプリでGoogleSignInできない

※この記事はAppBundleで配信したアプリでGoogleSignInできないの記事をエクスポートしたものです。内容が古くなっている可能性があります。 概要 ローカルビルドやストア版だとGoogleSignInできるのにAndroidAppBundle(以下AAB)形式のテスト配信版ではできな…

BitriseでSecret変数を取り込んだ.envを生成する

※この記事はBitriseでSecret変数を取り込んだ.envを生成するの記事をエクスポートしたものです。内容が古くなっている可能性があります。 概要 .envに記載する環境変数(チームメンバー閲覧可)と秘匿情報(特定のメンバーのみ閲覧可)を別で管理したい場面…

Flutter × FirebaseでOGP付きURLを生成する

※この記事はFlutter × FirebaseでOGP付きURLを生成するの記事をエクスポートしたものです。内容が古くなっている可能性があります。 OGPとは OGP とは Open Graph Protocol (オープン・グラフ・プロトコル)の略称です。 Facebook、TwitterなどのSNS上でシェ…

エンジニアになる前の自分に伝えたい心構え・知識

※この記事はエンジニアになる前の自分に伝えたい心構え・知識 - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 概要 コンビニ店員からエンジニアに転職して半年ほど経過しました。まだまだ技術・知識不足を実感する日々で…

Splash Screen(起動画面)を直感的に作る方法

※この記事は【Flutter】【Android】Splash Screen(起動画面)を直感的に作る方法 - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 はじめに FlutterでiOS / AndroidのSplash Screenを作ろうとしたところ、Android側でかな…

【Flutter】qr_mobile_visionでiOSのカメラ権限を不許可にするとクラッシュするバグ

※この記事は【Flutter】qr_mobile_visionでiOSのカメラ権限を不許可にするとクラッシュするバグ - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 開発環境 macOS Catalina 10.15.5 Android Studio 3.6.3 Flutter 1.21.0-5…

Firestore × iOS(Swift)【環境構築編】

※この記事はFirestore × iOS(Swift)【環境構築編】 - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 Firestoreでプロジェクトを作成 「プロジェクトを追加」ボタンを押します。 名前を付けます。(今回は適当に付けました…

storyboardで配置したUIButtonの下にコードで位置指定したUIButtonを配置する

※この記事はstoryboardで配置したUIButtonの下にコードで位置指定したUIButtonを配置する - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 今までUILabelやUIButtonをコードで表示する事が怖くて(?)分かりやすいstoryb…

CustomCellに置いたButtonの選択状態によってTableViewの処理を変える

※この記事はCustomCellに置いたButtonの選択状態によってTableViewの処理を変える - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 開発環境 Xcode 11.3 Swift 5.0 UIButtonのextensionを作る // CustomCell.swift extens…

Failed to get FirebaseApp instance. Please call FirebaseApp.configure() before using Firestoreのエラーを解消

※この記事は[Swift5][Firestore]'Failed to get FirebaseApp instance. Please call FirebaseApp.configure() before using Firestore'のエラーを解消 - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 はじめに iOSアプリ…

CustomCellにsegueを設定する

※この記事はCustomCellにsegueを設定する - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 ①CustomCellを作成する ②TableViewController.swiftにCustomCellを登録する CustomCellのIdentifierを仮に'CustomCell'としてお…

RSSデータの更新日を取得してTableViewで新しい順に並び替える

※この記事はRSSデータの更新日を取得してTableViewで新しい順に並び替える - Qiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 はじめに エンジニアブログのまとめアプリを作っている時に、ブログの更新日を取得して順番に並…