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

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

伝えたつもりでも伝わっていないもの

先日打ち合わせがありました。
依頼元と、自社と別の開発ベンダーの3社での打ち合わせです。

打ち合わせの目的は、依頼元と自社で開発・運用しているシステムのリプレースについてです。
依頼元と別の開発ベンダーは、別途打ち合わせを実施されて、リプレース対象のシステムについて説明をされていました。

双方の認識のズレ

3社による打ち合わせは3度目で、リプレースの方向性が決まってきていました。
リプレース前のシステムは当然知っているので、リプレース後の担当範囲の必要な機能も理解できます。

別の開発ベンダーへの説明がどの程度されているのか、2度目の打ち合わせの際に疑問に思って3度目の打ち合わせに臨んだところ、概要の説明に留まっていて、詳細は伝わっていないというのが確認できました。

依頼元から別の開発ベンダーには、リプレース対象のシステムの画面キャプチャは提供されたようですが、細かく説明をされたわけではないようです。
依頼元は画面キャプチャを渡せば、システムが理解できると思われたようです。

僕も経験がありますが、頼む側は今やっている業務の資料を渡せば、「理解して上手く」システムを作ってもらえると思われがちです。
実際は違います。
業務の資料と共に、どのタイミングでどんな人が、どんなシステムに対して作業をするのか、どんな情報が表示され、ファイルに出力されているのかなど、システムをどのように使われているのかの説明が必要です。
説明を受け、質疑応答を経て、初めて理解ができます。

依頼元は、画面キャプチャを渡して、別の開発ベンダーがあまり質問されなかったために、理解されたと認識されたかもしれません。

打ち合わせ
unsplash-logoCampaign Creators

あいまいなままでは金額が高くなる

別の開発ベンダーから依頼元へは、見積が提示されていましたが、詳細がわからないまま見積を作成しているので、想定より増えても大丈夫だろうという金額が上乗せされているために、予想以上に高額だったようです。
金額を下げるためにはどうすればいいかという話になり、詳細がわからない限り大きく下げようがないとなりました。


依頼元からはお客さんへの見積の提示を近々されるそうです。
自社も見積で悩んでいますが、まだまだ掘り下げていかなければならない状況の別の開発ベンダーはもっと悩んでいるでしょう。

雨は楽しめるか、楽しめないか

僕が住む東海地方は、ほぼ平年通りの6月7日に梅雨入りしました。
www.data.jma.go.jp

雨の日、特に通勤のときは、降水量が気になります。
傘を開いた時の大きさが違うので、折り畳み傘でしのげる程度なのか、普通の傘の方がいいのか気になります。

新しい傘を買ったばかりなら、はじいているのを見て楽しめるかもしれませんが、壊れない限り買わないので、なかなか機会がありません。

雪が降っていたら、「雪見酒」という言葉があるくらいですが、雨にはないですね。
kotobank.jp

全然洗車していない車の表面が、雨に濡れた状態では、きれいになったように見えるくらいでしか、うれしいときがありません。

子どもは楽しんでいる

子どもは、雨が降っていて傘がさせるので喜びます。
水たまりに長靴をはいた足を入れられるのでも喜びます。

先日は、「てるてる坊主」を作っていました。
子どもが作ったてるてる坊主

童謡の「あめふり」を歌うときもあります。
ja.wikipedia.org


今週のお題「雨の日の楽しみ方」で、僕と子どものどちらが雨を楽しんでいるか考えてみましたが、圧倒的に子どもが楽しんでいました。

PostfresSQL 正規表現を使って数字を取り出し、データを並べ替え

データの並べ替えにおいて、以下のようなデータの場合、単純にlabelの値を使って並べ替えると、数字部分に桁数を揃えるのための先頭のゼロ埋めがないため、「ラベル11.」→「ラベル2.」→「ラベル5.」の順番になってしまいます。

label data
ラベル5. データ2
ラベル2. データ3
ラベル11. データ8

substring関数で数字部分の文字数を指定して取り出す

「ラベル」の部分は共通しているので、PostgreSQLのsubstring関数で4文字目から2文字取り出せば、それぞれ「5.」「2.」「11」になります。
substring関数は

substring(label from 4 for 2)

と書きます。
www.postgresql.jp

実際のSQLは、文字列を数値に変換するto_number関数を使って数値に変換してから並べ替えます。

SELECT to_number(substring(label from 4 for 2),'99') AS sort_key, * FROM data_tabel
ORDER BY sort_key ASC

www.postgresql.jp

コンピュータを操作中
unsplash-logoNESA by Makers

substring関数で数字部分を正規表現で取り出す

上記の方法でも目的通りに並べ替えはできました。
文字数が決まっているのでできましたが、一定の文字数ではない場合は対処できません。

PostgreSQLでは正規表現が使えるは以前書いて知っていたので、数字の文字列を取り出すためにも使えないか試してみました。
ajya.hatenablog.jp

試した結果、以下のようになりました。

SELECT to_number( substring(label from '[0-9]+'),'99') AS sort_key, * FROM data_tabel
ORDER BY sort_key ASC


同じ結果を得られましたが、正規表現を使う方が「数字を取り出してソートキーを生成している」という目的がわかりやすいです。