HANDAI JK Engineering Blog

HANDAI JKの技術ブログです

ちょっとしたレガシーと戦ってきた(前編)

こんにちは! HANDAI JKの杉森です!あっという間に年末ということで、色々忙しくなってくる前に年納めの出来事の話をしようと思います。内容は「ちょっとしたレガシーと戦ってきた」です。

今回は、前編ということで技術向けというより、その前の導入部分になります。 (え、まだブログ更新やってたのかって? いやいや、生きてるしこっからが本番だから(震))

前置きとレガシー

現在、とあるバイト先でWebアプリケーションの開発をしています。そんな中、とある情報について1人の社員に聞きに行っているという光景を何度か目の当たりにしていました。そこで、その社員に話を聞いていくと、こういった内容と要望を聞くことができました。

  • 会社の情報を扱っているマクロの使われたExcelファイルがある
  • かなり古くて使いにくい
  • なんとかしてほしい

何とかして欲しいというすごい投げ方されました... これじゃ状況がよくわからないんで詳しく聞くと、こうなりました。

  • 会社の製品情報を扱うマクロの使われたExcelファイルがある
  • バックアップは1つデータを増やすごとに手動
  • マクロを組んだ担当者はいるが、覚えてない
  • 共有しづらい構造になっている
  • 検索がしづらく、データが増えてきたから使いにくい
  • なんとかしてほしい

ここまで掘り下げればどうすればいいかはかなり見えてきますね。ところで、今回の問題は典型的なエクセルレガシーと呼ばれるもので、企業の業務部門がExcelを使って自ら開発し、利用し続けてきた業務システムなどを指すそうです。ファイル作成日が1997年の1月(まだ生まれてねーわ...)であり、かなり古いものとなっていることがわかります。僕のMacbookでは、マクロが動かなかったのでバージョンの問題も抱えているようです。

社内データベースとツールへの全面移行

以上のような問題点を抱えていたため、次のようなことを行うことにしました。

  • ExcelファイルからCSVファイルをエクスポートし、社内データベースに移行
  • 社内ツールの一機能として、CRUDを行えるようにする
  • 1日2回自動バックアップを行う

一度社内データベースにデータを入れてしまえば、それ以降はツールからの管理になるため、扱う製品の増えない年末に行いました。ここから話すのは、一番大変だった社内データベースへの移行です。

CSVファイルをエクスポートしたら

今回使用したものは以下のものです。

  • CSVファイル (エクスポートしたもの)
  • MySQL (Version 5.7)
  • Atom (使用したエディター)

ExcelからCSVファイルをエクスポートすることは大したことではありません。問題はそのCSVファイルの中身です。これが一例です。(データは構造はそのままですが、内容は実際のものと異なります)

30,****,OK,OK,した,不明,A,,20XX/X/X,XXXX,XX,4F,"20xx/x/x xxx
" ---------------------------------------(業務連絡が並んでる)

20xx/xx/xx xx
---------------------------------------
---------------------------------------
---------------------------------------
---------------------------------------

","20xx/xx/xx xx
---------------------------------------
---------------------------------------
-------------------------"
31,******,OK,不明,していない,不明,不明,不明,不明,,不明,XXX,"20xx/x/xx xx
--------------------------------------------------
------------------------",
32, ...

ぱっと見は大したことないことですが、違和感を感じる人は感じると思います。このCSVファイルの問題はこうなります。

  • Excel内でセル内改行が行われていたため、1データが複数行に渡っている
  • データとデータ間にあるはずのカンマがたまに存在していない (例の30と31の間)

CSVファイルの構造以外の問題はこうなります。

  • 日付入力欄に不明という入力がある (型の不一致)
  • Excelの表示で分割されていた項目の統一が必要 (後に追加された仕様)

これら4つの問題点が存在しています。これらをCSVファイルの編集とMySQLのコマンドを用いて、解決していきます。この続きは近日中に公開いたします。

ここまでで

次回が解決編となります。他にも色々やったりしてましたが、まだこの手のレガシーが残っていることを思うと、そういうところはまだあるのだなと感じますね。学生エンジニア(笑)がどう解決したか見ていただけるとありがたいです。今年中にアップするんで、まだ良いお年をとは言いませんよ! ここまで読んでいただきありがとうございました!