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

開発・デザイン

サーバー(Go)

【Rails7】動的なカスタムエラー画面を作成し、共通デザインを適用(400/401/403/404/429/500/503)

Railsのエラーページはデフォルトでは、静的ファイルでpublicディレクトリに配置されているが、今回は動的なカスタムエラー画面を作成し、共通のデザインを適用する。これにより、ユーザーがアクセスした際に発生するエラーに応じて、適切なエラーページを表示することができる。
アプリ(Flutter)

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

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

【BigQuery】中間テーブルを作成して、コスト削減し、クエリ処理速度を速める

GA4からエクスポートされたデータには、過去のデータも含まれており、これらのデータは時間が経過しても変化しない。この不変の特性を利用して、過去のデータを中間テーブルに保存し、日々のバッチ処理ではこの中間テーブルから必要なデータを取得することが、コスト削減と処理速度の向上につながる。
アプリ(Flutter)

【AppleHealth Kit】連携状態の取得がiOSのプライバシーの観点からややこしすぎた

iOS では、Apple のプライバシーポリシーにより、HealthKit はアプリが読み取りアクセス権を持っているかどうかをアプリ自体に知らせない(外部に開示しない)。ユーザーのプライバシーを保護するための措置だが、開発者はこのメソッドを信頼してユーザーの許可状態を確認することができないという制約がある。
Web(Python)

【FullCalendar】でGoogleカレンダーを埋め込み表示して装飾する

googleカレンダーの埋め込みコードを利用した場合、カレンダーの見た目が固定でカスタマイズできないが、FullCalendar Javascriptライブラリを使えば、サイトにキレイな見た目のカレンダーを設置できる。GoogleカレンダーのAPIキーとIDを取得する。
アプリ(Flutter)

【Flutter】flutter_background_serviceパッケージで、アプリからサーバに定期POST実行。

前回までの実装だと、ユーザーが「連携開始する」ボタンを押すたびに、健康データをサーバー側にPOSTリクエスト送る仕様になっているので、Flutterアプリで毎日特定の時間にバックグラウンドで定期的にPOSTリクエストを実行する方法に変更したい。flutter_background_serviceパッケージを利用する。
Web(Python)

【ネットワーク】LAN/WAN, TCP/IP, IPアドレス, サブネットマスク, NAT, CIDR表記, DNS, ポート番号

プライベートIPアドレスは、ローカルネットワーク内で使える、自分たちで勝手に決めていいIPアドレス。異なるローカルネットワークで同じプライベートIPアドレスを使用していても、グローバルIPアドレスが異なれば、インターネット上での通信が混同することはない。プライベートIPアドレスは、ローカルネットワーク内でのみ一意であれば良い
サーバー(Go)

【DNS設定】お名前.comのドメインをConoHa WINGで使う方法

お名前.comで取得したドメインをConoHa WINGのサーバーに割り当て、ウェブサイトがそのドメインからアクセス可能になるよう設定する。ドメイン名をIPアドレスに変換するために使用されるネームサーバーは、実際にはIPアドレスを直接持ってるが、一般的にはそのドメイン名で参照される。
アプリ(Flutter)

【Flutter】WebViewでモーダル表示してスクロール可能にする方法

アプリ内にユーザーの設定画面があり、その中に、利用規約・プラポリの項目を用意しているので、この項目をタップした時にWebViewで各内容が表示され、閉じることもできるようにする。今回はシンプルな実装で事足りるので、webview_flutterを導入する。
組み込み(C++ / ESP32)

【PlatformIO】頭を何回か連続で撫でると最初デレから段階的に嫌がるようにする。

おしゃべり猫型ロボット「ミーア」は頭に取り付けたTTP223のタッチセンサーを介して、頭を撫でると音声を再生できる。この仕組みを利用して、何回か連続で頭を撫でると、最初は嬉しがるが、徐々に警戒し始め、撫ですぎると、嫌がってそっぽを向くという機能を実現したい。