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

サーバー(Go)

アプリ(Flutter)

【flutter_sound × Go】音声ファイルをAPI経由でAWS S3にアップロード

今回は、アプリでflutter_soundパッケージで録音した音声ファイルをAPI通信でアプリからサーバー(AWS S3)にアップロードする部分を実装したいと思う。アップロードされた音声ファイルのS3パスをデータベース内のフレーズに関連付け、voice_pathフィールドを更新する。
アプリ(Flutter)

【開発】大きい機能を開発してみての振り返り:機能開発とテストの優先順位

当初は、1ヶ月くらいかかるだろうと想定していたものの、結果的には半分くらいの日数で開発を終えることができ(現在PRレビュー待ち)、それ自体は良かったのだが、今回大きい機能を開発してみての振り返り(マインドセットと、どう開発を進めていくのが効率的か)を備忘録として記載しておこうと思う。
サーバー(Go)

【AWS】S3署名付き(presigned)URLを使用して、音声合成ファイルのアクセス制限を管理する方法

プリサインURLは、クラウドストレージサービス(例:Amazon S3)内のオブジェクトへの一時的なアクセスを提供するURL。このURLは特定の権限と有効期限で署名され、クラウドストレージの資格情報に直接アクセスすることなく、安全にファイルをダウンロードまたはアップロードすることができる。
サーバー(Go)

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

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

【オブジェクト指向でなぜつくるのか?】OOP, クラス, 型付け, 継承, ポリモーフィズム, パッケージ, 例外, ガベージコレクション, コンパイラ, インタプリタ, 中間コード, メモリ領域

2022年に購入して積読だった「オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識」を最近読んだので、まとめ記載。プログラミング言語の歴史の部分が、とてもわかりやすかった。OOPでは新しく3つの要素(クラス・ポリモーフィズム・継承)を導入した。
サーバー(Go)

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

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

【Flask】アプリをDocker化して、Artifact RegistryにPushしてCloud Runにデプロイする方法

Google CloudにCLIでログインし、Dockerイメージをローカルにビルドし、DockerでArtifact RegistryにPushする。ちなみに、Container Registryは非推奨になった。Google Cloud でコンテナの管理を始めるには、Artifact Registry を使用する。
アプリ(Flutter)

【Go × Echo】バックエンドで天気予報情報を取得し、Flutterアプリに表示する

今までは、アプリ側のみでOpenWeatherMapのAPIを使用して、指定された緯度と経度を使用して天気情報を取得しアプリ画面に表示していたが、今回はGo言語のEchoフレームワークによるバックエンド経由に変更する。
AI

【ChatGPT × Cloud Functions × Firestore】会話記憶するLINE Bot開発:環境設定編

ユーザーがLINEにメッセージを送信すると、その内容はLINEのWebhookによってCloud Functionsに転送され、Cloud Functionsで設定した関数でOpenAI APIを通じてChatGPTを利用してユーザーのメッセージに対する応答が生成される。
AI

【ChatGPT × Cloud Functions × Firestore】会話記憶するLINE Bot開発:コード実装編

OpenAIのAPIは定期的に更新され、変更されるので、最新のAPI呼び出し方法を公式サイトで確認する必要あり。bot作成して動かないときの原因の1つは、OpenAIのAPIの呼び出し関数のことがある。Chat Completionsで返ってくるオブジェクトのうち、テキスト部分を取得する。