開発・デザイン 【gRPC】.protoファイルを作成し、コンパイルしてGo言語で使用するまで Protocol Buffers(protobuf)は、gRPCで使用されるインターフェース定義言語(IDL)。JSONやXMLなどの伝統的なフォーマットに比べて、より小さいサイズで、より速い速度でデータを伝送できる。.protoファイルを作成し、メッセージとgRPCメソッドを定義する 2024.04.06 2024.05.19 開発・デザイン
開発・デザイン 【Flutter × Go × gRPC】OTAアップデート:Firmware更新をgRPCでアプリ通知 AWS s3のfirmwareディレクトリに新しいFirmwareバイナリを開発者がバージョン指定してアップロードする。各ユーザーのFirmwareのバージョンと開発者がアップロードした最新バージョンを比較し、異なる場合にFlutterアプリに「新しいFirmwareをインストール可能です」と通知する。 2024.04.10 2024.05.16 開発・デザイン
開発・デザイン 【Flutter × Go × gRPC】アプリ強制アップデート機能の実装(画面ロック) 「Flutter Firebase アプリアップデート」で検索すると、RemoteConfigを使った方法と、FirebaseDetabaseを使った方法の大きく2種類がヒットした。ただし、今回は、Flutter×Go×gRPCを使って自前で強制アップデート機能を実装する。 2024.05.16 開発・デザイン
開発・デザイン 【Flutter】Apple HealthKit API から行動ログを取得し、Gemini APIを元にアドバイス文を生成:実装編 今回は、Flutterアプリからサーバーにヘルスデータを送信し、Gemini APIを通じてアドバイスのテキスト(例:昨日はよく眠れたみたいですね。この調子!)を生成する部分を実装したい。1日の総歩数と総運動時間を出力するように計算ロジックを追加。 2024.02.23 2024.05.11 開発・デザイン
開発・デザイン 【Go】タスクキューとクーロンを使った並列処理の実装 今回は、本日の天気情報を音声でお知らせするという機能に関して、ユーザーがアプリで設定した天気お知らせ時刻の1時間前に、該当の天気情報の音声ファイルを生成してAWS S3に保存するという機能を作成。go言語でタスクキューを使った並列処理で実装を進める。 2024.01.18 2024.05.11 開発・デザイン
開発・デザイン 【Flutter × Go】眠りモードに至るまでの時間をアプリで設定して、サーバーに反映させる。 以前、ESP32のlight sleep mode機能を使って、ミーアをおやすみモードに移行する部分のコードを作成した。この時は、PlatformIOに直接スリープモードへの移行時間を設定していたが、ユーザーのアプリで移行時間を設定できるように変更する。 2024.01.26 2024.05.11 開発・デザイン
開発・デザイン 【ESP32】OTAアップデート:MQTTとAWS IoTデバイスシャドウを利用したファームウェア更新 ユーザーがアップデートを受け入れると、アプリがサーバーにAPIリクエストを送信し、サーバーがAWS IoTのデバイスシャドウに変更を反映させる。デバイスはMQTTを通じてこの変更を検知し、ファームウェアのダウンロードとアップグレードを実行する。 2024.04.17 2024.05.11 開発・デザイン
開発・デザイン 【Flutter × Go】退会処理:Firebase Auth削除時の「requires-recent-login」エラー対処法 Firebase Authを使ったユーザー退会処理時の「requires-recent-login」エラーの対処法について記載。このエラーは、セキュリティ上の理由で、ユーザーが最近ログインしていない場合に発生する。ユーザーを退会させる前に、再認証(reauthentication)させる必要がある。 2024.05.07 開発・デザイン
開発・デザイン 【Go】nullを許容するDBカラムに対するdate型の値の扱い nullを許容するDBカラムに対するdate型の値を、golangで処理する場合の方法を3つ紹介。ポインタでnullを許可する。sql.NullTimeを使う場合は、nullを判定するために、Validフィールドを介して条件分岐が必要。[]uint8 を使う場合は、バイトスライス→文字列→time.Timeオブジェクトと変換する 2024.05.06 開発・デザイン
開発・デザイン 【Go×FCM】定期的にFCMへPush通知を送信する機能を実装:サーバー編 Go言語でサーバーから定期時刻にFCMにPush通知を送信する機能を実装する。FCMにPush通知を実装するのに必要な引数は下記4つ:OAuth 2.0 トークン(HTTPリクエストヘッダーのAuthorization)・デバイスのFCMトークン・タイトル・本文 2024.05.04 2024.05.06 開発・デザイン