とある人の話

その人は、プログラマーになるためにソフトウェア開発の勉強をし、実務はほぼ未経験だったのですがやっとの思いでソフトウェア開発会社に入社することができました。

これはまだ入社したての、とある日の話です。

「今、この画面に表示している一覧の情報をCSVファイルとしてダウンロードできるようにしてほしい。」

その画面を見てみると、法人の顧客が商品をいつ、どれくらい買ったのかがわかる、というものでした。

なるほど、そこまで難しくなさそうです。

一応いくつかの質問をしてみました。

  1. 何故CSVファイルが必要なんですか?

「顧客がそのCSVファイルを元に何かの処理をするらしいんだ。うちのシステムを連携させてやることもできるけど、それには時間がかかるから今はCSVをダウンロードできる状態にしてほしい。」

  1. このデータはどこを参照して取得しているものなんですか?

「取引の履歴を保存しているテーブルがあるんだ。そのテーブルを検索して、それをそのままCSVファイルに書き込んでくれればできるはずだよ。」

なるほど、やっぱり簡単そうです。

「じゃあよろしくね!リリース予定は数ヶ月先だし、そんなに急がなくても大丈夫だから。」

まずは、この一覧画面を表示するために叩いているWebAPIを見てみました。

運が良ければ、中身の処理を流用してCSVの出力ができると思ったからです。

コントローラーでは一つのサービスを呼び出しているだけだったので、次はサービスの中身を見てみます。

「おっと、このサービスは複雑だな…」

データベースから取得した複数のデータをサービスのあちこちで変換をしているようでした。

「うーん、取得したデータを変換して返しているようだけれど、いまいち何をやっているのかわからないな。まあ、データを取得する部分を見てみるか。もっと簡単に実装できるかもしれないし。」

いくつかあるデータを取得するメソッドの内のひとつを見てみました。