ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

基本に立ち返って検証作業

既存のシステムからのリプレースのために、新しいシステムの作成をしました。
これまで、既存のシステムに登録していたデータを、新しいシステムに登録して、画面に表示をすると、想定した通りの結果になりません。

既存のシステムと新しいシステムでは、データの扱い方を変え、画面への表示方法も変更しています。
そのため、仕方のないものと当初は考えていました。
テストでデータを登録すれば、必ず発生するわけでもなく、たまに発生するだけです。

システムの他の部分も、まだ正しく動作していなかったので、一旦保留としました。

検証作業
Photo by Mimi Thian on Unsplash

改めて考えなおしてわかってくる

画面表示の部分以外が落ち着いてきたので、改めて、想定した通りの結果にならない理由を探し始めました。
想定した通りの結果にならないデータを見ると、想定していない設定がされていました。
想定している設定に変更して、データを処理しなおすと、想定した通りの結果になりました。

既存のシステムでは、想定していない設定がされていた場合、補正をするように、システムが作成されていると気がつきました。
新しいシステムでも、同様の補正を行うよう、システムを改修しました。
改修した結果、想定した通りのに、画面に表示されるようになりました。

もうこれで、想定した通りの結果しか表示されないだうろと、データをテスト登録して、画面の表示すると、まだ想定した通りにならない場合があります。
発生する箇所が特定の箇所だったので、表示する際に、なにか問題があるのではと、検証しやすいデータを改めて作成しました。

検証用しやすいデータを用いてテストをすると、問題が2種類あるのがわかり、2種類とも原因を突き止めて、システムを改修しました。
再度のシステムの改修の後は、画面の表示は、すべて想定した通りになっています。


既存のシステムに登録していたデータを用いてテストを行い、新しいシステムとの差異がわかり、システムを改修しました。
検証しやすいデータを用いてテストを行い、検証ができて、システムを改修しました。
既存と同じように動作というと、つい既存のシステムに登録していたデータばかりでテストを行ってしまいがちです。
検証しやすいデータは、これなら絶対こうなるはずと、わかりきった内容にしたおかげで、原因がわかりました。

PowerShellでネットワークドライブに接続

PowerShellを学んでいると記事に書きました。
ajya.hatenablog.jp

以前ツイートした、ネットワークドライブの割り当てを行うという目的のために学んでいます。

試行錯誤した結果、PowerShellスクリプトでは、New-PSDriveコマンドレットでネットワークドライブを接続すると、スクリプトの実行中のみ、エクスプローラにも、接続したネットワークドライブも表示されます。
スクリプトの実行が終わると、接続したネットワークドライブは切断されて、エクスプローラに表示されなくなります。

PowerShellスクリプトを、Windowsの起動時に実行して、ネットワークドライブを接続して、常駐するプログラムを起動させようと考えています。
常駐するプログラムは、ドライブを意識して処理はしますが、ドライブが接続されているのか判定して、接続されていなかったら、接続を行う処理は実装したくありません。

どうすれば、PowerShellスクリプトで、ネットワークドライブを接続して、スクリプトの実行が終了しても、エクスプローラに表示され続けるのか試しました。
結果は、net useコマンドを使えばできるのが、わかりました。

スクリプトを実行中
Photo by Aman Upadhyay on Unsplash

ネットワークドライブが接続されていなかったら、念のため切断後、ネットワークドライブを接続する

PowerShellでは、Test-Pathコマンドレットでドライブの存在を確認できます。
Test-Pathコマンドレットで、ドライブの存在を確認して、ドライブが存在しなければ、net useコマンドで、ネットワークドライブを接続します。
念のため、net useコマンドで、ネットワークドライブを切断してから、net useコマンドで、ネットワークドライブ接続するようにしたのが、以下のスクリプトです。

if (Test-Path Z:) {
} else {
    net use Z: /delete /yes
    net use Z: \\192.168.1.1\data Password /user:Admin /persistent:yes
}

このスクリプトで、PowerShellスクリプトの実行が終わっても、ドライブが接続できるようになりました。

常駐プログラムの起動は、Start-Processコマンドレットでできるので、ドライブの接続の後に、起動を行います。

if (Test-Path Z:) {
} else {
    net use Z: /delete /yes
    net use Z: \\192.168.1.1\data Password /user:Admin /persistent:yes
}

Start-Process -FilePath "C:\testpg\test.exe"

これで目的の動作が実現できました。


New-PSDriveコマンドレットでは、PowerShellスクリプトの実行が終了すると、エクスプローラにネットワークドライブが表示されなくて、驚きました。
幸い、代替手段があったので、対処できました。
このような使い方は、想定されていない使い方なのかもしれませんが、できれば、すべてコマンドレットで解決したかったです。

PowerShellについて学んだ1週間の振り返り(2020/6/27〜2020/7/3)

PowerShellについて学びが進んで、やりたいことをどうすればできるのかわかってきた、1週間を振り返ります。

  • 2020/6/27(土)
    妻と子どもの二人が出かけて、久しぶりに一人の時間を過ごしました。
    ゆっくりする時間はあまりなく、髪の毛を切りに行ったり、車のオイル交換に行ったりして、一人の時間を過ごしました。
  • 2020/6/28(日)
    子どもの自転車にペダルを取り付けて、自転車に乗れるか練習したら、1回目から、ペダルをこいで自転車に乗れました。
    前日の妻のママ友の特訓と、これまでの成果が出た瞬間でした。

ajya.hatenablog.jp

  • 2020/6/29(月)
    先週修正作業を行っていたシステムを、本番環境に反映しました。
    依頼元のWebページからのリンクがなかなかなくならず、待たされましたが、作業自体は短時間で終わり、できる限りの確認をも手早く終わらせました。
  • 2020/6/30(火)
    依頼元からシステムの機能について連絡があり、アカウントを忘れた場合の機能が書かれていました。
    内容からすると、アカウントを忘れた場合ではなく、アカウントをわかっていて、単なるパスワードを更新する機能です。
    名称と内容があっていないけれど、こちらの理解が間違っているのか、確認のメールを送りました。
  • 2020/7/1(水)
    依頼元から機能について4種類のファイルに分かれて連絡があり、内容に相違があるのがわかったので、じっくり内容を確認しました。
    何か所も内容に相違点があるので、どれが正しいのか確認する点としてまとめました。
    本来は、依頼元でまとめて欲しいです。
  • 2020/7/2(木)
    PowerShellスクリプトを少しずつ試していて、いろいろわかってきました。
    できると思っていたことができなかったりと、思い違いだった点もあります。
    別の方法で対処ができる内容だったので、対処をしています。

ajya.hatenablog.jp

  • 2020/7/3(金)
    PowerShellスクリプトでできることを、引き続き学びました。
    ネットワークドライブの接続に制約があるのがわかりました。


急いでいるのがわかるので、連絡があった当日に回答をしているのに、依頼元からの回答は、なかなかありません。
急いでいる雰囲気を出しているのは、依頼元の総意ではないのではないか、と疑いたくなります。


一人で食事を食べると、サラダを買ってきて、後はありあわせのものになります。
パン2個、卵焼き、サラダのお昼ご飯
今回は卵焼きを作って、冷凍してあるパンをトースターで焼き、買ってきたサラダを食べました。