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

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

データを登録したらデータの確認は当たり前のこと

3年前に稼働させたシステムを、再度稼働させる業務を行っています。
3つの団体が利用するシステムとなっています。

3年前は同じシステムに登録するためのデータなのに、なぜか3団体がそれぞれのフォーマットでデータを作成したために、3種類のフォーマットに分かれてデータを支給されていました。
今回は3団体が統一して1種類のフォーマットでデータが支給されました。

3年前に稼働させたシステムにデータを登録するためのプログラムは、3種類のフォーマット用に分かれています。
今回は1種類のフォーマットでデータが支給されたのので、1種類のフォーマット用に作り直すべきかもしれません。
時間がないこともあって、フォーマットは同じだけれど、以前と同様に3団体それぞれに分かれた処理を行うようにしました。

f:id:AJYA:20170307125021j:plain
photo credit: Christoph Scholz Hacker mit Einsen und Nullen - seitlich via photopin (license)

チェックに利用するデータが異なる

1団体目のデータをシステムに登録しようとすると、値が一致しないためにエラーが発生しました。
データを登録する際に、既存のデータと2項目が一致しないとエラーとなるように登録するためのプログラムは作成してあります。

データを確認すると、確かに既存のデータと2項目が一致していません。
既存のデータを入れ間違えたかと確認したところ、既存のデータを登録した後に2項目のうち1項目の変更があったのを、こちらに連絡がなかったため、反映されていませんでした。
今回支給されたデータは変更が反映されていたために、既存のデータと2項目が一致しないエラーが発生しました。

データを登録して動作を確認しなければならないので、システムにデータを登録するプログラムを、変更がない既存のデータ1項目と一致したら登録するように修正したら、1団体目のデータの登録はできました。

以前はなかったデータが存在

2団体目のデータをシステムに登録すると、エラーの発生もなく、そのまま登録が終わりました。
システムで確認すると、支給されたデータには存在する情報が表示されません。

データベースを確認すると、支給されたデータには存在する情報が登録されていません。
システムにデータを登録するプログラムを確認すると、3年前はデータが支給されなかったため、該当のデータを登録をしないようになっていました。

データが存在するからには表示しなければならないので、システムにデータを登録するプログラムを、1団体目と同様に該当のデータを登録するように修正したら、システムで表示されるようになりました。


データが登録できなければ、なぜデータが登録できなかったのか確認するのはあたり前です。
データが登録できていると、信用してデータの確認を行わない可能性が出てきますが、3年前に稼動させたシステムのため、どこまで信用していいのかとデータの確認を慎重に行っています。

ストックを増やすことで効率化

同じ会社の複数の支社の方から様々なシステムの開発依頼に対応する仕事をしています。
この仕事は、僕が担当になる何年も前から続いているので、かれこれ10年近く続いています。

長い間継続しているので、様々な知識が蓄積されていきます。
担当になった当初は、画面上の言葉の意味がわからなくて、言われるがままに作成していましたが、今ではわかるので、ときには合っているのかと確認することがあります。
機能についても同様で、お客さんが言っていることより、こちらの方がより分かりやすいのではないかと提案することもあります。
不具合対応も同様で、過去に発生させてしまったトラブルは、どうしてそうなったのか、どうすべきだったか把握しているので、新しいシステムを作成するときには反映をしていっています。

f:id:AJYA:20170306124545j:plain
photo credit: sjkln The Wonderland of Knowledge via photopin (license)

新しいシステムを作成するときは、大概既存のシステムを元にして、こういった機能を追加、この機能は削除となります。
こういった機能を追加というのは、大概他の既存のシステムで実現できています。
パッチワークのように、ここはあのシステムで作った機能、こっちはあちらのシステムで作った機能を持ってきて、新しいシステムに適合させて、機能を追加させます。
こうすることで、新しいシステムを短時間で作成することができるようになります。

別の会社の案件では、さすがにそのままではありませんが、細かいレベルのコーディング内容、たとえばjQueryでどう記述すると、選ばれているラジオボタンの値が取得できるのかは、個人のストックとして保存していっています。
簡単なものから、一工夫した結果できたものまで、さまざまな内容をストックしていっています。


長く同じようなことを続けるということは、面白みがなくなる面もありますが、ノウハウが蓄積される分だけ、早くどうすればいいのかの判断ができるようになります。
同じようなことをしつつ、新しい要素を取り入れ、できることのストックを増やし続けていきたい。

一度だけの作業かもしれなくても記録をしておけば、後々別の作業のヒントになる

一度だけと思っていたら、意外に同じようなことを繰り返していると最近感じています。

プラットホームの変更

1ヶ月以上前に、ある簡単なデータを登録する社内用のプログラムをPHP 5.1ベースからPHP 7.0ベースに載せ替えました。
結果、いろいろな箇所でエラーが出力されて悩まされました。
修正してエラーが解決するに、どのように修正したのか修正内容を記録しておきました。

つい先日、別の社内用のプログラムをPHP 5.1ベースからPHP 7.0ベースに載せ替える機会がありました。
以前と同様にエラーが発生しましたが、以前どのように修正したのか記録があるので、対処方法がわかります。
それほど時間をかけることなくエラーはなくなり、動作するようになりました。

f:id:AJYA:20170305232739j:plain
photo credit: XoMEoX In Line via photopin (license)

本番へ環境の更新

本番稼働しているシステムに、あれこれ機能を追加したテストシステムを作成し、テストが完了しました。
本番環境への反映を行う前に、どのような手順で更新を行い、どのように反映するか考えて書き出し、書いた順番に従って作業を行いました。
本番環境のデータは当然壊さないように作業しなくてはならず、作業に手間取る面もありました。
事前に考えた内容では不十分な部分がいろいろありましたが、気づくたびにその内容を事前に書き出した内容に追加や修正を行い、作業の記録としました。

その後新たなシステムを作成していますが、一部の機能は今回本番環境に反映したシステムと同じ機能を利用します。
本番環境が既に存在しているわけではないので、本番環境の切り替え時のテストは楽には行えます。
それでも、一部の機能は以前の作業の記録を参考にして本番環境に切り替えることができるので、より時間を短縮することができます。


一度だけと思っていても、いつか似たようなことを行う機会は多いので、記録を残すことは有用と感じています。