組み込み(C++ / ESP32) 【C++】ポインタと参照の違い・値渡しと参照渡し・関数ポインタ・スマートポインター ポインタはアドレス(メモリ空間上の位置)を格納する変数。変数宣言を行う際に、変数用のメモリが確保され、メモリ空間上に配置される。しかし、変数宣言直後はポインタには不定値が格納されており、どこを指しているか分からない状態。変数名の前に `&` 記号をつけることで、その変数のアドレスを取得できる。 2024.04.22 2024.07.01 組み込み(C++ / ESP32)開発・デザイン
アプリ(Flutter) 【ESP32 × Flutter】Wi-Fiスキャン結果をBLEでチャンク分割送信する方法 ESP32とFlutter(flutter_blue_plus)を利用してWi-Fiスキャンの結果をBLEを通じてスマートフォンに分割送信する方法を記載。BLEのNotify機能を使用して、大きなデータを小さなパケットに分け、受信したデータを再構成する。 2024.04.26 2024.07.01 アプリ(Flutter)組み込み(C++ / ESP32)開発・デザイン
組み込み(C++ / ESP32) 【ST7735】TFT LCDの描画問題解決ガイド:Green Tabの設定方法 ST7735 TFT LCDディスプレイで遭遇した描画問題とその解決策について記載。ST7735ディスプレイは同じ基本チップを使用しながらも、異なるメーカーや生産バッチによって、細かな仕様の違いがあるため、"Green Tab"、"Red Tab"、"Black Tab" など多くのバリエーションが存在する。 2024.04.27 2024.07.01 組み込み(C++ / ESP32)開発・デザイン
アプリ(Flutter) 【Flutter】トップ画面に日替わりのGIF画像とテキストを表示する。 Flutterプロジェクトで画像やその他のアセットを使用する際には、それらをpubspec.yamlに記載してFlutterに知らせる必要がある。assets/images配下にGIF画像を配置して、それをpubspec.yamlに記載する。 2024.04.29 2024.07.01 アプリ(Flutter)開発・デザイン
アプリ(Flutter) 【Flutter × Go】退会処理:Firebase Auth削除時の「requires-recent-login」エラー対処法 Firebase Authを使ったユーザー退会処理時の「requires-recent-login」エラーの対処法について記載。このエラーは、セキュリティ上の理由で、ユーザーが最近ログインしていない場合に発生する。ユーザーを退会させる前に、再認証(reauthentication)させる必要がある。 2024.05.07 2024.07.01 アプリ(Flutter)サーバー(Go)開発・デザイン
サーバー(Go) 【Go】nullを許容するDBカラムに対するdate型の値の扱い nullを許容するDBカラムに対するdate型の値を、golangで処理する場合の方法を3つ紹介。ポインタでnullを許可する。sql.NullTimeを使う場合は、nullを判定するために、Validフィールドを介して条件分岐が必要。[]uint8 を使う場合は、バイトスライス→文字列→time.Timeオブジェクトと変換する 2024.05.06 2024.07.01 サーバー(Go)開発・デザイン
サーバー(Go) 【Go×FCM】定期的にFCMへPush通知を送信する機能を実装:サーバー編 Go言語でサーバーから定期時刻にFCMにPush通知を送信する機能を実装する。FCMにPush通知を実装するのに必要な引数は下記4つ:OAuth 2.0 トークン(HTTPリクエストヘッダーのAuthorization)・デバイスのFCMトークン・タイトル・本文 2024.05.04 2024.07.01 サーバー(Go)開発・デザイン
組み込み(C++ / ESP32) 【ESP32】ハードウェアトリガーでファームウェアを初期化する方法 ESP32でTTP223タッチセンサーによるハードウェアトリガーを用いたファームウェア初期化の手順を記載。PlatformIOとTFT_eSPIを活用して、セーフモードでのディスプレイを利用した状態表示やOTAアップデートの実行方法について記載。 2024.05.11 2024.07.01 組み込み(C++ / ESP32)開発・デザイン
アプリ(Flutter) 【Flutter × Go × gRPC】アプリ強制アップデート機能の実装(画面ロック) 「Flutter Firebase アプリアップデート」で検索すると、RemoteConfigを使った方法と、FirebaseDetabaseを使った方法の大きく2種類がヒットした。ただし、今回は、Flutter×Go×gRPCを使って自前で強制アップデート機能を実装する。 2024.05.16 2024.07.01 アプリ(Flutter)サーバー(Go)開発・デザイン
サーバー(Go) 【Protobuf】Varintエンコーディングの仕組みとフィールド番号の重要性 プロトコルバッファ(Protocol Buffers、protobuf)は、構造化データのシリアライズ形式で、Googleによって開発された。protobufは、XMLやJSONよりも効率的にデータをシリアライズし、小さいメッセージサイズと高速なパーシングを実現する。 2024.05.19 2024.07.01 サーバー(Go)開発・デザイン