方言を話すおしゃべり猫型ロボット『ミーア』をリリースしました(こちらをクリック)

Go

サーバー(Go)

【Go言語】におけるテスト駆動開発の実践:マイグレーションファイル作成からSQLインジェクション対策まで

Go言語のテスト駆動開発をマイグレーションファイル作成、SQLインジェクション対策、dockertestを使った実際のテスト方法を含めて記載。testutils.RunMySQLContainer 関数を呼び出して、MySQLコンテナを起動し、データベースに接続する。
サーバー(Go)

【Go】タスクキューとクーロンを使った並列処理の実装

今回は、本日の天気情報を音声でお知らせするという機能に関して、ユーザーがアプリで設定した天気お知らせ時刻の1時間前に、該当の天気情報の音声ファイルを生成してAWS S3に保存するという機能を作成。go言語でタスクキューを使った並列処理で実装を進める。
AI

【Gemini Pro API】ChatGPTより80倍安い!? ・Go言語での実装方法

計算間違っているのでは?と疑ってしまったのだが、Gemini Pro APIの方がGPT3.5-turboと比較して80倍近く安い!OpenAIが課金単位としている「トークン」では割高になりがちな日本語では、「文字」でカウントしてくれるGeminiは割りが良い
アプリ(Flutter)

【Flutter × Go】眠りモードに至るまでの時間をアプリで設定して、サーバーに反映させる。

以前、ESP32のlight sleep mode機能を使って、ミーアをおやすみモードに移行する部分のコードを作成した。この時は、PlatformIOに直接スリープモードへの移行時間を設定していたが、ユーザーのアプリで移行時間を設定できるように変更する。
アプリ(Flutter)

【Flutter】Apple HealthKit API から行動ログを取得し、Gemini APIを元にアドバイス文を生成:実装編

今回は、Flutterアプリからサーバーにヘルスデータを送信し、Gemini APIを通じてアドバイスのテキスト(例:昨日はよく眠れたみたいですね。この調子!)を生成する部分を実装したい。1日の総歩数と総運動時間を出力するように計算ロジックを追加。
サーバー(Go)

【gRPC】.protoファイルを作成し、コンパイルしてGo言語で使用するまで

Protocol Buffers(protobuf)は、gRPCで使用されるインターフェース定義言語(IDL)。JSONやXMLなどの伝統的なフォーマットに比べて、より小さいサイズで、より速い速度でデータを伝送できる。.protoファイルを作成し、メッセージとgRPCメソッドを定義する
サーバー(Go)

【Flutter × Go × gRPC】OTAアップデート:Firmware更新をgRPCでアプリ通知

AWS s3のfirmwareディレクトリに新しいFirmwareバイナリを開発者がバージョン指定してアップロードする。各ユーザーのFirmwareのバージョンと開発者がアップロードした最新バージョンを比較し、異なる場合にFlutterアプリに「新しいFirmwareをインストール可能です」と通知する。
組み込み(C++ / ESP32)

【ESP32】OTAアップデート:MQTTとAWS IoTデバイスシャドウを利用したファームウェア更新

ユーザーがアップデートを受け入れると、アプリがサーバーにAPIリクエストを送信し、サーバーがAWS IoTのデバイスシャドウに変更を反映させる。デバイスはMQTTを通じてこの変更を検知し、ファームウェアのダウンロードとアップグレードを実行する。
サーバー(Go)

【Go】静的型付け・型推論・関数・構造体・レシーバ・Go Modules・Packages・Imports

Go言語では、関数はfuncキーワードで始まり、引数と戻り値の型が必要(静的型付け)。変数名の「後ろ」に型名を書く。Go の構造体はクラスと異なり、メソッドは構造体の定義の外部で定義され、構造体とメソッドは「レシーバ」を介して関連付けられる。
アプリ(Flutter)

【Flutter × Go】退会処理:Firebase Auth削除時の「requires-recent-login」エラー対処法

Firebase Authを使ったユーザー退会処理時の「requires-recent-login」エラーの対処法について記載。このエラーは、セキュリティ上の理由で、ユーザーが最近ログインしていない場合に発生する。ユーザーを退会させる前に、再認証(reauthentication)させる必要がある。