とある2日間に起こったトラブル

本記事は架空の出来事を基にしたフィクションです。実在の企業・団体・個人とは一切関係ありません。

事件から一年がたった。
ここに、あの2日間に起こった出来事の一部をまとめる。

前置き

当社は自社サービスを運営している。
サービスで使用するソフトウェアシステムの開発・保守を協力会社に依頼していた。
デプロイメントはCI/CDパイプラインを通じて自動化されており、本番環境へのリリースは常にビルド済みのコンテナイメージを使用する運用となっていた。

時系列

12月11日

[当社・協力会社] ミーティングを行い、翌日のリリースについて確認を行った。

リリース準備は万端だ

12月12日

13:19 [当社→協力会社] リリース作業が終わってもよい時間になっても協力会社から連絡がないため、リリース作業の進捗を確認する
13:23 [協力会社→当社] リリース内容を問い合わせ

すでに事前の合意内容と齟齬が生じていた。昨日のミーティングは何だったのか?

13:43 [当社→協力会社] リリース内容を回答する
13:47 [協力会社] リリースを開始する
14:00 [協力会社→当社] リリースについて問い合わせる

「いまさら?」という質問で驚く。事前にリリース準備をしていれば不要な問い合わせだった。

〜ちょっとごたつくが省略〜

15:32 [協力会社→当社] リリース完了を報告
15:33 [当社→協力会社] 不具合時の前バージョンへの切り戻しの準備を依頼する

今までの経験から、リリースがうまくいかない可能性は十分にある。対策に余念がない。

15:35 [当社] 不具合を確認

ある意味で予想通りである

15:38 [当社→協力会社] 前バージョンへの切り戻しの開始を依頼する

ここから始まる

15:43 [協力会社→当社] 前バージョンへの切り戻しを承諾する
15:51 [協力会社→当社] エラーの原因が判明したと報告し、本番環境の動作確認を依頼する

前バージョンへの切り戻しを依頼しているにもかかわらず、なぜエラー調査や動作確認の話になるのか理解できなかった。

15:53 [当社→協力会社] 本番環境のバージョンを確認する
15:54 [協力会社→当社] 新バージョンであることを報告

前バージョンへの切り戻しが実施されていなかったことが判明!
前バージョンへの切り戻しの代わりに、本番環境でエラー原因の調査を行っていた!!

15:55 [当社→協力会社] 再び前バージョンへの切り戻しを依頼する
15:58 [協力会社→当社] 前バージョンへの切り戻しを承諾

この判断の遅れによるタイムロスは非常に大きかった。

〜このあと大変なことになるが公開できない〜

12月13日

9:59 [協力会社] リリース作業を開始する
10:12 [協力会社→当社] リリース完了を報告
11:37 [当社] 検証作業を完了する

これまでの経緯もあり、慎重に検証を行った。
これでリリースの失敗はあり得ない。誰もがそう思った。

14:55 [当社] 問題を発見する。社内で緊急に対応を協議する

午前中に検証を行い、正常に動作することを確認していた機能が動作しない。
数時間前に動作していた機能が、なぜ突然動かなくなるのか。
慎重に検証を行っていたため、協力会社の作業手順そのものに問題があるとは考えていなかった。

〜このあと大変なことになるが公開できない〜

協力会社の報告書

本番リリースの検証完了後、本番環境にSSH接続してDockerコンテナ内のソースコードを直接編集し、不要と判断した関数を削除したところ、当該関数が使用中であったことが判明しました。

最後に

現在では開発・運用はすべて社内で行っており、
当時からすると信じられないほど安定したリリースができるようになっています。

Windows 11でWin+Spaceキーの入力言語切り替えを無効化する方法

Windows 11では、Win+Spaceキーのショートカットで入力言語が切り替わる仕様となっています。
開発作業時に誤って押下してしまい、作業が中断されるケースがあります。
本記事では、PowerToysを活用してこのショートカットを無効化する手順を紹介します。

前提条件

本手順を実施するには、Microsoftの公式ツール「PowerToys」が必要です。
未導入の場合は、Microsoft公式サイトまたは Microsoft Store からインストールをしてください。

設定手順

1. PowerToysの起動

Windowsのスタートメニューから「PowerToys」を検索し、アプリケーションを起動します。

2. Keyboard Managerの選択

PowerToysのウィンドウ左側のナビゲーションメニューから「Keyboard Manager」を選択します。

3. Keyboard Managerの有効化

画面上部にある「Keyboard Managerを有効化する」トグルスイッチを「オン」に設定します。

4. ショートカットの再マップ

「ショートカットの再マップ」ボタンをクリックし、設定画面を開きます。

5. 無効化の設定

ショートカットの再マップ画面で以下の操作を行います。

  1. 「ショートカットの追加」をクリック
  2. 「物理ショートカット」欄に「Win」と「Space」を入力
  3. 「マップ先」のドロップダウンから「Disable」を選択
  4. 「OK」ボタンをクリックして設定を保存



6. 動作確認

設定完了後、Win+Spaceキーを押下しても入力言語が切り替わらないことをご確認ください。

補足事項

  • 設定は即座に反映されるため、システムの再起動は不要です。
  • 設定を元に戻す場合は、作成した再マップ設定を削除してください。

おわりに

本設定により、意図しない言語切り替えによる作業中断を防止できます。
現在まで安定して動作しており、快適に利用できています。

参考資料

本記事の作成にあたり、以下のサイトを参考にさせていただきました。

Windowsアプリで「日本国内専用」と表示される問題の解決策

問題の発生要因

Windowsのコントロールパネルや設定アプリでリージョン設定を日本にしているにもかかわらず、特定のアプリケーションを起動すると「日本国内専用」といったメッセージが表示され、利用できない場合があります。

この問題は、アプリケーションがWindowsのレジストリに格納されたインストール言語の値を参照して、日本語環境かどうかを判断しているために発生します。

解決策:レジストリの確認と修正

1. InstallLanguage レジストリ値の確認

この問題を解決するには、レジストリのInstallLanguageというエントリが日本語(0411)に設定されているかを確認します。

  1. レジストリエディターを起動します。
  2. 以下のパスに移動します。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language
  3. InstallLanguageの値を確認します。

2. 値の修正方法

InstallLanguage0411以外の値になっている場合

  1. レジストリエディタで値を0411に変更する方法もありますが、システムの安定性を考慮すると推奨されません。
  2. 推奨方法: 日本語版 Windows の再インストールを実行して、確実に日本語環境を構築することをお勧めします。

注意事項

  • レジストリの直接的な編集は、システムに深刻な問題を引き起こす可能性があるため、慎重に行う必要があります。
  • InstallLanguageは、Windowsの初期インストール時に設定される言語識別子です。
  • コントロールパネルや設定アプリで言語設定を変更しても、このレジストリの値は変更されません。
  • レジストリの編集よりも、Windowsを再インストールして日本語環境を導入する方が、より安全かつ確実な方法です。

FlutterアプリのInAppWebViewがiOSシミュレータでSafariのWebインスペクタに表示されない問題とその対処法

問題の概要

Flutter + InAppWebViewで構築したiOSアプリをデバッグしようとしたところ、
Safariのメニュー「開発」→「シミュレータ」に以下のような表示がされ、対象アプリが確認できませんでした。

調査可能なアプリケーションがありません

つまり、Webインスペクタを使用したデバッグが行えない状態です。

解決策

InAppWebViewの設定において isInspectable: true を指定することで、Webインスペクタによるデバッグが可能になりました。

以下はその実装例です。

InAppWebView(
  initialUrlRequest: URLRequest(url: WebUri('https://example.com')),
  initialSettings: InAppWebViewSettings(
    isInspectable: true, // Safari Web Inspectorを有効にする設定
  ),
)

このプロパティを有効にすることで、Safariの「開発」メニューからアプリが正しく表示され、WebインスペクタでDOMやコンソールの確認が可能になります。

根本的な原因

InAppWebView公式ドキュメント によると、iOS 16.4以降ではセキュリティ上の変更により、Webインスペクタ機能がデフォルトで無効化されています。

そのため、従来は不要だった isInspectable: true の指定が、iOS 16.4以降ではWebインスペクタを利用するために必要となりました。