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

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

失敗も記録しておくことで、次の機会に生かすことができる

年間を通して、あるシステムの運用をしています。
もう6年目くらいなので、システムの運用手順は記録としてまとめてあります。
気がついた点、改良すべき点があれば、どんどん記録を修正していっています。
ディレクトリ名とファイル名が書いてあり、修正すべき点が書いてあっても、エディタでファイルを開く手間があったので、フルパスを記載するようにした等、これまで様々な修正をしました。

もうこれで修正することはないだろうと思いながら、今年の設定をして運用をしていました。

f:id:AJYA:20170311001901j:plain
photo credit: L. M. Bernhardt Fraktur Nietzsche (1) via photopin (license)

利用者のミスから、手順の記録を修正

問題なく設定を行い、運用をしていると、お客さんからデータが見えないという連絡がありました。
確認すると、確かにデータが見えません。

データを確認すると、データを登録された方が、データの一部の登録を行ったときにエラーが発生していたのに、そのまま登録を終わらせてしまっていたのが原因でした。
その後設定作業を行ったときにデータは確認していましたが、エラーが発生したまま登録を終わらせてしまっているとは想定していなかったために、気づいていませんでした。

どうすれば今回のデータが見えないという事象を防ぐことができるか考え、設定作業が終わった後の確認手順の記録を修正しました。


これからも記録を元に作業をして、修正すべき点を見つけたら修正し、より良い記録としていきます。

ソースコードとデータベースの値を見て、何をしているのか把握する

2年以上前に作成したシステムがあります。
ひととおり機能の作成が終わり、僕の手から離れました。

その後デザインを修正するというので、外部の方にソースコードとデータベースは渡りました。
デザイン修正と聞いていたので、HTML部分だけなら修正されたのだろうと考えていました。
その後特に修正完了の連絡は僕のところにはなく、気がついたらデザインが修正されてシステムは稼働していました。

外部の方の修正内容を把握する

今回システムで表示している情報や画像の変更が必要になったので、改めてシステムを把握することになりました。
デザインを修正される前の状態はなんとなく覚えてはいます。

デザインを修正された後の状態を改めて見ると、僕が作成した時点とは表示している情報量が少なくなっています。
デザインの修正だけと聞いていたのが、どうやって情報量を少なくして表示するのを実現しているのかとソースコードを確認しました。

てっきりデータベースの表示/非表示設定用のカラムを操作したのかと思っていましたが、実はそうではなく、ソースコード上で判定を行って、表示したい情報だけに絞り込んでいました。
データベースの表示/非表示設定用のカラムを操作すればできることを、わざわざプログラムでの処理部分を改変しているのです。
どうやって表示したい情報だけに絞り込んでいるのか理解するために30分ほど時間を使う羽目になりました。

f:id:AJYA:20170310003122j:plain
photo credit: wocintechchat.com wocintech (microsoft) - 222 via photopin (license)

元からある機能を有効にする

外部の方に渡す前のソースコードは手元に残っています。
ソースコードを同士を比較して、どこでどのように改変したのか把握して、デザインを崩さず、データベースの表示/非表示設定用のカラムを用いて処理するように修正すると、ソースコードの見通しがよくなりました。

データベースの表示/非表示設定用のカラムも操作して、必要なデータのみ表示の設定をすると、修正前と同じ表示をするようになりました。

この状態から、今回表示したい情報や画像を設定して、予定通りの表示をするようにしました。


小規模なシステムなので短時間で把握して修正できました。

ブラウザがSafariでも、タブで開いているウィンドウをJavaScriptで閉じる方法

先日3年前に稼働させたシステムを再度稼働させる業務を行っていると書きました。
ajya.hatenablog.jp

このシステムに、作業が終わったら終了ボタンを押して、Webブラウザのウィンドウを閉じてもらうようになっている画面があります。
Internet Explorer 11で動作を確認すると、終了ボタンを押したらタブで開いているウィンドウは閉じました。
Safariでは、終了ボタンを押してもタブで開いているウィンドウは閉じません。

終了ボタンを押すと、以下のJavaScriptでウィンドウを閉じるようになっていますが、Safariではできないようです。

onClick="window.close();"

f:id:AJYA:20170308060635j:plain
photo credit: dotConferences dotJS 2016 via photopin (license)

JavaScriptでタブで開いているウィンドウが閉じないへの対処方法

3年前もできていなかったもしれませんが、このまま稼働させていました。
対処方法がないか検索してみると、以下のようにするとタブで開いているウィンドウが閉じるという情報がありました。

onClick="window.open('about:blank','_self').close();"

実際にSafariで確認すると、終了ボタンを押したらタブで開いているウィンドウは閉じました。

このコードからすると、

  1. 空のウィンドウを現在のタブのウィンドウに開く。
  2. ウィンドウを閉じることでタブのウィンドウが閉じられる。

ということが行われているようです。


Mozilla Firefox/Google Chromeでもできたので、どのブラウザでもこの方法で対応ができるようです。