ある日の夕方から急に、1時間置きに「Cron Daemon」からメールが届くようになる。
デ、デーモン閣下からだ。
このまま放置しておくと、蝋人形にされてしまうぞ。
焦る気持ちを抑え、冷静さを取り戻す。
いや、待てよ。
閣下なら、スペルが違う。
「Demon」のはずだ。
じゃあ、この「Daemon」は誰だ?
実際は、Linuxのシステムで使う用語で、決して悪魔の一味ではございません。
某ショッピングサイトの商品リストから
最新アイテムを12個取得して、データベースに格納するプログラムを作成し、
cronによって自動化していましたが
そのプログラムが起動した時に、
何かしらの不具合が出てきたようで、それをお知らせしてくれたのです。
内容は、以下のような文章でした。
PHP Notice: Undefined offset: 〜
配列の値が空ですよ。というお知らせ。
とても親切ですよね。
毎時更新なので、早期発見できますし、最短で修正をかけることで
クライアント様のサービスに与える影響も少なくて済みますから。
実は、プログラムのお仕事で一番好きなのが、
このエラー探しの作業なのです。
エラーが好物だなんて変態ですね。
プログラムエラーが出た場合は、はじめに原因を特定する必要があります。
まずは推理から始まる訳ですが、一発で原因が分かると最高に気持ちいいです。
名探偵にでもなった気分を味わえます。
一瞬のひらめきを利用する思考回路は、
コピーやネーミングを思いつくときと似ています。
しかし、ここからプログラムファイルを開いて、
ひとたび修正の実作業に入れば、脳の全く違った部分を使います。
勘で勝負の探偵から、緻密な分析を得意とする臨床検査技師へバトンタッチです。
今回は割とすぐにエラーになっている箇所を特定できました。
それは、思いもよらぬ原因だったのです。
商品アイテムをHTMLから抜出し、
加工する際に扱いやすいように「商品写真」「販売価格」「販売ページへのリンク先」「商品タイトル」の4つの要素に分割していました。
このプログラムの肝になるのは、コードの中から、
抜出したい要素の周辺を挟むパターン化された文字列を見つけ出すことです。
今回問題となった箇所は「商品タイトル」部分にありました。
12の最新商品のうちのちょうど10番目の商品が売り切れてしまい、
システムが自動で「SOLD OUT」の表記をタイトルと同じブロックに併記していたのです。
そして表記をCSSで強調するため、新しいclassが混入していました。
たった1つのclassが原因で、パターンにマッチするかどうかという仮説が崩れてしまった訳です。
配列の11番目には想定していたデータが入らず、空になってしまったのでアラートが出たという現象です。
原因が分かったら、次は対策です。
臨床検査技師から、執刀医へバトンが引き継がれます。
ドクターは、常にいくつかの代替案を用意して手術に望みます。
「商品タイトル」を抜出すための、より良い方法がないか模索します。
この時に気をつけなくてはならないのが、再発防止です。
腕のいいドクターほど、一度の手術で病気を治すことが出来ます。
今までの抜出し方だと、一旦は成功したかのように見えてても、
他のパターンで例外が発生する可能性がありました。
今までのやり方に早々に見切りをつけ、
「商品写真」のaltタグに「商品タイトル」記述されているのを発見し、
そこに狙いを定めて条件一致するか検討しました。
手術は無事成功し、2度とデーモン閣下からのお叱りのメールは飛んでこなくなりました。
プログラムのお仕事と、一括りに言ってしまうのは間違っていると思います。
アイデアや独創性も重要ですし、緻密さや正確性も不可欠です。
プロのコピーライターがプログラムを組むとどうなるか。
皆様が実際に使っているユーザーインターフェース上ではなんら大きな違いは出ません。
しかし、アイデアと発想力を活かしたアプローチは業務の効率化につながります。
WEB関連の作業はある程度自動化して、本来の業務に特化しませんか?
蝋人形みたいな表情ってよく言われますが、とても人情に厚いのでご安心下さい。