サーバー(Go)

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で返ってくるオブジェクトのうち、テキスト部分を取得する。
サーバー(Go)

【Docker】ポートマッピング。port番号がたくさん登場するので整理してみた。

Docker化してコンテナ内部のサービスにアクセスする場合は、Dockerコンテナ自体がホストマシンからも独立した環境なので、コンテナportを介さないとアクセスができない。Docker port mappingの設定方法は、docker runコマンドを使用する場合とdocker-compose.ymlを使用する場合の2つがある。
サーバー(Go)

【Docker】DockerFile・docker-compose.yml・Dockerコマンド

Dockerは、従来の仮想マシンよりも軽量で効率的なコンテナを用いて仮想化(パソコンの中に仮想パソコンを起動する)を実現。Dockerコンテナは、Dockerイメージから生成された実行時の環境です。コンテナはイメージを基にして起動し、アプリケーションを実行するための隔離された環境を提供する。
AI

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

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

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

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