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

開発・デザイン

サーバー(Go)

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

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

【Python/Flask】仮想環境構築方法・debug・相対絶対import・f文字フォーマット

通常Pythonのバージョンは、システムにインストールしたひとつのPythonバージョンを利用する。ただし、中にはPythonライブラリの更新が止まっていて、少し前のPythonバージョンしか対応していないライブラリも存在する。その場合、そのPythonライブラリに合わせ、システムのPythonバージョンをダウングレードさせるのかはとても手間。
AI

【ChatGPT×LINE】リッチメニューで複数方言対応:方言切り替え記憶を保存

ユーザーが方言を選択すると、その選択をFirestoreデータベースに保存する。これにより、ユーザーの方言設定をセッション間で保持できる。ユーザーからの各テキストメッセージを処理する際に、データベースからユーザーの現在の方言設定を取得し、それに基づいて応答を生成する。
AI

【ChatGPT×LINE】リッチメニューの画像をCLIからアップロードする方法

LINEのリッチメニューに、各方言のアイコンを用意して、ユーザーがアイコンをクリックしたら、その方言バージョンの会話に切り替えられるように拡張する。ユーザーが設定した方言に応じたプロンプトを呼び出して、OPENAI_APIに渡す。
アプリ(Flutter)

【Flutter:hooks_riverpod × Freezed】APIからのJSONレスポンスをもとにユーザー情報表示

hooks_riverpodとFreezedを使用して、APIからのJSONレスポンスをもとにFlutterアプリでユーザー情報を表示する一連の流れをまとめる。api_client.dart でAPIエンドポイント(api_path.dartで定義)からデータを取得し、そのJSONオブジェクトを UserResponse クラスを使用してDartオブジェクトに変換する。この変換は user_repository.dart で行われる。そして、変換されたユーザーデータをRiverpodプロバイダーを通じてUI層(user_view.dart)で表示する。
Web(Python)

【WordPress】検索結果が反映されない問題の解消:CocoonテーマとJetpackプラグインとの競合

このブログは、Wordpressの無料テーマ「Cocoon」を使っている。てっきり機能していたと思った、ブログ内検索機能が機能していなかったので原因調査。WordPressのデバッグモードを有効にしてエラーログを確認する。CocoonテーマとJetpackプラグインとの競合が原因だった。
開発・デザイン

【ESP32】電源回路にラッチングスイッチを取り付ける

ラッチングスイッチを一度押すと、そのスイッチは押された状態(ON)を保持し、電流を流し続ける。スイッチを再度押すと、スイッチは元の状態(OFF)に戻り、電流を遮断する。垂直マウントできるラッチングスイッチをLCSCで探す。
アプリ(Flutter)

【flutter × gRPC】音声ファイルダウンロード中の文言をランダムに表示する

ユーザーへの待ち時間を対策したいと思い、そういえば、Nintendo Switchでゼルダの伝説をプレイしていた時に、ローディング中に、技や小ネタ集をランダムテキスト表示していて飽きさせない工夫をしていたなと思い、それを踏襲することにした。
デザイン(Figma)

【UIデザインの教科書】UI/UXの違い・階層と構造・割り込み・スクロールとページング

UXと比較すれば、UIの扱う範囲は狭いが、UXの中でも最も大事な「使う」という領域を担っている。UIが担う部分はUXの中核。階層は、深く狭くより広く浅く。広く浅い方が目的の情報に辿り着きやすく、ラベル(カテゴリ)名を具体的、排他的に決めやすい。
アプリ(Flutter)

【Xcode】CococaPods・Podコマンド・ビルドエラー対応

iPhoneアプリを開発していると、必ず一度は遭遇するXcodeのビルドエラー。ビルドエラー対応についてまとめておく。pod installはPodfile.lockを更新せず、pod updateはPodfile.lockファイルを更新する。