デバッグしてたら認証機能に不具合発生?原因はインストール中に入り込んだものだった
- アーカイブ
アーカイブ: 元は Ameba ブログ(ameblo)に掲載していた記事を、保存用 HTML から Markdown に整えたものです。ここでの日付(2026-05-15)は当サイトでの整理日であり、元記事の公開日時とは一致しません。本文はできる限り原文に近い形で残しています。
こんばんは。
私が今、プログラミングの勉強がてら、地道に開発を行っているソフトウェア。
とある昨日を実装しようと思いでバッグをしていたところ、別の機能に不具合があることがわかりました。
不具合に気づいてから、原因調査、改善までの流れをと、それにあたって築いたことなどを振り返ってみます。
不具合
それは突然でした。
アカウントの認証プロセスが開始できない。
ダイアログは出るのに、ブラウザが立ち上がらず。
出力されたログを見てみるも、初めて見たエラーでよくわからず。
こんな感じのことが起こりました。
さあ、バグを放置してはいけませんね。エラー解決に向け、シンケンにコンピューターと向き合ってみることにします。
原因調査 1
先に結論から言ってしまうと、認証プロセスで使用しているポート番号を、別のプロセスが使用していたことが原因でした。
今から原因究明までの流れを書きます。
まず、出力されたログファイルより、どういうエラーで失敗しているかを確認しました。
OsError:[WinError 10013] アクセス許可で禁じられた方法でソケットにアクセスしようとしました。
what???初めて見るエラーでした…
でも動かないわけには行きません。
まず、今わかっていることを整理する。
・「認証しますか?」という、ユーザー側にアカウント認証を求めるダイアログは問題なく表示されている。
しかし、ダイアログ上の開始ボタンを押し、本来であれば認証ページが出てくるはずなのだが、出てこず、上記のエラーが発生する。
このプログラムの認証周りは、簡易的なローカルサーバーを立ち上げており、ポート番号も特定のものを使用しています。
そのため、認証周りで使用しているポート番号が、別のプロセスによって使用されているとエラーが起こる、ということを知りました(初めて)。
原因調査 2
とりあえず、下記をコマンドプロンプトで実行してみます。
python -m http.server <ポート番号> #ポート番号の部分に任意の番号を指定する
これで問題なければ、指定したポート番号にアクセスされ、その結果がコマンドプロンプト上に出力されます。
しかし、、、
そう、先程の「OsError」が出てきてしまいました。
ここまで来て確信が持てました!
てことで、次に行ってみます。
原因調査 3、そして解決へ?
次にすること、、、それはどのアプリがポート番号を使っているのか。
これを特定します。
順を追って説明しましょう。
(1) ポート番号を使用しているプロセスのpidを特定する
まず、以下をコマンドプロンプトに入力してください。
netstat -nao | find "ポート番号" #ポート番号の部分には今回アクセスに失敗しているポート番号が入る
こうすることによって、ポート番号にアクセスしているプロセスのpidがターミナル上に出力されます。
では、このpid番号を覚えておきます。
次にタスクマネージャーにアクセスし、詳細タブに移動します。
タブキーを何度か押して、pidとアプリ名が出ている一覧を探し、先程の出力結果と同じ値のプロセスを探します。
はい、出てきましたよ!
今回の犯人は、、、
agent service.exe、、、
これでした!!!
なんでも、ミニツールシャドウメーカーを入れた際にインストールされてしまうようです。
以前youtubeにて、ミニツール車道メーカーの紹介動画を撮影したことがあり、そのときに入ってしまったのではないかと思います。
ついに不具合解消
原因がわかったので、これは停止、もしくはアンインストールしても問題ないものなのかを調べます。
いろいろ調べてみると、これはアンインストールしても問題ないということがわかりました。
いろいろと問題を引き起こすそうですし、消さないと治らないと思ったので、コントロールパネルからアンインストール。
念のためwindows再起動→タスクマネージャーの詳細タブを確認。
agent service.exeがいなくなっていました。
一安心。
それでは、もういちど個のコマンドを実行します。
python -m http.server <ポート番号>
OsError消えて、無事アクセスできました!これには人安心です。
ソフト側の認証関係の不具合も解消され、無事ウェブブラウザが立ち上がってきてくれました。
これにて原因調査終了です!!!
まとめ
今回は、認証プロセスに使用するポート番号が別のプロセスによって使用されていたことが原因でした。
それにしても、アプリをインストールする際に、カスタム化予め決められたコンポーネント、どちらをインストールするのか、また、それをインストールすることによってpcにどのような影響があるのかを確認してから、アプリのインストールを行わなければならないと改めて通関しました。
今回はpcの問題であり、ソースコードの修正をすることはありませんでしたが、もしこれがウィルスやマルウェアだと考えると、とてもゾッとします。
読者の皆様も、アプリのインストールは、くれぐれも置きおつけくださいませ。
しかしながら、今回の一見をポジティブに捉えるのであれば、原因探しのちょっとした練習になったのではないかと思っております。
エラー解決や不具合の原因修正も立派なプログラミングです。
いくら機能的であっても、その機能にバグが潜んでいては本末転倒。
開発者としての責任を持ち、今後も実装していきたいと思います。
また、今回はサブpcのありがたみを感じました。
このプログラムは、私のgitリポジトリ内に保存されているので、githubのアカウントさえログインしていれば、どのpcからでも閲覧ができるようになっております。
もちろん、サブpcにはすべてアカウントはセットアップ済みですので、閲覧することができます。
それで、試しにサブpcで、認証周りが動くか、また、上記のコマンドにてポート番号にアクセスできるかを試してみました。
すると、、、
問題なくアクセスすることができちゃいました。
てことは、ソースコードに問題はなく、私のメインpcに問題があるということになりますね。
今回、サブpcもエラー解決を手助けする要因になったと言えるでしょう。
そのようなことから、サブpcまたは仮想マシンを少なくとも1台用意しておくことが大切だと感じました。
最後に
今度こそまとめです(笑)。
ということで、開発中に遭遇した出来事をまとめてみました。
このプログラムは、リリースするために開発しているプログラムでありますので、運が良ければ読者様の何人かに使われていると信じ、日々開発を続けています。
皆様の環境によっては、先程のように不具合が発生するかもしれない。
それは、ソースコードの問題なのか、はたまた皆様がご使用になられているpcの問題なのか。
それらを見分ける際のヒントになることを願っています。
それでは、今後も一生懸命コーディングをして、よりよいプログラムに仕上げたいと思います。
リリースをお楽しみに!!
では。