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

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

短納期のシステムの開発が終了した、1週間の振り返り(2022年9月24日~2022年9月30日)

仕様確定が遅くて短納期となったシステムの開発が終了した、1週間を振り返ります。

  • 2022年9月24日(土)
    コメダ珈琲に久しぶりに行って、食事の時間帯に行ったのは、さらに久しぶりで、今回は昼食を食べました。
    ミックストースト、みそカツパンを注文して、妻と半々で食べようとしましたが、自力で一切れを半分に切らないと半々にならなくて、切って交換していました。
  • 2022年9月25日(日)
    父のお墓に行って、久しぶりにお墓を掃除しました。
    一時間ほど頑張って、できる限りきれいにしました。

ajya.hatenablog.jp

  • 2022年9月27日(火)
    システムの仕様がこれで正しいのか?と疑問を持ちつつ作成した部分が、確認の結果、文言の修正依頼だけだったので、動作としては問題がなく、仕様が正しかったんだとわかりました。
    ややこしい仕様だったので、正しい実装ができて安堵しました。
  • 2022年9月28日(水)
    認証APIの応答がXML形式で返されるので、どうすればいいのか検索して、処理を作成しました。
    サンプルコードを組み合わせて試して、適切な方法を理解して作成できました。

ajya.hatenablog.jp

  • 2022年9月29日(木)
    PDFファイルのダウンロードボタンをクリックされたら、PDFファイルを作成し、ダウンロードするシステムがあります。
    クリックされるたびにPDFファイル名に枝番をつけて、PDFファイル名が被らないようにして、履歴が残るようしています。
    PDFファイルの送付を要望されたので、最新版だけに選別をしないで、すべて送るのであればできると伝えたところ、すべて送って欲しいと連絡がありました。
    このやり取りをした翌日の今日、別の方から、選別ってどいう意味なんですか?と質問されました。
    理解をされた社内の方に質問をして欲しいな、と思いつつファイル名の例を書いて、説明のメールを送りました。
  • 2022年9月30日(金)
    システムの表記の修正依頼があり、この内容だったら、最初からそのように指定して欲しかったな、と思いながら修正をしていました。
    名称やメールアドレスは、最初から確定できる箇所だと思っています。


依頼元が弱気なのか、なんでそんなに仕様の確定に時間がかかるのだろう?と思っていた案件の開発が無事終わりました。
短納期になった分、余分な費用が発生しているという認識を持って、次回以降は短納期にならないように考えて欲しいです。


日清のざるつけ麺4人前を3人で分けて食べました。
ざるつけ麺
ざるつけ麺
1.3人前は食べられますが、たれが1人前分もちませんでした。
後半は冷蔵庫にあった、めんつゆをかけて食べました。

失意をバネにしたい

これは大丈夫だろう、と思って2週間、予想外の結果となり、無気力になりかけました。
この2週間なんだったんだろう、という気持ちになりました。
これからどうする?という思いが満ちてきました。

少し時間が経ち、これからどうする?については、思いつくことができました。

期待外れな結果に、がっかりして無気力になりかけましたが、元に戻っただけ、振り出しに戻っただけです。

力をこめる
UnsplashJakayla Toneyが撮影した写真

まだやれることはあるので、新たな一歩を踏み出していきます。

PHP:curlでPOSTして、結果のXMLを処理

他社のAPIで認証を行わなければならなくなりました。
仕様を確認すると、POST形式でidとパスワードを送信し、結果をXML形式で返してきます。

XMLPHPで処理したことがなかったので検索しました。

curlを使って、idとパスワードを送信

curlでPOSTする方法の参考にしたのは以下の記事です。
qiita.com
ほぼ記事通りのコードとなりました。

$POST_DATA = array(
    'id' => '10001',
    'password' => '1234567890',
);

$curl = curl_init("https://www.example.com/api");
curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($POST_DATA));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie');
curl_setopt($curl, CURLOPT_COOKIEFILE, 'tmp');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

$output = curl_exec($curl);

プログラミング
UnsplashDanial Igderyが撮影した写真

応答のXMLをsimplexml_load_string()で変換

応答のXMLは以下の形式です。
エラーの場合は、codeが空になります。

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <code>200</code>
</response>

XMLの処理方法の参考にしたのは以下の記事です。
qiita.com
liginc.co.jp
blog.dododori.com

simplexml_load_string()で応答をオブジェクトに変換して、文字列型に変換すれば良さそうとわかりました。
結果、以下のようなコードになり、空だった場合は、エラーと判定できました。

$xmlObject = simplexml_load_string($output);

$response= (string)$xmlObject->response;

if (empty($response)) {
    echo 'エラー';
}

適切な情報を見つけられたので、必要なコードが短時間で書けました。